From d8c16eed7733643182b6c27dd8204b6f4c9035d9 Mon Sep 17 00:00:00 2001 From: mmulji-ic <98309852+mmulji-ic@users.noreply.github.com> Date: Sun, 10 Sep 2023 14:48:29 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20cosmos/g?= =?UTF-8?q?aia@3d83e89d78a6fc941477295d2f781f048d7e338a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 4 +- main/404.html | 4 +- main/DOCS_README.html | 4 +- main/architecture/PROCESS.html | 4 +- .../adr-001-interchain-accounts.html | 4 +- main/architecture/adr-002-globalfee.html | 4 +- main/architecture/adr-template.html | 4 +- main/architecture/index.html | 4 +- .../js/{100.1e7b7e6d.js => 100.d72a6f13.js} | 2 +- .../js/{101.41c94ebb.js => 101.fbfd93c5.js} | 2 +- .../js/{102.a6cf997c.js => 102.b996c813.js} | 2 +- .../js/{103.c8f00fc6.js => 103.74845ffc.js} | 2 +- .../js/{104.e500deb9.js => 104.6ffc4475.js} | 2 +- .../js/{105.9bdc8488.js => 105.da49e64f.js} | 2 +- .../js/{106.9244cf5c.js => 106.4d041b8e.js} | 2 +- .../js/{107.d99c5e28.js => 107.2017ed36.js} | 2 +- .../js/{108.4b282673.js => 108.a5cc8ad3.js} | 2 +- .../js/{109.7f8893ff.js => 109.080740e3.js} | 2 +- .../js/{110.c7f34720.js => 110.880e717a.js} | 2 +- .../js/{111.7af9137d.js => 111.ff197e6e.js} | 2 +- .../js/{112.c427a5b2.js => 112.96648dc8.js} | 2 +- .../js/{113.f3317497.js => 113.11381446.js} | 2 +- .../js/{114.7816e89f.js => 114.c6df8427.js} | 2 +- .../js/{115.2778ce5d.js => 115.c45bcdc3.js} | 2 +- .../js/{116.7bc17c71.js => 116.c8b9cb9b.js} | 2 +- .../js/{117.01b7cd9e.js => 117.06c62341.js} | 2 +- .../js/{118.dcb45bc7.js => 118.3d452723.js} | 2 +- .../js/{119.4b1ad2bc.js => 119.d0e59606.js} | 2 +- .../js/{120.a31adfab.js => 120.84cdb815.js} | 2 +- .../js/{121.ddc5c405.js => 121.b5b58299.js} | 2 +- .../js/{123.eacc5a93.js => 123.69ec9ad9.js} | 2 +- .../js/{124.bfa80ec4.js => 124.3b78d336.js} | 2 +- .../js/{125.c6074627.js => 125.b8ef922c.js} | 2 +- .../js/{126.73158116.js => 126.436c676f.js} | 2 +- .../js/{127.530e9f27.js => 127.cd5d7474.js} | 2 +- .../js/{128.ede1e479.js => 128.c6c460b3.js} | 2 +- .../js/{129.9e1ef4a0.js => 129.d68bae07.js} | 2 +- .../js/{13.f91af9bf.js => 13.ac39b3bc.js} | 2 +- .../js/{130.d8b943d0.js => 130.b3f6dbe9.js} | 2 +- .../js/{131.8f91e26e.js => 131.c29e9eb8.js} | 2 +- .../js/{132.e068d009.js => 132.0c8ce5ea.js} | 2 +- .../js/{133.27518b66.js => 133.50ac843b.js} | 2 +- .../js/{134.9e50057b.js => 134.6d928121.js} | 2 +- .../js/{135.2933dbb2.js => 135.374d0ffc.js} | 2 +- .../js/{136.7cce7c85.js => 136.ca70607e.js} | 2 +- .../js/{137.48900642.js => 137.685386f7.js} | 2 +- .../js/{138.45b49d81.js => 138.05c1d988.js} | 2 +- .../js/{139.e95740f0.js => 139.d91652a8.js} | 2 +- .../js/{140.b9fdfd5c.js => 140.979c3402.js} | 2 +- .../js/{141.f18c9e86.js => 141.57f06276.js} | 2 +- .../js/{142.0d58bdd3.js => 142.3550f901.js} | 2 +- .../js/{143.c8a82d17.js => 143.633bc773.js} | 2 +- .../js/{144.41d5bb95.js => 144.9481644a.js} | 2 +- .../js/{145.18209fca.js => 145.23b11bf4.js} | 2 +- .../js/{146.2dd38d96.js => 146.4f65824a.js} | 2 +- .../js/{147.9cf621ac.js => 147.b952018d.js} | 2 +- .../js/{148.224a794a.js => 148.c3d0b67b.js} | 2 +- main/assets/js/149.10e71a6f.js | 1 + main/assets/js/149.6bc3ef41.js | 1 - .../js/{15.f4461b1c.js => 15.621001a3.js} | 2 +- .../js/{150.50311e0c.js => 150.9719ec09.js} | 2 +- main/assets/js/151.1927e4a2.js | 1 - main/assets/js/151.b6e386d4.js | 1 + .../js/{152.43bb70e4.js => 152.5c14655f.js} | 2 +- .../js/{153.aba6c640.js => 153.8ead3773.js} | 2 +- .../js/{154.290efe93.js => 154.aa0a518c.js} | 2 +- main/assets/js/155.c561c7e0.js | 1 + .../js/{155.d1dbf798.js => 156.bd3eda60.js} | 2 +- .../js/{156.979bd2e4.js => 157.22825acb.js} | 2 +- .../js/{157.0e608933.js => 158.3deb58c4.js} | 2 +- .../js/{158.e0ee912e.js => 159.751c852a.js} | 2 +- .../js/{16.d8b516cf.js => 16.faf4e88c.js} | 2 +- .../js/{159.5d3ab240.js => 160.864eda26.js} | 2 +- .../js/{160.02050088.js => 161.49512805.js} | 2 +- .../js/{161.d588d8f6.js => 162.bd774969.js} | 2 +- .../js/{162.4cfa5f8d.js => 163.da0f2a65.js} | 2 +- .../js/{163.103718af.js => 164.cae65005.js} | 2 +- .../js/{164.5324bb20.js => 165.e030d039.js} | 2 +- .../js/{165.b97dc464.js => 166.549b0367.js} | 2 +- .../js/{166.69693f84.js => 167.855950cd.js} | 2 +- .../js/{167.5ff076b6.js => 168.a27818a8.js} | 2 +- .../js/{168.0013da7c.js => 169.d96d9ea9.js} | 2 +- .../js/{169.81f9571c.js => 170.b7bb9fa0.js} | 2 +- .../js/{170.db19179e.js => 171.26369e88.js} | 2 +- .../js/{171.286cf0d5.js => 172.66b363b1.js} | 2 +- .../js/{172.9dbf3262.js => 173.819e13c2.js} | 2 +- .../js/{173.a490a9aa.js => 174.3bfb54b2.js} | 2 +- .../js/{174.c55965d9.js => 175.69e0ebc2.js} | 2 +- .../js/{175.97c52c12.js => 176.d09f79fe.js} | 2 +- .../js/{176.1ea06b4c.js => 177.761af6db.js} | 2 +- .../js/{177.642da123.js => 178.b2ce0b2e.js} | 2 +- .../js/{178.631ad545.js => 179.f478a22a.js} | 2 +- .../js/{179.38d352e6.js => 180.efe3f6d9.js} | 2 +- .../js/{180.6ebc142a.js => 181.12f14250.js} | 2 +- .../js/{181.929b25e6.js => 182.c90d83a5.js} | 2 +- .../js/{182.a9457d82.js => 183.648229b2.js} | 2 +- .../js/{183.2708d4a5.js => 184.3eccc474.js} | 2 +- .../js/{184.87a58094.js => 185.58bc31db.js} | 2 +- .../js/{185.c1f27438.js => 186.cb4cc8b9.js} | 2 +- .../js/{186.051074c4.js => 187.0b511603.js} | 2 +- .../js/{187.4cb9727a.js => 188.86ec8986.js} | 2 +- .../js/{188.d77b1399.js => 189.2b6a907b.js} | 2 +- .../js/{189.3baaa217.js => 190.b2731a9d.js} | 2 +- .../js/{190.9d19fc9e.js => 191.5c7e320c.js} | 2 +- .../js/{191.56392928.js => 192.08a3247e.js} | 2 +- .../js/{192.4a3b252d.js => 193.e1ebb07f.js} | 2 +- .../js/{22.0b07be8f.js => 22.72993d08.js} | 2 +- .../js/{23.8a6e8ece.js => 23.fa476110.js} | 2 +- .../js/{24.ea5052f5.js => 24.d4dfe19d.js} | 2 +- .../js/{25.1ed3f45c.js => 25.b887fb63.js} | 2 +- main/assets/js/26.3e9e428e.js | 1 + main/assets/js/26.cf12e4aa.js | 1 - .../js/{28.4a6fa868.js => 28.b89fba5f.js} | 2 +- .../js/{29.792f7af7.js => 29.e12a2466.js} | 2 +- .../js/{3.d9d939fb.js => 3.c70eddda.js} | 2 +- .../js/{30.1ac87b20.js => 30.d6f0f95c.js} | 2 +- .../js/{31.4ddb523f.js => 31.81293c2d.js} | 2 +- .../js/{32.f0128e48.js => 32.482b9561.js} | 2 +- .../js/{33.232d0ebd.js => 33.3526190a.js} | 2 +- .../js/{34.becb670b.js => 34.2d8dff1f.js} | 2 +- .../js/{35.ceca81d9.js => 35.16dd2bcf.js} | 2 +- .../js/{36.0c566279.js => 36.0a65c887.js} | 2 +- .../js/{37.b8810696.js => 37.bcbad381.js} | 2 +- .../js/{38.dd868fa6.js => 38.18bcb933.js} | 2 +- .../js/{39.ee5eaa8d.js => 39.8604af16.js} | 2 +- .../js/{4.bb48967f.js => 4.6acb97a1.js} | 2 +- .../js/{40.e45488f0.js => 40.4f975f70.js} | 2 +- .../js/{41.efa6d498.js => 41.9289ea0c.js} | 2 +- .../js/{42.d85a722b.js => 42.9ba798cd.js} | 2 +- .../js/{43.59659a51.js => 43.ceecc951.js} | 2 +- .../js/{44.84ed60fb.js => 44.145bdfe7.js} | 2 +- .../js/{45.f6c400dc.js => 45.1a10caaf.js} | 2 +- .../js/{46.26fc2a59.js => 46.17170989.js} | 2 +- .../js/{47.840cd72e.js => 47.bebd1a92.js} | 2 +- .../js/{48.289c4b6f.js => 48.a4c5bbdc.js} | 2 +- .../js/{49.3d43c17f.js => 49.37a7d42b.js} | 2 +- .../js/{5.6c22831a.js => 5.915ce0fc.js} | 2 +- .../js/{50.1230e0e4.js => 50.5893565e.js} | 2 +- .../js/{51.9ad26172.js => 51.695f3e04.js} | 2 +- .../js/{52.8e8f2c55.js => 52.21d357c6.js} | 2 +- .../js/{54.5f180535.js => 54.79d66660.js} | 2 +- .../js/{58.f0422648.js => 58.4c5ebfc7.js} | 2 +- .../js/{59.ff601393.js => 59.2b1aecb3.js} | 2 +- .../js/{6.4fed3cd8.js => 6.db0c2214.js} | 2 +- .../js/{60.6aca670e.js => 60.66615724.js} | 2 +- .../js/{61.81a86b33.js => 61.4d00c179.js} | 2 +- .../js/{62.1880f883.js => 62.d794a5e9.js} | 2 +- .../js/{63.17d87726.js => 63.0531c89d.js} | 2 +- .../js/{64.4b642893.js => 64.ec07c490.js} | 2 +- .../js/{65.b075267d.js => 65.4975f8df.js} | 2 +- .../js/{66.47484ddd.js => 66.38bb058f.js} | 2 +- .../js/{67.012b364e.js => 67.daf82afb.js} | 2 +- .../js/{68.174b16d5.js => 68.48166480.js} | 2 +- .../js/{69.e408b850.js => 69.22cff208.js} | 2 +- .../js/{70.eae4cf22.js => 70.78daa1b8.js} | 2 +- .../js/{71.b624a404.js => 71.8d1483ae.js} | 2 +- .../js/{72.6bba722e.js => 72.dd28914f.js} | 2 +- .../js/{73.bdaee872.js => 73.6f0749f3.js} | 2 +- .../js/{74.e2a7ac04.js => 74.c815b14c.js} | 2 +- .../js/{75.d85e841f.js => 75.c5969d5f.js} | 2 +- .../js/{76.90581540.js => 76.93057efd.js} | 2 +- .../js/{77.95b41a03.js => 77.15ef29f1.js} | 2 +- .../js/{78.11654d4d.js => 78.8f5e03af.js} | 2 +- .../js/{79.95964c88.js => 79.ae5f4e39.js} | 2 +- .../js/{80.a5bf4a3a.js => 80.9185877f.js} | 2 +- .../js/{81.68d76968.js => 81.1736641e.js} | 2 +- .../js/{82.8189f93a.js => 82.3ccd9656.js} | 2 +- .../js/{83.966889d8.js => 83.9e279b70.js} | 2 +- .../js/{84.31f5a6d7.js => 84.d720a594.js} | 2 +- .../js/{85.11e02601.js => 85.26cd2e28.js} | 2 +- .../js/{86.6cf2a3e0.js => 86.bd3dac19.js} | 2 +- .../js/{87.166dcf04.js => 87.597aea17.js} | 2 +- .../js/{88.18487d88.js => 88.017e692b.js} | 2 +- .../js/{89.f1b63a94.js => 89.ecf565ef.js} | 2 +- .../js/{90.a75571ed.js => 90.a5ef6727.js} | 2 +- .../js/{91.215b65ab.js => 91.09c6eb22.js} | 2 +- .../js/{92.f02d4bf1.js => 92.e991d100.js} | 2 +- .../js/{93.425314ea.js => 93.0e18c73c.js} | 2 +- .../js/{94.4d57b040.js => 94.b5735839.js} | 2 +- .../js/{95.8576f104.js => 95.f6696b7f.js} | 2 +- .../js/{96.76bda01f.js => 96.6fcf7344.js} | 2 +- .../js/{97.78dad0e6.js => 97.fba0ec0f.js} | 2 +- .../js/{98.adf439e8.js => 98.a9c0da7a.js} | 2 +- .../js/{99.02147741.js => 99.ed5d988e.js} | 2 +- .../js/{app.7144a29f.js => app.fb33ad2b.js} | 4 +- main/delegators/delegator-faq.html | 4 +- main/delegators/delegator-guide-cli.html | 4 +- main/delegators/delegator-security.html | 4 +- main/delegators/index.html | 4 +- main/es/gaia-tutorials/installation.html | 4 +- main/es/gaia-tutorials/join-mainnet.html | 4 +- main/es/gaia-tutorials/what-is-gaia.html | 4 +- .../community-pool-spend/index.html | 4 +- .../governance/params-change/Governance.html | 4 +- main/es/index.html | 4 +- main/getting-started/index.html | 4 +- main/getting-started/installation.html | 4 +- main/getting-started/quickstart.html | 6 +- main/getting-started/what-is-gaia.html | 4 +- main/governance/best-practices.html | 4 +- main/governance/formatting.html | 4 +- main/governance/index.html | 4 +- main/governance/process.html | 4 +- .../proposal-types/community-pool-spend.html | 4 +- main/governance/proposal-types/index.html | 4 +- .../proposal-types/param-change.html | 4 +- .../proposal-types/params-change/Auth.html | 4 +- .../proposal-types/params-change/Bank.html | 4 +- .../proposal-types/params-change/Crisis.html | 4 +- .../params-change/Distribution.html | 4 +- .../params-change/Governance.html | 4 +- .../proposal-types/params-change/Mint.html | 4 +- .../params-change/Slashing.html | 4 +- .../proposal-types/params-change/Staking.html | 4 +- .../params-change/param-index.html | 4 +- main/governance/proposal-types/text-prop.html | 4 +- .../2020-10-blocks-per-year/index.html | 4 +- .../2020-11-inflation-rate-change/index.html | 4 +- .../2021-01-atom2021_marketing/index.html | 4 +- .../2021-01-delay-stargate-upgrade/index.html | 4 +- .../2021-01-stargate-upgrade-b/index.html | 4 +- .../2021-01-stargate-upgrade/index.html | 4 +- .../2021-03-enable-ibc-transfers/index.html | 4 +- .../2021-04-advancing-ethermint/index.html | 4 +- .../index.html | 4 +- .../2021-04-prop34-continuation/index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../2021-09-hub-ibc-router/index.html | 4 +- main/governance/proposals/index.html | 4 +- .../proposals/previous-proposals/index.html | 4 +- .../proposals/proposal-template.html | 4 +- .../state-of-cosmos-governance-2021.html | 4 +- main/governance/submitting.html | 4 +- main/gtm-interchain.html | 4 +- main/guidelines/code-guidelines.html | 4 +- main/hub-overview/index.html | 4 +- main/hub-overview/overview.html | 6 +- 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 | 4 +- main/ko/gaia-tutorials/join-mainnet.html | 4 +- main/ko/gaia-tutorials/join-testnet.html | 4 +- main/ko/gaia-tutorials/what-is-gaia.html | 4 +- main/ko/genesis-state.html | 4 +- main/ko/index.html | 4 +- main/ko/keys.html | 4 +- main/ko/launch/blog-1-kr.html | 4 +- main/ko/launch/blog-2-kr.html | 4 +- main/ko/resources/gaiad.html | 4 +- main/ko/resources/genesis.html | 4 +- main/ko/resources/hd-wallets.html | 4 +- main/ko/resources/ledger.html | 4 +- main/ko/upgrade-node.html | 4 +- main/ko/validators/overview.html | 4 +- main/ko/validators/security.html | 4 +- main/ko/validators/validator-faq.html | 4 +- main/ko/validators/validator-setup.html | 4 +- main/launch/blog-1-en.html | 4 +- main/launch/blog-2-en.html | 4 +- main/launch/index.html | 4 +- .../{ => cosmoshub-2}/cosmoshub-2.html | 8 +- .../{ => cosmoshub-3}/cosmoshub-3.html | 10 +- .../{ => cosmoshub-3}/cosmoshub-3[ES_es].html | 6 +- .../{ => cosmoshub-3}/cosmoshub-3[KR_kr].html | 10 +- main/migration/cosmoshub-4-delta-upgrade.html | 6 +- main/migration/cosmoshub-4-v10-upgrade.html | 6 +- main/migration/cosmoshub-4-v11-upgrade.html | 6 +- main/migration/cosmoshub-4-v12-upgrade.html | 95 +++++++++++++++++++ .../cosmoshub-4-v7-Theta-upgrade.html | 6 +- .../migration/cosmoshub-4-v8-Rho-upgrade.html | 6 +- .../cosmoshub-4-v9-Lambda-upgrade.html | 6 +- main/migration/cosmoshub-4-vega-upgrade.html | 6 +- main/migration/index.html | 6 +- main/modules/globalfee.html | 4 +- main/modules/index.html | 4 +- main/proto/proto-docs.html | 4 +- main/resources/archives.html | 4 +- main/resources/genesis.html | 4 +- main/resources/hd-wallets.html | 4 +- main/resources/index.html | 4 +- main/resources/ledger.html | 4 +- main/resources/reproducible-builds.html | 4 +- main/resources/service-providers.html | 6 +- main/roadmap/cosmos-hub-roadmap-2.0.html | 4 +- main/roadmap/index.html | 4 +- main/sitemap.xml | 2 +- main/validators/index.html | 4 +- main/validators/kms/kms.html | 4 +- main/validators/kms/kms_ledger.html | 4 +- main/validators/overview.html | 4 +- main/validators/security.html | 4 +- main/validators/validator-faq.html | 4 +- main/validators/validator-setup.html | 4 +- main/zh/delegator/delegator-guide-cli.html | 4 +- main/zh/gaia-tutorials/installation.html | 4 +- main/zh/gaia-tutorials/join-mainnet.html | 4 +- main/zh/gaia-tutorials/join-testnet.html | 4 +- main/zh/gaia-tutorials/what-is-gaia.html | 4 +- main/zh/genesis-state.html | 4 +- main/zh/index.html | 4 +- main/zh/launch/blog-1-cn.html | 4 +- main/zh/launch/blog-2-cn.html | 4 +- main/zh/resources/gaiad.html | 4 +- main/zh/resources/genesis.html | 4 +- main/zh/resources/ledger.html | 4 +- main/zh/validators/overview.html | 4 +- main/zh/validators/security.html | 4 +- main/zh/validators/validator-faq.html | 4 +- main/zh/validators/validator-setup.html | 4 +- 317 files changed, 567 insertions(+), 471 deletions(-) rename main/assets/js/{100.1e7b7e6d.js => 100.d72a6f13.js} (97%) rename main/assets/js/{101.41c94ebb.js => 101.fbfd93c5.js} (99%) rename main/assets/js/{102.a6cf997c.js => 102.b996c813.js} (99%) rename main/assets/js/{103.c8f00fc6.js => 103.74845ffc.js} (96%) rename main/assets/js/{104.e500deb9.js => 104.6ffc4475.js} (99%) rename main/assets/js/{105.9bdc8488.js => 105.da49e64f.js} (98%) rename main/assets/js/{106.9244cf5c.js => 106.4d041b8e.js} (99%) rename main/assets/js/{107.d99c5e28.js => 107.2017ed36.js} (99%) rename main/assets/js/{108.4b282673.js => 108.a5cc8ad3.js} (98%) rename main/assets/js/{109.7f8893ff.js => 109.080740e3.js} (98%) rename main/assets/js/{110.c7f34720.js => 110.880e717a.js} (87%) rename main/assets/js/{111.7af9137d.js => 111.ff197e6e.js} (99%) rename main/assets/js/{112.c427a5b2.js => 112.96648dc8.js} (98%) rename main/assets/js/{113.f3317497.js => 113.11381446.js} (99%) rename main/assets/js/{114.7816e89f.js => 114.c6df8427.js} (99%) rename main/assets/js/{115.2778ce5d.js => 115.c45bcdc3.js} (99%) rename main/assets/js/{116.7bc17c71.js => 116.c8b9cb9b.js} (99%) rename main/assets/js/{117.01b7cd9e.js => 117.06c62341.js} (89%) rename main/assets/js/{118.dcb45bc7.js => 118.3d452723.js} (95%) rename main/assets/js/{119.4b1ad2bc.js => 119.d0e59606.js} (99%) rename main/assets/js/{120.a31adfab.js => 120.84cdb815.js} (99%) rename main/assets/js/{121.ddc5c405.js => 121.b5b58299.js} (99%) rename main/assets/js/{123.eacc5a93.js => 123.69ec9ad9.js} (99%) rename main/assets/js/{124.bfa80ec4.js => 124.3b78d336.js} (79%) rename main/assets/js/{125.c6074627.js => 125.b8ef922c.js} (97%) rename main/assets/js/{126.73158116.js => 126.436c676f.js} (99%) rename main/assets/js/{127.530e9f27.js => 127.cd5d7474.js} (99%) rename main/assets/js/{128.ede1e479.js => 128.c6c460b3.js} (99%) rename main/assets/js/{129.9e1ef4a0.js => 129.d68bae07.js} (99%) rename main/assets/js/{13.f91af9bf.js => 13.ac39b3bc.js} (98%) rename main/assets/js/{130.d8b943d0.js => 130.b3f6dbe9.js} (97%) rename main/assets/js/{131.8f91e26e.js => 131.c29e9eb8.js} (98%) rename main/assets/js/{132.e068d009.js => 132.0c8ce5ea.js} (94%) rename main/assets/js/{133.27518b66.js => 133.50ac843b.js} (99%) rename main/assets/js/{134.9e50057b.js => 134.6d928121.js} (99%) rename main/assets/js/{135.2933dbb2.js => 135.374d0ffc.js} (99%) rename main/assets/js/{136.7cce7c85.js => 136.ca70607e.js} (99%) rename main/assets/js/{137.48900642.js => 137.685386f7.js} (99%) rename main/assets/js/{138.45b49d81.js => 138.05c1d988.js} (99%) rename main/assets/js/{139.e95740f0.js => 139.d91652a8.js} (99%) rename main/assets/js/{140.b9fdfd5c.js => 140.979c3402.js} (98%) rename main/assets/js/{141.f18c9e86.js => 141.57f06276.js} (99%) rename main/assets/js/{142.0d58bdd3.js => 142.3550f901.js} (99%) rename main/assets/js/{143.c8a82d17.js => 143.633bc773.js} (99%) rename main/assets/js/{144.41d5bb95.js => 144.9481644a.js} (79%) rename main/assets/js/{145.18209fca.js => 145.23b11bf4.js} (99%) rename main/assets/js/{146.2dd38d96.js => 146.4f65824a.js} (99%) rename main/assets/js/{147.9cf621ac.js => 147.b952018d.js} (93%) rename main/assets/js/{148.224a794a.js => 148.c3d0b67b.js} (99%) create mode 100644 main/assets/js/149.10e71a6f.js delete mode 100644 main/assets/js/149.6bc3ef41.js rename main/assets/js/{15.f4461b1c.js => 15.621001a3.js} (96%) rename main/assets/js/{150.50311e0c.js => 150.9719ec09.js} (99%) delete mode 100644 main/assets/js/151.1927e4a2.js create mode 100644 main/assets/js/151.b6e386d4.js rename main/assets/js/{152.43bb70e4.js => 152.5c14655f.js} (99%) rename main/assets/js/{153.aba6c640.js => 153.8ead3773.js} (99%) rename main/assets/js/{154.290efe93.js => 154.aa0a518c.js} (99%) create mode 100644 main/assets/js/155.c561c7e0.js rename main/assets/js/{155.d1dbf798.js => 156.bd3eda60.js} (99%) rename main/assets/js/{156.979bd2e4.js => 157.22825acb.js} (99%) rename main/assets/js/{157.0e608933.js => 158.3deb58c4.js} (99%) rename main/assets/js/{158.e0ee912e.js => 159.751c852a.js} (99%) rename main/assets/js/{16.d8b516cf.js => 16.faf4e88c.js} (95%) rename main/assets/js/{159.5d3ab240.js => 160.864eda26.js} (92%) rename main/assets/js/{160.02050088.js => 161.49512805.js} (99%) rename main/assets/js/{161.d588d8f6.js => 162.bd774969.js} (99%) rename main/assets/js/{162.4cfa5f8d.js => 163.da0f2a65.js} (94%) rename main/assets/js/{163.103718af.js => 164.cae65005.js} (97%) rename main/assets/js/{164.5324bb20.js => 165.e030d039.js} (99%) rename main/assets/js/{165.b97dc464.js => 166.549b0367.js} (99%) rename main/assets/js/{166.69693f84.js => 167.855950cd.js} (98%) rename main/assets/js/{167.5ff076b6.js => 168.a27818a8.js} (99%) rename main/assets/js/{168.0013da7c.js => 169.d96d9ea9.js} (99%) rename main/assets/js/{169.81f9571c.js => 170.b7bb9fa0.js} (94%) rename main/assets/js/{170.db19179e.js => 171.26369e88.js} (95%) rename main/assets/js/{171.286cf0d5.js => 172.66b363b1.js} (97%) rename main/assets/js/{172.9dbf3262.js => 173.819e13c2.js} (99%) rename main/assets/js/{173.a490a9aa.js => 174.3bfb54b2.js} (98%) rename main/assets/js/{174.c55965d9.js => 175.69e0ebc2.js} (98%) rename main/assets/js/{175.97c52c12.js => 176.d09f79fe.js} (99%) rename main/assets/js/{176.1ea06b4c.js => 177.761af6db.js} (99%) rename main/assets/js/{177.642da123.js => 178.b2ce0b2e.js} (97%) rename main/assets/js/{178.631ad545.js => 179.f478a22a.js} (99%) rename main/assets/js/{179.38d352e6.js => 180.efe3f6d9.js} (98%) rename main/assets/js/{180.6ebc142a.js => 181.12f14250.js} (99%) rename main/assets/js/{181.929b25e6.js => 182.c90d83a5.js} (98%) rename main/assets/js/{182.a9457d82.js => 183.648229b2.js} (97%) rename main/assets/js/{183.2708d4a5.js => 184.3eccc474.js} (98%) rename main/assets/js/{184.87a58094.js => 185.58bc31db.js} (99%) rename main/assets/js/{185.c1f27438.js => 186.cb4cc8b9.js} (99%) rename main/assets/js/{186.051074c4.js => 187.0b511603.js} (99%) rename main/assets/js/{187.4cb9727a.js => 188.86ec8986.js} (99%) rename main/assets/js/{188.d77b1399.js => 189.2b6a907b.js} (99%) rename main/assets/js/{189.3baaa217.js => 190.b2731a9d.js} (98%) rename main/assets/js/{190.9d19fc9e.js => 191.5c7e320c.js} (98%) rename main/assets/js/{191.56392928.js => 192.08a3247e.js} (99%) rename main/assets/js/{192.4a3b252d.js => 193.e1ebb07f.js} (99%) rename main/assets/js/{22.0b07be8f.js => 22.72993d08.js} (98%) rename main/assets/js/{23.8a6e8ece.js => 23.fa476110.js} (91%) rename main/assets/js/{24.ea5052f5.js => 24.d4dfe19d.js} (95%) rename main/assets/js/{25.1ed3f45c.js => 25.b887fb63.js} (94%) create mode 100644 main/assets/js/26.3e9e428e.js delete mode 100644 main/assets/js/26.cf12e4aa.js rename main/assets/js/{28.4a6fa868.js => 28.b89fba5f.js} (74%) rename main/assets/js/{29.792f7af7.js => 29.e12a2466.js} (93%) rename main/assets/js/{3.d9d939fb.js => 3.c70eddda.js} (90%) rename main/assets/js/{30.1ac87b20.js => 30.d6f0f95c.js} (88%) rename main/assets/js/{31.4ddb523f.js => 31.81293c2d.js} (93%) rename main/assets/js/{32.f0128e48.js => 32.482b9561.js} (98%) rename main/assets/js/{33.232d0ebd.js => 33.3526190a.js} (98%) rename main/assets/js/{34.becb670b.js => 34.2d8dff1f.js} (97%) rename main/assets/js/{35.ceca81d9.js => 35.16dd2bcf.js} (97%) rename main/assets/js/{36.0c566279.js => 36.0a65c887.js} (98%) rename main/assets/js/{37.b8810696.js => 37.bcbad381.js} (98%) rename main/assets/js/{38.dd868fa6.js => 38.18bcb933.js} (99%) rename main/assets/js/{39.ee5eaa8d.js => 39.8604af16.js} (97%) rename main/assets/js/{4.bb48967f.js => 4.6acb97a1.js} (99%) rename main/assets/js/{40.e45488f0.js => 40.4f975f70.js} (99%) rename main/assets/js/{41.efa6d498.js => 41.9289ea0c.js} (97%) rename main/assets/js/{42.d85a722b.js => 42.9ba798cd.js} (98%) rename main/assets/js/{43.59659a51.js => 43.ceecc951.js} (84%) rename main/assets/js/{44.84ed60fb.js => 44.145bdfe7.js} (86%) rename main/assets/js/{45.f6c400dc.js => 45.1a10caaf.js} (98%) rename main/assets/js/{46.26fc2a59.js => 46.17170989.js} (97%) rename main/assets/js/{47.840cd72e.js => 47.bebd1a92.js} (85%) rename main/assets/js/{48.289c4b6f.js => 48.a4c5bbdc.js} (98%) rename main/assets/js/{49.3d43c17f.js => 49.37a7d42b.js} (92%) rename main/assets/js/{5.6c22831a.js => 5.915ce0fc.js} (96%) rename main/assets/js/{50.1230e0e4.js => 50.5893565e.js} (95%) rename main/assets/js/{51.9ad26172.js => 51.695f3e04.js} (99%) rename main/assets/js/{52.8e8f2c55.js => 52.21d357c6.js} (95%) rename main/assets/js/{54.5f180535.js => 54.79d66660.js} (98%) rename main/assets/js/{58.f0422648.js => 58.4c5ebfc7.js} (97%) rename main/assets/js/{59.ff601393.js => 59.2b1aecb3.js} (99%) rename main/assets/js/{6.4fed3cd8.js => 6.db0c2214.js} (98%) rename main/assets/js/{60.6aca670e.js => 60.66615724.js} (98%) rename main/assets/js/{61.81a86b33.js => 61.4d00c179.js} (98%) rename main/assets/js/{62.1880f883.js => 62.d794a5e9.js} (98%) rename main/assets/js/{63.17d87726.js => 63.0531c89d.js} (99%) rename main/assets/js/{64.4b642893.js => 64.ec07c490.js} (99%) rename main/assets/js/{65.b075267d.js => 65.4975f8df.js} (98%) rename main/assets/js/{66.47484ddd.js => 66.38bb058f.js} (93%) rename main/assets/js/{67.012b364e.js => 67.daf82afb.js} (99%) rename main/assets/js/{68.174b16d5.js => 68.48166480.js} (99%) rename main/assets/js/{69.e408b850.js => 69.22cff208.js} (99%) rename main/assets/js/{70.eae4cf22.js => 70.78daa1b8.js} (98%) rename main/assets/js/{71.b624a404.js => 71.8d1483ae.js} (99%) rename main/assets/js/{72.6bba722e.js => 72.dd28914f.js} (99%) rename main/assets/js/{73.bdaee872.js => 73.6f0749f3.js} (97%) rename main/assets/js/{74.e2a7ac04.js => 74.c815b14c.js} (99%) rename main/assets/js/{75.d85e841f.js => 75.c5969d5f.js} (99%) rename main/assets/js/{76.90581540.js => 76.93057efd.js} (91%) rename main/assets/js/{77.95b41a03.js => 77.15ef29f1.js} (99%) rename main/assets/js/{78.11654d4d.js => 78.8f5e03af.js} (98%) rename main/assets/js/{79.95964c88.js => 79.ae5f4e39.js} (97%) rename main/assets/js/{80.a5bf4a3a.js => 80.9185877f.js} (97%) rename main/assets/js/{81.68d76968.js => 81.1736641e.js} (99%) rename main/assets/js/{82.8189f93a.js => 82.3ccd9656.js} (99%) rename main/assets/js/{83.966889d8.js => 83.9e279b70.js} (99%) rename main/assets/js/{84.31f5a6d7.js => 84.d720a594.js} (97%) rename main/assets/js/{85.11e02601.js => 85.26cd2e28.js} (99%) rename main/assets/js/{86.6cf2a3e0.js => 86.bd3dac19.js} (99%) rename main/assets/js/{87.166dcf04.js => 87.597aea17.js} (99%) rename main/assets/js/{88.18487d88.js => 88.017e692b.js} (98%) rename main/assets/js/{89.f1b63a94.js => 89.ecf565ef.js} (98%) rename main/assets/js/{90.a75571ed.js => 90.a5ef6727.js} (99%) rename main/assets/js/{91.215b65ab.js => 91.09c6eb22.js} (99%) rename main/assets/js/{92.f02d4bf1.js => 92.e991d100.js} (99%) rename main/assets/js/{93.425314ea.js => 93.0e18c73c.js} (99%) rename main/assets/js/{94.4d57b040.js => 94.b5735839.js} (99%) rename main/assets/js/{95.8576f104.js => 95.f6696b7f.js} (96%) rename main/assets/js/{96.76bda01f.js => 96.6fcf7344.js} (98%) rename main/assets/js/{97.78dad0e6.js => 97.fba0ec0f.js} (98%) rename main/assets/js/{98.adf439e8.js => 98.a9c0da7a.js} (99%) rename main/assets/js/{99.02147741.js => 99.ed5d988e.js} (99%) rename main/assets/js/{app.7144a29f.js => app.fb33ad2b.js} (74%) rename main/migration/{ => cosmoshub-2}/cosmoshub-2.html (66%) rename main/migration/{ => cosmoshub-3}/cosmoshub-3.html (70%) rename main/migration/{ => cosmoshub-3}/cosmoshub-3[ES_es].html (71%) rename main/migration/{ => cosmoshub-3}/cosmoshub-3[KR_kr].html (67%) create mode 100644 main/migration/cosmoshub-4-v12-upgrade.html diff --git a/index.html b/index.html index 46535c98aa7..69eb7f9900a 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,11 @@ - +
- + diff --git a/main/404.html b/main/404.html index d41a3e7b476..48a86c0a1a3 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 132a375751b..d022f8b21b3 100644 --- a/main/DOCS_README.html +++ b/main/DOCS_README.html @@ -8,7 +8,7 @@ - + @@ -36,6 +36,6 @@ Copy make install
Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/PROCESS.html b/main/architecture/PROCESS.html index b7458937c3f..14e55c6cf3a 100644 --- a/main/architecture/PROCESS.html +++ b/main/architecture/PROCESS.html @@ -8,7 +8,7 @@ - + @@ -24,6 +24,6 @@ C --> E[ACCEPTED or REJECTED] E --> F[SUPERSEDED by ADR-xxx]

# Language used in ADR

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

# Project Integrations [optional]

# Downstream User Impact Report

(Needs to be created)

# Upstream Partner Impact Report

(Needs to be created)

# Inter-module Dependence Report

(Needs to be created)

# Support

Documentation (opens new window)

# Additional Research & References

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

# Consequences

# Positive

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

# Negative

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

# References

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

# Consequences

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

# Positive

# Negative

# Neutral

# References

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

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

# ADR Table of Contents

# Accepted

# Proposed

# Draft

# Rejected

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/assets/js/100.1e7b7e6d.js b/main/assets/js/100.d72a6f13.js similarity index 97% rename from main/assets/js/100.1e7b7e6d.js rename to main/assets/js/100.d72a6f13.js index 083ce9810a6..f962f13bfa5 100644 --- a/main/assets/js/100.1e7b7e6d.js +++ b/main/assets/js/100.d72a6f13.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{567: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:"delay-of-hub-stargate-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delay-of-hub-stargate-upgrade"}},[e._v("#")]),e._v(" Delay of Hub Stargate Upgrade")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("This governance proposal will signal that "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 35"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("p",[e._v("We are recommending the delay for the following reasons.")]),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("li",[e._v("The IBC Go To Market Working Group has "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("identified Ledger hardware wallet"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("li",[e._v("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 "),a("a",{attrs:{href:"https://twitter.com/Ledger_Support/status/1352247403605356551?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://twitter.com/Ledger_Support/status/1352247403605356551?s=20"),a("OutboundLink")],1),e._v(". The additional time should minimize the disruption for $ATOM holders. Thank so much to the $IRIS team who is fielding a similar request volume among our non-English community.")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{592: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:"delay-of-hub-stargate-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delay-of-hub-stargate-upgrade"}},[e._v("#")]),e._v(" Delay of Hub Stargate Upgrade")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("This governance proposal will signal that "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 35"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("p",[e._v("We are recommending the delay for the following reasons.")]),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("li",[e._v("The IBC Go To Market Working Group has "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("identified Ledger hardware wallet"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("li",[e._v("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 "),a("a",{attrs:{href:"https://twitter.com/Ledger_Support/status/1352247403605356551?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://twitter.com/Ledger_Support/status/1352247403605356551?s=20"),a("OutboundLink")],1),e._v(". The additional time should minimize the disruption for $ATOM holders. Thank so much to the $IRIS team who is fielding a similar request volume among our non-English community.")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/101.41c94ebb.js b/main/assets/js/101.fbfd93c5.js similarity index 99% rename from main/assets/js/101.41c94ebb.js rename to main/assets/js/101.fbfd93c5.js index f9f3c74e42f..4f9ff5b797b 100644 --- a/main/assets/js/101.41c94ebb.js +++ b/main/assets/js/101.fbfd93c5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{584:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"stargate-upgrade-second-time-is-a-charm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-second-time-is-a-charm"}},[e._v("#")]),e._v(" Stargate Upgrade- Second time is a charm")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/bADrO0dW2KJC0ZS1uie389nmV6MTroRqTNaeFPuTtR7qow",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 28, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Feb 18th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 4.0.0")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate.")]),e._v(" "),a("p",[e._v("After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub.")]),e._v(" "),a("h3",{attrs:{id:"aborting-of-proposal-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#aborting-of-proposal-35"}},[e._v("#")]),e._v(" Aborting of Proposal 35")]),e._v(" "),a("p",[e._v("Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade.")]),e._v(" "),a("ul",[a("li",[e._v("Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request"),a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/559",target:"_blank",rel:"noopener noreferrer"}},[e._v("Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("A balance validation regression was identified during Prop 29 code review. "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/8417",target:"_blank",rel:"noopener noreferrer"}},[e._v("x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software.")])]),e._v(" "),a("li",[a("p",[e._v("Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade.")])]),e._v(" "),a("li",[a("p",[e._v("Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved.")]),e._v(" "),a("p",[e._v("The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data.")]),e._v(" "),a("p",[e._v("All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces.")]),e._v(" "),a("p",[e._v("Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("The upgrade instructions will continue to improve as a living "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-3.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),a("OutboundLink")],1),e._v(". The Gaia maintainers will continue to improve the instruction below.")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1613628000")]),e._v("ie. 06:00 UTC on Feb 18th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(". This can be easily determined from gaia logs.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 4.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Feb 17")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Feb 18")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Feb 18")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Feb 18")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("a279d091c6f66f8a91c87943139ebaecdd84f689")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/stargate-launch/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A signaling proposal will be made to indicate a vulnerability or defect in the upgrade has been found. A future proposal will be made to the Hub to upgrade to the new target commit.")])]),e._v(" "),a("li",[a("p",[e._v("The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{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.a6cf997c.js b/main/assets/js/102.b996c813.js similarity index 99% rename from main/assets/js/102.a6cf997c.js rename to main/assets/js/102.b996c813.js index 4643eec405c..14fbce60cbc 100644 --- a/main/assets/js/102.a6cf997c.js +++ b/main/assets/js/102.b996c813.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{581:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[e._v("#")]),e._v(" Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/AADU5rg0GvapbrICLUk7SxZeMDrKo5Q8oLrpOwl71wXhnQ",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 11, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Jan 28th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 3.0.")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate.")]),e._v(" "),a("p",[e._v("After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub.")]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software.")])]),e._v(" "),a("li",[a("p",[e._v("Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade.")])]),e._v(" "),a("li",[a("p",[e._v("Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved.")]),e._v(" "),a("p",[e._v("The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data.")]),e._v(" "),a("p",[e._v("All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces.")]),e._v(" "),a("p",[e._v("Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1611813600")]),e._v("ie. 06:00 UTC on Jan 28th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 3.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Jan 28th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Jan 27")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Jan 28")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Jan 28")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Jan 28")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("d974b27a8caf8cad3b06fbe4678871e4b0b69a51")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("A testnet with the final version of Gaia 3.0 will be running to assist with integrations.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A future proposal will be made to the Hub to upgrade to the new target commit.")])]),e._v(" "),a("li",[a("p",[e._v("The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{527: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/103.c8f00fc6.js b/main/assets/js/103.74845ffc.js similarity index 96% rename from main/assets/js/103.c8f00fc6.js rename to main/assets/js/103.74845ffc.js index 6956564084a..a7d6fda2b6c 100644 --- a/main/assets/js/103.c8f00fc6.js +++ b/main/assets/js/103.74845ffc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{568:function(e,t,s){"use strict";s.r(t);var n=s(1),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"enable-ibc-transfers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#enable-ibc-transfers"}},[e._v("#")]),e._v(" Enable IBC Transfers")]),e._v(" "),s("p",[e._v("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.\nIqlusion 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.")]),e._v(" "),s("h2",{attrs:{id:"security-model"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-model"}},[e._v("#")]),e._v(" Security Model")]),e._v(" "),s("p",[e._v("Tendermint full nodes produce agreement under the assumption that at most ⅓ of the voting power held by validators is Byzantine.")]),e._v(" "),s("h2",{attrs:{id:"ibc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ibc"}},[e._v("#")]),e._v(" IBC")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"incentive-security-extensions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#incentive-security-extensions"}},[e._v("#")]),e._v(" Incentive Security Extensions")]),e._v(" "),s("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{591:function(e,t,s){"use strict";s.r(t);var n=s(1),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"enable-ibc-transfers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#enable-ibc-transfers"}},[e._v("#")]),e._v(" Enable IBC Transfers")]),e._v(" "),s("p",[e._v("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.\nIqlusion 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.")]),e._v(" "),s("h2",{attrs:{id:"security-model"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-model"}},[e._v("#")]),e._v(" Security Model")]),e._v(" "),s("p",[e._v("Tendermint full nodes produce agreement under the assumption that at most ⅓ of the voting power held by validators is Byzantine.")]),e._v(" "),s("h2",{attrs:{id:"ibc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ibc"}},[e._v("#")]),e._v(" IBC")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"incentive-security-extensions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#incentive-security-extensions"}},[e._v("#")]),e._v(" Incentive Security Extensions")]),e._v(" "),s("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/104.e500deb9.js b/main/assets/js/104.6ffc4475.js similarity index 99% rename from main/assets/js/104.e500deb9.js rename to main/assets/js/104.6ffc4475.js index dd927cec637..e5c0c5c0f69 100644 --- a/main/assets/js/104.e500deb9.js +++ b/main/assets/js/104.6ffc4475.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{578:function(e,t,n){"use strict";n.r(t);var o=n(1),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[e._v("#")]),e._v(" Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain")]),e._v(" "),n("blockquote",[n("p",[n("strong",[e._v("NOTE")]),e._v(": this is a short version of the full proposal. To read the full document click "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")])]),e._v(" "),n("h3",{attrs:{id:"author"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[e._v("#")]),e._v(" Author")]),e._v(" "),n("p",[e._v("Federico Kunze Küllmer: "),n("a",{attrs:{href:"https://github.com/fedekunze",target:"_blank",rel:"noopener noreferrer"}},[e._v("@fedekunze"),n("OutboundLink")],1)]),e._v(" "),n("h2",{attrs:{id:"summary"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),n("p",[e._v("Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. The team will use these resources to grow our dedicated Cosmos-EVM team, so we can take on the commitments and responsibilities necessary to maintain and support the Cosmos-EVM chain and codebase.")]),e._v(" "),n("p",[e._v("An Ethermint environment has enormous potential to unlock new use cases within the Cosmos ecosystem that are not possible on Ethereum today. Use cases that require scalability and composability are some of the endless possibilities for Ethermint.")]),e._v(" "),n("p",[e._v("Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:")]),e._v(" "),n("ul",[n("li",[e._v("Access to greater liquidity through IBC")]),e._v(" "),n("li",[e._v("Faster transaction times through Tendermint BFT's instant finality")]),e._v(" "),n("li",[e._v("Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)")]),e._v(" "),n("li",[e._v("Seamless portability and composability with Ethereum Virtual Machine support")])]),e._v(" "),n("p",[e._v("The commitments stated in this proposal will ensure a successful launch for the Ethermint chain together with its existing contributors (ChainSafe, OKEx, Iris, Injective, etc). Launching collaboratively with Ethermint stakeholders will result in a robust and independent community within Cosmos that will enable greater developer adoption of Cosmos technology.")]),e._v(" "),n("p",[e._v("The Ethermint stakeholders are partnering to execute on the long-awaited Ethermint Chain by joining forces to develop and deploy a new Cosmos EVM chain that will be used by thousands of crypto users at launch.")]),e._v(" "),n("h2",{attrs:{id:"governance-votes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),n("p",[e._v("The following items summarize the voting options and what it means for this proposal. All addresses that vote on the proposal might be eligible for a future airdrop.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("YES")]),e._v(": You approve the proposal statements and distribute the amount of 100,000 ATOMs to the multisig address. The treasury will allocate the funds to the Tharsis team, leading Ethermint's core development efforts and supporting the chain's go-to-market strategy. It will also lead to core technology maintenance and continuous discussion to ensure the project's longevity.")]),e._v(" "),n("li",[n("strong",[e._v("NO")]),e._v(": The NO vote is a request for improvements or adjustments. You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.")]),e._v(" "),n("li",[n("strong",[e._v("NO (VETO)")]),e._v(": You veto the entire motivation for the proposal and expect the ICF and current maintainers to make the determination and continue the stewardship of the project. The proposers will not create a follow-up proposal.")]),e._v(" "),n("li",[n("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),n("h2",{attrs:{id:"multisig-and-release-of-funds"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#multisig-and-release-of-funds"}},[e._v("#")]),e._v(" Multisig and release of funds")]),e._v(" "),n("p",[e._v("Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:")]),e._v(" "),n("ul",[n("li",[e._v("Federico Kunze Küllmer - Tharsis (proposer)")]),e._v(" "),n("li",[e._v("Zaki Manian - Iqlusion")]),e._v(" "),n("li",[e._v("Marko Baricevic - Interchain GmbH")])]),e._v(" "),n("p",[e._v("The account address is: "),n("code",[e._v("cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz")])]),e._v(" "),n("p",[e._v("If the proposal passes, the team will immediately receive 40% of the funds to expand its engineering team and other business development efforts to support GTM for the chain. The remaining 60% will be released in an equal proportion to the number of milestones upon the completion of each milestone. For any reason, if the proposer has not completed the next milestone within a year of the last payment, the remaining funds held in the multisig account will be returned to the community pool.")]),e._v(" "),n("h2",{attrs:{id:"product-commitment"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#product-commitment"}},[e._v("#")]),e._v(" Product commitment")]),e._v(" "),n("p",[e._v("The current proposal aims to develop all the necessary components for a successful Ethermint chain. Our team will lead the core development efforts to execute the points below.")]),e._v(" "),n("h3",{attrs:{id:"hard-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hard-commitments"}},[e._v("#")]),e._v(" Hard Commitments")]),e._v(" "),n("p",[e._v("These are the items that are mandatory for the release of funds. The items will be split into four milestones.")]),e._v(" "),n("blockquote",[n("p",[e._v("NOTE: Some of the items below are currently stated under ChainSafe's service agreement with the ICF for Ethermint. Our team will collaborate with them on these items so that they are included by the time the EVM chain is launched. These items are marked below as [CS]")])]),e._v(" "),n("h4",{attrs:{id:"milestone-1-developer-usability-and-testing"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-1-developer-usability-and-testing"}},[e._v("#")]),e._v(" Milestone 1: Developer Usability and Testing")]),e._v(" "),n("p",[e._v("This milestone aims to reach a stage where developers can begin deployments of Ethermint with the latest Cosmos SDK version and test their smart contracts in what will feel like a seamless experience.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Starport support")]),e._v(": Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.")]),e._v(" "),n("li",[n("strong",[e._v("Rosetta API support")]),e._v(": Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.")]),e._v(" "),n("li",[n("strong",[e._v("EVM Consistency")]),e._v(": Ensure that Ethermint can operate the same state as Ethereum and deterministically runs smart contract executions, exactly how Geth does (for example, checking the gas used between Ethermint and Geth)")]),e._v(" "),n("li",[n("strong",[e._v("Replay attack protection")]),e._v(": Register Ethermint permanent testnet and mainnet chain-ids to "),n("a",{attrs:{href:"https://chainid.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ChainID Registry"),n("OutboundLink")],1),e._v(" according to "),n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-155",target:"_blank",rel:"noopener noreferrer"}},[e._v("EIP 155"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("li",[n("strong",[e._v("Documentation")]),e._v(": Ensure the documentation for both Ethermint and the EVM module are up to date with the implementation. JSON-RPC and OpenAPI (Swagger) docs for gRPC gateway and Rosetta will also be available for client developers. The team will create relevant sections to compare and distinguish key components of Ethermint and their corresponding ones on Ethereum. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Metrics")]),e._v(": We plan to list relevant metrics available through the SDK telemetry system for user engagement information such as the number of contracts deployed, amount transacted, gas usage per block, number of accounts created, number and amount IBC transfers to and from Ethermint, etc. These metrics will be displayed in a Dashboard UI in the form of charts. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Ensure compatibility with Ethereum tooling")]),e._v(": Test and coordinate with dev teams to test compatibility with (Truffle, Ganache, Metamask, web3.js, ethers.js, etc) and ensure the same dev UX as with Ethereum. The compatibility will then be ensured through end-to-end and integration tests. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("User Guides")]),e._v(": Relevant guides will be added to connect Ethermint with the tools mentioned above.")]),e._v(" "),n("li",[n("strong",[e._v("Cosmjs Library support")]),e._v(": Make Ethermint keys, signing, queries, and txs compatible with the "),n("a",{attrs:{href:"https://github.com/cosmos/cosmjs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmjs"),n("OutboundLink")],1),e._v(" library.")]),e._v(" "),n("li",[n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-3085",target:"_blank",rel:"noopener noreferrer"}},[n("strong",[e._v("EIP 3085")]),n("OutboundLink")],1),e._v(" "),n("strong",[e._v("support")]),e._v(": add "),n("code",[e._v("wallet_addEthereumChain")]),e._v(" JSON-RPC endpoint for Ethermint.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-2-maximizing-performance-and-compatibility"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-2-maximizing-performance-and-compatibility"}},[e._v("#")]),e._v(" Milestone 2: Maximizing Performance and Compatibility")]),e._v(" "),n("p",[e._v("This milestone aims to enhance and benchmark the Ethermint chain's performance so developers can experience its superior benefits over existing solutions in the market.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("EVM module readiness")]),e._v(": The current x/evm module from Ethermint suffers from technical debt regarding its architecture. The current proposal will do a bottleneck analysis of the EVM state transitions to redesign the EVM module to boost performance.")]),e._v(" "),n("li",[n("strong",[e._v("Benchmarks")]),e._v(": As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Maintain a permanent testnet")]),e._v(": Ethermint will have a permanent testnet to ease the development process for Ethereum developers and clients that wish to connect to Ethermint. The team will create a dedicated website, infrastructure, and faucet UI for users to request funds.")]),e._v(" "),n("li",[n("strong",[e._v("Faucet support")]),e._v(": The team will ensure an Ethermint-compatible faucet implementation is supported to ensure the sustainability of the permanent testnet. This will be also integrated into the existing faucet library of cosmjs. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Ethereum Bridge")]),e._v(": Integrate a combination of the following bridges in order to make Ethermint interoperable with Ethereum ERC20s: Cosmos Gravity bridge, IBC solo machine bridge, Chainbridge [CS].")])]),e._v(" "),n("h4",{attrs:{id:"milestone-3-mainnet-readiness"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-3-mainnet-readiness"}},[e._v("#")]),e._v(" Milestone 3: Mainnet readiness")]),e._v(" "),n("p",[e._v("This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Relayer Integration")]),e._v(": While the Ethermint migration to the SDK Stargate version supports IBC fungible token transfers on the app level, additional setup and integration is required to the IBC relayers to enable compatibility with Ethermint fully. The team will integrate the Ethermint keys and the remaining pieces to the relayer for full IBC support.")]),e._v(" "),n("li",[n("strong",[e._v("Ledger Support")]),e._v(": The team will perform an assessment of the current Cosmos and Ethereum ledger device applications to test their compatibility with Ethermint. If the keys or signing is not supported, the team will coordinate with ZondaX, the Ledger team, and other key partners to integrate the patches to the corresponding apps.")]),e._v(" "),n("li",[n("strong",[e._v("Simulations")]),e._v(": fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the "),n("a",{attrs:{href:"https://github.com/trailofbits/manticore",target:"_blank",rel:"noopener noreferrer"}},[e._v("manticore"),n("OutboundLink")],1),e._v(" smart contract execution analysis tool.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-4-mainnet-launch"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-4-mainnet-launch"}},[e._v("#")]),e._v(" Milestone 4: Mainnet launch")]),e._v(" "),n("p",[e._v("This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Incentivized Testnet:")]),e._v(" Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.")]),e._v(" "),n("li",[n("strong",[e._v("Support Mainnet launch")]),e._v(": The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]")])]),e._v(" "),n("h4",{attrs:{id:"ongoing-tasks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-tasks"}},[e._v("#")]),e._v(" Ongoing tasks")]),e._v(" "),n("p",[e._v("Below are hard commitment items that are required for a successful launch but don’t fit into any particular milestone as they are recurring over the whole development period.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Core Ethermint repository maintenance")]),e._v(": The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.")]),e._v(" "),n("li",[n("strong",[e._v("Coordination with Cosmos SDK core team")]),e._v(": Since the Ethermint codebase uses a lot of custom functionality (keys, "),n("code",[e._v("AnteHandler")]),e._v(", modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.")]),e._v(" "),n("li",[n("strong",[e._v("Client support")]),e._v(": Develop partnerships with exchanges and wallets to support Ethermint through the Ethereum-compatible JSON-RPC or the gRPC services from the SDK since day one.")]),e._v(" "),n("li",[n("strong",[e._v("Community support")]),e._v(": Respond and support the community inquiries on Discord and other relevant channels.")]),e._v(" "),n("li",[n("strong",[e._v("Security Audit")]),e._v(": perform an internal and a third-party security audit prior to launch.")]),e._v(" "),n("li",[n("strong",[e._v("Bug bounty")]),e._v(": Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.")])]),e._v(" "),n("h2",{attrs:{id:"soft-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#soft-commitments"}},[e._v("#")]),e._v(" Soft Commitments")]),e._v(" "),n("p",[e._v("See the "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("full version"),n("OutboundLink")],1),e._v(" of this document.")]),e._v(" "),n("h2",{attrs:{id:"conclusion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),n("p",[e._v("With this proposal, Tharsis plans to expedite the Ethermint chain's development and launch the network by Q4 2021. Ethermint will be the first EVM-compatible chain on Cosmos that will be fully interoperable with other BFT and EVM chains via IBC and the Gravity bridge.")]),e._v(" "),n("p",[e._v("By creating and envisioning this long-term roadmap, we believe Ethermint can act as the vital component of the Interchain and serve as the gateway between the Ethereum and Cosmos ecosystems: The Ethermint launch will combine the Cosmos and Ethereum communities and provide new economic opportunities for millions of users.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{526:function(e,t,n){"use strict";n.r(t);var o=n(1),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[e._v("#")]),e._v(" Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain")]),e._v(" "),n("blockquote",[n("p",[n("strong",[e._v("NOTE")]),e._v(": this is a short version of the full proposal. To read the full document click "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")])]),e._v(" "),n("h3",{attrs:{id:"author"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[e._v("#")]),e._v(" Author")]),e._v(" "),n("p",[e._v("Federico Kunze Küllmer: "),n("a",{attrs:{href:"https://github.com/fedekunze",target:"_blank",rel:"noopener noreferrer"}},[e._v("@fedekunze"),n("OutboundLink")],1)]),e._v(" "),n("h2",{attrs:{id:"summary"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),n("p",[e._v("Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. The team will use these resources to grow our dedicated Cosmos-EVM team, so we can take on the commitments and responsibilities necessary to maintain and support the Cosmos-EVM chain and codebase.")]),e._v(" "),n("p",[e._v("An Ethermint environment has enormous potential to unlock new use cases within the Cosmos ecosystem that are not possible on Ethereum today. Use cases that require scalability and composability are some of the endless possibilities for Ethermint.")]),e._v(" "),n("p",[e._v("Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:")]),e._v(" "),n("ul",[n("li",[e._v("Access to greater liquidity through IBC")]),e._v(" "),n("li",[e._v("Faster transaction times through Tendermint BFT's instant finality")]),e._v(" "),n("li",[e._v("Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)")]),e._v(" "),n("li",[e._v("Seamless portability and composability with Ethereum Virtual Machine support")])]),e._v(" "),n("p",[e._v("The commitments stated in this proposal will ensure a successful launch for the Ethermint chain together with its existing contributors (ChainSafe, OKEx, Iris, Injective, etc). Launching collaboratively with Ethermint stakeholders will result in a robust and independent community within Cosmos that will enable greater developer adoption of Cosmos technology.")]),e._v(" "),n("p",[e._v("The Ethermint stakeholders are partnering to execute on the long-awaited Ethermint Chain by joining forces to develop and deploy a new Cosmos EVM chain that will be used by thousands of crypto users at launch.")]),e._v(" "),n("h2",{attrs:{id:"governance-votes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),n("p",[e._v("The following items summarize the voting options and what it means for this proposal. All addresses that vote on the proposal might be eligible for a future airdrop.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("YES")]),e._v(": You approve the proposal statements and distribute the amount of 100,000 ATOMs to the multisig address. The treasury will allocate the funds to the Tharsis team, leading Ethermint's core development efforts and supporting the chain's go-to-market strategy. It will also lead to core technology maintenance and continuous discussion to ensure the project's longevity.")]),e._v(" "),n("li",[n("strong",[e._v("NO")]),e._v(": The NO vote is a request for improvements or adjustments. You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.")]),e._v(" "),n("li",[n("strong",[e._v("NO (VETO)")]),e._v(": You veto the entire motivation for the proposal and expect the ICF and current maintainers to make the determination and continue the stewardship of the project. The proposers will not create a follow-up proposal.")]),e._v(" "),n("li",[n("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),n("h2",{attrs:{id:"multisig-and-release-of-funds"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#multisig-and-release-of-funds"}},[e._v("#")]),e._v(" Multisig and release of funds")]),e._v(" "),n("p",[e._v("Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:")]),e._v(" "),n("ul",[n("li",[e._v("Federico Kunze Küllmer - Tharsis (proposer)")]),e._v(" "),n("li",[e._v("Zaki Manian - Iqlusion")]),e._v(" "),n("li",[e._v("Marko Baricevic - Interchain GmbH")])]),e._v(" "),n("p",[e._v("The account address is: "),n("code",[e._v("cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz")])]),e._v(" "),n("p",[e._v("If the proposal passes, the team will immediately receive 40% of the funds to expand its engineering team and other business development efforts to support GTM for the chain. The remaining 60% will be released in an equal proportion to the number of milestones upon the completion of each milestone. For any reason, if the proposer has not completed the next milestone within a year of the last payment, the remaining funds held in the multisig account will be returned to the community pool.")]),e._v(" "),n("h2",{attrs:{id:"product-commitment"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#product-commitment"}},[e._v("#")]),e._v(" Product commitment")]),e._v(" "),n("p",[e._v("The current proposal aims to develop all the necessary components for a successful Ethermint chain. Our team will lead the core development efforts to execute the points below.")]),e._v(" "),n("h3",{attrs:{id:"hard-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hard-commitments"}},[e._v("#")]),e._v(" Hard Commitments")]),e._v(" "),n("p",[e._v("These are the items that are mandatory for the release of funds. The items will be split into four milestones.")]),e._v(" "),n("blockquote",[n("p",[e._v("NOTE: Some of the items below are currently stated under ChainSafe's service agreement with the ICF for Ethermint. Our team will collaborate with them on these items so that they are included by the time the EVM chain is launched. These items are marked below as [CS]")])]),e._v(" "),n("h4",{attrs:{id:"milestone-1-developer-usability-and-testing"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-1-developer-usability-and-testing"}},[e._v("#")]),e._v(" Milestone 1: Developer Usability and Testing")]),e._v(" "),n("p",[e._v("This milestone aims to reach a stage where developers can begin deployments of Ethermint with the latest Cosmos SDK version and test their smart contracts in what will feel like a seamless experience.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Starport support")]),e._v(": Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.")]),e._v(" "),n("li",[n("strong",[e._v("Rosetta API support")]),e._v(": Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.")]),e._v(" "),n("li",[n("strong",[e._v("EVM Consistency")]),e._v(": Ensure that Ethermint can operate the same state as Ethereum and deterministically runs smart contract executions, exactly how Geth does (for example, checking the gas used between Ethermint and Geth)")]),e._v(" "),n("li",[n("strong",[e._v("Replay attack protection")]),e._v(": Register Ethermint permanent testnet and mainnet chain-ids to "),n("a",{attrs:{href:"https://chainid.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ChainID Registry"),n("OutboundLink")],1),e._v(" according to "),n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-155",target:"_blank",rel:"noopener noreferrer"}},[e._v("EIP 155"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("li",[n("strong",[e._v("Documentation")]),e._v(": Ensure the documentation for both Ethermint and the EVM module are up to date with the implementation. JSON-RPC and OpenAPI (Swagger) docs for gRPC gateway and Rosetta will also be available for client developers. The team will create relevant sections to compare and distinguish key components of Ethermint and their corresponding ones on Ethereum. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Metrics")]),e._v(": We plan to list relevant metrics available through the SDK telemetry system for user engagement information such as the number of contracts deployed, amount transacted, gas usage per block, number of accounts created, number and amount IBC transfers to and from Ethermint, etc. These metrics will be displayed in a Dashboard UI in the form of charts. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Ensure compatibility with Ethereum tooling")]),e._v(": Test and coordinate with dev teams to test compatibility with (Truffle, Ganache, Metamask, web3.js, ethers.js, etc) and ensure the same dev UX as with Ethereum. The compatibility will then be ensured through end-to-end and integration tests. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("User Guides")]),e._v(": Relevant guides will be added to connect Ethermint with the tools mentioned above.")]),e._v(" "),n("li",[n("strong",[e._v("Cosmjs Library support")]),e._v(": Make Ethermint keys, signing, queries, and txs compatible with the "),n("a",{attrs:{href:"https://github.com/cosmos/cosmjs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmjs"),n("OutboundLink")],1),e._v(" library.")]),e._v(" "),n("li",[n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-3085",target:"_blank",rel:"noopener noreferrer"}},[n("strong",[e._v("EIP 3085")]),n("OutboundLink")],1),e._v(" "),n("strong",[e._v("support")]),e._v(": add "),n("code",[e._v("wallet_addEthereumChain")]),e._v(" JSON-RPC endpoint for Ethermint.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-2-maximizing-performance-and-compatibility"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-2-maximizing-performance-and-compatibility"}},[e._v("#")]),e._v(" Milestone 2: Maximizing Performance and Compatibility")]),e._v(" "),n("p",[e._v("This milestone aims to enhance and benchmark the Ethermint chain's performance so developers can experience its superior benefits over existing solutions in the market.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("EVM module readiness")]),e._v(": The current x/evm module from Ethermint suffers from technical debt regarding its architecture. The current proposal will do a bottleneck analysis of the EVM state transitions to redesign the EVM module to boost performance.")]),e._v(" "),n("li",[n("strong",[e._v("Benchmarks")]),e._v(": As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Maintain a permanent testnet")]),e._v(": Ethermint will have a permanent testnet to ease the development process for Ethereum developers and clients that wish to connect to Ethermint. The team will create a dedicated website, infrastructure, and faucet UI for users to request funds.")]),e._v(" "),n("li",[n("strong",[e._v("Faucet support")]),e._v(": The team will ensure an Ethermint-compatible faucet implementation is supported to ensure the sustainability of the permanent testnet. This will be also integrated into the existing faucet library of cosmjs. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Ethereum Bridge")]),e._v(": Integrate a combination of the following bridges in order to make Ethermint interoperable with Ethereum ERC20s: Cosmos Gravity bridge, IBC solo machine bridge, Chainbridge [CS].")])]),e._v(" "),n("h4",{attrs:{id:"milestone-3-mainnet-readiness"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-3-mainnet-readiness"}},[e._v("#")]),e._v(" Milestone 3: Mainnet readiness")]),e._v(" "),n("p",[e._v("This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Relayer Integration")]),e._v(": While the Ethermint migration to the SDK Stargate version supports IBC fungible token transfers on the app level, additional setup and integration is required to the IBC relayers to enable compatibility with Ethermint fully. The team will integrate the Ethermint keys and the remaining pieces to the relayer for full IBC support.")]),e._v(" "),n("li",[n("strong",[e._v("Ledger Support")]),e._v(": The team will perform an assessment of the current Cosmos and Ethereum ledger device applications to test their compatibility with Ethermint. If the keys or signing is not supported, the team will coordinate with ZondaX, the Ledger team, and other key partners to integrate the patches to the corresponding apps.")]),e._v(" "),n("li",[n("strong",[e._v("Simulations")]),e._v(": fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the "),n("a",{attrs:{href:"https://github.com/trailofbits/manticore",target:"_blank",rel:"noopener noreferrer"}},[e._v("manticore"),n("OutboundLink")],1),e._v(" smart contract execution analysis tool.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-4-mainnet-launch"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-4-mainnet-launch"}},[e._v("#")]),e._v(" Milestone 4: Mainnet launch")]),e._v(" "),n("p",[e._v("This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Incentivized Testnet:")]),e._v(" Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.")]),e._v(" "),n("li",[n("strong",[e._v("Support Mainnet launch")]),e._v(": The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]")])]),e._v(" "),n("h4",{attrs:{id:"ongoing-tasks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-tasks"}},[e._v("#")]),e._v(" Ongoing tasks")]),e._v(" "),n("p",[e._v("Below are hard commitment items that are required for a successful launch but don’t fit into any particular milestone as they are recurring over the whole development period.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Core Ethermint repository maintenance")]),e._v(": The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.")]),e._v(" "),n("li",[n("strong",[e._v("Coordination with Cosmos SDK core team")]),e._v(": Since the Ethermint codebase uses a lot of custom functionality (keys, "),n("code",[e._v("AnteHandler")]),e._v(", modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.")]),e._v(" "),n("li",[n("strong",[e._v("Client support")]),e._v(": Develop partnerships with exchanges and wallets to support Ethermint through the Ethereum-compatible JSON-RPC or the gRPC services from the SDK since day one.")]),e._v(" "),n("li",[n("strong",[e._v("Community support")]),e._v(": Respond and support the community inquiries on Discord and other relevant channels.")]),e._v(" "),n("li",[n("strong",[e._v("Security Audit")]),e._v(": perform an internal and a third-party security audit prior to launch.")]),e._v(" "),n("li",[n("strong",[e._v("Bug bounty")]),e._v(": Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.")])]),e._v(" "),n("h2",{attrs:{id:"soft-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#soft-commitments"}},[e._v("#")]),e._v(" Soft Commitments")]),e._v(" "),n("p",[e._v("See the "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("full version"),n("OutboundLink")],1),e._v(" of this document.")]),e._v(" "),n("h2",{attrs:{id:"conclusion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),n("p",[e._v("With this proposal, Tharsis plans to expedite the Ethermint chain's development and launch the network by Q4 2021. Ethermint will be the first EVM-compatible chain on Cosmos that will be fully interoperable with other BFT and EVM chains via IBC and the Gravity bridge.")]),e._v(" "),n("p",[e._v("By creating and envisioning this long-term roadmap, we believe Ethermint can act as the vital component of the Interchain and serve as the gateway between the Ethereum and Cosmos ecosystems: The Ethermint launch will combine the Cosmos and Ethereum communities and provide new economic opportunities for millions of users.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/105.9bdc8488.js b/main/assets/js/105.da49e64f.js similarity index 98% rename from main/assets/js/105.9bdc8488.js rename to main/assets/js/105.da49e64f.js index 9106fd60dd3..e1dbccca792 100644 --- a/main/assets/js/105.9bdc8488.js +++ b/main/assets/js/105.da49e64f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{570: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:"parameter-change-lower-minimum-proposal-deposit-amount"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change-lower-minimum-proposal-deposit-amount"}},[e._v("#")]),e._v(" Parameter change: lower minimum proposal deposit amount")]),e._v(" "),o("h2",{attrs:{id:"summary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"objectives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#objectives"}},[e._v("#")]),e._v(" Objectives")]),e._v(" "),o("ol",[o("li",[e._v("Enable community members with good ideas but little capital to participate in governance and request resources from the community pool treasury.")]),e._v(" "),o("li",[e._v("Improve the governance UX for holders who keep most of their ATOM staked.")]),e._v(" "),o("li",[e._v("Increase utilisation of treasury (currently 666,457 ATOM, approximately $14 MM USD, at time of writing).")]),e._v(" "),o("li",[e._v("Accelerate Cosmos Hub development and growth.")])]),e._v(" "),o("h2",{attrs:{id:"background"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[e._v("#")]),e._v(" Background")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"proposers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),o("p",[e._v("Federico Kunze Küllmer (Tharsis) and Sam Hart (Interchain).")]),e._v(" "),o("p",[e._v("Credit to Gavin Birch (Figment Networks) and the Cosmos Governance Working Group (GWG) for initiating a recent conversation that motivated this proposal.")]),e._v(" "),o("h2",{attrs:{id:"proposed-parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposed-parameter-change"}},[e._v("#")]),e._v(" Proposed Parameter Change")]),e._v(" "),o("p",[e._v("Change the minimum proposal deposit requirement from 512 ATOMs (aprox. $10,000 USD) to 64 ATOMs (aprox. $1,300 USD).")]),e._v(" "),o("p",[e._v("Note: Parameters are denominated in micro-ATOMs, as described in the "),o("a",{attrs:{href:"https://github.com/cosmos/governance/blob/master/params-change/Governance.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance parameter list"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[o("strong",[e._v("This change makes it easier to submit spam proposals.")])]),e._v(" "),o("p",[e._v("While this is true, in order to fully mitigate spam the Cosmos Hub must increase the minimum deposit required for proposal "),o("a",{attrs:{href:"https://cosmoscan.net/proposal/28",target:"_blank",rel:"noopener noreferrer"}},[e._v("submission"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("By increasing the number of submissions, voter participation or the level of consideration given to each proposal may decrease.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"alternatives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#alternatives"}},[e._v("#")]),e._v(" Alternatives")]),e._v(" "),o("p",[o("strong",[e._v("Wait for the Cosmos Hub to adopt proposed changes to the Governance module for variable deposit amounts, quorom thresholds, and voting periods.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Since the ATOM price fluctuates with respect to USD, make proposal thresholds reference a stable price oracle")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"governance-votes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),o("p",[e._v("The following items summarise the voting options and what it means for this proposal.")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("YES")]),e._v(": You approve the parameter change proposal to decrease the governance proposal deposit requirements from 512 to 64 ATOMs.")]),e._v(" "),o("li",[o("strong",[e._v("NO")]),e._v(": You disapprove of the parameter change in its current form (please indicate in the Cosmos Forum why this is the case).")]),e._v(" "),o("li",[o("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to this change and will exit the network if passed.")]),e._v(" "),o("li",[o("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{590: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:"parameter-change-lower-minimum-proposal-deposit-amount"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change-lower-minimum-proposal-deposit-amount"}},[e._v("#")]),e._v(" Parameter change: lower minimum proposal deposit amount")]),e._v(" "),o("h2",{attrs:{id:"summary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"objectives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#objectives"}},[e._v("#")]),e._v(" Objectives")]),e._v(" "),o("ol",[o("li",[e._v("Enable community members with good ideas but little capital to participate in governance and request resources from the community pool treasury.")]),e._v(" "),o("li",[e._v("Improve the governance UX for holders who keep most of their ATOM staked.")]),e._v(" "),o("li",[e._v("Increase utilisation of treasury (currently 666,457 ATOM, approximately $14 MM USD, at time of writing).")]),e._v(" "),o("li",[e._v("Accelerate Cosmos Hub development and growth.")])]),e._v(" "),o("h2",{attrs:{id:"background"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[e._v("#")]),e._v(" Background")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"proposers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),o("p",[e._v("Federico Kunze Küllmer (Tharsis) and Sam Hart (Interchain).")]),e._v(" "),o("p",[e._v("Credit to Gavin Birch (Figment Networks) and the Cosmos Governance Working Group (GWG) for initiating a recent conversation that motivated this proposal.")]),e._v(" "),o("h2",{attrs:{id:"proposed-parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposed-parameter-change"}},[e._v("#")]),e._v(" Proposed Parameter Change")]),e._v(" "),o("p",[e._v("Change the minimum proposal deposit requirement from 512 ATOMs (aprox. $10,000 USD) to 64 ATOMs (aprox. $1,300 USD).")]),e._v(" "),o("p",[e._v("Note: Parameters are denominated in micro-ATOMs, as described in the "),o("a",{attrs:{href:"https://github.com/cosmos/governance/blob/master/params-change/Governance.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance parameter list"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[o("strong",[e._v("This change makes it easier to submit spam proposals.")])]),e._v(" "),o("p",[e._v("While this is true, in order to fully mitigate spam the Cosmos Hub must increase the minimum deposit required for proposal "),o("a",{attrs:{href:"https://cosmoscan.net/proposal/28",target:"_blank",rel:"noopener noreferrer"}},[e._v("submission"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("By increasing the number of submissions, voter participation or the level of consideration given to each proposal may decrease.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"alternatives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#alternatives"}},[e._v("#")]),e._v(" Alternatives")]),e._v(" "),o("p",[o("strong",[e._v("Wait for the Cosmos Hub to adopt proposed changes to the Governance module for variable deposit amounts, quorom thresholds, and voting periods.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Since the ATOM price fluctuates with respect to USD, make proposal thresholds reference a stable price oracle")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"governance-votes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),o("p",[e._v("The following items summarise the voting options and what it means for this proposal.")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("YES")]),e._v(": You approve the parameter change proposal to decrease the governance proposal deposit requirements from 512 to 64 ATOMs.")]),e._v(" "),o("li",[o("strong",[e._v("NO")]),e._v(": You disapprove of the parameter change in its current form (please indicate in the Cosmos Forum why this is the case).")]),e._v(" "),o("li",[o("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to this change and will exit the network if passed.")]),e._v(" "),o("li",[o("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/106.9244cf5c.js b/main/assets/js/106.4d041b8e.js similarity index 99% rename from main/assets/js/106.9244cf5c.js rename to main/assets/js/106.4d041b8e.js index 78a2d3a884f..87831bb7d09 100644 --- a/main/assets/js/106.9244cf5c.js +++ b/main/assets/js/106.4d041b8e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{502:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-46-extend-luna-mission-to-fund-atom-marketing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-46-extend-luna-mission-to-fund-atom-marketing"}},[e._v("#")]),e._v(" Proposal 46: Extend Luna Mission to Fund ATOM Marketing")]),e._v(" "),o("p",[e._v("The Cosmos community approved Proposal 34 on 2021-01-20 allocating 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with key community stakeholders. Proposal 46 is requesting an extension of the time allowed to spend the approved budget and allocate existing funds for additional ATOM-focused priorities. Below are details of this request and an outline of the successful results of Proposal 34 marketing spend as of 2021-03-31.")]),e._v(" "),o("h2",{attrs:{id:"proposal-46-request"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-46-request"}},[e._v("#")]),e._v(" PROPOSAL 46 REQUEST:")]),e._v(" "),o("ol",[o("li",[o("em",[o("em",[e._v("Prop 34 Time Extension:")])]),e._v(" The Prop 34 Implementation team seeks a three-month extension (until 2021-07-20) to fully spend the existing budget allocation under the terms approved in Proposal 34. The multisig team and AiB (Tendermint) invested significant time and energy properly researching, vetting and managing vendors, contractors, and opportunities requiring additional time to complete the Prop 34 expenditure of funds. With the approval of Proposal 46, any unspent funds remaining from Proposal 34 efforts will be returned to the community pool on 2021-07-20.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Additional Budget Priority - Project Execution Fund Pool:")])]),e._v(" Execution, oversight, and accountability for this significant marketing spend requires substantive operational support. In addition to the 5 multisig administrators, Zaki Manian, Jack Zampolin, Immasssi, Jhonnie and Joe Dirtay, extensive support is being provided by Adriana Mihai (Kalpatech), Garrette Furo (Regen Network), David Fortson (Regen Network/LOACOM), and others. We request an allocation of 3000 ATOM (from the existing budget) to compensate the aforementioned contributors for previous and ongoing support of this expansive marketing campaign. Funds will be distributed through the multisig administration.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Additional Budget Priority - Gravity DEX:")])]),e._v(" This proposal seeks to allocate 10,000 - 20,000 ATOM (from approved Prop 34 budget) to identify and support robust marketing of the Gravity DEX testnet and DEX mainnet launch- an AMM exchange that will have a significant impact on ATOM valuation if successful. Gravity DEX is initially planned as an automated market maker (AMM) exchange that will allow users to trade IBC token pairs and provide liquidity for traders. These tokens would arrive on the Hub through IBC-enabled chains, IBC-wrapped ETH and ERC20 tokens, IBC-wrapped BTC tokens, and as well as future blockchain ecosystems that implement the IBC protocol.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Community Created YouTube Videos:")])]),e._v(" After evaluating the existing meme campaign, the project management team is recommending ceasing the community meme campaign and reallocating remaining funds for community-created YouTube videos. This campaign would reward community members for creating select videos for prospective or new token holders focused on ‘How to’ and explainer videos on topics such as “How to set up your wallet,” “How to stake your $ATOM,” “How to delegate, redelegate and participate in governance,” and more.")])]),e._v(" "),o("h2",{attrs:{id:"section-i-overview"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-i-overview"}},[e._v("#")]),e._v(" SECTION I OVERVIEW")]),e._v(" "),o("p",[e._v("A summary report of current marketing activities and related analytics can be found here. Highlights include (Date Range 2021-01-20 to 2021-03-31):")]),e._v(" "),o("ul",[o("li",[e._v("ATOM Valuation: ATOM valuation has increased from $8.92 to $19.10 - a 214% increase.")]),e._v(" "),o("li",[e._v("Twitter: New 2020 and 2021 record on new followers and engagement:\n"),o("ul",[o("li",[o("em",[e._v("New followers:")]),e._v(" Q1 Twitter: 45,380 new followers ( 2,236 in Q1 2020, 1940% increase)")]),e._v(" "),o("li",[o("em",[e._v("Engagement:")]),e._v(" 10.3M impressions ( 2,16M in Q1 2020, 476% increase)")])])]),e._v(" "),o("li",[e._v("Youtube\n"),o("ul",[o("li",[o("em",[e._v("New subscribers:")]),e._v(" 1,3k new subscribers (195 in Q1 2020, 667% increase)")]),e._v(" "),o("li",[o("em",[e._v("Impressions and views:")]),e._v(" 447k impressions ( 126k in Q1 2020, 355% increase) , 47,4k views ( 10,1k views Q1 2020, 469% increase)")])])]),e._v(" "),o("li",[e._v("Cosmos website\n"),o("ul",[o("li",[e._v("+396% new users, +355% sessions")]),e._v(" "),o("li",[e._v("+380% unique page views, +64% pages per session, -28% bounce rate")]),e._v(" "),o("li",[e._v("1,079,000 visitors, 244,000 new users from which 28,804 acquired new users from the marketing campaign.")])])]),e._v(" "),o("li",[e._v("Cosmos Hub\n"),o("ul",[o("li",[e._v("31,408 new delegators (increase from 41,885 to 73,293 - a 74% increase.)")]),e._v(" "),o("li",[e._v("92,561 new ATOM accounts (increase from 136,219 accounts to 228,780 accounts - a 68% increase.)")])])]),e._v(" "),o("li",[e._v("Blockfolio Signal\n"),o("ul",[o("li",[e._v("270,000 new followers, increase from 220,000 to 490,000 as of March 31st. ( As of April 21st, total number of followers reached 1,3 Million followers)")])])])]),e._v(" "),o("h3",{attrs:{id:"spend-overview"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#spend-overview"}},[e._v("#")]),e._v(" Spend Overview")]),e._v(" "),o("p",[e._v("As of 2021-03-31, a total of 41,912 ATOM have been spent in the following ways:")]),e._v(" "),o("ul",[o("li",[e._v("Meme Contest: 0 ATOM")]),e._v(" "),o("li",[e._v("Banner ads - 8,750 ATOM")]),e._v(" "),o("li",[e._v("Influencers: twitter posts and youtube shows - 25,462 ATOM")]),e._v(" "),o("li",[e._v("Podcasts, newsletters- 6,200 ATOM")]),e._v(" "),o("li",[e._v("Media/TV: 1,000 ATOM")]),e._v(" "),o("li",[e._v("Signers fee: 500 ATOM")])]),e._v(" "),o("p",[e._v("Additionally as of 2021-04-21, a total of 22,610 ATOM have been spent for:")]),e._v(" "),o("ul",[o("li",[e._v("Meme contest: 240 ATOM")]),e._v(" "),o("li",[e._v("PR company: 990 ATOM")]),e._v(" "),o("li",[e._v("Twitter influencers: 9,550 ATOM")]),e._v(" "),o("li",[e._v("Community management: 150 ATOM")]),e._v(" "),o("li",[e._v("Banner ads: 11,680 ATOM")])]),e._v(" "),o("h4",{attrs:{id:"total-atom-spent-as-of-2021-04-21-is-of-64-522-atom-remaining-budget-is-of-64-655-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#total-atom-spent-as-of-2021-04-21-is-of-64-522-atom-remaining-budget-is-of-64-655-atom"}},[e._v("#")]),e._v(" Total ATOM spent as of 2021-04-21 is of 64,522 ATOM, remaining budget is of 64,655 ATOM.")]),e._v(" "),o("h2",{attrs:{id:"section-ii-history"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-ii-history"}},[e._v("#")]),e._v(" SECTION II - HISTORY")]),e._v(" "),o("p",[e._v("The Cosmos Hub (ATOM) community approved the passage of Proposal 34 - Luna Mission - Funding $ATOM on 2021-01-20 at 74% yes, 18.9% abstain and 7.1% no.")]),e._v(" "),o("p",[e._v("Proposal 34 authorized a spending pool of 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with AiB (Tendermint). The funds deriving from Prop 34 have been approved by @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator), as the designated multisig committee. Current funding allocation is due to expire and be returned to the community pool if Proposal 46 does not pass.")]),e._v(" "),o("h2",{attrs:{id:"section-iii-deliverables"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-iii-deliverables"}},[e._v("#")]),e._v(" SECTION III - DELIVERABLES")]),e._v(" "),o("p",[e._v("Proposal 34 - Results Summary - 2021-01-20 to 2021-03-31")]),e._v(" "),o("ol",[o("li",[e._v("Banner Ads\n"),o("ul",[o("li",[e._v("Locations:\n"),o("ul",[o("li",[e._v("Wallets: Blockfolio, Coinstats")]),e._v(" "),o("li",[e._v("Platforms: Coingecko, Stacking Rewards")])])]),e._v(" "),o("li",[e._v("Sample Banner: https://drive.google.com/drive/folders/1JFpJewRGsQfrK57BxEdE0Pk3ae37ldpL")]),e._v(" "),o("li",[e._v("Duration of the campaign ads: 1-3 months")]),e._v(" "),o("li",[e._v("Total performance on all 4 venues: (#37,000,000 impressions, #28,804 new acquired visitors, over #100,000 new wallets downloads with ATOM as preset currency)")]),e._v(" "),o("li",[e._v("Total Spent: "),o("em",[e._v("8,750 ATOMs")])])])]),e._v(" "),o("li",[e._v("Marketing contracts\n"),o("ul",[o("li",[e._v("Podcasts:\n"),o("ul",[o("li",[e._v("Charlie Shrem\n"),o("ul",[o("li",[e._v("Twitter account: https://twitter.com/CharlieShrem")]),e._v(" "),o("li",[e._v("Followers: 199k")]),e._v(" "),o("li",[e._v("https://twitter.com/CharlieShrem/status/1376550892321730563?s=20")]),e._v(" "),o("li",[e._v("Performance: 268K Twitter Impressions, 6265 Podcast Downloads, & 7600 youtube views.")])])]),e._v(" "),o("li",[e._v("Scott Melker\n"),o("ul",[o("li",[e._v("Twitter Account: https://twitter.com/scottmelker")]),e._v(" "),o("li",[e._v("Followers: 290K")]),e._v(" "),o("li",[e._v("https://www.youtube.com/watch?v=MdIb6xImS5Q")])])])])]),e._v(" "),o("li",[e._v("Newsletters/Articles:\n"),o("ul",[o("li",[e._v("Scott Melker: https://thewolfofallstreets.link/cosmos​")]),e._v(" "),o("li",[e._v("The Daily Chain\n"),o("ul",[o("li",[e._v("https://thedailychain.com/the-stargate-upgrade-launch-is-coming-on-cosmos-hub/")]),e._v(" "),o("li",[e._v("https://thedailychain.com/cosmos-hub-governance-passes-new-proposals-to-improve-the-project/")]),e._v(" "),o("li",[e._v("https://thedailychain.com/solving-blockchain-interoperability-with-the-cosmos-hub/")])])]),e._v(" "),o("li",[e._v("Blockworks\n"),o("ul",[o("li",[e._v("Tweet https://twitter.com/Blockworks_/status/1381969023584272395?s=20")]),e._v(" "),o("li",[e._v("Article https://blockworks.co/cosmos-why-we-need-interoperability-in-blockchain/")]),e._v(" "),o("li",[e._v("250,255 Dedicated Twitter Impressions, 10,653 Newsletter Impressions, 1,147 pageviews")])])]),e._v(" "),o("li",[e._v("Total Spent: "),o("em",[e._v("6,200 ATOM")])])])])])]),e._v(" "),o("li",[e._v("Influencers\n"),o("ul",[o("li",[e._v("Twitter\n"),o("ul",[o("li",[e._v("Over 30 Twitter influencers engaged including Crypto Dog, Michaël van de Poppe and the Wolf of all Streets.")]),e._v(" "),o("li",[e._v("Sample Posts:\n"),o("ul",[o("li",[o("a",{attrs:{href:"https://twitter.com/thecryptodog/status/1376640286428864514?s=21",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Dog"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/CryptoMichNL/status/1381264254033133569?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Michaël van de Poppe"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/scottmelker/status/1383155303525576706?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Scott Melker "),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/stackingusd/status/1362133942435012608?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("StackingUSD"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/macrocrg/status/1364606751878881288?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("MacroCRG"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/trader_xo/status/1369038610415161347?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("Trader_XO"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/crypto_chase/status/1381696722557136899?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto_Chasr"),o("OutboundLink")],1)])])]),e._v(" "),o("li",[e._v("Results: from the 1st-month Twitter only (second-month data was not complete in time)\n"),o("ul",[o("li",[e._v("245 tweets, 20,000 Likes, 4,000 Retweets, 1700 Comments")])])])])]),e._v(" "),o("li",[e._v("YouTube Shows & Podcasts\n"),o("ul",[o("li",[e._v("Programs: Crypto Daily, Data Dash, Tech Con Catalina,Crypto Busy, Hashoshi, Crypto Michael.")]),e._v(" "),o("li",[e._v("Featured Shows:\n"),o("ul",[o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=g55JAdwVs2Q&t=254s&ab_channel=CryptoDaily",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Daily"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Subscribers: 193K")]),e._v(" "),o("li",[e._v("Video views: 52,834")]),e._v(" "),o("li",[e._v("Publish date: March 1st")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=vaZLBgi5o-w",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Dash"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Subscribers: 423K")]),e._v(" "),o("li",[e._v("Video views: 40,150")]),e._v(" "),o("li",[e._v("Publish date: Feb 17th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=H5kHoFXjMyM",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tech Con Catalina"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 115K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 42,415")]),e._v(" "),o("li",[e._v("Publish date: April 12th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=G2zHiIw_DZM",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Busy"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 152K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 24,468")]),e._v(" "),o("li",[e._v("Publish date: March 3rd")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=jVjcCjfGOxU",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hashoshi"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 116K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 6,218 views")]),e._v(" "),o("li",[e._v("Publish date: April 20th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=xTUCsRs89no",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Michael"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 67K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 4,499 views")]),e._v(" "),o("li",[e._v("Publish date: April 14th")])])]),e._v(" "),o("li",[e._v("Delphi Digital podcasts & Brand Sponsor\n"),o("ul",[o("li",[e._v("Podcast ads are just starting, clubhouse (later aired as podcast) w/ key cosmonauts soon")])])])])])])]),e._v(" "),o("li",[e._v("Total Spent on Influencers (Twitter &YouTube): "),o("em",[e._v("25,462 ATOMS")])])])])]),e._v(" "),o("p",[e._v("And many more videos to be dropping soon Cosmonauts!")]),e._v(" "),o("h2",{attrs:{id:"section-iv-public-relations"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-iv-public-relations"}},[e._v("#")]),e._v(" SECTION IV - Public Relations")]),e._v(" "),o("p",[e._v("Hired GFCA - work begins 2021-04-07, placements were done in April 2021:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://www.businessinsider.com/crypto-investing-experts-bitcoin-price-drop-explainer-charts-data-watch-2021-4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Peng Zhong featured in Business Insider"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Notes: world's favorite business brand — by a wide margin. With over 70 million unique visitors a month.")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.financemagnates.com/cryptocurrency/news/are-nfts-a-good-long-term-investment-on-ownership-long-term-viability/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Garrette Furo featured in Finance Magnates"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Notes: global business news outlet that focuses on alternatives and trading industries with 553,507 unique monthly visitors.\nSpend: "),o("em",[e._v("990 ATOM")])])])])]),e._v(" "),o("h2",{attrs:{id:"section-v-meme-competition-2021"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-v-meme-competition-2021"}},[e._v("#")]),e._v(" SECTION V - MEME Competition 2021")]),e._v(" "),o("p",[e._v("Start 22nd of March (3 Total stages)\nSpend total: "),o("em",[e._v("3915 ATOM")]),e._v(" (Split up for each stage)\nStage 1 accepted entries for prizes (so far): 170+\n- Total valid entries: 2000+\n- Cosmonaut Telegram channel growth: 700+ new people in 2 weeks (organic)\n- Cosmonaut Twitter channel growth: 400+ new people in 2 weeks (organic)\n"),o("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1w8ry3-SxIRuEjMT1PoES8H19CsRT1aSjiKvVJEjFp_k/edit#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("MEME Live tracker"),o("OutboundLink")],1),e._v(" "),o("a",{attrs:{href:"https://twitter.com/ATOMCosmonauts/status/1373952259013349376?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Competition outline"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{503:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-46-extend-luna-mission-to-fund-atom-marketing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-46-extend-luna-mission-to-fund-atom-marketing"}},[e._v("#")]),e._v(" Proposal 46: Extend Luna Mission to Fund ATOM Marketing")]),e._v(" "),o("p",[e._v("The Cosmos community approved Proposal 34 on 2021-01-20 allocating 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with key community stakeholders. Proposal 46 is requesting an extension of the time allowed to spend the approved budget and allocate existing funds for additional ATOM-focused priorities. Below are details of this request and an outline of the successful results of Proposal 34 marketing spend as of 2021-03-31.")]),e._v(" "),o("h2",{attrs:{id:"proposal-46-request"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-46-request"}},[e._v("#")]),e._v(" PROPOSAL 46 REQUEST:")]),e._v(" "),o("ol",[o("li",[o("em",[o("em",[e._v("Prop 34 Time Extension:")])]),e._v(" The Prop 34 Implementation team seeks a three-month extension (until 2021-07-20) to fully spend the existing budget allocation under the terms approved in Proposal 34. The multisig team and AiB (Tendermint) invested significant time and energy properly researching, vetting and managing vendors, contractors, and opportunities requiring additional time to complete the Prop 34 expenditure of funds. With the approval of Proposal 46, any unspent funds remaining from Proposal 34 efforts will be returned to the community pool on 2021-07-20.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Additional Budget Priority - Project Execution Fund Pool:")])]),e._v(" Execution, oversight, and accountability for this significant marketing spend requires substantive operational support. In addition to the 5 multisig administrators, Zaki Manian, Jack Zampolin, Immasssi, Jhonnie and Joe Dirtay, extensive support is being provided by Adriana Mihai (Kalpatech), Garrette Furo (Regen Network), David Fortson (Regen Network/LOACOM), and others. We request an allocation of 3000 ATOM (from the existing budget) to compensate the aforementioned contributors for previous and ongoing support of this expansive marketing campaign. Funds will be distributed through the multisig administration.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Additional Budget Priority - Gravity DEX:")])]),e._v(" This proposal seeks to allocate 10,000 - 20,000 ATOM (from approved Prop 34 budget) to identify and support robust marketing of the Gravity DEX testnet and DEX mainnet launch- an AMM exchange that will have a significant impact on ATOM valuation if successful. Gravity DEX is initially planned as an automated market maker (AMM) exchange that will allow users to trade IBC token pairs and provide liquidity for traders. These tokens would arrive on the Hub through IBC-enabled chains, IBC-wrapped ETH and ERC20 tokens, IBC-wrapped BTC tokens, and as well as future blockchain ecosystems that implement the IBC protocol.")]),e._v(" "),o("li",[o("em",[o("em",[e._v("Community Created YouTube Videos:")])]),e._v(" After evaluating the existing meme campaign, the project management team is recommending ceasing the community meme campaign and reallocating remaining funds for community-created YouTube videos. This campaign would reward community members for creating select videos for prospective or new token holders focused on ‘How to’ and explainer videos on topics such as “How to set up your wallet,” “How to stake your $ATOM,” “How to delegate, redelegate and participate in governance,” and more.")])]),e._v(" "),o("h2",{attrs:{id:"section-i-overview"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-i-overview"}},[e._v("#")]),e._v(" SECTION I OVERVIEW")]),e._v(" "),o("p",[e._v("A summary report of current marketing activities and related analytics can be found here. Highlights include (Date Range 2021-01-20 to 2021-03-31):")]),e._v(" "),o("ul",[o("li",[e._v("ATOM Valuation: ATOM valuation has increased from $8.92 to $19.10 - a 214% increase.")]),e._v(" "),o("li",[e._v("Twitter: New 2020 and 2021 record on new followers and engagement:\n"),o("ul",[o("li",[o("em",[e._v("New followers:")]),e._v(" Q1 Twitter: 45,380 new followers ( 2,236 in Q1 2020, 1940% increase)")]),e._v(" "),o("li",[o("em",[e._v("Engagement:")]),e._v(" 10.3M impressions ( 2,16M in Q1 2020, 476% increase)")])])]),e._v(" "),o("li",[e._v("Youtube\n"),o("ul",[o("li",[o("em",[e._v("New subscribers:")]),e._v(" 1,3k new subscribers (195 in Q1 2020, 667% increase)")]),e._v(" "),o("li",[o("em",[e._v("Impressions and views:")]),e._v(" 447k impressions ( 126k in Q1 2020, 355% increase) , 47,4k views ( 10,1k views Q1 2020, 469% increase)")])])]),e._v(" "),o("li",[e._v("Cosmos website\n"),o("ul",[o("li",[e._v("+396% new users, +355% sessions")]),e._v(" "),o("li",[e._v("+380% unique page views, +64% pages per session, -28% bounce rate")]),e._v(" "),o("li",[e._v("1,079,000 visitors, 244,000 new users from which 28,804 acquired new users from the marketing campaign.")])])]),e._v(" "),o("li",[e._v("Cosmos Hub\n"),o("ul",[o("li",[e._v("31,408 new delegators (increase from 41,885 to 73,293 - a 74% increase.)")]),e._v(" "),o("li",[e._v("92,561 new ATOM accounts (increase from 136,219 accounts to 228,780 accounts - a 68% increase.)")])])]),e._v(" "),o("li",[e._v("Blockfolio Signal\n"),o("ul",[o("li",[e._v("270,000 new followers, increase from 220,000 to 490,000 as of March 31st. ( As of April 21st, total number of followers reached 1,3 Million followers)")])])])]),e._v(" "),o("h3",{attrs:{id:"spend-overview"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#spend-overview"}},[e._v("#")]),e._v(" Spend Overview")]),e._v(" "),o("p",[e._v("As of 2021-03-31, a total of 41,912 ATOM have been spent in the following ways:")]),e._v(" "),o("ul",[o("li",[e._v("Meme Contest: 0 ATOM")]),e._v(" "),o("li",[e._v("Banner ads - 8,750 ATOM")]),e._v(" "),o("li",[e._v("Influencers: twitter posts and youtube shows - 25,462 ATOM")]),e._v(" "),o("li",[e._v("Podcasts, newsletters- 6,200 ATOM")]),e._v(" "),o("li",[e._v("Media/TV: 1,000 ATOM")]),e._v(" "),o("li",[e._v("Signers fee: 500 ATOM")])]),e._v(" "),o("p",[e._v("Additionally as of 2021-04-21, a total of 22,610 ATOM have been spent for:")]),e._v(" "),o("ul",[o("li",[e._v("Meme contest: 240 ATOM")]),e._v(" "),o("li",[e._v("PR company: 990 ATOM")]),e._v(" "),o("li",[e._v("Twitter influencers: 9,550 ATOM")]),e._v(" "),o("li",[e._v("Community management: 150 ATOM")]),e._v(" "),o("li",[e._v("Banner ads: 11,680 ATOM")])]),e._v(" "),o("h4",{attrs:{id:"total-atom-spent-as-of-2021-04-21-is-of-64-522-atom-remaining-budget-is-of-64-655-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#total-atom-spent-as-of-2021-04-21-is-of-64-522-atom-remaining-budget-is-of-64-655-atom"}},[e._v("#")]),e._v(" Total ATOM spent as of 2021-04-21 is of 64,522 ATOM, remaining budget is of 64,655 ATOM.")]),e._v(" "),o("h2",{attrs:{id:"section-ii-history"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-ii-history"}},[e._v("#")]),e._v(" SECTION II - HISTORY")]),e._v(" "),o("p",[e._v("The Cosmos Hub (ATOM) community approved the passage of Proposal 34 - Luna Mission - Funding $ATOM on 2021-01-20 at 74% yes, 18.9% abstain and 7.1% no.")]),e._v(" "),o("p",[e._v("Proposal 34 authorized a spending pool of 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with AiB (Tendermint). The funds deriving from Prop 34 have been approved by @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator), as the designated multisig committee. Current funding allocation is due to expire and be returned to the community pool if Proposal 46 does not pass.")]),e._v(" "),o("h2",{attrs:{id:"section-iii-deliverables"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-iii-deliverables"}},[e._v("#")]),e._v(" SECTION III - DELIVERABLES")]),e._v(" "),o("p",[e._v("Proposal 34 - Results Summary - 2021-01-20 to 2021-03-31")]),e._v(" "),o("ol",[o("li",[e._v("Banner Ads\n"),o("ul",[o("li",[e._v("Locations:\n"),o("ul",[o("li",[e._v("Wallets: Blockfolio, Coinstats")]),e._v(" "),o("li",[e._v("Platforms: Coingecko, Stacking Rewards")])])]),e._v(" "),o("li",[e._v("Sample Banner: https://drive.google.com/drive/folders/1JFpJewRGsQfrK57BxEdE0Pk3ae37ldpL")]),e._v(" "),o("li",[e._v("Duration of the campaign ads: 1-3 months")]),e._v(" "),o("li",[e._v("Total performance on all 4 venues: (#37,000,000 impressions, #28,804 new acquired visitors, over #100,000 new wallets downloads with ATOM as preset currency)")]),e._v(" "),o("li",[e._v("Total Spent: "),o("em",[e._v("8,750 ATOMs")])])])]),e._v(" "),o("li",[e._v("Marketing contracts\n"),o("ul",[o("li",[e._v("Podcasts:\n"),o("ul",[o("li",[e._v("Charlie Shrem\n"),o("ul",[o("li",[e._v("Twitter account: https://twitter.com/CharlieShrem")]),e._v(" "),o("li",[e._v("Followers: 199k")]),e._v(" "),o("li",[e._v("https://twitter.com/CharlieShrem/status/1376550892321730563?s=20")]),e._v(" "),o("li",[e._v("Performance: 268K Twitter Impressions, 6265 Podcast Downloads, & 7600 youtube views.")])])]),e._v(" "),o("li",[e._v("Scott Melker\n"),o("ul",[o("li",[e._v("Twitter Account: https://twitter.com/scottmelker")]),e._v(" "),o("li",[e._v("Followers: 290K")]),e._v(" "),o("li",[e._v("https://www.youtube.com/watch?v=MdIb6xImS5Q")])])])])]),e._v(" "),o("li",[e._v("Newsletters/Articles:\n"),o("ul",[o("li",[e._v("Scott Melker: https://thewolfofallstreets.link/cosmos​")]),e._v(" "),o("li",[e._v("The Daily Chain\n"),o("ul",[o("li",[e._v("https://thedailychain.com/the-stargate-upgrade-launch-is-coming-on-cosmos-hub/")]),e._v(" "),o("li",[e._v("https://thedailychain.com/cosmos-hub-governance-passes-new-proposals-to-improve-the-project/")]),e._v(" "),o("li",[e._v("https://thedailychain.com/solving-blockchain-interoperability-with-the-cosmos-hub/")])])]),e._v(" "),o("li",[e._v("Blockworks\n"),o("ul",[o("li",[e._v("Tweet https://twitter.com/Blockworks_/status/1381969023584272395?s=20")]),e._v(" "),o("li",[e._v("Article https://blockworks.co/cosmos-why-we-need-interoperability-in-blockchain/")]),e._v(" "),o("li",[e._v("250,255 Dedicated Twitter Impressions, 10,653 Newsletter Impressions, 1,147 pageviews")])])]),e._v(" "),o("li",[e._v("Total Spent: "),o("em",[e._v("6,200 ATOM")])])])])])]),e._v(" "),o("li",[e._v("Influencers\n"),o("ul",[o("li",[e._v("Twitter\n"),o("ul",[o("li",[e._v("Over 30 Twitter influencers engaged including Crypto Dog, Michaël van de Poppe and the Wolf of all Streets.")]),e._v(" "),o("li",[e._v("Sample Posts:\n"),o("ul",[o("li",[o("a",{attrs:{href:"https://twitter.com/thecryptodog/status/1376640286428864514?s=21",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Dog"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/CryptoMichNL/status/1381264254033133569?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Michaël van de Poppe"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/scottmelker/status/1383155303525576706?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Scott Melker "),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/stackingusd/status/1362133942435012608?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("StackingUSD"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/macrocrg/status/1364606751878881288?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("MacroCRG"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/trader_xo/status/1369038610415161347?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("Trader_XO"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://twitter.com/crypto_chase/status/1381696722557136899?s=28",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto_Chasr"),o("OutboundLink")],1)])])]),e._v(" "),o("li",[e._v("Results: from the 1st-month Twitter only (second-month data was not complete in time)\n"),o("ul",[o("li",[e._v("245 tweets, 20,000 Likes, 4,000 Retweets, 1700 Comments")])])])])]),e._v(" "),o("li",[e._v("YouTube Shows & Podcasts\n"),o("ul",[o("li",[e._v("Programs: Crypto Daily, Data Dash, Tech Con Catalina,Crypto Busy, Hashoshi, Crypto Michael.")]),e._v(" "),o("li",[e._v("Featured Shows:\n"),o("ul",[o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=g55JAdwVs2Q&t=254s&ab_channel=CryptoDaily",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Daily"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Subscribers: 193K")]),e._v(" "),o("li",[e._v("Video views: 52,834")]),e._v(" "),o("li",[e._v("Publish date: March 1st")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=vaZLBgi5o-w",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Dash"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Subscribers: 423K")]),e._v(" "),o("li",[e._v("Video views: 40,150")]),e._v(" "),o("li",[e._v("Publish date: Feb 17th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=H5kHoFXjMyM",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tech Con Catalina"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 115K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 42,415")]),e._v(" "),o("li",[e._v("Publish date: April 12th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=G2zHiIw_DZM",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Busy"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 152K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 24,468")]),e._v(" "),o("li",[e._v("Publish date: March 3rd")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=jVjcCjfGOxU",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hashoshi"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 116K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 6,218 views")]),e._v(" "),o("li",[e._v("Publish date: April 20th")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.youtube.com/watch?v=xTUCsRs89no",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto Michael"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("YouTube Followers - 67K Subscribers")]),e._v(" "),o("li",[e._v("Video views: 4,499 views")]),e._v(" "),o("li",[e._v("Publish date: April 14th")])])]),e._v(" "),o("li",[e._v("Delphi Digital podcasts & Brand Sponsor\n"),o("ul",[o("li",[e._v("Podcast ads are just starting, clubhouse (later aired as podcast) w/ key cosmonauts soon")])])])])])])]),e._v(" "),o("li",[e._v("Total Spent on Influencers (Twitter &YouTube): "),o("em",[e._v("25,462 ATOMS")])])])])]),e._v(" "),o("p",[e._v("And many more videos to be dropping soon Cosmonauts!")]),e._v(" "),o("h2",{attrs:{id:"section-iv-public-relations"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-iv-public-relations"}},[e._v("#")]),e._v(" SECTION IV - Public Relations")]),e._v(" "),o("p",[e._v("Hired GFCA - work begins 2021-04-07, placements were done in April 2021:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://www.businessinsider.com/crypto-investing-experts-bitcoin-price-drop-explainer-charts-data-watch-2021-4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Peng Zhong featured in Business Insider"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Notes: world's favorite business brand — by a wide margin. With over 70 million unique visitors a month.")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.financemagnates.com/cryptocurrency/news/are-nfts-a-good-long-term-investment-on-ownership-long-term-viability/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Garrette Furo featured in Finance Magnates"),o("OutboundLink")],1),e._v(" "),o("ul",[o("li",[e._v("Notes: global business news outlet that focuses on alternatives and trading industries with 553,507 unique monthly visitors.\nSpend: "),o("em",[e._v("990 ATOM")])])])])]),e._v(" "),o("h2",{attrs:{id:"section-v-meme-competition-2021"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#section-v-meme-competition-2021"}},[e._v("#")]),e._v(" SECTION V - MEME Competition 2021")]),e._v(" "),o("p",[e._v("Start 22nd of March (3 Total stages)\nSpend total: "),o("em",[e._v("3915 ATOM")]),e._v(" (Split up for each stage)\nStage 1 accepted entries for prizes (so far): 170+\n- Total valid entries: 2000+\n- Cosmonaut Telegram channel growth: 700+ new people in 2 weeks (organic)\n- Cosmonaut Twitter channel growth: 400+ new people in 2 weeks (organic)\n"),o("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1w8ry3-SxIRuEjMT1PoES8H19CsRT1aSjiKvVJEjFp_k/edit#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("MEME Live tracker"),o("OutboundLink")],1),e._v(" "),o("a",{attrs:{href:"https://twitter.com/ATOMCosmonauts/status/1373952259013349376?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Competition outline"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/107.d99c5e28.js b/main/assets/js/107.2017ed36.js similarity index 99% rename from main/assets/js/107.d99c5e28.js rename to main/assets/js/107.2017ed36.js index 6426782792c..21c73e7e811 100644 --- a/main/assets/js/107.d99c5e28.js +++ b/main/assets/js/107.2017ed36.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{495:function(e,t,s){"use strict";s.r(t);var a=s(1),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[e._v("#")]),e._v(" Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub")]),e._v(" "),s("p",[s("img",{attrs:{src:"https://raw.githubusercontent.com/althea-net/cosmos-gravity-bridge/main/gravity-bridge.svg",alt:"Gravity Bridge"}})]),e._v(" "),s("h2",{attrs:{id:"summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),s("p",[e._v("This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub.")]),e._v(" "),s("p",[e._v("By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"vision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vision"}},[e._v("#")]),e._v(" Vision")]),e._v(" "),s("p",[e._v("Gravity as an Ethereum-Cosmos bridge is designed for the Cosmos Hub to pull as much value as possible into the orbits of Cosmos via a direct and decentralized bridge. Gravity will be able to bring ERC20 assets from Ethereum into Cosmos, as well as Cosmos assets to Ethereum ERC20 representations. ATOM, and any other asset in the Cosmos ecosystem, will be able to trade on Uniswap and other Ethereum AMMs, and interact with Ethereum DeFi like any ERC20 token. As well, Cosmos Hub users can use the Gravity DEX to trade between ERC20 assets and tokens that are transferred using IBC. This will bring a tremendous amount of liquidity and utility to these multi-chain assets.")]),e._v(" "),s("h2",{attrs:{id:"cosmos-ethereum-and-gravity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-ethereum-and-gravity"}},[e._v("#")]),e._v(" Cosmos, Ethereum, and Gravity")]),e._v(" "),s("p",[e._v("Gravity is a secure and highly efficient bridge between EVM and Cosmos SDK-based blockchains. At a high-level, Gravity enables token transfers from Ethereum to the Cosmos Hub and back again by locking tokens on the Ethereum side and minting equivalent tokens on the Cosmos side.")]),e._v(" "),s("p",[e._v("Gravity is completely non-custodial. Control of the bridge mirrors the active validator set on the Cosmos SDK-based chain, and validator stake on Cosmos can be slashed for misbehavior involving the Gravity bridge.")]),e._v(" "),s("p",[e._v("The Gravity Ethereum contract is highly optimized, utilizing batches to dramatically reduce the cost of Cosmos -> Ethereum transfers. Sending funds from Cosmos back to Ethereum can be up to 50% less costly than a normal ERC20 send.")]),e._v(" "),s("h2",{attrs:{id:"how-do-validators-support-the-gravity-bridge"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-do-validators-support-the-gravity-bridge"}},[e._v("#")]),e._v(" How do validators support the Gravity Bridge?")]),e._v(" "),s("p",[e._v("Cosmos Hub validators will run three key software components of the Gravity bridge:")]),e._v(" "),s("ul",[s("li",[e._v("The Gravity bridge module, integrated into gaiad (the binary that runs the Cosmos Hub)")]),e._v(" "),s("li",[e._v("The Gravity bridge Orchestrator")]),e._v(" "),s("li",[e._v("A Geth light client or any Ethereum full node implementing the JSON-rpc standard")])]),e._v(" "),s("h3",{attrs:{id:"cosmos-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-to-ethereum"}},[e._v("#")]),e._v(" Cosmos to Ethereum:")]),e._v(" "),s("p",[e._v("To send transactions from Cosmos to Ethereum, the Gravity Bridge module of a validator's Gaia instance first packages the transaction data, and makes it available on an endpoint. The Orchestrator then signs this data with the validator’s Ethereum key, and submits it as a message to the Ethereum network. The Ethereum signature of each Cosmos validator needs to be assembled and submitted to the Ethereum chain by relayers.")]),e._v(" "),s("p",[e._v("Validators may be slashed if they fail to submit Ethereum signatures within 10,000 blocks (about twelve to fourteen hours) of their creation.")]),e._v(" "),s("p",[e._v("The current liveness rules require a validator to sign at least 500 of the last 10,000 blocks (about twelve to fourteen hours)")]),e._v(" "),s("p",[e._v("Validators may also be slashed if they sign a message with their Ethereum key that was not created by the Gravity bridge module.")]),e._v(" "),s("p",[e._v("Gravity bridge has no other slashing conditions.")]),e._v(" "),s("h3",{attrs:{id:"ethereum-to-cosmos"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ethereum-to-cosmos"}},[e._v("#")]),e._v(" Ethereum to Cosmos:")]),e._v(" "),s("p",[e._v("The Orchestrator also monitors the Ethereum chain, submitting events that occur on Ethereum to Cosmos as messages. When more than 2/3 of the active voting power has sent a message observing the same Ethereum event, the Gravity module will take action.")]),e._v(" "),s("p",[e._v("This oracle action will not be incentivized, nor will it be enforced with slashing. If validators making up more than 33% of the staked tokens do not participate in the oracle, new deposits and withdrawals will not be processed until those validators resume their oracle obligations.")]),e._v(" "),s("p",[e._v("The oracle was designed to adhere to the Cosmos Hub validator security model without slashing conditions to ensure that a consensus failure on Ethereum does not affect operation of the Cosmos chain.")]),e._v(" "),s("h3",{attrs:{id:"slashing-conditions-spec"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing-conditions-spec"}},[e._v("#")]),e._v(" Slashing Conditions Spec")]),e._v(" "),s("p",[e._v("https://github.com/cosmos/gravity-bridge/blob/main/spec/slashing-spec.md")]),e._v(" "),s("h2",{attrs:{id:"how-does-it-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),s("p",[e._v("Gravity consists of 4 parts:")]),e._v(" "),s("ul",[s("li",[e._v("An Ethereum contract called Gravity.sol")]),e._v(" "),s("li",[e._v("The Gravity Cosmos module of Gaia")]),e._v(" "),s("li",[e._v("The orchestrator program which is run by Cosmos validators alongside the Gravity module")]),e._v(" "),s("li",[e._v("A market of relayers, who compete to submit transactions to Ethereum")])]),e._v(" "),s("h3",{attrs:{id:"gravity-sol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-sol"}},[e._v("#")]),e._v(" Gravity.sol")]),e._v(" "),s("p",[e._v("The Gravity Ethereum contract is a highly compact and efficient representation of weighted powers voting on Ethereum. It contains an Etheruem key from each Cosmos validator, as well as their voting power. This signer set is continuously updated as validation power changes on Cosmos, ensuring that it matches the current Cosmos validator set.")]),e._v(" "),s("p",[e._v("Sending tokens, or updating the validator set, contained in Gravity.sol requires more than 66% of the total voting power to approve the action. In this way Gravity.sol mirrors Tendermint consensus on the Cosmos chain as closely as possible on Ethereum.")]),e._v(" "),s("h3",{attrs:{id:"gravity-cosmos-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-cosmos-module"}},[e._v("#")]),e._v(" Gravity Cosmos Module")]),e._v(" "),s("p",[e._v("The Gravity module governs and coordinates the bridge. Generating messages for the validators to sign with their Ethereum keys and providing these signatures to relayers who assemble and submit them to the Ethereum chain.")]),e._v(" "),s("h3",{attrs:{id:"orchestrator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orchestrator"}},[e._v("#")]),e._v(" Orchestrator")]),e._v(" "),s("p",[e._v("The Gravity bridge orchestrator performs all the external tasks the Gravity bridge requires for validators, which includes submission of signatures and submission of Ethereum events.")]),e._v(" "),s("p",[e._v("While the Gravity module concerns itself with the correctness and consensus state of the bridge, the Orchestrator is responsible for locating and creating the correct inputs.")]),e._v(" "),s("h3",{attrs:{id:"market-of-relayers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#market-of-relayers"}},[e._v("#")]),e._v(" Market of Relayers")]),e._v(" "),s("p",[e._v("Relayers are an unpermissioned role that observes the Cosmos chain for messages ready to be submitted to Ethereum.")]),e._v(" "),s("p",[e._v("The relayer then packages the validators signatures into an Ethereum transaction and submits that transaction to the Ethereum blockchain. All rewards in the Gravity bridge design are paid to msg.sender on Ethereum. This means that relayers do not require any balance on the Cosmos side and can immediately liquidate their earnings into ETH while continuing to relay newer messages.")]),e._v(" "),s("h2",{attrs:{id:"security-assumptions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-assumptions"}},[e._v("#")]),e._v(" Security assumptions")]),e._v(" "),s("p",[e._v("The Gravity bridge is designed with the assumption that the total amount of funds in Gravity.sol is less than the value of the validator set’s total staked tokens.")]),e._v(" "),s("p",[e._v("If this assumption does not hold true, it would be more profitable for validators to steal the funds in the bridge and simply lose their stake to slashing.")]),e._v(" "),s("p",[e._v("There is no automated enforcement of this assumption. It is up to the $ATOM holders to take action if the amount deposited in the bridge exceeds the total value of all stake on the hub.")]),e._v(" "),s("p",[e._v("It should be noted that this condition is not unique to the Gravity bridge. The same dynamic exists for any IBC connection, and even exists in scenarios other than cross-chain communication. For example, in a hypothetical blockchain keeping domain name records, this same vulnerability would exist if the potential profit from exploiting the domain name system was greater than the value of the validator set’s total staked tokens.")]),e._v(" "),s("h2",{attrs:{id:"ongoing-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-work"}},[e._v("#")]),e._v(" Ongoing work")]),e._v(" "),s("p",[e._v("The Gravity Bridge has been continuously tested throughout Q1/Q2 2021 by multiple ongoing test nets with a diverse group of validators.")]),e._v(" "),s("h3",{attrs:{id:"testing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),s("p",[e._v("The Althea team is committed to playing a long-term role in upgrading, documenting, and supporting Gravity over the coming years.\nThe Gravity bridge is currently live and running in a testnet, which validators can join by following the instructions "),s("a",{attrs:{href:"https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-2.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"audit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#audit"}},[e._v("#")]),e._v(" Audit:")]),e._v(" "),s("p",[e._v("The Gravity bridge module is currently undergoing an audit with Informal Systems estimated to be completed by the end of July, 2021.")]),e._v(" "),s("p",[e._v("Phase one of the audit has been completed, which resulted in the addition of evidence based slashing and several other minor design fixes.")]),e._v(" "),s("p",[e._v("The phase two design audit will be completed by the end of June. To be followed by phrase three, an implementation audit to be completed by the end of July.")]),e._v(" "),s("h3",{attrs:{id:"conclusion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion:")]),e._v(" "),s("p",[e._v("With this proposal, the Althea team, together with Cosmos ecosystem partners, will expedite the development of the Gravity Bridge with an incentivized testnet and launch in Q3 2021. Althea will be closely shepherding the Gravity Bridge throughout all phases related to the testing, audit, and implementation process on the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"proposers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),s("p",[s("em",[e._v("The Althea Gravity bridge team.")])]),e._v(" "),s("p",[e._v("Deborah Simpiler, Justin Kilpatrick and, Jehan Tremback")]),e._v(" "),s("p",[e._v("We’d like to share praise and thank you for contributions from the following teams!")]),e._v(" "),s("p",[e._v("Interchain Foundation")]),e._v(" "),s("p",[e._v("All in Bits/Tendermint")]),e._v(" "),s("p",[e._v("Sommelier, Informal, Injective, Confio")]),e._v(" "),s("p",[s("em",[e._v("Gravity Readiness Committee:")])]),e._v(" "),s("p",[e._v("Justin Kilpatrick and Jehan Tremback, Althea")]),e._v(" "),s("p",[e._v("Zarko Milosevic, Informal Systems")]),e._v(" "),s("p",[e._v("Zaki Manian, Sommelier/Iqlusion")]),e._v(" "),s("h2",{attrs:{id:"governance-votes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),s("p",[e._v("The following items summarize the voting options and what it means for this proposal.")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("YES")]),e._v(": You agree that Gravity Bridge should be deployed to the Cosmos Hub.")]),e._v(" "),s("li",[s("strong",[e._v("NO")]),e._v(": You disapprove of deploying Gravity bridge on the Cosmos Hub in its current form (please indicate in the "),s("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),s("OutboundLink")],1),e._v(" why this is the case).")]),e._v(" "),s("li",[s("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to the deployment of Gravity bridge on the Cosmos Hub and will exit the network if this occurred.")]),e._v(" "),s("li",[s("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),s("h2",{attrs:{id:"appendix"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appendix"}},[e._v("#")]),e._v(" Appendix")]),e._v(" "),s("h3",{attrs:{id:"faq"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),s("h3",{attrs:{id:"is-running-the-gravity-module-difficult-for-cosmos-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-running-the-gravity-module-difficult-for-cosmos-validators"}},[e._v("#")]),e._v(" Is running the Gravity Module difficult for Cosmos Validators?")]),e._v(" "),s("p",[e._v("Soliciting feedback from dozens of Cosmos hub validators and over 100 test net participants, we found that running the Gravity module is not a difficult task or undue burden on Cosmos validators.")]),e._v(" "),s("h3",{attrs:{id:"is-the-gravity-bridge-secure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-the-gravity-bridge-secure"}},[e._v("#")]),e._v(" Is the Gravity bridge secure?")]),e._v(" "),s("p",[e._v("The Gravity bridge is undergoing an audit by Informal Systems. It will then be up to ATOM holders to interpret the results of the code audit and weigh implementation risks in another governance proposal before deployment. Fundamentally, the design of the Gravity Bridge means that its security is directly represented by the security of the validator set on Cosmos Hub. On the Cosmos side, the Gravity Bridge security design adheres to the Cosmos network's ideal of safety over liveness assured by 2/3+ validator voting power, but without sacrificing safety or liveness due to issues that may rarely arise with Ethereum.")]),e._v(" "),s("h3",{attrs:{id:"are-slashing-conditions-a-problem-for-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#are-slashing-conditions-a-problem-for-validators"}},[e._v("#")]),e._v(" Are slashing conditions a problem for validators?")]),e._v(" "),s("p",[e._v("Gravity Bridge slashing conditions closely mirror the slashing conditions which validators are already subject to.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("Uptime: Validators on Cosmos currently must keep their validator software running at all times, or risk slashing. Gravity adds an additional binary which must be run, which is low in difficulty, resource usage, and operational requirements.")])]),e._v(" "),s("li",[s("p",[e._v("Equivocation: Validators on Cosmos are subject to slashing if they sign two blocks at the same height. It is possible for this to happen through accidental misconfiguration. Gravity adds an additional item which must not be signed, which are the fraudulent bridge transactions that never existed on Cosmos. It is not possible for this to happen by accident, so this slashing condition is much less of a risk than the Hub’s existing slashing conditions.")])])]),e._v(" "),s("h3",{attrs:{id:"what-about-peg-zones"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-about-peg-zones"}},[e._v("#")]),e._v(" What about peg zones?")]),e._v(" "),s("p",[e._v('The concept of a "peg zone" has been around in Cosmos for a while. This is a separate chain which runs the Gravity Bridge and connects to Ethereum or another blockchain. We believe that running Gravity Bridge on the Cosmos Hub and connecting directly is the superior solution. First, let\'s look at what different forms peg zones could take.')]),e._v(" "),s("ol",[s("li",[s("p",[e._v("The most likely type of peg zone is what will result if this proposal does not pass. There are at least 5 Cosmos SDK chains who will be using the Gravity Bridge module to connect to Ethereum. There will be no official way to bridge Ethereum assets into the Cosmos ecosystem. Instead there will be many dueling representations of Ethereum assets. It goes without saying that this will confuse Cosmos users. If one of these peg zones gains the upper hand and becomes dominant, the Cosmos Hub will miss out on all the transaction fees that it generates.")])]),e._v(" "),s("li",[s("p",[e._v("It would also be possible to establish an official peg zone, and airdrop its staking token 1:1 to current Atom holders. This would at least allow the Cosmos Hub stakeholders to keep the economic benefit of activity on the peg zone. However, this is capital inefficient. A dollar staked on this peg zone would not be staked on the hub and vice versa. Splitting stake between these two important chains would make both weaker. Cosmos users will also need to choose whether to put value into Atom or put value into the peg zone token, resulting in less value in Atom.")])]),e._v(" "),s("li",[s("p",[e._v("Shared security has been talked about for a long time in Cosmos, but it is not yet in production. Establishing a peg zone with shared security with the Cosmos Hub would allow the same validator set to validate both chains, and put the same Atoms at stake to secure each of them. This would avoid the issues of scenarios 1 and 2 above. However, we cannot afford to wait. Many other PoS blockchains already have Ethereum bridges and Cosmos needs to continue innovating to stay relevant.")])])]),e._v(" "),s("p",[e._v("This is easier to both design and debug, and is ideal for high-value chains like the Hub.")]),e._v(" "),s("h3",{attrs:{id:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[e._v("#")]),e._v(" Why not use IBC to create a bridge to Ethereum?")]),e._v(" "),s("p",[e._v("Ethereum as it currently exists (ETH1) fundamentally can not implement IBC. It may be possible in the future to create an IBC bridge with ETH2.")]),e._v(" "),s("p",[e._v("Implementing IBC for ETH2 require significant development effort and coordination with the Ethereum team as well as the completion and deployment of ETH2, which is on an uncertain timeline.")]),e._v(" "),s("p",[e._v("Gravity bridge is a design that can be deployed in the forseeable future and will continue to function so long as ETH1 compatibility is maintained.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{496:function(e,t,s){"use strict";s.r(t);var a=s(1),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[e._v("#")]),e._v(" Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub")]),e._v(" "),s("p",[s("img",{attrs:{src:"https://raw.githubusercontent.com/althea-net/cosmos-gravity-bridge/main/gravity-bridge.svg",alt:"Gravity Bridge"}})]),e._v(" "),s("h2",{attrs:{id:"summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),s("p",[e._v("This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub.")]),e._v(" "),s("p",[e._v("By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"vision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vision"}},[e._v("#")]),e._v(" Vision")]),e._v(" "),s("p",[e._v("Gravity as an Ethereum-Cosmos bridge is designed for the Cosmos Hub to pull as much value as possible into the orbits of Cosmos via a direct and decentralized bridge. Gravity will be able to bring ERC20 assets from Ethereum into Cosmos, as well as Cosmos assets to Ethereum ERC20 representations. ATOM, and any other asset in the Cosmos ecosystem, will be able to trade on Uniswap and other Ethereum AMMs, and interact with Ethereum DeFi like any ERC20 token. As well, Cosmos Hub users can use the Gravity DEX to trade between ERC20 assets and tokens that are transferred using IBC. This will bring a tremendous amount of liquidity and utility to these multi-chain assets.")]),e._v(" "),s("h2",{attrs:{id:"cosmos-ethereum-and-gravity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-ethereum-and-gravity"}},[e._v("#")]),e._v(" Cosmos, Ethereum, and Gravity")]),e._v(" "),s("p",[e._v("Gravity is a secure and highly efficient bridge between EVM and Cosmos SDK-based blockchains. At a high-level, Gravity enables token transfers from Ethereum to the Cosmos Hub and back again by locking tokens on the Ethereum side and minting equivalent tokens on the Cosmos side.")]),e._v(" "),s("p",[e._v("Gravity is completely non-custodial. Control of the bridge mirrors the active validator set on the Cosmos SDK-based chain, and validator stake on Cosmos can be slashed for misbehavior involving the Gravity bridge.")]),e._v(" "),s("p",[e._v("The Gravity Ethereum contract is highly optimized, utilizing batches to dramatically reduce the cost of Cosmos -> Ethereum transfers. Sending funds from Cosmos back to Ethereum can be up to 50% less costly than a normal ERC20 send.")]),e._v(" "),s("h2",{attrs:{id:"how-do-validators-support-the-gravity-bridge"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-do-validators-support-the-gravity-bridge"}},[e._v("#")]),e._v(" How do validators support the Gravity Bridge?")]),e._v(" "),s("p",[e._v("Cosmos Hub validators will run three key software components of the Gravity bridge:")]),e._v(" "),s("ul",[s("li",[e._v("The Gravity bridge module, integrated into gaiad (the binary that runs the Cosmos Hub)")]),e._v(" "),s("li",[e._v("The Gravity bridge Orchestrator")]),e._v(" "),s("li",[e._v("A Geth light client or any Ethereum full node implementing the JSON-rpc standard")])]),e._v(" "),s("h3",{attrs:{id:"cosmos-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-to-ethereum"}},[e._v("#")]),e._v(" Cosmos to Ethereum:")]),e._v(" "),s("p",[e._v("To send transactions from Cosmos to Ethereum, the Gravity Bridge module of a validator's Gaia instance first packages the transaction data, and makes it available on an endpoint. The Orchestrator then signs this data with the validator’s Ethereum key, and submits it as a message to the Ethereum network. The Ethereum signature of each Cosmos validator needs to be assembled and submitted to the Ethereum chain by relayers.")]),e._v(" "),s("p",[e._v("Validators may be slashed if they fail to submit Ethereum signatures within 10,000 blocks (about twelve to fourteen hours) of their creation.")]),e._v(" "),s("p",[e._v("The current liveness rules require a validator to sign at least 500 of the last 10,000 blocks (about twelve to fourteen hours)")]),e._v(" "),s("p",[e._v("Validators may also be slashed if they sign a message with their Ethereum key that was not created by the Gravity bridge module.")]),e._v(" "),s("p",[e._v("Gravity bridge has no other slashing conditions.")]),e._v(" "),s("h3",{attrs:{id:"ethereum-to-cosmos"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ethereum-to-cosmos"}},[e._v("#")]),e._v(" Ethereum to Cosmos:")]),e._v(" "),s("p",[e._v("The Orchestrator also monitors the Ethereum chain, submitting events that occur on Ethereum to Cosmos as messages. When more than 2/3 of the active voting power has sent a message observing the same Ethereum event, the Gravity module will take action.")]),e._v(" "),s("p",[e._v("This oracle action will not be incentivized, nor will it be enforced with slashing. If validators making up more than 33% of the staked tokens do not participate in the oracle, new deposits and withdrawals will not be processed until those validators resume their oracle obligations.")]),e._v(" "),s("p",[e._v("The oracle was designed to adhere to the Cosmos Hub validator security model without slashing conditions to ensure that a consensus failure on Ethereum does not affect operation of the Cosmos chain.")]),e._v(" "),s("h3",{attrs:{id:"slashing-conditions-spec"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing-conditions-spec"}},[e._v("#")]),e._v(" Slashing Conditions Spec")]),e._v(" "),s("p",[e._v("https://github.com/cosmos/gravity-bridge/blob/main/spec/slashing-spec.md")]),e._v(" "),s("h2",{attrs:{id:"how-does-it-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),s("p",[e._v("Gravity consists of 4 parts:")]),e._v(" "),s("ul",[s("li",[e._v("An Ethereum contract called Gravity.sol")]),e._v(" "),s("li",[e._v("The Gravity Cosmos module of Gaia")]),e._v(" "),s("li",[e._v("The orchestrator program which is run by Cosmos validators alongside the Gravity module")]),e._v(" "),s("li",[e._v("A market of relayers, who compete to submit transactions to Ethereum")])]),e._v(" "),s("h3",{attrs:{id:"gravity-sol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-sol"}},[e._v("#")]),e._v(" Gravity.sol")]),e._v(" "),s("p",[e._v("The Gravity Ethereum contract is a highly compact and efficient representation of weighted powers voting on Ethereum. It contains an Etheruem key from each Cosmos validator, as well as their voting power. This signer set is continuously updated as validation power changes on Cosmos, ensuring that it matches the current Cosmos validator set.")]),e._v(" "),s("p",[e._v("Sending tokens, or updating the validator set, contained in Gravity.sol requires more than 66% of the total voting power to approve the action. In this way Gravity.sol mirrors Tendermint consensus on the Cosmos chain as closely as possible on Ethereum.")]),e._v(" "),s("h3",{attrs:{id:"gravity-cosmos-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-cosmos-module"}},[e._v("#")]),e._v(" Gravity Cosmos Module")]),e._v(" "),s("p",[e._v("The Gravity module governs and coordinates the bridge. Generating messages for the validators to sign with their Ethereum keys and providing these signatures to relayers who assemble and submit them to the Ethereum chain.")]),e._v(" "),s("h3",{attrs:{id:"orchestrator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orchestrator"}},[e._v("#")]),e._v(" Orchestrator")]),e._v(" "),s("p",[e._v("The Gravity bridge orchestrator performs all the external tasks the Gravity bridge requires for validators, which includes submission of signatures and submission of Ethereum events.")]),e._v(" "),s("p",[e._v("While the Gravity module concerns itself with the correctness and consensus state of the bridge, the Orchestrator is responsible for locating and creating the correct inputs.")]),e._v(" "),s("h3",{attrs:{id:"market-of-relayers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#market-of-relayers"}},[e._v("#")]),e._v(" Market of Relayers")]),e._v(" "),s("p",[e._v("Relayers are an unpermissioned role that observes the Cosmos chain for messages ready to be submitted to Ethereum.")]),e._v(" "),s("p",[e._v("The relayer then packages the validators signatures into an Ethereum transaction and submits that transaction to the Ethereum blockchain. All rewards in the Gravity bridge design are paid to msg.sender on Ethereum. This means that relayers do not require any balance on the Cosmos side and can immediately liquidate their earnings into ETH while continuing to relay newer messages.")]),e._v(" "),s("h2",{attrs:{id:"security-assumptions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-assumptions"}},[e._v("#")]),e._v(" Security assumptions")]),e._v(" "),s("p",[e._v("The Gravity bridge is designed with the assumption that the total amount of funds in Gravity.sol is less than the value of the validator set’s total staked tokens.")]),e._v(" "),s("p",[e._v("If this assumption does not hold true, it would be more profitable for validators to steal the funds in the bridge and simply lose their stake to slashing.")]),e._v(" "),s("p",[e._v("There is no automated enforcement of this assumption. It is up to the $ATOM holders to take action if the amount deposited in the bridge exceeds the total value of all stake on the hub.")]),e._v(" "),s("p",[e._v("It should be noted that this condition is not unique to the Gravity bridge. The same dynamic exists for any IBC connection, and even exists in scenarios other than cross-chain communication. For example, in a hypothetical blockchain keeping domain name records, this same vulnerability would exist if the potential profit from exploiting the domain name system was greater than the value of the validator set’s total staked tokens.")]),e._v(" "),s("h2",{attrs:{id:"ongoing-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-work"}},[e._v("#")]),e._v(" Ongoing work")]),e._v(" "),s("p",[e._v("The Gravity Bridge has been continuously tested throughout Q1/Q2 2021 by multiple ongoing test nets with a diverse group of validators.")]),e._v(" "),s("h3",{attrs:{id:"testing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),s("p",[e._v("The Althea team is committed to playing a long-term role in upgrading, documenting, and supporting Gravity over the coming years.\nThe Gravity bridge is currently live and running in a testnet, which validators can join by following the instructions "),s("a",{attrs:{href:"https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-2.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"audit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#audit"}},[e._v("#")]),e._v(" Audit:")]),e._v(" "),s("p",[e._v("The Gravity bridge module is currently undergoing an audit with Informal Systems estimated to be completed by the end of July, 2021.")]),e._v(" "),s("p",[e._v("Phase one of the audit has been completed, which resulted in the addition of evidence based slashing and several other minor design fixes.")]),e._v(" "),s("p",[e._v("The phase two design audit will be completed by the end of June. To be followed by phrase three, an implementation audit to be completed by the end of July.")]),e._v(" "),s("h3",{attrs:{id:"conclusion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion:")]),e._v(" "),s("p",[e._v("With this proposal, the Althea team, together with Cosmos ecosystem partners, will expedite the development of the Gravity Bridge with an incentivized testnet and launch in Q3 2021. Althea will be closely shepherding the Gravity Bridge throughout all phases related to the testing, audit, and implementation process on the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"proposers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),s("p",[s("em",[e._v("The Althea Gravity bridge team.")])]),e._v(" "),s("p",[e._v("Deborah Simpiler, Justin Kilpatrick and, Jehan Tremback")]),e._v(" "),s("p",[e._v("We’d like to share praise and thank you for contributions from the following teams!")]),e._v(" "),s("p",[e._v("Interchain Foundation")]),e._v(" "),s("p",[e._v("All in Bits/Tendermint")]),e._v(" "),s("p",[e._v("Sommelier, Informal, Injective, Confio")]),e._v(" "),s("p",[s("em",[e._v("Gravity Readiness Committee:")])]),e._v(" "),s("p",[e._v("Justin Kilpatrick and Jehan Tremback, Althea")]),e._v(" "),s("p",[e._v("Zarko Milosevic, Informal Systems")]),e._v(" "),s("p",[e._v("Zaki Manian, Sommelier/Iqlusion")]),e._v(" "),s("h2",{attrs:{id:"governance-votes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),s("p",[e._v("The following items summarize the voting options and what it means for this proposal.")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("YES")]),e._v(": You agree that Gravity Bridge should be deployed to the Cosmos Hub.")]),e._v(" "),s("li",[s("strong",[e._v("NO")]),e._v(": You disapprove of deploying Gravity bridge on the Cosmos Hub in its current form (please indicate in the "),s("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),s("OutboundLink")],1),e._v(" why this is the case).")]),e._v(" "),s("li",[s("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to the deployment of Gravity bridge on the Cosmos Hub and will exit the network if this occurred.")]),e._v(" "),s("li",[s("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),s("h2",{attrs:{id:"appendix"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appendix"}},[e._v("#")]),e._v(" Appendix")]),e._v(" "),s("h3",{attrs:{id:"faq"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),s("h3",{attrs:{id:"is-running-the-gravity-module-difficult-for-cosmos-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-running-the-gravity-module-difficult-for-cosmos-validators"}},[e._v("#")]),e._v(" Is running the Gravity Module difficult for Cosmos Validators?")]),e._v(" "),s("p",[e._v("Soliciting feedback from dozens of Cosmos hub validators and over 100 test net participants, we found that running the Gravity module is not a difficult task or undue burden on Cosmos validators.")]),e._v(" "),s("h3",{attrs:{id:"is-the-gravity-bridge-secure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-the-gravity-bridge-secure"}},[e._v("#")]),e._v(" Is the Gravity bridge secure?")]),e._v(" "),s("p",[e._v("The Gravity bridge is undergoing an audit by Informal Systems. It will then be up to ATOM holders to interpret the results of the code audit and weigh implementation risks in another governance proposal before deployment. Fundamentally, the design of the Gravity Bridge means that its security is directly represented by the security of the validator set on Cosmos Hub. On the Cosmos side, the Gravity Bridge security design adheres to the Cosmos network's ideal of safety over liveness assured by 2/3+ validator voting power, but without sacrificing safety or liveness due to issues that may rarely arise with Ethereum.")]),e._v(" "),s("h3",{attrs:{id:"are-slashing-conditions-a-problem-for-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#are-slashing-conditions-a-problem-for-validators"}},[e._v("#")]),e._v(" Are slashing conditions a problem for validators?")]),e._v(" "),s("p",[e._v("Gravity Bridge slashing conditions closely mirror the slashing conditions which validators are already subject to.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("Uptime: Validators on Cosmos currently must keep their validator software running at all times, or risk slashing. Gravity adds an additional binary which must be run, which is low in difficulty, resource usage, and operational requirements.")])]),e._v(" "),s("li",[s("p",[e._v("Equivocation: Validators on Cosmos are subject to slashing if they sign two blocks at the same height. It is possible for this to happen through accidental misconfiguration. Gravity adds an additional item which must not be signed, which are the fraudulent bridge transactions that never existed on Cosmos. It is not possible for this to happen by accident, so this slashing condition is much less of a risk than the Hub’s existing slashing conditions.")])])]),e._v(" "),s("h3",{attrs:{id:"what-about-peg-zones"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-about-peg-zones"}},[e._v("#")]),e._v(" What about peg zones?")]),e._v(" "),s("p",[e._v('The concept of a "peg zone" has been around in Cosmos for a while. This is a separate chain which runs the Gravity Bridge and connects to Ethereum or another blockchain. We believe that running Gravity Bridge on the Cosmos Hub and connecting directly is the superior solution. First, let\'s look at what different forms peg zones could take.')]),e._v(" "),s("ol",[s("li",[s("p",[e._v("The most likely type of peg zone is what will result if this proposal does not pass. There are at least 5 Cosmos SDK chains who will be using the Gravity Bridge module to connect to Ethereum. There will be no official way to bridge Ethereum assets into the Cosmos ecosystem. Instead there will be many dueling representations of Ethereum assets. It goes without saying that this will confuse Cosmos users. If one of these peg zones gains the upper hand and becomes dominant, the Cosmos Hub will miss out on all the transaction fees that it generates.")])]),e._v(" "),s("li",[s("p",[e._v("It would also be possible to establish an official peg zone, and airdrop its staking token 1:1 to current Atom holders. This would at least allow the Cosmos Hub stakeholders to keep the economic benefit of activity on the peg zone. However, this is capital inefficient. A dollar staked on this peg zone would not be staked on the hub and vice versa. Splitting stake between these two important chains would make both weaker. Cosmos users will also need to choose whether to put value into Atom or put value into the peg zone token, resulting in less value in Atom.")])]),e._v(" "),s("li",[s("p",[e._v("Shared security has been talked about for a long time in Cosmos, but it is not yet in production. Establishing a peg zone with shared security with the Cosmos Hub would allow the same validator set to validate both chains, and put the same Atoms at stake to secure each of them. This would avoid the issues of scenarios 1 and 2 above. However, we cannot afford to wait. Many other PoS blockchains already have Ethereum bridges and Cosmos needs to continue innovating to stay relevant.")])])]),e._v(" "),s("p",[e._v("This is easier to both design and debug, and is ideal for high-value chains like the Hub.")]),e._v(" "),s("h3",{attrs:{id:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[e._v("#")]),e._v(" Why not use IBC to create a bridge to Ethereum?")]),e._v(" "),s("p",[e._v("Ethereum as it currently exists (ETH1) fundamentally can not implement IBC. It may be possible in the future to create an IBC bridge with ETH2.")]),e._v(" "),s("p",[e._v("Implementing IBC for ETH2 require significant development effort and coordination with the Ethereum team as well as the completion and deployment of ETH2, which is on an uncertain timeline.")]),e._v(" "),s("p",[e._v("Gravity bridge is a design that can be deployed in the forseeable future and will continue to function so long as ETH1 compatibility is maintained.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/108.4b282673.js b/main/assets/js/108.a5cc8ad3.js similarity index 98% rename from main/assets/js/108.4b282673.js rename to main/assets/js/108.a5cc8ad3.js index 877faaa2408..417efc7fa4b 100644 --- a/main/assets/js/108.4b282673.js +++ b/main/assets/js/108.a5cc8ad3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{503:function(e,t,o){"use strict";o.r(t);var i=o(1),s=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[e._v("#")]),e._v(" ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives")]),e._v(" "),o("p",[e._v("ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos.")]),e._v(" "),o("p",[e._v("In the Cosmos Hub Port City vision, ATOMs are pitched as equity in the Cosmos Hub. However, this alone is insufficient to establish ATOM as the base currency of the Cosmos ecosystem as a whole. Instead, the ATOM community must work to actively promote the use of ATOMs throughout the Cosmos ecosystem, rather than passively relying on the Hub's reputation to create ATOM's value.")]),e._v(" "),o("p",[e._v("In order to cement the role of ATOMs in Cosmos DeFi, the Cosmos Hub should leverage its community pool to help align incentives with other protocols within the Cosmos ecosystem. We propose beginning this initiative by using the community pool ATOMs to incentivize deep ATOM base pair liquidity pools on the Osmosis Network.")]),e._v(" "),o("p",[e._v("Osmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x’d the number of IBC transactions ever created, demonstrating the power of IBC and the ability of the Cosmos SDK to bootstrap DeFi protocols with $100M+ TVL in a short period of time. Since its announcement Osmosis has helped bring renewed attention and interest to Cosmos from the crypto community at large and kickstarted the era of Cosmos DeFi.")]),e._v(" "),o("p",[e._v("Osmosis has already helped in establishing ATOM as the Schelling Point of the Cosmos ecosystem. The genesis distribution of OSMO was primarily based on an airdrop to ATOM holders specifically, acknowledging the importance of ATOM to all future projects within the Cosmos. Furthermore, the Osmosis LP rewards currently incentivize ATOMs to be one of the main base pairs of the platform.")]),e._v(" "),o("p",[e._v("Osmosis has the ability to incentivize AMM liquidity, a feature not available on any other IBC-enabled DEX. Osmosis already uses its own native OSMO liquidity rewards to incentivize ATOMs to be one of the main base pairs, leading to ~2.2 million ATOMs already providing liquidity on the platform.")]),e._v(" "),o("p",[e._v("In addition to these native OSMO LP Rewards, the platform also includes a feature called “external incentives” that allows anyone to permissionlessly add additional incentives in any token to the LPs of any AMM pools they wish. You can read more about this mechanism here: https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413 . Pools containing Cosmos assets such as AKT and XPRT are already planned to receive incentives from their respective community pools and/or foundations.")]),e._v(" "),o("p",[e._v("We propose the Cosmos Hub dedicate 100,000 ATOMs from its Community Pool to be allocated towards liquidity incentives on Osmosis over the next 3 months. This community fund proposal will transfer 100,000 ATOMs to a multisig group who will then allocate the ATOMs to bonded liquidity gauges on Osmosis on a biweekly basis, according to direction given by Cosmos Hub governance. For simplicity, we propose setting the liquidity incentives to initially point to Osmosis Pool #1, the ATOM/OSMO pool, which is the pool with by far the highest TVL and Volume. Cosmos Hub governance can then use Text Proposals to further direct the multisig members to reallocate incentives to new pools.")]),e._v(" "),o("p",[e._v("The multisig will consist of a 2/3 key holder set consisting of the following individuals whom have all agreed to participate in this process shall this proposal pass:")]),e._v(" "),o("ul",[o("li",[e._v("Zaki Manian")]),e._v(" "),o("li",[e._v("Federico Kunze")]),e._v(" "),o("li",[e._v("Marko Baricevic")])]),e._v(" "),o("p",[e._v("This is one small step for the Hub, but one giant leap for ATOM-aligned.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{504: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.7f8893ff.js b/main/assets/js/109.080740e3.js similarity index 98% rename from main/assets/js/109.7f8893ff.js rename to main/assets/js/109.080740e3.js index 00d75a4ca78..1982bd8f986 100644 --- a/main/assets/js/109.7f8893ff.js +++ b/main/assets/js/109.080740e3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{571: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.c7f34720.js b/main/assets/js/110.880e717a.js similarity index 87% rename from main/assets/js/110.c7f34720.js rename to main/assets/js/110.880e717a.js index 74f69160ea6..b11691e428c 100644 --- a/main/assets/js/110.c7f34720.js +++ b/main/assets/js/110.880e717a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{573: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/111.7af9137d.js b/main/assets/js/111.ff197e6e.js similarity index 99% rename from main/assets/js/111.7af9137d.js rename to main/assets/js/111.ff197e6e.js index 694ef9f432a..dfb2a43007b 100644 --- a/main/assets/js/111.7af9137d.js +++ b/main/assets/js/111.ff197e6e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{485:function(e,o,t){"use strict";t.r(o);var s=t(1),a=Object(s.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:"previous-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#previous-proposals"}},[e._v("#")]),e._v(" Previous proposals")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"}},[e._v("#")]),e._v(" 1 Adjustment of blocks_per_year to come aligned with actual block time")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-03-20 02:41:27")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_2-atom-transfer-enablement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-atom-transfer-enablement"}},[e._v("#")]),e._v(" 2 ATOM Transfer Enablement")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-03-25T21:42:19.240550245Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_3-atom-transfer-enablement-v2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-atom-transfer-enablement-v2"}},[e._v("#")]),e._v(" 3 ATOM Transfer Enablement v2")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-03T10:15:22.291176064Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"}},[e._v("#")]),e._v(" 4 Proposal for issuance of fungible tokens directly on the Cosmos Hub")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-15T08:45:39.072577509Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_5-expedited-cosmos-upgrade-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-expedited-cosmos-upgrade-proposal"}},[e._v("#")]),e._v(" 5 Expedited Cosmos Upgrade Proposal")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-19T00:49:55.251313656Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to upgrade the Cosmos Hub at block 500,000 on April 22nd 5pm GMT. Details:https://ipfs.io/ipfs/QmS13GPNs1cRKSojete5y9RgW7wyf1sZ1BGqX3zjTGs7sX")]),e._v(" "),t("h2",{attrs:{id:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"}},[e._v("#")]),e._v(" 6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-03T18:14:33.209053883Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_7-activate-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_7-activate-the-community-pool"}},[e._v("#")]),e._v(" 7 Activate the Community Pool")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-03T21:08:25.443199036Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Enable governance to spend funds from the community pool. Full proposal: https://ipfs.io/ipfs/QmNsVCsyRmEiep8rTQLxVNdMHm2uiZkmaSHCR6S72Y1sL1")]),e._v(" "),t("h2",{attrs:{id:"_8-notification-for-security-critical-hard-fork-at-block-482100"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_8-notification-for-security-critical-hard-fork-at-block-482100"}},[e._v("#")]),e._v(" 8 Notification for Security Critical Hard Fork at Block 482100")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-30T19:43:02.870666885Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_10-increase-max-validator-set-size-to-125"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_10-increase-max-validator-set-size-to-125"}},[e._v("#")]),e._v(" 10 Increase Max Validator Set Size to 125")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-01T14:09:25.508939113Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"}},[e._v("#")]),e._v(" 12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-23T00:28:15.881319915Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_13-cosmos-hub-3-upgrade-proposal-a"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_13-cosmos-hub-3-upgrade-proposal-a"}},[e._v("#")]),e._v(" 13 Cosmos Hub 3 Upgrade Proposal A")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-26T18:04:10.416760069Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_14-cosmos-hub-3-upgrade-proposal-b"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_14-cosmos-hub-3-upgrade-proposal-b"}},[e._v("#")]),e._v(" 14 Cosmos Hub 3 Upgrade Proposal B")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-08-23T16:16:19.814900321Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_16-cosmos-hub-3-upgrade-proposal-d"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_16-cosmos-hub-3-upgrade-proposal-d"}},[e._v("#")]),e._v(" 16 Cosmos Hub 3 Upgrade Proposal D")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-09-05T21:32:32.253341577Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_19-cosmos-hub-3-upgrade-proposal-e"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_19-cosmos-hub-3-upgrade-proposal-e"}},[e._v("#")]),e._v(" 19 Cosmos Hub 3 Upgrade Proposal E")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-11-14T17:13:31.985706216Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_23-cosmos-governance-working-group-q1-2020"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_23-cosmos-governance-working-group-q1-2020"}},[e._v("#")]),e._v(" 23 Cosmos Governance Working Group - Q1 2020")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-01-15T06:51:48.001168602Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_25-cosmwasm-integration-1-permissions-and-upgrades"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_25-cosmwasm-integration-1-permissions-and-upgrades"}},[e._v("#")]),e._v(" 25 CosmWasm Integration 1 - Permissions and Upgrades")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-05-12T17:10:00.465282299Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_26-takeoff-proposal-from-cyber-to-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_26-takeoff-proposal-from-cyber-to-cosmos"}},[e._v("#")]),e._v(" 26 Takeoff Proposal from Cyber to Cosmos")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-05-21T18:00:11.292428073Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_27-stargate-upgrade-proposal-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_27-stargate-upgrade-proposal-1"}},[e._v("#")]),e._v(" 27 Stargate Upgrade Proposal 1")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-07-12T06:23:02.440964897Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"}},[e._v("#")]),e._v(" 29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-09-09T06:47:46.521375251Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_31-governance-split-votes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_31-governance-split-votes"}},[e._v("#")]),e._v(" 31 Governance Split Votes")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-11-23T00:53:38.508414880Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_32-funding-for-development-of-governance-split-votes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_32-funding-for-development-of-governance-split-votes"}},[e._v("#")]),e._v(" 32 Funding for Development of Governance Split Votes")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-11-24T17:22:36.584208993Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_34-luna-mission-funding-atom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" 34 Luna Mission - Funding $ATOM")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-05T23:09:26.477112871Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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).")]),e._v(" "),t("h2",{attrs:{id:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[e._v("#")]),e._v(" 35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-12T01:37:07.471992293Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to complete the Stargate upgrade, halt "),t("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Jan 28th, export the state and start "),t("code",[e._v("cosmoshub-4")]),e._v(" 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")]),e._v(" "),t("h2",{attrs:{id:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"}},[e._v("#")]),e._v(" 36 Delay of Hub Stargate Upgrade for approximately 2 weeks")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-24T15:51:52.051468824Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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 "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 35"),t("OutboundLink")],1),e._v(" will not be executed. The Hub governance will vote on the forthcoming proposal aiming for a final upgrade. The earliest target date would be February 11th. Given that Lunar New Year is on Feb 12th. The next best date is Feb 18th 06:00UTC.nnWe are recommending the delay for the following reasons.nn* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request"),t("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"),t("OutboundLink")],1),e._v("n* A balance validation regression was identified during Prop 29 code review. "),t("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"),t("OutboundLink")],1),e._v("n* The IBC Go To Market Working Group has "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("identified Ledger hardware wallet"),t("OutboundLink")],1),e._v(" 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 "),t("a",{attrs:{href:"https://twitter.com/Ledger_Support/status/1352247403605356551?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://twitter.com/Ledger_Support/status/1352247403605356551?s=20"),t("OutboundLink")],1),e._v(". 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.")]),e._v(" "),t("h2",{attrs:{id:"_37-stargate-upgrade-second-time-is-a-charm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_37-stargate-upgrade-second-time-is-a-charm"}},[e._v("#")]),e._v(" 37 Stargate Upgrade- Second time is a charm!")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-28T21:07:30.044676129Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to complete the Stargate upgrade, halt "),t("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Feb 18th, export the state and start "),t("code",[e._v("cosmoshub-4")]),e._v(" 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")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{486:function(e,o,t){"use strict";t.r(o);var s=t(1),a=Object(s.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:"previous-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#previous-proposals"}},[e._v("#")]),e._v(" Previous proposals")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"}},[e._v("#")]),e._v(" 1 Adjustment of blocks_per_year to come aligned with actual block time")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-03-20 02:41:27")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_2-atom-transfer-enablement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-atom-transfer-enablement"}},[e._v("#")]),e._v(" 2 ATOM Transfer Enablement")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-03-25T21:42:19.240550245Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_3-atom-transfer-enablement-v2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-atom-transfer-enablement-v2"}},[e._v("#")]),e._v(" 3 ATOM Transfer Enablement v2")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-03T10:15:22.291176064Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"}},[e._v("#")]),e._v(" 4 Proposal for issuance of fungible tokens directly on the Cosmos Hub")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-15T08:45:39.072577509Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_5-expedited-cosmos-upgrade-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-expedited-cosmos-upgrade-proposal"}},[e._v("#")]),e._v(" 5 Expedited Cosmos Upgrade Proposal")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-04-19T00:49:55.251313656Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to upgrade the Cosmos Hub at block 500,000 on April 22nd 5pm GMT. Details:https://ipfs.io/ipfs/QmS13GPNs1cRKSojete5y9RgW7wyf1sZ1BGqX3zjTGs7sX")]),e._v(" "),t("h2",{attrs:{id:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"}},[e._v("#")]),e._v(" 6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-03T18:14:33.209053883Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_7-activate-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_7-activate-the-community-pool"}},[e._v("#")]),e._v(" 7 Activate the Community Pool")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-03T21:08:25.443199036Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Enable governance to spend funds from the community pool. Full proposal: https://ipfs.io/ipfs/QmNsVCsyRmEiep8rTQLxVNdMHm2uiZkmaSHCR6S72Y1sL1")]),e._v(" "),t("h2",{attrs:{id:"_8-notification-for-security-critical-hard-fork-at-block-482100"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_8-notification-for-security-critical-hard-fork-at-block-482100"}},[e._v("#")]),e._v(" 8 Notification for Security Critical Hard Fork at Block 482100")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-05-30T19:43:02.870666885Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_10-increase-max-validator-set-size-to-125"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_10-increase-max-validator-set-size-to-125"}},[e._v("#")]),e._v(" 10 Increase Max Validator Set Size to 125")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-01T14:09:25.508939113Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"}},[e._v("#")]),e._v(" 12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-23T00:28:15.881319915Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_13-cosmos-hub-3-upgrade-proposal-a"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_13-cosmos-hub-3-upgrade-proposal-a"}},[e._v("#")]),e._v(" 13 Cosmos Hub 3 Upgrade Proposal A")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-07-26T18:04:10.416760069Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_14-cosmos-hub-3-upgrade-proposal-b"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_14-cosmos-hub-3-upgrade-proposal-b"}},[e._v("#")]),e._v(" 14 Cosmos Hub 3 Upgrade Proposal B")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-08-23T16:16:19.814900321Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_16-cosmos-hub-3-upgrade-proposal-d"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_16-cosmos-hub-3-upgrade-proposal-d"}},[e._v("#")]),e._v(" 16 Cosmos Hub 3 Upgrade Proposal D")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-09-05T21:32:32.253341577Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_19-cosmos-hub-3-upgrade-proposal-e"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_19-cosmos-hub-3-upgrade-proposal-e"}},[e._v("#")]),e._v(" 19 Cosmos Hub 3 Upgrade Proposal E")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2019-11-14T17:13:31.985706216Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_23-cosmos-governance-working-group-q1-2020"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_23-cosmos-governance-working-group-q1-2020"}},[e._v("#")]),e._v(" 23 Cosmos Governance Working Group - Q1 2020")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-01-15T06:51:48.001168602Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_25-cosmwasm-integration-1-permissions-and-upgrades"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_25-cosmwasm-integration-1-permissions-and-upgrades"}},[e._v("#")]),e._v(" 25 CosmWasm Integration 1 - Permissions and Upgrades")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-05-12T17:10:00.465282299Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_26-takeoff-proposal-from-cyber-to-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_26-takeoff-proposal-from-cyber-to-cosmos"}},[e._v("#")]),e._v(" 26 Takeoff Proposal from Cyber to Cosmos")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-05-21T18:00:11.292428073Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_REJECTED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_27-stargate-upgrade-proposal-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_27-stargate-upgrade-proposal-1"}},[e._v("#")]),e._v(" 27 Stargate Upgrade Proposal 1")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-07-12T06:23:02.440964897Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"}},[e._v("#")]),e._v(" 29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-09-09T06:47:46.521375251Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"_31-governance-split-votes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_31-governance-split-votes"}},[e._v("#")]),e._v(" 31 Governance Split Votes")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-11-23T00:53:38.508414880Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_32-funding-for-development-of-governance-split-votes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_32-funding-for-development-of-governance-split-votes"}},[e._v("#")]),e._v(" 32 Funding for Development of Governance Split Votes")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2020-11-24T17:22:36.584208993Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"_34-luna-mission-funding-atom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" 34 Luna Mission - Funding $ATOM")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-05T23:09:26.477112871Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.distribution.v1beta1.CommunityPoolSpendProposal")])]),e._v(" "),t("p",[e._v("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).")]),e._v(" "),t("h2",{attrs:{id:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[e._v("#")]),e._v(" 35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-12T01:37:07.471992293Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to complete the Stargate upgrade, halt "),t("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Jan 28th, export the state and start "),t("code",[e._v("cosmoshub-4")]),e._v(" 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")]),e._v(" "),t("h2",{attrs:{id:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"}},[e._v("#")]),e._v(" 36 Delay of Hub Stargate Upgrade for approximately 2 weeks")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-24T15:51:52.051468824Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("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 "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 35"),t("OutboundLink")],1),e._v(" will not be executed. The Hub governance will vote on the forthcoming proposal aiming for a final upgrade. The earliest target date would be February 11th. Given that Lunar New Year is on Feb 12th. The next best date is Feb 18th 06:00UTC.nnWe are recommending the delay for the following reasons.nn* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request"),t("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"),t("OutboundLink")],1),e._v("n* A balance validation regression was identified during Prop 29 code review. "),t("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"),t("OutboundLink")],1),e._v("n* The IBC Go To Market Working Group has "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("identified Ledger hardware wallet"),t("OutboundLink")],1),e._v(" 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 "),t("a",{attrs:{href:"https://twitter.com/Ledger_Support/status/1352247403605356551?s=20",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://twitter.com/Ledger_Support/status/1352247403605356551?s=20"),t("OutboundLink")],1),e._v(". 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.")]),e._v(" "),t("h2",{attrs:{id:"_37-stargate-upgrade-second-time-is-a-charm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_37-stargate-upgrade-second-time-is-a-charm"}},[e._v("#")]),e._v(" 37 Stargate Upgrade- Second time is a charm!")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Submitted:")]),e._v(" 2021-01-28T21:07:30.044676129Z")]),e._v(" "),t("li",[t("strong",[e._v("Status:")]),e._v(" PROPOSAL_STATUS_PASSED")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" /cosmos.gov.v1beta1.TextProposal")])]),e._v(" "),t("p",[e._v("Proposal to complete the Stargate upgrade, halt "),t("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Feb 18th, export the state and start "),t("code",[e._v("cosmoshub-4")]),e._v(" 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")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/112.c427a5b2.js b/main/assets/js/112.96648dc8.js similarity index 98% rename from main/assets/js/112.c427a5b2.js rename to main/assets/js/112.96648dc8.js index 74370dd7ea7..8e5f8c55bd9 100644 --- a/main/assets/js/112.c427a5b2.js +++ b/main/assets/js/112.96648dc8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{574:function(t,e,o){"use strict";o.r(e);var a=o(1),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-draft-proposal-title"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-draft-proposal-title"}},[t._v("#")]),t._v(" [Proposal][Draft] Proposal Title")]),t._v(" "),o("h2",{attrs:{id:"changelog"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[t._v("#")]),t._v(" Changelog")]),t._v(" "),o("ul",[o("li",[t._v("{date}:")])]),t._v(" "),o("h2",{attrs:{id:"authors-and-credit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#authors-and-credit"}},[t._v("#")]),t._v(" Authors and Credit")]),t._v(" "),o("p",[t._v("{Name}:")]),t._v(" "),o("h2",{attrs:{id:"status"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[t._v("#")]),t._v(" Status")]),t._v(" "),o("p"),t._v(" "),o("blockquote",[o("p",[t._v("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 "),o("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),o("h2",{attrs:{id:"proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal"}},[t._v("#")]),t._v(" Proposal")]),t._v(" "),o("blockquote",[o("p",[t._v("A short (~200 word) description of the governance proposal being considered.")])]),t._v(" "),o("h2",{attrs:{id:"context"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[t._v("#")]),t._v(" Context")]),t._v(" "),o("blockquote",[o("p",[t._v("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.")])]),t._v(" "),o("h2",{attrs:{id:"governance-votes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[t._v("#")]),t._v(" Governance Votes")]),t._v(" "),o("p",[t._v("The following items summarize the voting options and what it means for this proposal.")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("YES")]),t._v(": You approve the {type} proposal to...{one sentence summary}.")]),t._v(" "),o("li",[o("strong",[t._v("NO")]),t._v(": 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 "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos forum"),o("OutboundLink")],1),t._v(". You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.")]),t._v(" "),o("li",[o("strong",[t._v("NO (VETO)")]),t._v(": 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.")]),t._v(" "),o("li",[o("strong",[t._v("ABSTAIN")]),t._v(": You are impartial to the outcome of the proposal.")])]),t._v(" "),o("blockquote",[o("p",[t._v("State what voting for each option means in terms of this proposal.")])]),t._v(" "),o("h2",{attrs:{id:"conclusion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[t._v("#")]),t._v(" Conclusion")]),t._v(" "),o("h2",{attrs:{id:"references"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[t._v("#")]),t._v(" References")]),t._v(" "),o("ul",[o("li")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{587:function(t,e,o){"use strict";o.r(e);var a=o(1),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-draft-proposal-title"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-draft-proposal-title"}},[t._v("#")]),t._v(" [Proposal][Draft] Proposal Title")]),t._v(" "),o("h2",{attrs:{id:"changelog"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[t._v("#")]),t._v(" Changelog")]),t._v(" "),o("ul",[o("li",[t._v("{date}:")])]),t._v(" "),o("h2",{attrs:{id:"authors-and-credit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#authors-and-credit"}},[t._v("#")]),t._v(" Authors and Credit")]),t._v(" "),o("p",[t._v("{Name}:")]),t._v(" "),o("h2",{attrs:{id:"status"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[t._v("#")]),t._v(" Status")]),t._v(" "),o("p"),t._v(" "),o("blockquote",[o("p",[t._v("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 "),o("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),o("h2",{attrs:{id:"proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal"}},[t._v("#")]),t._v(" Proposal")]),t._v(" "),o("blockquote",[o("p",[t._v("A short (~200 word) description of the governance proposal being considered.")])]),t._v(" "),o("h2",{attrs:{id:"context"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[t._v("#")]),t._v(" Context")]),t._v(" "),o("blockquote",[o("p",[t._v("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.")])]),t._v(" "),o("h2",{attrs:{id:"governance-votes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[t._v("#")]),t._v(" Governance Votes")]),t._v(" "),o("p",[t._v("The following items summarize the voting options and what it means for this proposal.")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("YES")]),t._v(": You approve the {type} proposal to...{one sentence summary}.")]),t._v(" "),o("li",[o("strong",[t._v("NO")]),t._v(": 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 "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos forum"),o("OutboundLink")],1),t._v(". You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.")]),t._v(" "),o("li",[o("strong",[t._v("NO (VETO)")]),t._v(": 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.")]),t._v(" "),o("li",[o("strong",[t._v("ABSTAIN")]),t._v(": You are impartial to the outcome of the proposal.")])]),t._v(" "),o("blockquote",[o("p",[t._v("State what voting for each option means in terms of this proposal.")])]),t._v(" "),o("h2",{attrs:{id:"conclusion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[t._v("#")]),t._v(" Conclusion")]),t._v(" "),o("h2",{attrs:{id:"references"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[t._v("#")]),t._v(" References")]),t._v(" "),o("ul",[o("li")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/113.f3317497.js b/main/assets/js/113.11381446.js similarity index 99% rename from main/assets/js/113.f3317497.js rename to main/assets/js/113.11381446.js index aebceed7929..89ccd418e3e 100644 --- a/main/assets/js/113.f3317497.js +++ b/main/assets/js/113.11381446.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{490:function(e,t,r){"use strict";r.r(t);var o=r(1),a=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:"state-of-cosmos-governance-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#state-of-cosmos-governance-2021"}},[e._v("#")]),e._v(" State of Cosmos Governance 2021")]),e._v(" "),r("blockquote",[r("p",[e._v("Governance and decision-making processes within the Cosmos ecosystem as of August 2021. This particular document serves as a snapshot of the process at this moment in time and parts of it may be out of date or deprecated in the future.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-view-of-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-view-of-governance"}},[e._v("#")]),e._v(" Cosmos View of Governance")]),e._v(" "),r("p",[e._v("The Cosmos ecosystem emphasizes governance mechanisms in order to achieve the vision of an ecosystem of interoperable blockchains supported by interchain infrastructure and services on the Cosmos Hub and beyond. The intent is that Cosmos Hub is operated by the community of code development teams supported by the Interchain Foundation, validators and ATOM token holders as a form of distributed organization.")]),e._v(" "),r("p",[e._v("Cosmos Hub has a "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance (x/gov) module"),r("OutboundLink")],1),e._v(" for coordinating various changes to the blockchain through parameters, upgrades and proposals (the "),r("a",{attrs:{href:"https://v1.cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("white paper"),r("OutboundLink")],1),e._v(' refers to text amendments to the "human-readable constitution" setting out Cosmos Hub policies). However, the ecosystem also has additional on- and off- chain processes that exist to set technical direction and inculcate social norms.')]),e._v(" "),r("p",[e._v("Reviewing existing governance documentation and discussion, a few key themes surfaced:")]),e._v(" "),r("h3",{attrs:{id:"emphasis-on-self-governance-and-sovereignty"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#emphasis-on-self-governance-and-sovereignty"}},[e._v("#")]),e._v(" Emphasis on Self-governance and Sovereignty")]),e._v(" "),r("p",[e._v("On-chain governance standardizes forms of coordination but leaves many governance decisions to each application-specific blockchain or zone. Sunny Aggarwal "),r("a",{attrs:{href:"https://blog.cosmos.network/deep-dive-how-will-ibc-create-value-for-the-cosmos-hub-eedefb83c7a0",target:"_blank",rel:"noopener noreferrer"}},[e._v("uses the analogy"),r("OutboundLink")],1),e._v(' that IBC as a form of standardization allows for "economic integration without political integration." Sunny also '),r("a",{attrs:{href:"https://www.youtube.com/watch?v=LApEkXJR_0M",target:"_blank",rel:"noopener noreferrer"}},[e._v("talks about"),r("OutboundLink")],1),e._v(' how governance controlled by a community that shares culture and trust can "achieve greater security than economic incentives alone." For example, the Regen Network has a '),r("a",{attrs:{href:"https://medium.com/regen-network/community-stake-governance-model-b949bcb1eca3",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance model"),r("OutboundLink")],1),e._v(" that identifies multiple constituencies that require representation in governance. This allows diverse chains to exchange value while retaining the ability to self-govern.")]),e._v(" "),r("h3",{attrs:{id:"flexibility-through-on-chain-parameters"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#flexibility-through-on-chain-parameters"}},[e._v("#")]),e._v(" Flexibility through On-chain Parameters")]),e._v(" "),r("p",[e._v("Each blockchain in the Cosmos ecosystem can be tailored to a specific application or use case, as opposed to building everything on top of a general purpose chain (and as a result without a Turing complete virtual machine like Ethereum's, for example). This approach provides flexibility through allowing stakeholders to vote on live parameter changes. In addition, Cosmos ecosystem teams are working on smart contract functionality. For example, the CosmWasm team have explored "),r("a",{attrs:{href:"https://medium.com/cosmwasm/cosmwasm-launches-its-permissioned-testnet-gaiaflex-e32635232026",target:"_blank",rel:"noopener noreferrer"}},[e._v("permissioned smart contracts"),r("OutboundLink")],1),e._v(", where on-chain governance is required to approve instantiation of smart contracts.")]),e._v(" "),r("h3",{attrs:{id:"development-of-governance-processes-over-time"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#development-of-governance-processes-over-time"}},[e._v("#")]),e._v(" Development of Governance Processes Over Time")]),e._v(" "),r("p",[e._v("The existing "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance module"),r("OutboundLink")],1),e._v(" is described as a minimum viable product for the governance module, with "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/05_future_improvements.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ideas for future improvement"),r("OutboundLink")],1),e._v(" . For example an active product team is currently aligning "),r("a",{attrs:{href:"https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#",target:"_blank",rel:"noopener noreferrer"}},[e._v("groups and governance functionality"),r("OutboundLink")],1),e._v(" will change current governance practices and open up new avenues to explore and support through on- and off- chain processes")]),e._v(" "),r("h2",{attrs:{id:"on-and-off-chain-governance-structure"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#on-and-off-chain-governance-structure"}},[e._v("#")]),e._v(" On- and off-chain Governance Structure")]),e._v(" "),r("h3",{attrs:{id:"communication"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#communication"}},[e._v("#")]),e._v(" Communication")]),e._v(" "),r("p",[e._v("Governance practices and decisions are communicated through different types of documents and design artefacts:")]),e._v(" "),r("ul",[r("li",[e._v("On-chain governance "),r("a",{attrs:{href:"https://cosmoscan.net/governance-stats",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposals"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Decision records\n"),r("ul",[r("li",[e._v("Cosmos Improvement Proposals ("),r("a",{attrs:{href:"https://cips.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIPs"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[e._v("Cosmos SDK's "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADRs"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Tendermint's "),r("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADRs"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[e._v("Technical standards / specifications\n"),r("ul",[r("li",[e._v("Interchain Standard ("),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/rfc/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("RFCs"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Opinion pieces"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v("Light papers"),r("OutboundLink")],1)])]),e._v(" "),r("h3",{attrs:{id:"decision-making-and-discussion-venues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#decision-making-and-discussion-venues"}},[e._v("#")]),e._v(" Decision-making and Discussion Venues")]),e._v(" "),r("p",[e._v("Venues involve community members to different degrees and individuals often perform multiple roles in the Cosmos ecosystem (e.g., Validator and member of Core Development Team). Because technical direction setting and development is almost always happening in the open, involvement from members in the extended community occurs organically.")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/wiki/Architecture-Design-Process#working-groups",target:"_blank",rel:"noopener noreferrer"}},[e._v("Working group"),r("OutboundLink")],1),e._v(" meetings and coordinating Cosmos stakeholders occurs in semi-/open online spaces:")]),e._v(" "),r("ul",[r("li",[r("strong",[r("a",{attrs:{href:"http://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits Cosmos Forum"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("For long form discussion. Cosmos core developers have an active presence (e.g., Ethan, Zaki, Sunny)")]),e._v(" "),r("li",[e._v("Cosmos Hub governance topics and proposals have a governance tag and usually get the most activity and substantive feedback, especially from validators (e.g., "),r("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub/2505/8",target:"_blank",rel:"noopener noreferrer"}},[e._v("direct conversations"),r("OutboundLink")],1),e._v(", ones that "),r("a",{attrs:{href:"https://forum.cosmos.network/t/on-the-interrelationship-between-the-security-budget-and-the-business-prospects-of-the-cosmos-network/2547",target:"_blank",rel:"noopener noreferrer"}},[e._v("spin out"),r("OutboundLink")],1),e._v(" of proposals, and "),r("a",{attrs:{href:"https://forum.cosmos.network/t/streamline-the-gov-process/3997",target:"_blank",rel:"noopener noreferrer"}},[e._v("meta discussions on process"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[e._v("Developing and sharing of opinion pieces, light papers, hot takes etc., also happens on the forum (e.g., "),r("a",{attrs:{href:"https://forum.cosmos.network/t/where-i-see-cosmos-at-present/5022",target:"_blank",rel:"noopener noreferrer"}},[e._v("Where I see the Cosmos at Present"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://forum.cosmos.network/c/chinese/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chinese language discussion"),r("OutboundLink")],1),e._v(" is one of the largest categories with 269 posts")]),e._v(" "),r("li",[e._v("There are still some old links to "),r("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix chat"),r("OutboundLink")],1),e._v(", which has been deprecated")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"http://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("/r/cosmonetwork Subreddit"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("Venue primarily for ATOM holders to discuss ATOM and other ecosystem coins")]),e._v(" "),r("li",[e._v("Discussion topics mostly about investing in the ecosystem and include: "),r("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork/comments/o38psh/i_think_atom_is_undervalued/",target:"_blank",rel:"noopener noreferrer"}},[e._v("investment theses"),r("OutboundLink")],1),e._v(", where to buy tokens, wallets to use, how to stake, and more recently, how to get involved with DeFi in the ecosystem (e.g., with Osmosis)")]),e._v(" "),r("li",[e._v("Community managers use it for announcements (e.g., catdotfish)")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Discord"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("For ecosystem cross-pollination with an active developer presence. Older Riot chats have moved here.")]),e._v(" "),r("li",[r("code",[e._v("#validator-verified")]),e._v(" channel for example discussing proposals, upgrades etc.")]),e._v(" "),r("li",[e._v("Major ecosystem chains all have a presence here, cross-validator convo, artefacts like: "),r("a",{attrs:{href:"https://drive.google.com/file/d/1wDTqro208y_1q3zF6rt39QjwYkcvVd7P/view",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel.one Validator Constitution"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[r("strong",[e._v("Cosmos Hub Discord (semi-private)")]),e._v(" "),r("ul",[r("li",[e._v("For "),r("a",{attrs:{href:"https://cosmos.network/learn/faq/who-is-building-cosmos/",target:"_blank",rel:"noopener noreferrer"}},[e._v("core development teams"),r("OutboundLink")],1),e._v(" to have multi-team discussions that are mature")]),e._v(" "),r("li",[e._v("Internal org channels (e.g., Interchain Slack) and slack-connect (private)")]),e._v(" "),r("li",[e._v("For internal team coordinating, 1-1s between specific core development teams, multi-team discussions that are early stage, have private or strategic team info too early to share out")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram (Governance Working Group)"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v('For coordinating a working group that: "develops decentralized community governance efforts alongside the Hub\'s governance development."')]),e._v(" "),r("li",[e._v("Working Group came out of "),r("a",{attrs:{href:"https://www.figment.io/resources/introducing-the-cosmos-governance-working-group",target:"_blank",rel:"noopener noreferrer"}},[e._v("a community pool proposal"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Some interest in deprecating but remains actives")])])]),e._v(" "),r("li",[r("strong",[e._v("GitHub repositories")]),e._v(" for governance processes ("),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos governance"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/cosmos/cips",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos cips"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos ibc"),r("OutboundLink")],1),e._v(")\n"),r("ul",[r("li",[e._v("For discussing meta aspects of governance processes, discussion and development of specific off-chain design records and technical specs, and repository for on-chain proposals")]),e._v(" "),r("li",[e._v("The Cosmos governance repo is officially deprecated as of October 2021.")])])]),e._v(" "),r("li",[r("strong",[e._v("Bi-weekly Cosmos Gaia / ATOM sync call")]),e._v(" "),r("ul",[r("li",[e._v("For cross-team discussion on the "),r("a",{attrs:{href:"https://github.com/cosmos/gaia/projects/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia roadmap"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[e._v("(Informal) "),r("strong",[e._v("Google Docs for early feedback")]),e._v(" "),r("ul",[r("li",[e._v("For individuals and collaborators to develop and iterative on governance ideas before proposing them formally")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix chat"),r("OutboundLink")],1)]),e._v(" (deprecated)")])]),e._v(" "),r("h3",{attrs:{id:"roles-and-stakeholders"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#roles-and-stakeholders"}},[e._v("#")]),e._v(" Roles and Stakeholders")]),e._v(" "),r("p",[e._v('As mentioned above, stakeholders often perform multiple roles in the Cosmos ecosystem (e.g., both a Validator and member of the Core Development Team). As a result, visualizing the roles each stakeholder can take up in current governance can fail to reflex the overlapping roles. Within the ecosystem, decision-making power and process "ownership" has been decentralized to an extent, reflecting system goals.')]),e._v(" "),r("p",[e._v("What roles can each stakeholder take up in current governance?")]),e._v(" "),r("p",[r("strong",[e._v("Viewer (V)")]),e._v(" - Able to easily review previous governance decisions, see current state of governance\n"),r("strong",[e._v("Active Participant (P)")]),e._v(" - Regularly providing input or helping to move governance decisions forward, but does not drive them or necessarily initiate\n"),r("strong",[e._v("Governance Proposer (I)")]),e._v(" - Initiates a proposal for updating Cosmos Hub governance\n"),r("strong",[e._v("Decision Maker (DM)")]),e._v(" - Can vote or be part of the final governance decision\n"),r("strong",[e._v("Process Owner (PO)")]),e._v(" - Owns the creation, refinement, and execution of the governance mechanism")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Role")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" On-chain")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("CIPs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos SDK "),r("br"),e._v(" ADRs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Tendermint "),r("br"),e._v(" RFCs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("ICSs")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("ATOM holders (retail and "),r("br"),e._v(" professional)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("V")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Delegators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Validators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Interchain Foundation team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Core Development "),r("br"),e._v(" teams")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos SDK Core Team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")])]),e._v(" "),r("tr",[r("td",[e._v("Tendermint Developers")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Integrators (wallets, "),r("br"),e._v(" exchanges, services)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")])]),e._v(" "),r("tr",[r("td",[e._v("Other zones and hubs members")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")])])])]),e._v(" "),r("h4",{attrs:{id:"role-ability-to-govern"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#role-ability-to-govern"}},[e._v("#")]),e._v(" Role Ability to Govern")]),e._v(" "),r("p",[e._v("What aspects of the Cosmos ecosystem does each role have the ability to govern?")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Role")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" Blockchain "),r("br"),e._v(" (through on-chain proposals)")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" Community Pool (treasury)")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub On-chain "),r("br"),e._v(" governance processes")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos "),r("br"),e._v(" Ecosystem Tech Decision Records, Specs, Standards Development")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Ecosystem "),r("br"),e._v(" Off-chain governance processes")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("ATOM holders (retail and "),r("br"),e._v(" professional)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Delegators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Validators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Interchain Foundation team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Core Development "),r("br"),e._v(" teams")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos SDK Core Team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Tendermint Developers")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Integrators (wallets, "),r("br"),e._v(" exchanges, services)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Other zones and hubs members")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])])])]),e._v(" "),r("hr"),e._v(" "),r("h2",{attrs:{id:"review-of-governance-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#review-of-governance-processes"}},[e._v("#")]),e._v(" Review of Governance processes")]),e._v(" "),r("h3",{attrs:{id:"cosmos-hub-on-chain-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-on-chain-governance"}},[e._v("#")]),e._v(" Cosmos Hub on-chain governance")]),e._v(" "),r("p",[e._v("The Cosmos Hub has an on-chain governance mechanism, which allow ATOM token holders to:")]),e._v(" "),r("h4",{attrs:{id:"change-module-parameters"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#change-module-parameters"}},[e._v("#")]),e._v(" Change module parameters")]),e._v(" "),r("p",[e._v('The Cosmos Hub is implemented modularly using the Cosmos SDK, where each module brings a different set of functions. Some modules have "governable" parameters, i.e., parameters that are alterable through on-chain "parameter change" governance proposals. Parameter change proposals allows token-holders to adjust the Cosmos Hub\'s functionality live on the blockchain, without the need for a new software release. It\'s interesting to note that parameters related to the governance module, i.e., x/gov module in the Cosmos SDK which implements the technical functionality of on-chain governance, is itself governable through parameter change proposals.')]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),r("OutboundLink")],1),e._v(" asked to lower the minimum proposal deposit amount from 512 ATOMs to 64 ATOMs.")]),e._v(" "),r("h4",{attrs:{id:"pass-text-proposals"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pass-text-proposals"}},[e._v("#")]),e._v(" Pass text proposals")]),e._v(" "),r("p",[e._v("Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub.")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 12"),r("OutboundLink")],1),e._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub?")]),e._v(" "),r("h4",{attrs:{id:"spend-funds-from-the-community-pool"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#spend-funds-from-the-community-pool"}},[e._v("#")]),e._v(" Spend funds from the community pool")]),e._v(" "),r("p",[e._v("Cosmos Hub has a pool of ATOMs that can be spent through governance proposals. As of July 2nd, 2021 there are 645,961.01 ATOM in the community pool "),r("a",{attrs:{href:"https://cosmoscan.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("according to cosmoscan"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/45",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 45"),r("OutboundLink")],1),e._v(" asked to allow the spending of 5,000 ATOMS for the Gravity DEX Incentivized Testnet (Trading Competition) from the community pool.")]),e._v(" "),r("h4",{attrs:{id:"pass-software-upgrade-proposals"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pass-software-upgrade-proposals"}},[e._v("#")]),e._v(" Pass software upgrade proposals")]),e._v(" "),r("p",[e._v("A software upgrade proposal, when passed, will halt the chain until the node operator upgrades their software. If passed, the expectation is validators will update their software in accordance wi")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 51"),r("OutboundLink")],1),e._v(" asked to adopt the Gravity DEX protocol on Cosmos Hub.")]),e._v(" "),r("h3",{attrs:{id:"user-story-chain-wide-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#user-story-chain-wide-governance"}},[e._v("#")]),e._v(" User Story: Chain-Wide Governance")]),e._v(" "),r("p",[r("em",[e._v("Reproduced from "),r("a",{attrs:{href:"https://docs.google.com/document/d/1GJTTVlRU1qDzIbiwhRo-RVFq7pQ-BOjABgVpDdrpAAM/edit#heading=h.84b4lthf6mm",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gov Use Cases"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("A community member, Alice, wants to submit an on-chain proposal to change a parameter, the average number of blocks per year, which is used to calculate the inflation rate for the chain. To do this Alice first asks in a chat forum discord for instance whether this is a good idea and something the community would like to see happen. There is some initial discussion to confirm that this is in fact something the community wants. Another community member, Bob, also offers to collaborate on the proposal.")]),e._v(" "),r("p",[e._v("Alice and Bob have a zoom call and start working in a google doc to draft the proposal synchronously, after which Alice finishes the draft and Bob reviews her work. Alice then opens a pull request on the governance repo that includes the text document as well as the json message required to make the parameter proposal on chain.")]),e._v(" "),r("p",[e._v("Alice solicits community feedback on the PR, sharing it to the Discord and among validators, and is asked to make some minor changes, which are completed before the PR is finalized and merged by the governance repo owner.")]),e._v(" "),r("p",[e._v("Once the proposal has been finalized an IPFS hash of the README.md is added to the json.")]),e._v(" "),r("p",[e._v("The proposal is then submitted on chain through the CLI and a Cosmos forum post is made to notify the community that the proposal has been submitted. Links to the forum post are then shared in various community channels and on twitter. The merits of the proposal are discussed in these respective channels and validators / ATOM holders vote.")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Venues")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("1 "),r("br"),e._v(" Problem Identification")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("2 "),r("br"),e._v(" Problem validation and proposal development")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("3 "),r("br"),e._v(" Review, debating pros and cons")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("4 "),r("br"),e._v(" Incorporating feedback")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("5 "),r("br"),e._v(" Initiate process")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("6 "),r("br"),e._v(" Decision finalization and adoption")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("Cosmos Hub Discord")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Gaia call")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Gov GitHub Repo")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Hub Gov WG Telegram")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Discourse forum")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("On chain vote")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Community Discord")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Twitter")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Other unofficial chat channels")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Subreddit")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})])])]),e._v(" "),r("h3",{attrs:{id:"process-overview"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://lh6.googleusercontent.com/FPQ176gx_-0jR5zbpImJtWx3iTnL-JJPc41hT4NUsNIYj5FziO6bsFWFn_CWV2ARr4vxm-HJi_3Fn4zowN1d2JuXB_CW2mTzJwn8L45mIPY0W_8sfjz3w3jeFr2q1NCcFVeRu7j_",alt:"Diagram of process for on-chain governance proposals"}})]),e._v(" "),r("p",[e._v("On-chain governance on the hub is implemented in Gaia using the x/gov module in the Cosmos SDK. Every bonded token is allowed a single vote.")]),e._v(" "),r("p",[e._v("Participants in the process include:")]),e._v(" "),r("ul",[r("li",[e._v("The proposal creator: develops the proposal, solicits feedback, submits and socializes the on-chain proposal")]),e._v(" "),r("li",[e._v("Validators: vote on behalf of delegators. Voting power of validators is equivalent to total ATOMS delegated to them. There are currently 125 active validators in the validator set, updated from 100 validators through governance "),r("a",{attrs:{href:"https://cosmoscan.net/proposal/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal #10"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Delegators: can cast their own vote, otherwise they inherit the vote of their delegates")])]),e._v(" "),r("h3",{attrs:{id:"process-owners"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("Former process owners are listed in the now-deprecated "),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance repo"),r("OutboundLink")],1),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("37 proposals that have been voted on so far. The latest proposal as of July 2nd, 2021 is proposal ID #51 (proposals that don't meet minimum deposit don't count towards the 37)")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoscan.net/governance-charts",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmoscan's governance charts"),r("OutboundLink")],1),e._v(" provide insight on turnout and voter activity. "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),r("OutboundLink")],1),e._v(" can be used to fill in any gaps.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-improvement-proposals-cips"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-improvement-proposals-cips"}},[e._v("#")]),e._v(" Cosmos Improvement Proposals (CIPs)")]),e._v(" "),r("p",[e._v("CIPs serve as the process for describing major changes or providing info about the protocol and APIs or processes of the Cosmos ecosystem.")]),e._v(" "),r("p",[e._v("\"The CIP process draws heavily from Ethereum's EIP process and Rust's RFC process. It pertains primarily to the protocol and APIs of the Cosmos Hub blockchain (Cosmos, for short), including Tendermint, Cosmos-SDK, IBC, and other modules. A CIP is a design document providing information to the Cosmos community, or describing a new feature or major change for Cosmos or its processes or environment.\"")]),e._v(" "),r("p",[e._v('"This CIP process aims to subsume, but not necessarily to replace" the RFC and ADR processes.\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/cips/blob/main/CIPS/cip-1.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/cips/blob/main/CIPS/cip-1.md"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"user-story-governing-technical-direction"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#user-story-governing-technical-direction"}},[e._v("#")]),e._v(" User Story: Governing Technical Direction")]),e._v(" "),r("p",[e._v("Alice, a member of one core development team, submits a PR to the Cosmos cips repo after a recurring issue is identified in the standing GAIA / ATOM call. There has been a recurring discussion about how to formalize emerging agreement on a distinctive Cosmos interpretation of a technical feature common to blockchains. There are existing prior specifications in the bitcoin ecosystem that were the direct inspiration for Cosmos development, but over time the core development teams have developed a contrasting understanding of how their implementation provides a pathway to future specification development. At the end of last call, Alice decides this was important enough to step forward and take a first pass at drafting the spec based on the current roadmap.")]),e._v(" "),r("p",[e._v('Alice follows the template from the repo to draft an early CIP and updates the frontmatter of the file to indicate the status is "draft." Once the PR is submitted, Alice pings a few developers who mentioned they would provide feedback in Discord and Slack bridge channels. The developers review the PR and leave inline comments and suggestions. Alice incorporates this feedback and requests the CIP be discussed at the next GAIA / ATOM call. In the meantime, Alice solicits community feedback on the PR, sharing it to the Cosmos Hub Discord and a relevant Slack connect channel. Once again Alice is asked to make minor changes, which are completed before the PR is finalized, the cip status is updated to "living" and it is merged by the cips repo owner.')]),e._v(" "),r("h3",{attrs:{id:"process-overview-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-2"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://github.com/cosmos/cips/raw/main/assets/cip-1/CIP-process.png",alt:"Diagram of standarization process for CIPS"}})]),e._v(" "),r("ul",[r("li",[e._v('Ideas are ideally socialized first: "It is thus recommended to open a discussion thread on the Cosmos forum to do this, but you can also use the Cosmos Discord, the Cosmos subreddit or the Issues section of this repository." If the author decides to proceed, CIPs are drafted and submitted using the '),r("a",{attrs:{href:"https://github.com/cosmos/cips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/cips"),r("OutboundLink")],1),e._v(" GitHub repo.")]),e._v(" "),r("li",[e._v('When a CIP reaches the "Final" state, it represents a completed standard that is ready to be adopted.')]),e._v(" "),r("li",[e._v('CIPs do not represent the views of the wider Cosmos community. CIP-1 states that "finalization of a CIP does not equate to acceptance into Cosmos. For that, CIP authors must turn to Cosmos Governance."')]),e._v(" "),r("li",[e._v("Not all CIPS are taken through an on-chain vote")]),e._v(" "),r("li",[e._v("A situation where CIPs interact with Cosmos Governance is while coordinating a software upgrade among validators. "),r("a",{attrs:{href:"https://github.com/cosmos/cips/blob/17a9ffc1cc40933ea3cf4460849ae713e6c244e3/CIPS/cip-5.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIP-5"),r("OutboundLink")],1),e._v(" [PR not merged], which offers guidelines for new modules to be integrated into Cosmos Hub ensuring safety and robustness, states \"motivated by decentralization and the Cosmos community's decisions, a module's code is activated by submitting a parameter change proposal.\"")])]),e._v(" "),r("h3",{attrs:{id:"process-owners-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-2"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("p",[e._v("CIP editor: Ethan Buchman ("),r("a",{attrs:{href:"https://github.com/ebuchman",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ebuchman"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("h3",{attrs:{id:"process-maturity-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-2"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("There are 12 CIPs proposed to date, none are living, have been finalized, or taken through the on-chain governance process to be widely adopted.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-sdk-architecture-decision-records-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-sdk-architecture-decision-records-adr"}},[e._v("#")]),e._v(" Cosmos SDK Architecture Decision Records (ADR)")]),e._v(" "),r("p",[e._v("ADRs serve as the main way to propose new feature designs, new processes, and to document design decisions for the Cosmos SDK.")]),e._v(" "),r("p",[e._v('"An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software system\'s architecture and quality. An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log."')]),e._v(" "),r("p",[e._v("🔗 "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.cosmos.network/main/architecture/"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-3"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v('Ideas are socialized on GitHub first: "Every proposal SHOULD start with a new GitHub Issue or be a result of existing Issues. The Issue should contain just a brief proposal summary. Once the motivation is validated, a GitHub Pull Request (PR) is created"')]),e._v(" "),r("li",[e._v("If the author decides to proceed, ADRs are drafted and submitted using the "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/cosmos-sdk"),r("OutboundLink")],1),e._v(" GitHub repo.\n"),r("ol",[r("li",[e._v("Copy the adr-template.md file. Use the following filename pattern: adr-next_number-title.md")]),e._v(" "),r("li",[e._v("Create a draft Pull Request if you want to get an early feedback.")]),e._v(" "),r("li",[e._v("Make sure the context and a solution is clear and well documented.")]),e._v(" "),r("li",[e._v("Add an entry to a list in the "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("README"),r("OutboundLink")],1),e._v(" file.")]),e._v(" "),r("li",[e._v("Create a Pull Request to propose a new ADR.\n"),r("code",[e._v("")])])])]),e._v(" "),r("li",[e._v("ADRs go through a lifecycle: "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/PROCESS.html#adr-life-cycle",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.cosmos.network/main/architecture/PROCESS.html#adr-life-cycle"),r("OutboundLink")],1)])]),e._v(" "),r("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"RFJBRlQgLSZndDsgUFJPUE9TRUQgLSZndDsgTEFTVCBDQUxMIHl5eXktbW0tZGQgLSZndDsgQUNDRVBURUQgfCBSRUpFQ1RFRCAtJmd0OyBTVVBFUlNFRURFRCBieSBBRFIteHh4CgogICAgICAgICAgICAgICAgICBcICAgICAgICB8CgogICAgICAgICAgICAgICAgICAgXCAgICAgICB8CgogICAgICAgICAgICAgICAgICAgIHYgICAgICB2CgogICAgICAgICAgICAgICAgICAgICBBQkFORE9ORUQK"}}),e._v(" "),r("h3",{attrs:{id:"process-owners-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-3"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("SDK "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/.github/CODEOWNERS",target:"_blank",rel:"noopener noreferrer"}},[e._v("codeowners"),r("OutboundLink")],1),e._v(": Aaron Craelius ("),r("a",{attrs:{href:"https://github.com/aaronc",target:"_blank",rel:"noopener noreferrer"}},[e._v("@aaronc"),r("OutboundLink")],1),e._v(") and Aleksandr Bezobchuk ("),r("a",{attrs:{href:"https://github.com/alexanderbez",target:"_blank",rel:"noopener noreferrer"}},[e._v("@alexanderbez"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-3"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("A bunch have passed, many are proposed: "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"tendermint-request-for-comments-rfc"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tendermint-request-for-comments-rfc"}},[e._v("#")]),e._v(" Tendermint Request for Comments (RFC)")]),e._v(" "),r("p",[e._v("RFCs are ways to both investigate and develop an idea prior to formalizing for inclusion in the Tendermint Spec, they also describe proposals to change the spec.")]),e._v(" "),r("p",[e._v('"RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic. RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic."\n🔗 '),r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/rfc/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/tendermint/spec/blob/master/rfc/README.md"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("\"As part of our 1.0 push, we'll determine if gRPC is the right framework for our RPC layer; and if so, we'll implement it. This work will begin with an RFC, and we'll seek further input from community members and users. If this RFC is accepted, we'll write a transition plan for the RPC layer and execute it.\"\n🔗 "),r("a",{attrs:{href:"https://medium.com/tendermint/towards-tendermint-core-1-0-3a71b6ce73a3",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://medium.com/tendermint/towards-tendermint-core-1-0-3a71b6ce73a3"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-4"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v("Not publicly documented")])]),e._v(" "),r("h3",{attrs:{id:"process-owners-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-4"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("Specification "),r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/.github/CODEOWNERS",target:"_blank",rel:"noopener noreferrer"}},[e._v("general codeowners"),r("OutboundLink")],1),e._v(": Zarko Milosevic ("),r("a",{attrs:{href:"https://github.com/milosevic",target:"_blank",rel:"noopener noreferrer"}},[e._v("@milosevic"),r("OutboundLink")],1),e._v("), Ethan Buchman ("),r("a",{attrs:{href:"https://github.com/ebuchman",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ebuchman"),r("OutboundLink")],1),e._v("), Josef Widder ("),r("a",{attrs:{href:"https://github.com/josef-widder",target:"_blank",rel:"noopener noreferrer"}},[e._v("@josef-widder"),r("OutboundLink")],1),e._v("), Igor Konnov ("),r("a",{attrs:{href:"https://github.com/konnov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@konnov"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-4"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("5 RFCs have been merged to the repo with an active pull request for adding one more")])]),e._v(" "),r("h2",{attrs:{id:"interchain-standards-ics"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#interchain-standards-ics"}},[e._v("#")]),e._v(" Interchain Standards (ICS)")]),e._v(" "),r("p",[e._v("ICSs are standards that document a particular protocol, standard, or feature of use to the Cosmos Ecosystem.")]),e._v(" "),r("p",[e._v('"Interchain Standards (ICS) for the Cosmos network & interchain ecosystem."\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v('"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."\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/ics-001-ics-standard/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc/blob/master/spec/ics-001-ics-standard/README.md"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-5"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v("Unclear where early discussions would happen")]),e._v(" "),r("li",[e._v("ICSs are drafted and submitted using the "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/ibc"),r("OutboundLink")],1),e._v(" GitHub repo:")]),e._v(" "),r("li",[e._v("To propose a new standard, "),r("a",{attrs:{href:"https://github.com/cosmos/ics/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("open an issue"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("To start a new standardisation document, copy the "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/ics-template.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("template"),r("OutboundLink")],1),e._v(" and open a PR.")]),e._v(" "),r("li",[e._v("Standardization process has 4 phases, laid out in "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/meta/PROCESS.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("PROCESS.md"),r("OutboundLink")],1),e._v(" for a description of the standardisation process.\n"),r("ul",[r("li",[e._v("Stage 1 - Strawman. Start the specification process")]),e._v(" "),r("li",[e._v("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.")]),e._v(" "),r("li",[e._v("Stage 3 - Candidate. Indicate that further refinement will require feedback from implementations and users")]),e._v(" "),r("li",[e._v("Stage 4 - Finalised. Indicate that the addition is included in the formal ICS standard set")])])])]),e._v(" "),r("h3",{attrs:{id:"process-owners-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-5"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("IBC "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/meta/STANDARDS_COMMITTEE.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standards Committee"),r("OutboundLink")],1),e._v(": Aditya Sripal ("),r("a",{attrs:{href:"https://github.com/adityasripal",target:"_blank",rel:"noopener noreferrer"}},[e._v("@adityasripal"),r("OutboundLink")],1),e._v("), Christopher Goes ("),r("a",{attrs:{href:"https://github.com/cwgoes",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cwgoes"),r("OutboundLink")],1),e._v("), Zarko Milosevic ("),r("a",{attrs:{href:"https://github.com/milosevic",target:"_blank",rel:"noopener noreferrer"}},[e._v("@milosevic"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-5"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("16 have been merged into the repo with at least one more under active discussion: "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc"),r("OutboundLink")],1)])]),e._v(" "),r("hr"),e._v(" "),r("h2",{attrs:{id:"observations-and-discussion"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#observations-and-discussion"}},[e._v("#")]),e._v(" Observations and Discussion")]),e._v(" "),r("p",[e._v("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 "),r("a",{attrs:{href:"https://docs.google.com/document/d/1k2dxvd9IQF5WKXn67656bRloBtgdOWJ4mJ29m_qstPo/edit#heading=h.m8lb7fphmit0",target:"_blank",rel:"noopener noreferrer"}},[e._v("maturity"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h3",{attrs:{id:"on-chain-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-processes"}},[e._v("#")]),e._v(" On-chain processes")]),e._v(" "),r("ul",[r("li",[e._v("UX limits who can create and vote for proposals, currently requiring the use of the CLI. If Cosmos Hub sees "),r("a",{attrs:{href:"https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf",target:"_blank",rel:"noopener noreferrer"}},[e._v("itself as a port city"),r("OutboundLink")],1),e._v(", offering the best possible services, there is an argument to be made that it should extend that commitment to governance to ensure a diverse range of city dwellers and visitors can participate.")]),e._v(" "),r("li",[e._v("Some validators feel that active participation in governance is a bottleneck to setting up validator businesses. I.e., that there are already a number of proposals they are asked to vote on.")]),e._v(" "),r("li",[e._v("Cosmos Hub governance documentation is out of date, challenging to maintain, and difficult to discover. Current governance documentation is in the "),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("governance")]),e._v(" repo as markdown"),r("OutboundLink")],1),e._v(", the "),r("a",{attrs:{href:"https://hub.cosmos.network/main/",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("gaia")]),e._v(" documentation as vuepress"),r("OutboundLink")],1),e._v(", and "),r("a",{attrs:{href:"https://docs.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("cosmos-sdk")]),e._v(" documentation as vuepress"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Assessing this and making improvements is work that Hypha is currently undertaking, but there can be ongoing improvements")]),e._v(" "),r("li",[e._v("The "),r("a",{attrs:{href:"https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#",target:"_blank",rel:"noopener noreferrer"}},[e._v("upcoming x/gov and x/group alignment"),r("OutboundLink")],1),e._v(" will allow for permissions related to governance to be delegated to other groups, opening up possibilities for multi-stakeholder governance approaches and products (see "),r("a",{attrs:{href:"https://linktr.ee/cosmos_gov",target:"_blank",rel:"noopener noreferrer"}},[e._v("related links"),r("OutboundLink")],1),e._v(").")])]),e._v(" "),r("h3",{attrs:{id:"off-chain-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-processes"}},[e._v("#")]),e._v(" Off-chain processes")]),e._v(" "),r("ul",[r("li",[e._v("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")]),e._v(" "),r("li",[e._v("Some CIPS clearly impact all Cosmos ecosystem and blockchains and need ecosystem-wide buy-in, for example "),r("a",{attrs:{href:"https://github.com/cosmos/cips/pull/11",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIP-11: Cosmos Hierarchical Deterministic key derivation"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v('"RFC Interchain Staking Light Paper"'),r("OutboundLink")],1),e._v(" 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 "),r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/659"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v('The terms "Cosmos" and "Cosmos Hub" are used interchangeably in the CIPs repository, so the intended audience could be made more clear. The '),r("a",{attrs:{href:"https://github.com/cosmos/cips/pull/6/files",target:"_blank",rel:"noopener noreferrer"}},[e._v("module readiness process and checklist"),r("OutboundLink")],1),e._v(", 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.")]),e._v(" "),r("li",[e._v("Tendermint has an "),r("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR process"),r("OutboundLink")],1),e._v(" as well. Documentation around the relationship between the Tendermint ADR and the RFC processes would be valuable.")])])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{491:function(e,t,r){"use strict";r.r(t);var o=r(1),a=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:"state-of-cosmos-governance-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#state-of-cosmos-governance-2021"}},[e._v("#")]),e._v(" State of Cosmos Governance 2021")]),e._v(" "),r("blockquote",[r("p",[e._v("Governance and decision-making processes within the Cosmos ecosystem as of August 2021. This particular document serves as a snapshot of the process at this moment in time and parts of it may be out of date or deprecated in the future.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-view-of-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-view-of-governance"}},[e._v("#")]),e._v(" Cosmos View of Governance")]),e._v(" "),r("p",[e._v("The Cosmos ecosystem emphasizes governance mechanisms in order to achieve the vision of an ecosystem of interoperable blockchains supported by interchain infrastructure and services on the Cosmos Hub and beyond. The intent is that Cosmos Hub is operated by the community of code development teams supported by the Interchain Foundation, validators and ATOM token holders as a form of distributed organization.")]),e._v(" "),r("p",[e._v("Cosmos Hub has a "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance (x/gov) module"),r("OutboundLink")],1),e._v(" for coordinating various changes to the blockchain through parameters, upgrades and proposals (the "),r("a",{attrs:{href:"https://v1.cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("white paper"),r("OutboundLink")],1),e._v(' refers to text amendments to the "human-readable constitution" setting out Cosmos Hub policies). However, the ecosystem also has additional on- and off- chain processes that exist to set technical direction and inculcate social norms.')]),e._v(" "),r("p",[e._v("Reviewing existing governance documentation and discussion, a few key themes surfaced:")]),e._v(" "),r("h3",{attrs:{id:"emphasis-on-self-governance-and-sovereignty"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#emphasis-on-self-governance-and-sovereignty"}},[e._v("#")]),e._v(" Emphasis on Self-governance and Sovereignty")]),e._v(" "),r("p",[e._v("On-chain governance standardizes forms of coordination but leaves many governance decisions to each application-specific blockchain or zone. Sunny Aggarwal "),r("a",{attrs:{href:"https://blog.cosmos.network/deep-dive-how-will-ibc-create-value-for-the-cosmos-hub-eedefb83c7a0",target:"_blank",rel:"noopener noreferrer"}},[e._v("uses the analogy"),r("OutboundLink")],1),e._v(' that IBC as a form of standardization allows for "economic integration without political integration." Sunny also '),r("a",{attrs:{href:"https://www.youtube.com/watch?v=LApEkXJR_0M",target:"_blank",rel:"noopener noreferrer"}},[e._v("talks about"),r("OutboundLink")],1),e._v(' how governance controlled by a community that shares culture and trust can "achieve greater security than economic incentives alone." For example, the Regen Network has a '),r("a",{attrs:{href:"https://medium.com/regen-network/community-stake-governance-model-b949bcb1eca3",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance model"),r("OutboundLink")],1),e._v(" that identifies multiple constituencies that require representation in governance. This allows diverse chains to exchange value while retaining the ability to self-govern.")]),e._v(" "),r("h3",{attrs:{id:"flexibility-through-on-chain-parameters"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#flexibility-through-on-chain-parameters"}},[e._v("#")]),e._v(" Flexibility through On-chain Parameters")]),e._v(" "),r("p",[e._v("Each blockchain in the Cosmos ecosystem can be tailored to a specific application or use case, as opposed to building everything on top of a general purpose chain (and as a result without a Turing complete virtual machine like Ethereum's, for example). This approach provides flexibility through allowing stakeholders to vote on live parameter changes. In addition, Cosmos ecosystem teams are working on smart contract functionality. For example, the CosmWasm team have explored "),r("a",{attrs:{href:"https://medium.com/cosmwasm/cosmwasm-launches-its-permissioned-testnet-gaiaflex-e32635232026",target:"_blank",rel:"noopener noreferrer"}},[e._v("permissioned smart contracts"),r("OutboundLink")],1),e._v(", where on-chain governance is required to approve instantiation of smart contracts.")]),e._v(" "),r("h3",{attrs:{id:"development-of-governance-processes-over-time"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#development-of-governance-processes-over-time"}},[e._v("#")]),e._v(" Development of Governance Processes Over Time")]),e._v(" "),r("p",[e._v("The existing "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance module"),r("OutboundLink")],1),e._v(" is described as a minimum viable product for the governance module, with "),r("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov/05_future_improvements.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ideas for future improvement"),r("OutboundLink")],1),e._v(" . For example an active product team is currently aligning "),r("a",{attrs:{href:"https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#",target:"_blank",rel:"noopener noreferrer"}},[e._v("groups and governance functionality"),r("OutboundLink")],1),e._v(" will change current governance practices and open up new avenues to explore and support through on- and off- chain processes")]),e._v(" "),r("h2",{attrs:{id:"on-and-off-chain-governance-structure"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#on-and-off-chain-governance-structure"}},[e._v("#")]),e._v(" On- and off-chain Governance Structure")]),e._v(" "),r("h3",{attrs:{id:"communication"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#communication"}},[e._v("#")]),e._v(" Communication")]),e._v(" "),r("p",[e._v("Governance practices and decisions are communicated through different types of documents and design artefacts:")]),e._v(" "),r("ul",[r("li",[e._v("On-chain governance "),r("a",{attrs:{href:"https://cosmoscan.net/governance-stats",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposals"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Decision records\n"),r("ul",[r("li",[e._v("Cosmos Improvement Proposals ("),r("a",{attrs:{href:"https://cips.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIPs"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[e._v("Cosmos SDK's "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADRs"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Tendermint's "),r("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADRs"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[e._v("Technical standards / specifications\n"),r("ul",[r("li",[e._v("Interchain Standard ("),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/rfc/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("RFCs"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Opinion pieces"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v("Light papers"),r("OutboundLink")],1)])]),e._v(" "),r("h3",{attrs:{id:"decision-making-and-discussion-venues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#decision-making-and-discussion-venues"}},[e._v("#")]),e._v(" Decision-making and Discussion Venues")]),e._v(" "),r("p",[e._v("Venues involve community members to different degrees and individuals often perform multiple roles in the Cosmos ecosystem (e.g., Validator and member of Core Development Team). Because technical direction setting and development is almost always happening in the open, involvement from members in the extended community occurs organically.")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/wiki/Architecture-Design-Process#working-groups",target:"_blank",rel:"noopener noreferrer"}},[e._v("Working group"),r("OutboundLink")],1),e._v(" meetings and coordinating Cosmos stakeholders occurs in semi-/open online spaces:")]),e._v(" "),r("ul",[r("li",[r("strong",[r("a",{attrs:{href:"http://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits Cosmos Forum"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("For long form discussion. Cosmos core developers have an active presence (e.g., Ethan, Zaki, Sunny)")]),e._v(" "),r("li",[e._v("Cosmos Hub governance topics and proposals have a governance tag and usually get the most activity and substantive feedback, especially from validators (e.g., "),r("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub/2505/8",target:"_blank",rel:"noopener noreferrer"}},[e._v("direct conversations"),r("OutboundLink")],1),e._v(", ones that "),r("a",{attrs:{href:"https://forum.cosmos.network/t/on-the-interrelationship-between-the-security-budget-and-the-business-prospects-of-the-cosmos-network/2547",target:"_blank",rel:"noopener noreferrer"}},[e._v("spin out"),r("OutboundLink")],1),e._v(" of proposals, and "),r("a",{attrs:{href:"https://forum.cosmos.network/t/streamline-the-gov-process/3997",target:"_blank",rel:"noopener noreferrer"}},[e._v("meta discussions on process"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[e._v("Developing and sharing of opinion pieces, light papers, hot takes etc., also happens on the forum (e.g., "),r("a",{attrs:{href:"https://forum.cosmos.network/t/where-i-see-cosmos-at-present/5022",target:"_blank",rel:"noopener noreferrer"}},[e._v("Where I see the Cosmos at Present"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://forum.cosmos.network/c/chinese/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chinese language discussion"),r("OutboundLink")],1),e._v(" is one of the largest categories with 269 posts")]),e._v(" "),r("li",[e._v("There are still some old links to "),r("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix chat"),r("OutboundLink")],1),e._v(", which has been deprecated")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"http://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("/r/cosmonetwork Subreddit"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("Venue primarily for ATOM holders to discuss ATOM and other ecosystem coins")]),e._v(" "),r("li",[e._v("Discussion topics mostly about investing in the ecosystem and include: "),r("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork/comments/o38psh/i_think_atom_is_undervalued/",target:"_blank",rel:"noopener noreferrer"}},[e._v("investment theses"),r("OutboundLink")],1),e._v(", where to buy tokens, wallets to use, how to stake, and more recently, how to get involved with DeFi in the ecosystem (e.g., with Osmosis)")]),e._v(" "),r("li",[e._v("Community managers use it for announcements (e.g., catdotfish)")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Discord"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("For ecosystem cross-pollination with an active developer presence. Older Riot chats have moved here.")]),e._v(" "),r("li",[r("code",[e._v("#validator-verified")]),e._v(" channel for example discussing proposals, upgrades etc.")]),e._v(" "),r("li",[e._v("Major ecosystem chains all have a presence here, cross-validator convo, artefacts like: "),r("a",{attrs:{href:"https://drive.google.com/file/d/1wDTqro208y_1q3zF6rt39QjwYkcvVd7P/view",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel.one Validator Constitution"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[r("strong",[e._v("Cosmos Hub Discord (semi-private)")]),e._v(" "),r("ul",[r("li",[e._v("For "),r("a",{attrs:{href:"https://cosmos.network/learn/faq/who-is-building-cosmos/",target:"_blank",rel:"noopener noreferrer"}},[e._v("core development teams"),r("OutboundLink")],1),e._v(" to have multi-team discussions that are mature")]),e._v(" "),r("li",[e._v("Internal org channels (e.g., Interchain Slack) and slack-connect (private)")]),e._v(" "),r("li",[e._v("For internal team coordinating, 1-1s between specific core development teams, multi-team discussions that are early stage, have private or strategic team info too early to share out")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram (Governance Working Group)"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v('For coordinating a working group that: "develops decentralized community governance efforts alongside the Hub\'s governance development."')]),e._v(" "),r("li",[e._v("Working Group came out of "),r("a",{attrs:{href:"https://www.figment.io/resources/introducing-the-cosmos-governance-working-group",target:"_blank",rel:"noopener noreferrer"}},[e._v("a community pool proposal"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Some interest in deprecating but remains actives")])])]),e._v(" "),r("li",[r("strong",[e._v("GitHub repositories")]),e._v(" for governance processes ("),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos governance"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/cosmos/cips",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos cips"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos ibc"),r("OutboundLink")],1),e._v(")\n"),r("ul",[r("li",[e._v("For discussing meta aspects of governance processes, discussion and development of specific off-chain design records and technical specs, and repository for on-chain proposals")]),e._v(" "),r("li",[e._v("The Cosmos governance repo is officially deprecated as of October 2021.")])])]),e._v(" "),r("li",[r("strong",[e._v("Bi-weekly Cosmos Gaia / ATOM sync call")]),e._v(" "),r("ul",[r("li",[e._v("For cross-team discussion on the "),r("a",{attrs:{href:"https://github.com/cosmos/gaia/projects/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia roadmap"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[e._v("(Informal) "),r("strong",[e._v("Google Docs for early feedback")]),e._v(" "),r("ul",[r("li",[e._v("For individuals and collaborators to develop and iterative on governance ideas before proposing them formally")])])]),e._v(" "),r("li",[r("strong",[r("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix chat"),r("OutboundLink")],1)]),e._v(" (deprecated)")])]),e._v(" "),r("h3",{attrs:{id:"roles-and-stakeholders"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#roles-and-stakeholders"}},[e._v("#")]),e._v(" Roles and Stakeholders")]),e._v(" "),r("p",[e._v('As mentioned above, stakeholders often perform multiple roles in the Cosmos ecosystem (e.g., both a Validator and member of the Core Development Team). As a result, visualizing the roles each stakeholder can take up in current governance can fail to reflex the overlapping roles. Within the ecosystem, decision-making power and process "ownership" has been decentralized to an extent, reflecting system goals.')]),e._v(" "),r("p",[e._v("What roles can each stakeholder take up in current governance?")]),e._v(" "),r("p",[r("strong",[e._v("Viewer (V)")]),e._v(" - Able to easily review previous governance decisions, see current state of governance\n"),r("strong",[e._v("Active Participant (P)")]),e._v(" - Regularly providing input or helping to move governance decisions forward, but does not drive them or necessarily initiate\n"),r("strong",[e._v("Governance Proposer (I)")]),e._v(" - Initiates a proposal for updating Cosmos Hub governance\n"),r("strong",[e._v("Decision Maker (DM)")]),e._v(" - Can vote or be part of the final governance decision\n"),r("strong",[e._v("Process Owner (PO)")]),e._v(" - Owns the creation, refinement, and execution of the governance mechanism")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Role")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" On-chain")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("CIPs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos SDK "),r("br"),e._v(" ADRs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Tendermint "),r("br"),e._v(" RFCs")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("ICSs")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("ATOM holders (retail and "),r("br"),e._v(" professional)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("V")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Delegators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Validators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Interchain Foundation team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Core Development "),r("br"),e._v(" teams")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos SDK Core Team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")])]),e._v(" "),r("tr",[r("td",[e._v("Tendermint Developers")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("PO")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Integrators (wallets, "),r("br"),e._v(" exchanges, services)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("?")])]),e._v(" "),r("tr",[r("td",[e._v("Other zones and hubs members")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("DM")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("P?")])])])]),e._v(" "),r("h4",{attrs:{id:"role-ability-to-govern"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#role-ability-to-govern"}},[e._v("#")]),e._v(" Role Ability to Govern")]),e._v(" "),r("p",[e._v("What aspects of the Cosmos ecosystem does each role have the ability to govern?")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Role")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" Blockchain "),r("br"),e._v(" (through on-chain proposals)")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub "),r("br"),e._v(" Community Pool (treasury)")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Hub On-chain "),r("br"),e._v(" governance processes")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos "),r("br"),e._v(" Ecosystem Tech Decision Records, Specs, Standards Development")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("Cosmos Ecosystem "),r("br"),e._v(" Off-chain governance processes")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("ATOM holders (retail and "),r("br"),e._v(" professional)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("Must delegate ATOMs")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Delegators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Hub Validators")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Interchain Foundation team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Core Development "),r("br"),e._v(" teams")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos SDK Core Team")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Tendermint Developers")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Integrators (wallets, "),r("br"),e._v(" exchanges, services)")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Other zones and hubs members")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])])])]),e._v(" "),r("hr"),e._v(" "),r("h2",{attrs:{id:"review-of-governance-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#review-of-governance-processes"}},[e._v("#")]),e._v(" Review of Governance processes")]),e._v(" "),r("h3",{attrs:{id:"cosmos-hub-on-chain-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-on-chain-governance"}},[e._v("#")]),e._v(" Cosmos Hub on-chain governance")]),e._v(" "),r("p",[e._v("The Cosmos Hub has an on-chain governance mechanism, which allow ATOM token holders to:")]),e._v(" "),r("h4",{attrs:{id:"change-module-parameters"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#change-module-parameters"}},[e._v("#")]),e._v(" Change module parameters")]),e._v(" "),r("p",[e._v('The Cosmos Hub is implemented modularly using the Cosmos SDK, where each module brings a different set of functions. Some modules have "governable" parameters, i.e., parameters that are alterable through on-chain "parameter change" governance proposals. Parameter change proposals allows token-holders to adjust the Cosmos Hub\'s functionality live on the blockchain, without the need for a new software release. It\'s interesting to note that parameters related to the governance module, i.e., x/gov module in the Cosmos SDK which implements the technical functionality of on-chain governance, is itself governable through parameter change proposals.')]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),r("OutboundLink")],1),e._v(" asked to lower the minimum proposal deposit amount from 512 ATOMs to 64 ATOMs.")]),e._v(" "),r("h4",{attrs:{id:"pass-text-proposals"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pass-text-proposals"}},[e._v("#")]),e._v(" Pass text proposals")]),e._v(" "),r("p",[e._v("Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub.")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 12"),r("OutboundLink")],1),e._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub?")]),e._v(" "),r("h4",{attrs:{id:"spend-funds-from-the-community-pool"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#spend-funds-from-the-community-pool"}},[e._v("#")]),e._v(" Spend funds from the community pool")]),e._v(" "),r("p",[e._v("Cosmos Hub has a pool of ATOMs that can be spent through governance proposals. As of July 2nd, 2021 there are 645,961.01 ATOM in the community pool "),r("a",{attrs:{href:"https://cosmoscan.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("according to cosmoscan"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/45",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 45"),r("OutboundLink")],1),e._v(" asked to allow the spending of 5,000 ATOMS for the Gravity DEX Incentivized Testnet (Trading Competition) from the community pool.")]),e._v(" "),r("h4",{attrs:{id:"pass-software-upgrade-proposals"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pass-software-upgrade-proposals"}},[e._v("#")]),e._v(" Pass software upgrade proposals")]),e._v(" "),r("p",[e._v("A software upgrade proposal, when passed, will halt the chain until the node operator upgrades their software. If passed, the expectation is validators will update their software in accordance wi")]),e._v(" "),r("p",[e._v("Example: "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 51"),r("OutboundLink")],1),e._v(" asked to adopt the Gravity DEX protocol on Cosmos Hub.")]),e._v(" "),r("h3",{attrs:{id:"user-story-chain-wide-governance"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#user-story-chain-wide-governance"}},[e._v("#")]),e._v(" User Story: Chain-Wide Governance")]),e._v(" "),r("p",[r("em",[e._v("Reproduced from "),r("a",{attrs:{href:"https://docs.google.com/document/d/1GJTTVlRU1qDzIbiwhRo-RVFq7pQ-BOjABgVpDdrpAAM/edit#heading=h.84b4lthf6mm",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gov Use Cases"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("A community member, Alice, wants to submit an on-chain proposal to change a parameter, the average number of blocks per year, which is used to calculate the inflation rate for the chain. To do this Alice first asks in a chat forum discord for instance whether this is a good idea and something the community would like to see happen. There is some initial discussion to confirm that this is in fact something the community wants. Another community member, Bob, also offers to collaborate on the proposal.")]),e._v(" "),r("p",[e._v("Alice and Bob have a zoom call and start working in a google doc to draft the proposal synchronously, after which Alice finishes the draft and Bob reviews her work. Alice then opens a pull request on the governance repo that includes the text document as well as the json message required to make the parameter proposal on chain.")]),e._v(" "),r("p",[e._v("Alice solicits community feedback on the PR, sharing it to the Discord and among validators, and is asked to make some minor changes, which are completed before the PR is finalized and merged by the governance repo owner.")]),e._v(" "),r("p",[e._v("Once the proposal has been finalized an IPFS hash of the README.md is added to the json.")]),e._v(" "),r("p",[e._v("The proposal is then submitted on chain through the CLI and a Cosmos forum post is made to notify the community that the proposal has been submitted. Links to the forum post are then shared in various community channels and on twitter. The merits of the proposal are discussed in these respective channels and validators / ATOM holders vote.")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[r("strong",[e._v("Venues")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("1 "),r("br"),e._v(" Problem Identification")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("2 "),r("br"),e._v(" Problem validation and proposal development")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("3 "),r("br"),e._v(" Review, debating pros and cons")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("4 "),r("br"),e._v(" Incorporating feedback")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("5 "),r("br"),e._v(" Initiate process")])]),e._v(" "),r("th",{staticStyle:{"text-align":"center"}},[r("strong",[e._v("6 "),r("br"),e._v(" Decision finalization and adoption")])])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("Cosmos Hub Discord")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Gaia call")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Gov GitHub Repo")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Cosmos Hub Gov WG Telegram")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Discourse forum")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("On chain vote")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")])]),e._v(" "),r("tr",[r("td",[e._v("Community Discord")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Twitter")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Other unofficial chat channels")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})]),e._v(" "),r("tr",[r("td",[e._v("Subreddit")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}}),e._v(" "),r("td",{staticStyle:{"text-align":"center"}},[e._v("✔")]),e._v(" "),r("td",{staticStyle:{"text-align":"center"}})])])]),e._v(" "),r("h3",{attrs:{id:"process-overview"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://lh6.googleusercontent.com/FPQ176gx_-0jR5zbpImJtWx3iTnL-JJPc41hT4NUsNIYj5FziO6bsFWFn_CWV2ARr4vxm-HJi_3Fn4zowN1d2JuXB_CW2mTzJwn8L45mIPY0W_8sfjz3w3jeFr2q1NCcFVeRu7j_",alt:"Diagram of process for on-chain governance proposals"}})]),e._v(" "),r("p",[e._v("On-chain governance on the hub is implemented in Gaia using the x/gov module in the Cosmos SDK. Every bonded token is allowed a single vote.")]),e._v(" "),r("p",[e._v("Participants in the process include:")]),e._v(" "),r("ul",[r("li",[e._v("The proposal creator: develops the proposal, solicits feedback, submits and socializes the on-chain proposal")]),e._v(" "),r("li",[e._v("Validators: vote on behalf of delegators. Voting power of validators is equivalent to total ATOMS delegated to them. There are currently 125 active validators in the validator set, updated from 100 validators through governance "),r("a",{attrs:{href:"https://cosmoscan.net/proposal/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal #10"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Delegators: can cast their own vote, otherwise they inherit the vote of their delegates")])]),e._v(" "),r("h3",{attrs:{id:"process-owners"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("Former process owners are listed in the now-deprecated "),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[e._v("governance repo"),r("OutboundLink")],1),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("37 proposals that have been voted on so far. The latest proposal as of July 2nd, 2021 is proposal ID #51 (proposals that don't meet minimum deposit don't count towards the 37)")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoscan.net/governance-charts",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmoscan's governance charts"),r("OutboundLink")],1),e._v(" provide insight on turnout and voter activity. "),r("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),r("OutboundLink")],1),e._v(" can be used to fill in any gaps.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-improvement-proposals-cips"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-improvement-proposals-cips"}},[e._v("#")]),e._v(" Cosmos Improvement Proposals (CIPs)")]),e._v(" "),r("p",[e._v("CIPs serve as the process for describing major changes or providing info about the protocol and APIs or processes of the Cosmos ecosystem.")]),e._v(" "),r("p",[e._v("\"The CIP process draws heavily from Ethereum's EIP process and Rust's RFC process. It pertains primarily to the protocol and APIs of the Cosmos Hub blockchain (Cosmos, for short), including Tendermint, Cosmos-SDK, IBC, and other modules. A CIP is a design document providing information to the Cosmos community, or describing a new feature or major change for Cosmos or its processes or environment.\"")]),e._v(" "),r("p",[e._v('"This CIP process aims to subsume, but not necessarily to replace" the RFC and ADR processes.\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/cips/blob/main/CIPS/cip-1.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/cips/blob/main/CIPS/cip-1.md"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"user-story-governing-technical-direction"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#user-story-governing-technical-direction"}},[e._v("#")]),e._v(" User Story: Governing Technical Direction")]),e._v(" "),r("p",[e._v("Alice, a member of one core development team, submits a PR to the Cosmos cips repo after a recurring issue is identified in the standing GAIA / ATOM call. There has been a recurring discussion about how to formalize emerging agreement on a distinctive Cosmos interpretation of a technical feature common to blockchains. There are existing prior specifications in the bitcoin ecosystem that were the direct inspiration for Cosmos development, but over time the core development teams have developed a contrasting understanding of how their implementation provides a pathway to future specification development. At the end of last call, Alice decides this was important enough to step forward and take a first pass at drafting the spec based on the current roadmap.")]),e._v(" "),r("p",[e._v('Alice follows the template from the repo to draft an early CIP and updates the frontmatter of the file to indicate the status is "draft." Once the PR is submitted, Alice pings a few developers who mentioned they would provide feedback in Discord and Slack bridge channels. The developers review the PR and leave inline comments and suggestions. Alice incorporates this feedback and requests the CIP be discussed at the next GAIA / ATOM call. In the meantime, Alice solicits community feedback on the PR, sharing it to the Cosmos Hub Discord and a relevant Slack connect channel. Once again Alice is asked to make minor changes, which are completed before the PR is finalized, the cip status is updated to "living" and it is merged by the cips repo owner.')]),e._v(" "),r("h3",{attrs:{id:"process-overview-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-2"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://github.com/cosmos/cips/raw/main/assets/cip-1/CIP-process.png",alt:"Diagram of standarization process for CIPS"}})]),e._v(" "),r("ul",[r("li",[e._v('Ideas are ideally socialized first: "It is thus recommended to open a discussion thread on the Cosmos forum to do this, but you can also use the Cosmos Discord, the Cosmos subreddit or the Issues section of this repository." If the author decides to proceed, CIPs are drafted and submitted using the '),r("a",{attrs:{href:"https://github.com/cosmos/cips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/cips"),r("OutboundLink")],1),e._v(" GitHub repo.")]),e._v(" "),r("li",[e._v('When a CIP reaches the "Final" state, it represents a completed standard that is ready to be adopted.')]),e._v(" "),r("li",[e._v('CIPs do not represent the views of the wider Cosmos community. CIP-1 states that "finalization of a CIP does not equate to acceptance into Cosmos. For that, CIP authors must turn to Cosmos Governance."')]),e._v(" "),r("li",[e._v("Not all CIPS are taken through an on-chain vote")]),e._v(" "),r("li",[e._v("A situation where CIPs interact with Cosmos Governance is while coordinating a software upgrade among validators. "),r("a",{attrs:{href:"https://github.com/cosmos/cips/blob/17a9ffc1cc40933ea3cf4460849ae713e6c244e3/CIPS/cip-5.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIP-5"),r("OutboundLink")],1),e._v(" [PR not merged], which offers guidelines for new modules to be integrated into Cosmos Hub ensuring safety and robustness, states \"motivated by decentralization and the Cosmos community's decisions, a module's code is activated by submitting a parameter change proposal.\"")])]),e._v(" "),r("h3",{attrs:{id:"process-owners-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-2"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("p",[e._v("CIP editor: Ethan Buchman ("),r("a",{attrs:{href:"https://github.com/ebuchman",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ebuchman"),r("OutboundLink")],1),e._v(")")]),e._v(" "),r("h3",{attrs:{id:"process-maturity-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-2"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("There are 12 CIPs proposed to date, none are living, have been finalized, or taken through the on-chain governance process to be widely adopted.")])]),e._v(" "),r("h2",{attrs:{id:"cosmos-sdk-architecture-decision-records-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-sdk-architecture-decision-records-adr"}},[e._v("#")]),e._v(" Cosmos SDK Architecture Decision Records (ADR)")]),e._v(" "),r("p",[e._v("ADRs serve as the main way to propose new feature designs, new processes, and to document design decisions for the Cosmos SDK.")]),e._v(" "),r("p",[e._v('"An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software system\'s architecture and quality. An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log."')]),e._v(" "),r("p",[e._v("🔗 "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.cosmos.network/main/architecture/"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-3"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v('Ideas are socialized on GitHub first: "Every proposal SHOULD start with a new GitHub Issue or be a result of existing Issues. The Issue should contain just a brief proposal summary. Once the motivation is validated, a GitHub Pull Request (PR) is created"')]),e._v(" "),r("li",[e._v("If the author decides to proceed, ADRs are drafted and submitted using the "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/cosmos-sdk"),r("OutboundLink")],1),e._v(" GitHub repo.\n"),r("ol",[r("li",[e._v("Copy the adr-template.md file. Use the following filename pattern: adr-next_number-title.md")]),e._v(" "),r("li",[e._v("Create a draft Pull Request if you want to get an early feedback.")]),e._v(" "),r("li",[e._v("Make sure the context and a solution is clear and well documented.")]),e._v(" "),r("li",[e._v("Add an entry to a list in the "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/",target:"_blank",rel:"noopener noreferrer"}},[e._v("README"),r("OutboundLink")],1),e._v(" file.")]),e._v(" "),r("li",[e._v("Create a Pull Request to propose a new ADR.\n"),r("code",[e._v("")])])])]),e._v(" "),r("li",[e._v("ADRs go through a lifecycle: "),r("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/PROCESS.html#adr-life-cycle",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.cosmos.network/main/architecture/PROCESS.html#adr-life-cycle"),r("OutboundLink")],1)])]),e._v(" "),r("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"RFJBRlQgLSZndDsgUFJPUE9TRUQgLSZndDsgTEFTVCBDQUxMIHl5eXktbW0tZGQgLSZndDsgQUNDRVBURUQgfCBSRUpFQ1RFRCAtJmd0OyBTVVBFUlNFRURFRCBieSBBRFIteHh4CgogICAgICAgICAgICAgICAgICBcICAgICAgICB8CgogICAgICAgICAgICAgICAgICAgXCAgICAgICB8CgogICAgICAgICAgICAgICAgICAgIHYgICAgICB2CgogICAgICAgICAgICAgICAgICAgICBBQkFORE9ORUQK"}}),e._v(" "),r("h3",{attrs:{id:"process-owners-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-3"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("SDK "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/.github/CODEOWNERS",target:"_blank",rel:"noopener noreferrer"}},[e._v("codeowners"),r("OutboundLink")],1),e._v(": Aaron Craelius ("),r("a",{attrs:{href:"https://github.com/aaronc",target:"_blank",rel:"noopener noreferrer"}},[e._v("@aaronc"),r("OutboundLink")],1),e._v(") and Aleksandr Bezobchuk ("),r("a",{attrs:{href:"https://github.com/alexanderbez",target:"_blank",rel:"noopener noreferrer"}},[e._v("@alexanderbez"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-3"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("A bunch have passed, many are proposed: "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"tendermint-request-for-comments-rfc"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tendermint-request-for-comments-rfc"}},[e._v("#")]),e._v(" Tendermint Request for Comments (RFC)")]),e._v(" "),r("p",[e._v("RFCs are ways to both investigate and develop an idea prior to formalizing for inclusion in the Tendermint Spec, they also describe proposals to change the spec.")]),e._v(" "),r("p",[e._v('"RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic. RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic."\n🔗 '),r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/rfc/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/tendermint/spec/blob/master/rfc/README.md"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("\"As part of our 1.0 push, we'll determine if gRPC is the right framework for our RPC layer; and if so, we'll implement it. This work will begin with an RFC, and we'll seek further input from community members and users. If this RFC is accepted, we'll write a transition plan for the RPC layer and execute it.\"\n🔗 "),r("a",{attrs:{href:"https://medium.com/tendermint/towards-tendermint-core-1-0-3a71b6ce73a3",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://medium.com/tendermint/towards-tendermint-core-1-0-3a71b6ce73a3"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-4"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v("Not publicly documented")])]),e._v(" "),r("h3",{attrs:{id:"process-owners-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-4"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("Specification "),r("a",{attrs:{href:"https://github.com/tendermint/spec/blob/master/.github/CODEOWNERS",target:"_blank",rel:"noopener noreferrer"}},[e._v("general codeowners"),r("OutboundLink")],1),e._v(": Zarko Milosevic ("),r("a",{attrs:{href:"https://github.com/milosevic",target:"_blank",rel:"noopener noreferrer"}},[e._v("@milosevic"),r("OutboundLink")],1),e._v("), Ethan Buchman ("),r("a",{attrs:{href:"https://github.com/ebuchman",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ebuchman"),r("OutboundLink")],1),e._v("), Josef Widder ("),r("a",{attrs:{href:"https://github.com/josef-widder",target:"_blank",rel:"noopener noreferrer"}},[e._v("@josef-widder"),r("OutboundLink")],1),e._v("), Igor Konnov ("),r("a",{attrs:{href:"https://github.com/konnov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@konnov"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-4"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("5 RFCs have been merged to the repo with an active pull request for adding one more")])]),e._v(" "),r("h2",{attrs:{id:"interchain-standards-ics"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#interchain-standards-ics"}},[e._v("#")]),e._v(" Interchain Standards (ICS)")]),e._v(" "),r("p",[e._v("ICSs are standards that document a particular protocol, standard, or feature of use to the Cosmos Ecosystem.")]),e._v(" "),r("p",[e._v('"Interchain Standards (ICS) for the Cosmos network & interchain ecosystem."\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v('"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."\n🔗 '),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/ics-001-ics-standard/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc/blob/master/spec/ics-001-ics-standard/README.md"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"process-overview-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-overview-5"}},[e._v("#")]),e._v(" Process overview")]),e._v(" "),r("ul",[r("li",[e._v("Unclear where early discussions would happen")]),e._v(" "),r("li",[e._v("ICSs are drafted and submitted using the "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/ibc"),r("OutboundLink")],1),e._v(" GitHub repo:")]),e._v(" "),r("li",[e._v("To propose a new standard, "),r("a",{attrs:{href:"https://github.com/cosmos/ics/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("open an issue"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("To start a new standardisation document, copy the "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/ics-template.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("template"),r("OutboundLink")],1),e._v(" and open a PR.")]),e._v(" "),r("li",[e._v("Standardization process has 4 phases, laid out in "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/meta/PROCESS.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("PROCESS.md"),r("OutboundLink")],1),e._v(" for a description of the standardisation process.\n"),r("ul",[r("li",[e._v("Stage 1 - Strawman. Start the specification process")]),e._v(" "),r("li",[e._v("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.")]),e._v(" "),r("li",[e._v("Stage 3 - Candidate. Indicate that further refinement will require feedback from implementations and users")]),e._v(" "),r("li",[e._v("Stage 4 - Finalised. Indicate that the addition is included in the formal ICS standard set")])])])]),e._v(" "),r("h3",{attrs:{id:"process-owners-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-owners-5"}},[e._v("#")]),e._v(" Process owners")]),e._v(" "),r("ul",[r("li",[e._v("IBC "),r("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/meta/STANDARDS_COMMITTEE.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standards Committee"),r("OutboundLink")],1),e._v(": Aditya Sripal ("),r("a",{attrs:{href:"https://github.com/adityasripal",target:"_blank",rel:"noopener noreferrer"}},[e._v("@adityasripal"),r("OutboundLink")],1),e._v("), Christopher Goes ("),r("a",{attrs:{href:"https://github.com/cwgoes",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cwgoes"),r("OutboundLink")],1),e._v("), Zarko Milosevic ("),r("a",{attrs:{href:"https://github.com/milosevic",target:"_blank",rel:"noopener noreferrer"}},[e._v("@milosevic"),r("OutboundLink")],1),e._v(")")])]),e._v(" "),r("h3",{attrs:{id:"process-maturity-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#process-maturity-5"}},[e._v("#")]),e._v(" Process maturity")]),e._v(" "),r("ul",[r("li",[e._v("16 have been merged into the repo with at least one more under active discussion: "),r("a",{attrs:{href:"https://github.com/cosmos/ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/ibc"),r("OutboundLink")],1)])]),e._v(" "),r("hr"),e._v(" "),r("h2",{attrs:{id:"observations-and-discussion"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#observations-and-discussion"}},[e._v("#")]),e._v(" Observations and Discussion")]),e._v(" "),r("p",[e._v("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 "),r("a",{attrs:{href:"https://docs.google.com/document/d/1k2dxvd9IQF5WKXn67656bRloBtgdOWJ4mJ29m_qstPo/edit#heading=h.m8lb7fphmit0",target:"_blank",rel:"noopener noreferrer"}},[e._v("maturity"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h3",{attrs:{id:"on-chain-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-processes"}},[e._v("#")]),e._v(" On-chain processes")]),e._v(" "),r("ul",[r("li",[e._v("UX limits who can create and vote for proposals, currently requiring the use of the CLI. If Cosmos Hub sees "),r("a",{attrs:{href:"https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf",target:"_blank",rel:"noopener noreferrer"}},[e._v("itself as a port city"),r("OutboundLink")],1),e._v(", offering the best possible services, there is an argument to be made that it should extend that commitment to governance to ensure a diverse range of city dwellers and visitors can participate.")]),e._v(" "),r("li",[e._v("Some validators feel that active participation in governance is a bottleneck to setting up validator businesses. I.e., that there are already a number of proposals they are asked to vote on.")]),e._v(" "),r("li",[e._v("Cosmos Hub governance documentation is out of date, challenging to maintain, and difficult to discover. Current governance documentation is in the "),r("a",{attrs:{href:"https://github.com/cosmos/governance",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("governance")]),e._v(" repo as markdown"),r("OutboundLink")],1),e._v(", the "),r("a",{attrs:{href:"https://hub.cosmos.network/main/",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("gaia")]),e._v(" documentation as vuepress"),r("OutboundLink")],1),e._v(", and "),r("a",{attrs:{href:"https://docs.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("cosmos-sdk")]),e._v(" documentation as vuepress"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[e._v("Assessing this and making improvements is work that Hypha is currently undertaking, but there can be ongoing improvements")]),e._v(" "),r("li",[e._v("The "),r("a",{attrs:{href:"https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#",target:"_blank",rel:"noopener noreferrer"}},[e._v("upcoming x/gov and x/group alignment"),r("OutboundLink")],1),e._v(" will allow for permissions related to governance to be delegated to other groups, opening up possibilities for multi-stakeholder governance approaches and products (see "),r("a",{attrs:{href:"https://linktr.ee/cosmos_gov",target:"_blank",rel:"noopener noreferrer"}},[e._v("related links"),r("OutboundLink")],1),e._v(").")])]),e._v(" "),r("h3",{attrs:{id:"off-chain-processes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-processes"}},[e._v("#")]),e._v(" Off-chain processes")]),e._v(" "),r("ul",[r("li",[e._v("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")]),e._v(" "),r("li",[e._v("Some CIPS clearly impact all Cosmos ecosystem and blockchains and need ecosystem-wide buy-in, for example "),r("a",{attrs:{href:"https://github.com/cosmos/cips/pull/11",target:"_blank",rel:"noopener noreferrer"}},[e._v("CIP-11: Cosmos Hierarchical Deterministic key derivation"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v('"RFC Interchain Staking Light Paper"'),r("OutboundLink")],1),e._v(" 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 "),r("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/659",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/659"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v('The terms "Cosmos" and "Cosmos Hub" are used interchangeably in the CIPs repository, so the intended audience could be made more clear. The '),r("a",{attrs:{href:"https://github.com/cosmos/cips/pull/6/files",target:"_blank",rel:"noopener noreferrer"}},[e._v("module readiness process and checklist"),r("OutboundLink")],1),e._v(", 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.")]),e._v(" "),r("li",[e._v("Tendermint has an "),r("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/master/docs/architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR process"),r("OutboundLink")],1),e._v(" as well. Documentation around the relationship between the Tendermint ADR and the RFC processes would be valuable.")])])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/114.7816e89f.js b/main/assets/js/114.c6df8427.js similarity index 99% rename from main/assets/js/114.7816e89f.js rename to main/assets/js/114.c6df8427.js index a6928b46779..59b1ed6739c 100644 --- a/main/assets/js/114.7816e89f.js +++ b/main/assets/js/114.c6df8427.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{575:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"submitting-a-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-a-proposal"}},[e._v("#")]),e._v(" Submitting a Proposal")]),e._v(" "),o("p",[e._v("If you have a final draft of your proposal ready to submit, you may want to push your proposal live on the testnet first. These are the three primary steps to getting your proposal live on-chain.")]),e._v(" "),o("p",[e._v("Interacting with the Cosmos Hub via the command line in order to run queries or submit proposals has several prerequisites:")]),e._v(" "),o("ul",[o("li",[e._v("You will need to compile "),o("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/installation.html",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("gaiad")]),o("OutboundLink")],1),e._v(" from source into a binary file executable by your operating system eg. MacOS, Windows, Linux")]),e._v(" "),o("li",[e._v("You will need to indicate which chain you are querying, and currently this is "),o("code",[e._v("--chain-id cosmoshub-4")])]),e._v(" "),o("li",[e._v("You will need to connect to a full node. You can find a list of available Cosmos Hub endpoints under the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("API section"),o("OutboundLink")],1),e._v(" in the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("More info is in the Walkthrough Example section.")])]),e._v(" "),o("p",[e._v("Running a full node can be difficult for those not technically-inclined, so you may choose to use a third-party's full node. In this case, the primary security risk is that of censorship: it's the single place where you have a single gateway to the network, and any messages submitted through an untrusted node could be censored.")]),e._v(" "),o("h2",{attrs:{id:"hosting-supplementary-materials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#hosting-supplementary-materials"}},[e._v("#")]),e._v(" Hosting supplementary materials")]),e._v(" "),o("p",[e._v("In general we try to minimize the amount of data pushed to the blockchain. Hence, detailed documentation about a proposal is usually hosted on a separate censorship resistant data-hosting platform, like IPFS.")]),e._v(" "),o("p",[e._v("Once you have drafted your proposal, ideally as a Markdown file, you\ncan upload it to the IPFS network:")]),e._v(" "),o("ol",[o("li",[e._v("By "),o("a",{attrs:{href:"https://ipfs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("running an IPFS node and the IPFS software"),o("OutboundLink")],1),e._v(", or")]),e._v(" "),o("li",[e._v("By using a service such as "),o("a",{attrs:{href:"https://pinata.cloud",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://pinata.cloud"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v('Ensure that you "pin" the file so that it continues to be available on the network. You should get a URL like this: https://ipfs.io/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD')]),e._v(" "),o("p",[e._v("The value "),o("code",[e._v("QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" is called the "),o("code",[e._v("CID")]),e._v(" of your file - it is effectively the file's hash.")]),e._v(" "),o("p",[e._v("If you uploaded a markdown file, you can use the IPFS markdown viewer to render the document for better viewing. Links for the markdown viewer look like "),o("code",[e._v("https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/")]),e._v(", where "),o("code",[e._v("")]),e._v(" is your CID. For instance the link above would be: https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" "),o("p",[e._v("Share the URL with others and verify that your file is publicly accessible.")]),e._v(" "),o("p",[e._v("The reason we use IPFS is that it is a decentralized means of storage, making it resistant to censorship or single points of failure. This increases the likelihood that the file will remain available in the future.")]),e._v(" "),o("h2",{attrs:{id:"formatting-the-json-file-for-the-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#formatting-the-json-file-for-the-governance-proposal"}},[e._v("#")]),e._v(" Formatting the JSON file for the governance proposal")]),e._v(" "),o("p",[e._v("Prior to sending the transaction that submits your proposal on-chain, you must create a JSON file. This file will contain the information that will be stored on-chain as the governance proposal. Begin by creating a new text (.txt) file to enter this information. Use "),o("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[e._v("these best practices")]),e._v(" as a guide for the contents of your proposal. When you're done, save the file as a .json file.")],1),e._v(" "),o("p",[e._v("Each proposal type is unique in how the JSON should be formatted.\nSee the relevant section for the type of proposal you are drafting:")]),e._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#text"}},[e._v("Text Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#community-pool-spend"}},[e._v("Community Pool Spend Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#parameter-change"}},[e._v("Parameter Change Proposals")])],1)]),e._v(" "),o("p",[e._v("Once on-chain, most people will rely upon block explorers to interpret this information with a graphical user interface (GUI).")]),e._v(" "),o("h2",{attrs:{id:"sending-the-transaction-that-submits-your-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-the-transaction-that-submits-your-governance-proposal"}},[e._v("#")]),e._v(" Sending the transaction that submits your governance proposal")]),e._v(" "),o("p",[e._v("For information on how to use gaiad (the command line interface) to submit an on-chain proposal through the governance module, please refer to the "),o("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[e._v("gaiad resource")]),e._v(" for the Cosmos Hub documentation.")],1),e._v(" "),o("h3",{attrs:{id:"walkthrough-example"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#walkthrough-example"}},[e._v("#")]),e._v(" Walkthrough example")]),e._v(" "),o("p",[e._v("This is the generic command format for using gaiad (the command-line interface) to submit your proposal on-chain:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCAmbHQ7cHJvcG9zYWwgdHlwZSZndDtcCiAgIC0tICZsdDtqc29uIGZpbGUmZ3Q7IFwKICAgLS1mcm9tICZsdDtzdWJtaXR0ZXIgYWRkcmVzcyZndDsgXAogICAtLWRlcG9zaXQgJmx0O2RlcG9zaXQgaW4gdWF0b20mZ3Q7IFwKICAgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4gaWQmZ3Q7IFwKICAgLS1nYXMgJmx0O21heCBnYXMgYWxsb2NhdGVkJmd0OyBcCiAgIC0tZmVlcyAmbHQ7ZmVlcyBhbGxvY2F0ZWQmZ3Q7IFwKICAgLS1ub2RlICZsdDtub2RlIGFkZHJlc3MmZ3Q7IFwKCg=="}}),e._v(" "),o("p",[e._v("A specific example is given here:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBjb21tdW5pdHktcG9vbC1zcGVuZFwKICAgLS1+L2NvbW11bml0eV9zcGVuZF9wcm9wb3NhbC5qc29uIFwKICAgLS1mcm9tIGh5cGhhLWRldi13YWxsZXQgXAogICAtLWRlcG9zaXQgMTAwMDAwMHVhdG9tIFwKICAgLS1jaGFpbi1pZCBjb3Ntb3NodWItNCBcCiAgIC0tZ2FzIDUwMDAwMCBcCiAgIC0tZmVlcyA3NTAwdWF0b20gXAogICAtLW5vZGUgaHR0cHM6Ly9ycGMuY29zbW9zLm5ldHdvcms6NDQzIFwKCg=="}}),e._v(" "),o("p",[e._v("If "),o("code",[e._v("")]),e._v(" is left blank, the type will be a Text proposal. Otherwise, it can be set to "),o("code",[e._v("param-change")]),e._v(" or "),o("code",[e._v("community-pool-spend")]),e._v(". Use "),o("code",[e._v("--help")]),e._v(" to get more info from the tool.")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("gaiad")]),e._v(" is the command-line interface client that is used to send transactions and query the Cosmos Hub.")]),e._v(" "),o("li",[o("code",[e._v("tx gov submit-proposal community-pool-spend")]),e._v(" indicates that the transaction is submitting a community pool spend proposal.")]),e._v(" "),o("li",[o("code",[e._v("--~/community_spend_proposal.json")]),e._v(" indicates the file containing the proposal details.")]),e._v(" "),o("li",[o("code",[e._v("--from hypha-dev-wallet")]),e._v(" is the account key that pays the transaction fee and deposit amount. This account key must be already saved in the keyring on your device and it must be an address you control.")]),e._v(" "),o("li",[o("code",[e._v("--gas 500000")]),e._v(" is the maximum amount of gas permitted to be used to process the transaction.\n"),o("ul",[o("li",[e._v("The more content there is in the description of your proposal, the more gas your transaction will consume")]),e._v(" "),o("li",[e._v("If this number isn't high enough and there isn't enough gas to process your transaction, the transaction will fail.")]),e._v(" "),o("li",[e._v("The transaction will only use the amount of gas needed to process the transaction.")])])]),e._v(" "),o("li",[o("code",[e._v("--fees")]),e._v(" is a flat-rate incentive for a validator to process your transaction.\n"),o("ul",[o("li",[e._v("The network still accepts zero fees, but many nodes will not transmit your transaction to the network without a minimum fee.")]),e._v(" "),o("li",[e._v("Many nodes (including the Figment node) use a minimum fee to disincentivize transaction spamming.")]),e._v(" "),o("li",[e._v("7500uatom is equal to 0.0075 ATOM.")])])]),e._v(" "),o("li",[o("code",[e._v("--chain-id cosmoshub-4")]),e._v(" is Cosmos Hub 4. For current and past chain-id's, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/mainnet resource"),o("OutboundLink")],1),e._v(".\n"),o("ul",[o("li",[e._v("The testnet chain ID is "),o("code",[e._v("theta-testnet-001")]),e._v(". For current and past testnet information, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repository"),o("OutboundLink")],1),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("--node https://rpc.cosmos.network:443")]),e._v(" is using an established node to send the transaction to the Cosmos Hub 4 network. For available nodes, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": be careful what you use for "),o("code",[e._v("--fees")]),e._v(". A mistake here could result in spending hundreds or thousands of ATOMs accidentally, which cannot be recovered.")]),e._v(" "),o("h3",{attrs:{id:"verifying-your-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-your-transaction"}},[e._v("#")]),e._v(" Verifying your transaction")]),e._v(" "),o("p",[e._v("After posting your transaction, your command line interface (gaiad) will provide you with the transaction's hash, which you can either query using gaiad or by searching the transaction hash using "),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/txs/0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),o("OutboundLink")],1),e._v(". The hash should look something like this: "),o("code",[e._v("0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57")])]),e._v(" "),o("h3",{attrs:{id:"troubleshooting-a-failed-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting-a-failed-transaction"}},[e._v("#")]),e._v(" Troubleshooting a failed transaction")]),e._v(" "),o("p",[e._v("There are a number of reasons why a transaction may fail. Here are two examples:")]),e._v(" "),o("ol",[o("li",[o("p",[o("strong",[e._v("Running out of gas")]),e._v(" - The more data there is in a transaction, the more gas it will need to be processed. If you don't specify enough gas, the transaction will fail.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Incorrect denomination")]),e._v(" - You may have specified an amount in 'utom' or 'atom' instead of 'uatom', causing the transaction to fail.")])])]),e._v(" "),o("p",[e._v("If you encounter a problem, try to troubleshoot it first, and then ask for help on the Cosmos Hub forum: "),o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forum.cosmos.network"),o("OutboundLink")],1),e._v(". We can learn from failed attempts and use them to improve upon this guide.")]),e._v(" "),o("h3",{attrs:{id:"depositing-funds-after-a-proposal-has-been-submitted"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#depositing-funds-after-a-proposal-has-been-submitted"}},[e._v("#")]),e._v(" Depositing funds after a proposal has been submitted")]),e._v(" "),o("p",[e._v("Sometimes a proposal is submitted without having the minimum token amount deposited yet. In these cases you would want to be able to deposit more tokens to get the proposal into the voting stage. In order to deposit tokens, you'll need to know what your proposal ID is after you've submitted your proposal. You can query all proposals by the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzCg=="}}),e._v(" "),o("p",[e._v("If there are a lot of proposals on the chain already, you can also filter by your own address. For the proposal above, that would be:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzIC0tZGVwb3NpdG9yIGNvc21vczFoeHY3bXB6dHZsbjQ1ZWdoZXo2ZXZ3MnlwY3c0dmptc21yOGNkeAo="}}),e._v(" "),o("p",[e._v("Once you have the proposal ID, this is the command to deposit extra tokens:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsLWlkJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1mcm9tICZsdDtuYW1lJmd0Owo="}}),e._v(" "),o("p",[e._v("In our case above, the "),o("code",[e._v("")]),e._v(" would be 59 as queried earlier.\nThe "),o("code",[e._v("")]),e._v(" is written as "),o("code",[e._v("500000uatom")]),e._v(", just like the example above.")]),e._v(" "),o("h3",{attrs:{id:"submitting-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submitting your proposal to the testnet")]),e._v(" "),o("p",[e._v("Submitting to the testnet is identical to mainnet submissions aside from a few changes:")]),e._v(" "),o("ol",[o("li",[e._v("The chain-id is "),o("code",[e._v("theta-testnet-001")]),e._v(".")]),e._v(" "),o("li",[e._v("The list of usable endpoints can be found "),o("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#readme",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("You will need testnet tokens, not ATOM. There is a faucet available in the Developer "),o("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[e._v("You may want to submit your proposal to the testnet chain before the mainnet for a number of reasons:")]),e._v(" "),o("ol",[o("li",[e._v("To see what the proposal description will look like.")]),e._v(" "),o("li",[e._v("To signal that your proposal is about to go live on the mainnet.")]),e._v(" "),o("li",[e._v("To share what the proposal will look like in advance with stakeholders.")]),e._v(" "),o("li",[e._v("To test the functionality of the governance features.")])])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{525: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/115.2778ce5d.js b/main/assets/js/115.c45bcdc3.js similarity index 99% rename from main/assets/js/115.2778ce5d.js rename to main/assets/js/115.c45bcdc3.js index d9a5c7764e1..445c56d6dc7 100644 --- a/main/assets/js/115.2778ce5d.js +++ b/main/assets/js/115.c45bcdc3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{576:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("strong",[e._v("Introduction")])]),e._v(" "),o("p",[e._v("IBC and Hub go-to-market is a complex organizational, developmental, and marketing undertaking that involves many entities, software projects, and services. IBC is also intimately bound up to the roadmap, development, and go-to-market of Gaia. Though it is possible to bring IBC to market without Gaia, Gaia should be the primary vehicle and product we are concerned with, since the value of Gaia stems from the utility it brings to the ecosystem of chains connected to and benefiting from its position as a Hub. Thus, this plan will consider go-to-market needs for IBC and Gaia simultaneously. The roadmap will be designed to ensure that IBC is valuable to the Hub and its users, including the many interconnected sovereign blockchains that derive utility from the Hub.")]),e._v(" "),o("p",[e._v("The IBC and Gaia go-to-market initiatives will be about direct engagement with the products that directly validate the utility of the Hub and IBC. This initiative encompasses the utility of various interoperable and cross-chain Cosmos entities such as application-specific blockchains, Bridges, Relayers, Validators, etc. More importantly, we envision that the market will quickly grasp the meaning and relevance of cross-chain interoperability of which Cosmos is a leading contender.\nThis is an evolving document and process. Please feel free to contribute where you think something is missing or could be improved!\n"),o("strong",[e._v("How we work")])]),e._v(" "),o("p",[e._v("These discussions will take place during weekly Gaia team calls. The Hub will determine the value proposition of IBC and how it is integrated into Gaia and how it will serve the larger ecosystem of interconnected blockchains. These discussions will continue to take place with key stakeholders during the bi-weekly Cosmos multi entity call. Importantly, the purpose of the bi-weekly multi entity call will be to consider all technical aspects of IBC launch from a strategic perspective (outlined in 'What's Needed to Successfully Go to Market?'). This will inform the agenda.")]),e._v(" "),o("p",[e._v("Leading up to Stargate, IBC Development was led by Chris Goes (Interchain Berlin), while Gaia did not have a maintainer. Go-to-market for Stargate was led by Zaki (Iqlusion). Moving forward, we are aiming to organize Cosmos Hub leadership under Shahan Khatchadourian (Interchain Berlin) and go-to-market led by Jelena Djuric (Informal Systems). Both Shahan and Jelena are being onboarded into these roles with the support of previous leads.")]),e._v(" "),o("p",[e._v("Execution and completion will be tracked via a meta-project dashboard ("),o("a",{attrs:{href:"https://github.com/cosmos/gaia/projects/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Roadmap"),o("OutboundLink")],1),e._v(") that incorporates the high level objectives for each phase roll out. Each phase (i.e. Phase 1 - Accounts UX, Phase 2 - Interchain Interchange, etc) will have their own project dashboard that will link to the repos, issues, PRs, etc, where development is taking place.")]),e._v(" "),o("p",[e._v('"'),o("em",[e._v('Never doubt that a small group of thoughtful, committed, citizens can change the world. Indeed, it is the only thing that ever has." - Margaret Mead')])]),e._v(" "),o("p",[o("strong",[e._v("What's Needed to Successfully Go to Market?")])]),e._v(" "),o("ol",[o("li",[o("strong",[e._v("Project management")])])]),e._v(" "),o("p",[e._v("In sum, project management will focus on surfacing issues, dependencies, relative roadmaps, and coordinating across all stakeholders. Questions that will be considered throughout each phase of the Gaia roadmap:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("What is missing from an integration points perspective with end users?")])]),e._v(" "),o("li",[o("p",[e._v("Which relationships are missing?")])]),e._v(" "),o("li",[o("p",[e._v("What's the highest priority? Least priority?")])])]),e._v(" "),o("ol",{attrs:{start:"2"}},[o("li",[o("strong",[e._v("Market validation")])])]),e._v(" "),o("p",[e._v("The user is paramount. For Gaia and IBC, we see the users being:")]),e._v(" "),o("ul",[o("li",[e._v("ATOM holders")]),e._v(" "),o("li",[e._v("Existing zones")]),e._v(" "),o("li",[e._v("New zones")]),e._v(" "),o("li",[e._v("Validators on hub and zones")]),e._v(" "),o("li",[e._v("Nodes on hub and zones")]),e._v(" "),o("li",[e._v("Other service providers on hubs and zones (wallets, explorers, exchanges, etc.)")])]),e._v(" "),o("p",[e._v("We will also want to be tracking outreach to the relevant users per phase to ensure that Hub utility (and IBC where appropriate) are being validated. Spotlights on experiments will continue to validate the utility of the Hub and IBC (i.e. bridge to Ethereum, AMM, etc). We will also be conducting continous outbound outreach to look for partners that are aligned with the interchain mission.")]),e._v(" "),o("ol",{attrs:{start:"3"}},[o("li",[o("strong",[e._v("Communications")])])]),e._v(" "),o("p",[e._v("Communications should focus on the features of IBC and the Hub that demonstrate the most utility for users. Stories should answer questions such as:")]),e._v(" "),o("ul",[o("li",[e._v("How does IBC relate to ATOM and the Hub?")]),e._v(" "),o("li",[e._v("How does IBC derive its value from the Hub, and vice versa?")]),e._v(" "),o("li",[e._v("Why should you build your blockchain with IBC?")]),e._v(" "),o("li",[e._v("How does a blockchain benefit from connecting to the Hub?")])]),e._v(" "),o("ol",{attrs:{start:"4"}},[o("li",[o("strong",[e._v("Technical Support")])])]),e._v(" "),o("p",[e._v("We will need technical support for users depending on the phase that is being rolled out. A phase rollout is not complete without proper technical support.")]),e._v(" "),o("p",[e._v("Further, we will need technical support that goes beyond the different phase rollouts. Importantly, to create an IBC connected blockchain developers will need the following things:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("A value proposition")]),e._v(" "),o("ul",[o("li",[e._v("A State Machine:\n"),o("ul",[o("li",[e._v("Built on Cosmos SDK")]),e._v(" "),o("li",[e._v("ABCI")]),e._v(" "),o("li",[e._v("Cosmos-rs.. etc")])])]),e._v(" "),o("li",[e._v("Security:\n"),o("ul",[o("li",[e._v("Cross chain Validation")]),e._v(" "),o("li",[e._v("Validator set formation")])])]),e._v(" "),o("li",[e._v("Community\n"),o("ul",[o("li",[e._v("Discoverability Opportunities")])])]),e._v(" "),o("li",[e._v("Connectivity")]),e._v(" "),o("li",[e._v("Visibility\n"),o("ul",[o("li",[e._v("Wallet, Block Explorer, etc")])])])])])]),e._v(" "),o("ol",{attrs:{start:"5"}},[o("li",[o("strong",[e._v("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?")])])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("The Cosmos-SDK exposes some "),o("a",{attrs:{href:"https://docs.cosmos.network/main/core/telemetry.html#supported-metrics",target:"_blank",rel:"noopener noreferrer"}},[e._v("existing metrics for IBC"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{586:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("strong",[e._v("Introduction")])]),e._v(" "),o("p",[e._v("IBC and Hub go-to-market is a complex organizational, developmental, and marketing undertaking that involves many entities, software projects, and services. IBC is also intimately bound up to the roadmap, development, and go-to-market of Gaia. Though it is possible to bring IBC to market without Gaia, Gaia should be the primary vehicle and product we are concerned with, since the value of Gaia stems from the utility it brings to the ecosystem of chains connected to and benefiting from its position as a Hub. Thus, this plan will consider go-to-market needs for IBC and Gaia simultaneously. The roadmap will be designed to ensure that IBC is valuable to the Hub and its users, including the many interconnected sovereign blockchains that derive utility from the Hub.")]),e._v(" "),o("p",[e._v("The IBC and Gaia go-to-market initiatives will be about direct engagement with the products that directly validate the utility of the Hub and IBC. This initiative encompasses the utility of various interoperable and cross-chain Cosmos entities such as application-specific blockchains, Bridges, Relayers, Validators, etc. More importantly, we envision that the market will quickly grasp the meaning and relevance of cross-chain interoperability of which Cosmos is a leading contender.\nThis is an evolving document and process. Please feel free to contribute where you think something is missing or could be improved!\n"),o("strong",[e._v("How we work")])]),e._v(" "),o("p",[e._v("These discussions will take place during weekly Gaia team calls. The Hub will determine the value proposition of IBC and how it is integrated into Gaia and how it will serve the larger ecosystem of interconnected blockchains. These discussions will continue to take place with key stakeholders during the bi-weekly Cosmos multi entity call. Importantly, the purpose of the bi-weekly multi entity call will be to consider all technical aspects of IBC launch from a strategic perspective (outlined in 'What's Needed to Successfully Go to Market?'). This will inform the agenda.")]),e._v(" "),o("p",[e._v("Leading up to Stargate, IBC Development was led by Chris Goes (Interchain Berlin), while Gaia did not have a maintainer. Go-to-market for Stargate was led by Zaki (Iqlusion). Moving forward, we are aiming to organize Cosmos Hub leadership under Shahan Khatchadourian (Interchain Berlin) and go-to-market led by Jelena Djuric (Informal Systems). Both Shahan and Jelena are being onboarded into these roles with the support of previous leads.")]),e._v(" "),o("p",[e._v("Execution and completion will be tracked via a meta-project dashboard ("),o("a",{attrs:{href:"https://github.com/cosmos/gaia/projects/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Roadmap"),o("OutboundLink")],1),e._v(") that incorporates the high level objectives for each phase roll out. Each phase (i.e. Phase 1 - Accounts UX, Phase 2 - Interchain Interchange, etc) will have their own project dashboard that will link to the repos, issues, PRs, etc, where development is taking place.")]),e._v(" "),o("p",[e._v('"'),o("em",[e._v('Never doubt that a small group of thoughtful, committed, citizens can change the world. Indeed, it is the only thing that ever has." - Margaret Mead')])]),e._v(" "),o("p",[o("strong",[e._v("What's Needed to Successfully Go to Market?")])]),e._v(" "),o("ol",[o("li",[o("strong",[e._v("Project management")])])]),e._v(" "),o("p",[e._v("In sum, project management will focus on surfacing issues, dependencies, relative roadmaps, and coordinating across all stakeholders. Questions that will be considered throughout each phase of the Gaia roadmap:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("What is missing from an integration points perspective with end users?")])]),e._v(" "),o("li",[o("p",[e._v("Which relationships are missing?")])]),e._v(" "),o("li",[o("p",[e._v("What's the highest priority? Least priority?")])])]),e._v(" "),o("ol",{attrs:{start:"2"}},[o("li",[o("strong",[e._v("Market validation")])])]),e._v(" "),o("p",[e._v("The user is paramount. For Gaia and IBC, we see the users being:")]),e._v(" "),o("ul",[o("li",[e._v("ATOM holders")]),e._v(" "),o("li",[e._v("Existing zones")]),e._v(" "),o("li",[e._v("New zones")]),e._v(" "),o("li",[e._v("Validators on hub and zones")]),e._v(" "),o("li",[e._v("Nodes on hub and zones")]),e._v(" "),o("li",[e._v("Other service providers on hubs and zones (wallets, explorers, exchanges, etc.)")])]),e._v(" "),o("p",[e._v("We will also want to be tracking outreach to the relevant users per phase to ensure that Hub utility (and IBC where appropriate) are being validated. Spotlights on experiments will continue to validate the utility of the Hub and IBC (i.e. bridge to Ethereum, AMM, etc). We will also be conducting continous outbound outreach to look for partners that are aligned with the interchain mission.")]),e._v(" "),o("ol",{attrs:{start:"3"}},[o("li",[o("strong",[e._v("Communications")])])]),e._v(" "),o("p",[e._v("Communications should focus on the features of IBC and the Hub that demonstrate the most utility for users. Stories should answer questions such as:")]),e._v(" "),o("ul",[o("li",[e._v("How does IBC relate to ATOM and the Hub?")]),e._v(" "),o("li",[e._v("How does IBC derive its value from the Hub, and vice versa?")]),e._v(" "),o("li",[e._v("Why should you build your blockchain with IBC?")]),e._v(" "),o("li",[e._v("How does a blockchain benefit from connecting to the Hub?")])]),e._v(" "),o("ol",{attrs:{start:"4"}},[o("li",[o("strong",[e._v("Technical Support")])])]),e._v(" "),o("p",[e._v("We will need technical support for users depending on the phase that is being rolled out. A phase rollout is not complete without proper technical support.")]),e._v(" "),o("p",[e._v("Further, we will need technical support that goes beyond the different phase rollouts. Importantly, to create an IBC connected blockchain developers will need the following things:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("A value proposition")]),e._v(" "),o("ul",[o("li",[e._v("A State Machine:\n"),o("ul",[o("li",[e._v("Built on Cosmos SDK")]),e._v(" "),o("li",[e._v("ABCI")]),e._v(" "),o("li",[e._v("Cosmos-rs.. etc")])])]),e._v(" "),o("li",[e._v("Security:\n"),o("ul",[o("li",[e._v("Cross chain Validation")]),e._v(" "),o("li",[e._v("Validator set formation")])])]),e._v(" "),o("li",[e._v("Community\n"),o("ul",[o("li",[e._v("Discoverability Opportunities")])])]),e._v(" "),o("li",[e._v("Connectivity")]),e._v(" "),o("li",[e._v("Visibility\n"),o("ul",[o("li",[e._v("Wallet, Block Explorer, etc")])])])])])]),e._v(" "),o("ol",{attrs:{start:"5"}},[o("li",[o("strong",[e._v("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?")])])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("The Cosmos-SDK exposes some "),o("a",{attrs:{href:"https://docs.cosmos.network/main/core/telemetry.html#supported-metrics",target:"_blank",rel:"noopener noreferrer"}},[e._v("existing metrics for IBC"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/116.7bc17c71.js b/main/assets/js/116.c8b9cb9b.js similarity index 99% rename from main/assets/js/116.7bc17c71.js rename to main/assets/js/116.c8b9cb9b.js index c25e0f976b5..fb22d2c1c0e 100644 --- a/main/assets/js/116.7bc17c71.js +++ b/main/assets/js/116.c8b9cb9b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{484: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:"contributing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contributing"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),a("p",[e._v("If you want to contribute to a project and improve it, your help is welcome. We want to make Gaia as good as it can be. Contributing is also a great way to learn more about blockchain technology and improve it. Please read this document and follow our guidelines to make the process as smooth as possible. We are happy to review your code but please ensure that you have a reasonable and clean pull request.")]),e._v(" "),a("p",[e._v("This documents idiomatic conventions in the Go code that we follow for gaia development. A lot of these are general guidelines for Go, while others extend upon external resources:")]),e._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/effective_go.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Effective Go"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/golang/go/wiki/CommonMistakes",target:"_blank",rel:"noopener noreferrer"}},[e._v("Go Common Mistakes"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/golang/go/wiki/CodeReviewComments",target:"_blank",rel:"noopener noreferrer"}},[e._v("Go Code Review Comments"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"run-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-tests"}},[e._v("#")]),e._v(" Run tests")]),e._v(" "),a("ul",[a("li",[e._v("Run unit tests")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXVuaXQK"}}),e._v(" "),a("ul",[a("li",[e._v("Run the unit tests and output the coverage file (coverage.txt).")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXVuaXQtY292ZXIK"}}),e._v(" "),a("ul",[a("li",[e._v("Run the unit tests with the race condition flag on.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXJhY2UK"}}),e._v(" "),a("ul",[a("li",[e._v("Run end-to-end integration tests (Docker needed).")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSBkb2NrZXItYnVpbGQtaGVybWVzICZhbXA7JmFtcDsgXAptYWtlIGRvY2tlci1idWlsZC1kZWJ1ZyAmYW1wOyZhbXA7IFwKbWFrZSB0ZXN0LWUyZQo="}}),e._v(" "),a("h1",{attrs:{id:"guidelines"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guidelines"}},[e._v("#")]),e._v(" Guidelines")]),e._v(" "),a("p",[e._v("These guidelines are the conventions that govern our code. These conventions cover far more than just source file formatting. Can "),a("code",[e._v("gofmt")]),e._v(" and "),a("code",[e._v("goimports")]),e._v(" handle that for us.")]),e._v(" "),a("p",[e._v("The goal of this guide is to manage this complexity by describing in detail the Dos and Don'ts of writing Go code. These rules keep the code base manageable while allowing engineers to use Go language features productively.")]),e._v(" "),a("p",[e._v("Try to avoid extensive methods and always test your code. All PRs should have at least 95% of code coverage.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#project-organization"}},[e._v("Project organization")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#how-to-test-this-project-locally"}},[e._v("How to test this project locally")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#unit-tests"}},[e._v("Unit Tests")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#end-to-end-tests"}},[e._v("End-to-End Tests")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-test"}},[e._v("Upgrade Test")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#guidelines"}},[e._v("Guidelines")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#line-length"}},[e._v("Line Length")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#doc-comments"}},[e._v("Doc Comments")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#declaring-smpty-slices"}},[e._v("Declaring Empty Slices")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#indent-error-flow"}},[e._v("Indent Error Flow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#unnecessary-else"}},[e._v("Unnecessary Else")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#named-result-parameters"}},[e._v("Named Result Parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#package-comments"}},[e._v("Package Comments")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#package-names"}},[e._v("Package Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#function-names"}},[e._v("Function Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#pointers"}},[e._v("Pointers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#receiver-names"}},[e._v("Receiver Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variable-names"}},[e._v("Variable Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#zero-value-mutexes"}},[e._v("Zero-value Mutexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#copy-slices-and-maps-at-boundaries"}},[e._v("Copy Slices and Maps at Boundaries")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#receiving-slices-and-maps"}},[e._v("Receiving Slices and Maps")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#returning-slices-and-maps"}},[e._v("Returning Slices and Maps")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#errors"}},[e._v("Errors")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-types"}},[e._v("Error Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#error-wrapping"}},[e._v("Error Wrapping")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#error-naming"}},[e._v("Error Naming")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#handle-type-assertion-failures"}},[e._v("Handle Type Assertion Failures")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-embedding-types-in-public-structs"}},[e._v("Avoid Embedding Types in Public Structs")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-init"}},[e._v("Avoid "),a("code",[e._v("init()")])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#Performance"}},[e._v("Performance")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#prefer-strconv-over-fmt"}},[e._v("Prefer strconv over fmt")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-string-to-byte-conversion"}},[e._v("Avoid string-to-byte conversion")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#prefer-specifying-container-capacity"}},[e._v("Prefer Specifying Container Capacity")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#specifying-map-capacity-hints"}},[e._v("Specifying Map Capacity Hints")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#specifying-slice-capacity"}},[e._v("Specifying Slice Capacity")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#function-grouping-and-ordering"}},[e._v("Function Grouping and Ordering")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reduce-nesting"}},[e._v("Reduce Nesting")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#writing-tests"}},[e._v("Writing Tests")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#use-subtests"}},[e._v("Use Subtests")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-writing-directly-in-the-stdout"}},[e._v("Avoid writing directly in the stdout")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-panic"}},[e._v("Avoid panic")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#handle-error-on-the-top-level"}},[e._v("Handle error on the top level")])])])])]),e._v(" "),a("h2",{attrs:{id:"project-organization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-organization"}},[e._v("#")]),e._v(" Project organization")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("/ante: Where the ante-handler logic is defined.")])]),e._v(" "),a("li",[a("p",[e._v("/app: Where the application is defined.")])]),e._v(" "),a("li",[a("p",[e._v("/client: OpenAPI/Swagger specs, JSON schema files, protocol definition files.")]),e._v(" "),a("ul",[a("li",[e._v("/swagger-ui")])])]),e._v(" "),a("li",[a("p",[e._v("/cmd/gaiad: Main applications for this project.")]),e._v(" "),a("ul",[a("li",[e._v("cmd/")]),e._v(" "),a("li",[e._v("main.go")])])]),e._v(" "),a("li",[a("p",[e._v("/contrib (scripts): Scripts to perform various build, install, analysis, etc operations.")]),e._v(" "),a("ul",[a("li",[e._v("/devtools")]),e._v(" "),a("li",[e._v("/generate_release_note")]),e._v(" "),a("li",[e._v("/githooks")]),e._v(" "),a("li",[e._v("/scripts")]),e._v(" "),a("li",[e._v("/testnets")])])]),e._v(" "),a("li",[a("p",[e._v("/docs: Gaia docs.")])]),e._v(" "),a("li",[a("p",[e._v("/pkg: Library code that's to be reusable.")]),e._v(" "),a("ul",[a("li",[e._v("/address")]),e._v(" "),a("li",[e._v("/genesis")])])]),e._v(" "),a("li",[a("p",[e._v("/proto: Proto type definitions")])]),e._v(" "),a("li",[a("p",[e._v("/tests/e2e: Additional external test apps and test data.")])]),e._v(" "),a("li",[a("p",[e._v("/third_party/proto: External proto type definitions")])]),e._v(" "),a("li",[a("p",[e._v("/tools: Supporting tools for this project.")])]),e._v(" "),a("li",[a("p",[e._v("/x: Cosmos Modules.")])])]),e._v(" "),a("h2",{attrs:{id:"how-to-test-this-project-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-test-this-project-locally"}},[e._v("#")]),e._v(" How to test this project locally")]),e._v(" "),a("h3",{attrs:{id:"unit-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unit-tests"}},[e._v("#")]),e._v(" Unit Tests")]),e._v(" "),a("p",[e._v("Running unit tests locally should ensure that the tests inside of "),a("code",[e._v("/tests/e2e")]),e._v(" are not run. These tests require active running docker containers.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSB0ZXN0LXVuaXQK"}}),e._v(" "),a("h3",{attrs:{id:"end-to-end-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#end-to-end-tests"}},[e._v("#")]),e._v(" End-to-End Tests")]),e._v(" "),a("p",[e._v("To run the E2E tests you need to have an instance of Docker running. Then make sure you have the most recent version of the code built in the containers by running:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSBkb2NrZXItYnVpbGQtZGVidWcK"}}),e._v(" "),a("p",[e._v("Then run the tests:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSB0ZXN0LWUyZQo="}}),e._v(" "),a("h3",{attrs:{id:"upgrade-test"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-test"}},[e._v("#")]),e._v(" Upgrade Test")]),e._v(" "),a("p",[e._v("Instructions for running the upgrade test locally")]),e._v(" "),a("h4",{attrs:{id:"build-current-version-and-move-into-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-current-version-and-move-into-build"}},[e._v("#")]),e._v(" Build current version and move into ./build:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IHY4LjAuMAptYWtlIGJ1aWxkIApjcCAuL2J1aWxkL2dhaWFkIC4vYnVpbGQvZ2FpYWQ4Cg=="}}),e._v(" "),a("h4",{attrs:{id:"build-gaia-v9-0-0-and-move-into-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-gaia-v9-0-0-and-move-into-build"}},[e._v("#")]),e._v(" Build gaia v9.0.0 and move into ./build:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IHY5LjAuMAptYWtlIGJ1aWxkIApjcCAuL2J1aWxkL2dhaWFkIC4vYnVpbGQvZ2FpYWQ5Cg=="}}),e._v(" "),a("h4",{attrs:{id:"go-back-to-your-previous-working-branch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#go-back-to-your-previous-working-branch"}},[e._v("#")]),e._v(" Go back to your previous working branch")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IC0K"}}),e._v(" "),a("h4",{attrs:{id:"install-cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-cosmovisor"}},[e._v("#")]),e._v(" Install cosmovisor")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAdjEuMy4wCg=="}}),e._v(" "),a("h4",{attrs:{id:"run-the-chain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-the-chain"}},[e._v("#")]),e._v(" Run the Chain")]),e._v(" "),a("p",[e._v("This script prepares the chain and starts it using cosmovisor")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvcnVuLWdhaWEtdjguc2gK"}}),e._v(" "),a("h4",{attrs:{id:"run-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-the-upgrade"}},[e._v("#")]),e._v(" Run the upgrade")]),e._v(" "),a("p",[e._v("In another terminal window, run the script that waits 10 seconds for gaia to start then makes gov proposal to perform an upgrade at height 15")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvcnVuLXVwZ3JhZGUtY29tbWFuZHMuc2ggMTUK"}}),e._v(" "),a("h4",{attrs:{id:"monitor-for-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#monitor-for-success"}},[e._v("#")]),e._v(" Monitor for success")]),e._v(" "),a("p",[e._v("In a third window run the upgrade monitoring script that will exit without error when the upgrade succeeds.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvdGVzdF91cGdyYWRlLnNoIDIwIDUgMTYgbG9jYWxob3N0Cg=="}}),e._v(" "),a("p",[e._v("This should show logs that demonstrate a successful upgrade by reaching block height 16.")]),e._v(" "),a("h2",{attrs:{id:"guidelines-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guidelines-2"}},[e._v("#")]),e._v(" Guidelines")]),e._v(" "),a("h3",{attrs:{id:"line-length"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#line-length"}},[e._v("#")]),e._v(" Line Length")]),e._v(" "),a("p",[e._v("Avoid uncomfortably long lines. Similarly, don't add line breaks to keep lines short when they are more readable long--for example if they are repetitive. The maximum line length is 120. If your line is over 120 characters, break it;")]),e._v(" "),a("h3",{attrs:{id:"doc-comments"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#doc-comments"}},[e._v("#")]),e._v(" Doc Comments")]),e._v(" "),a("p",[e._v("All top-level, exported names should have doc comments, as should non-trivial unexported type or function declarations. See https://go.dev/doc/effective_go#commentary for more information about commentary conventions.")]),e._v(" "),a("h3",{attrs:{id:"declaring-empty-slices"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declaring-empty-slices"}},[e._v("#")]),e._v(" Declaring Empty Slices")]),e._v(" "),a("p",[e._v("When declaring an empty slice, prefer")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIHQgW11zdHJpbmcK"}}),e._v(" "),a("p",[e._v("over")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCA6PSBbXXN0cmluZ3t9Cg=="}}),e._v(" "),a("p",[e._v("The former declares a nil slice value, while the latter is non-nil but zero-length. They are functionally equivalent—their "),a("code",[e._v("len")]),e._v(" and "),a("code",[e._v("cap")]),e._v(" are both zero—but the nil slice is the preferred style.")]),e._v(" "),a("p",[e._v("Note that there are limited circumstances where a non-nil but the zero-length slice is preferred, such as when encoding JSON objects (a "),a("code",[e._v("nil")]),e._v(" slice encodes to "),a("code",[e._v("null")]),e._v(", while "),a("code",[e._v("[]string{}")]),e._v(" encodes to the JSON array "),a("code",[e._v("[]")]),e._v(").")]),e._v(" "),a("p",[e._v("When designing interfaces, avoid distinguishing between a nil slice and a non-nil, zero-length slice, as this can lead to subtle programming errors. It's also important to distinguish if a map key exists from whether its value is "),a("code",[e._v("zero")]),e._v("/"),a("code",[e._v("nil")]),e._v("/"),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("p",[e._v("For more discussion about nil in Go see Francesc Campoy's talk "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=ynoY2xz-F8s",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understanding Nil"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"indent-error-flow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#indent-error-flow"}},[e._v("#")]),e._v(" Indent Error Flow")]),e._v(" "),a("p",[e._v("Try to keep the normal code path at a minimal indentation and indent the error handling, dealing with it first. This improves the readability of the code by permitting visual scanning of the normal path quickly. For instance, don't write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"aWYgZXJyICE9IG5pbCB7CgkvLyBlcnJvciBoYW5kbGluZwp9IGVsc2UgewoJLy8gbm9ybWFsIGNvZGUKfQo="}}),e._v(" "),a("p",[e._v("Instead, write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"aWYgZXJyICE9IG5pbCB7CgkvLyBlcnJvciBoYW5kbGluZwoJcmV0dXJuIC8vIG9yIGNvbnRpbnVlLCBldGMuCn0KLy8gbm9ybWFsIGNvZGUK"}}),e._v(" "),a("h3",{attrs:{id:"unnecessary-else"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unnecessary-else"}},[e._v("#")]),e._v(" Unnecessary Else")]),e._v(" "),a("p",[e._v("If a variable is set in both branches of an if, it can be replaced with a single if.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIGEgaW50CmlmIGIgewogIGEgPSAxMDAKfSBlbHNlIHsKICBhID0gMTAKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"YSA6PSAxMAppZiBiIHsKICBhID0gMTAwCn0K"}}),e._v(" "),a("h3",{attrs:{id:"named-result-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#named-result-parameters"}},[e._v("#")]),e._v(" Named Result Parameters")]),e._v(" "),a("p",[e._v("Consider what it will look like in godoc. Named result parameters like:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobiAqTm9kZSkgUGFyZW50MSgpIChub2RlICpOb2RlKSB7fQpmdW5jIChuICpOb2RlKSBQYXJlbnQyKCkgKG5vZGUgKk5vZGUsIGVyciBlcnJvcikge30K"}}),e._v(" "),a("p",[e._v("It will be repetitive in godoc; better to use:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobiAqTm9kZSkgUGFyZW50MSgpICpOb2RlIHt9CmZ1bmMgKG4gKk5vZGUpIFBhcmVudDIoKSAoKk5vZGUsIGVycm9yKSB7fQo="}}),e._v(" "),a("p",[e._v("On the other hand, adding names may be helpful in some contexts if a function returns two or three parameters of the same type or if the meaning of a result isn't clear from the context. Don't name result parameters just to avoid declaring a var inside the function; that trades off minor implementation brevity at the cost of unnecessary API verbosity.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZiAqRm9vKSBMb2NhdGlvbigpIChmbG9hdDY0LCBmbG9hdDY0LCBlcnJvcikK"}}),e._v(" "),a("p",[e._v("It is less clear than the:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gTG9jYXRpb24gcmV0dXJucyBmJ3MgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS4KLy8gTmVnYXRpdmUgdmFsdWVzIG1lYW4gc291dGggYW5kIHdlc3QsIHJlc3BlY3RpdmVseS4KZnVuYyAoZiAqRm9vKSBMb2NhdGlvbigpIChsYXQsIGxvbmcgZmxvYXQ2NCwgZXJyIGVycm9yKQo="}}),e._v(" "),a("p",[e._v("Naked returns are okay if the function is a handful of lines. Once it's a medium-sized function, be explicit with your return values. Corollary: it's not worth naming result parameters just because it enables you to use naked returns. Clarifying docs is always more important than saving a line or two in your function.")]),e._v(" "),a("p",[e._v("Finally, it would help if you named a result parameter in some cases to change it in a deferred closure. That is always OK.")]),e._v(" "),a("h3",{attrs:{id:"package-comments"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package-comments"}},[e._v("#")]),e._v(" Package Comments")]),e._v(" "),a("p",[e._v("Package comments, like all comments to be presented by godoc, must appear adjacent to the package clause with no blank line.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"LyoKUGFja2FnZSB0ZW1wbGF0ZSBpbXBsZW1lbnRzIGRhdGEtZHJpdmVuIHRlbXBsYXRlcyBmb3IgZ2VuZXJhdGluZyB0ZXh0dWFsCm91dHB1dCBzdWNoIGFzIEhUTUwuCi4uLi4KKi8KcGFja2FnZSB0ZW1wbGF0ZQo="}}),e._v(" "),a("p",[e._v('For "package main" comments, other styles of comment are fine after the binary name (and it may be capitalized if it comes first). For example, for a '),a("code",[e._v("package main")]),e._v(" in the directory "),a("code",[e._v("seedgen")]),e._v(" you could write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gU2VlZGdlbiAuLgpwYWNrYWdlIG1haW4K"}}),e._v(" "),a("p",[e._v("See https://go.dev/doc/effective_go#commentary for more information about commentary conventions.")]),e._v(" "),a("h3",{attrs:{id:"package-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package-names"}},[e._v("#")]),e._v(" Package Names")]),e._v(" "),a("p",[e._v("All references to names in your package will be done using the package name so that you can omit that name from the identifiers. For example, if you are in package chubby, you don't need to type ChubbyFile, which clients will write as "),a("code",[e._v("chubby.ChubbyFile")]),e._v(". Instead, name the type "),a("code",[e._v("File")]),e._v(", which clients will write as "),a("code",[e._v("chubby.File")]),e._v(". Avoid meaningless package names like util, common, misc, API, types, and interfaces. See https://go.dev/doc/effective_go#package-names and https://go.dev/blog/package-names for more.")]),e._v(" "),a("p",[e._v("When naming packages, choose a name that is:")]),e._v(" "),a("ul",[a("li",[e._v("All lowercase. No capitals or underscores.")]),e._v(" "),a("li",[e._v("Does not need to be renamed using named imports at most call sites.")]),e._v(" "),a("li",[e._v("Short and succinct. Remember that the name is identified in full at every call site.")]),e._v(" "),a("li",[e._v("Not plural. For example, "),a("code",[e._v("net/url")]),e._v(", not "),a("code",[e._v("net/urls")]),e._v(".")]),e._v(" "),a("li",[e._v("Not "),a("code",[e._v("common")]),e._v(", "),a("code",[e._v("util")]),e._v(", "),a("code",[e._v("shared")]),e._v(", or "),a("code",[e._v("lib")]),e._v(". These are bad, uninformative names.")]),e._v(" "),a("li",[e._v("To distinguish SDK and Gaia with the same package name, add SDK or Gaia or the module name as the prefix. E.g.: "),a("code",[e._v("sdk/types")]),e._v(", "),a("code",[e._v("gaia/types")]),e._v(" and "),a("code",[e._v("gaia/x/globalfee/types")]),e._v(", can use "),a("code",[e._v("sdktype")]),e._v(", "),a("code",[e._v("gaiatype")]),e._v(", "),a("code",[e._v("globalfeetype")]),e._v(".")])]),e._v(" "),a("p",[e._v("See also "),a("a",{attrs:{href:"https://blog.golang.org/package-names",target:"_blank",rel:"noopener noreferrer"}},[e._v("Package Names"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://rakyll.org/style-packages/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Style guideline for Go packages"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"function-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#function-names"}},[e._v("#")]),e._v(" Function Names")]),e._v(" "),a("p",[e._v("We follow the Go community's convention of using "),a("a",{attrs:{href:"https://golang.org/doc/effective_go.html#mixed-caps",target:"_blank",rel:"noopener noreferrer"}},[e._v("MixedCaps for function names"),a("OutboundLink")],1),e._v(". An exception is made for test functions, which may contain underscores\nfor grouping related test cases, e.g., "),a("code",[e._v("TestMyFunction_WhatIsBeingTested")]),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"pointers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pointers"}},[e._v("#")]),e._v(" Pointers")]),e._v(" "),a("p",[e._v("Try to avoid pointers if you don't need them. Don't pass pointers as function arguments to save a few bytes. If a function refers to its argument "),a("code",[e._v("x")]),e._v(" only as "),a("code",[e._v("*x")]),e._v(" throughout, then the argument shouldn't be a pointer. Common instances of this include passing a pointer to a string ("),a("code",[e._v("*string")]),e._v(") or a pointer to an interface value ("),a("code",[e._v("*io.Reader")]),e._v("). In both cases, the value itself is a fixed size and can be passed directly. This advice does not apply to large structs or even small structs that might grow.")]),e._v(" "),a("p",[e._v("Choosing whether to use a value or pointer receiver on methods can be difficult, especially for new Go programmers. If in doubt, use a pointer, but there are times when a value receiver makes sense, usually for reasons of efficiency, such as for small unchanging structs or values of basic type. Some useful guidelines:")]),e._v(" "),a("ul",[a("li",[e._v("If the receiver is a map, func, or chan, don't use a pointer to them. If the receiver is a slice and the method doesn't reslice or reallocate the slice, don't use a pointer.")]),e._v(" "),a("li",[e._v("If the method needs to mutate the receiver, the receiver must be a pointer.")]),e._v(" "),a("li",[e._v("If the receiver is a struct that contains a sync.Mutex or similar synchronizing field, the receiver must be a pointer to avoid copying.")]),e._v(" "),a("li",[e._v("A pointer receiver is more efficient if the receiver is a large struct or array. How large is large? Assume it's equivalent to passing all its elements as arguments to the method. If that feels too large, it's also too large for the receiver.")]),e._v(" "),a("li",[e._v("Can functions or methods, either concurrently or when called from this method, mutate the receiver? A value type creates a copy of the receiver when the method is invoked, so outside updates will not be applied to this receiver. If changes must be visible in the original receiver, the receiver must be a pointer.")]),e._v(" "),a("li",[e._v("If the receiver is a struct, array, or slice and any of its elements is a pointer to something that might be mutating, prefer a pointer receiver, as it will make the intention clearer to the reader.")]),e._v(" "),a("li",[e._v("If the receiver is a small array or struct that is naturally a value type (for instance, something like the "),a("code",[e._v("time.Time")]),e._v(" type), with no mutable fields and no pointers, or is just a simple basic type such as int or string, a value receiver makes sense. A value receiver can reduce the amount of garbage generated; if a value is passed to a value method, an on-stack copy can be used instead of allocating it to the heap. (The compiler tries to be smart about avoiding this allocation, but it can't always succeed.) Don't choose a value receiver type for this reason without profiling first.")]),e._v(" "),a("li",[e._v("Don't mix receiver types. Choose either pointers or struct types for all available methods.")]),e._v(" "),a("li",[e._v("Finally, when in doubt, use a pointer receiver.")])]),e._v(" "),a("h3",{attrs:{id:"receiver-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiver-names"}},[e._v("#")]),e._v(" Receiver Names")]),e._v(" "),a("p",[e._v('The name of a method\'s receiver should be a reflection of its identity; often, a one or two-letter abbreviation of its type suffices (such as "c" or "cl" for "Client"). Don\'t use generic names such as "me", "this", or "self", identifiers typical of object-oriented languages that give the method a special meaning. In Go, the receiver of a method is just another parameter and, therefore, should be named accordingly. The name need not be as descriptive as that of a method argument, as its role is evident and serves no documentary purpose. It can be very short as it will appear on almost every line of every type of method; familiarity admits brevity. Be consistent, too: if you call the receiver "c" in one method, don\'t call it "cl" in another.')]),e._v(" "),a("p",[e._v("eg:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAocyAqSW50ZWdyYXRpb25UZXN0U3VpdGUpIFRlc3REZWNvZGUoKQo="}}),e._v(" "),a("h3",{attrs:{id:"variable-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variable-names"}},[e._v("#")]),e._v(" Variable Names")]),e._v(" "),a("p",[e._v("Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer "),a("code",[e._v("c")]),e._v(" to "),a("code",[e._v("lineCount")]),e._v(". Prefer "),a("code",[e._v("i")]),e._v(" to "),a("code",[e._v("sliceIndex")]),e._v(".")]),e._v(" "),a("p",[e._v("The basic rule: the further from its declaration that a name is used, the more descriptive the name must be. For a method receiver, one or two letters are sufficient. Common variables such as loop indices and readers can be a single letter ("),a("code",[e._v("i',")]),e._v("r`). More unusual things and global variables need more descriptive names.")]),e._v(" "),a("h3",{attrs:{id:"zero-value-mutexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#zero-value-mutexes"}},[e._v("#")]),e._v(" Zero-value Mutexes")]),e._v(" "),a("p",[e._v("The zero-value of "),a("code",[e._v("sync.Mutex")]),e._v(" and "),a("code",[e._v("sync.RWMutex")]),e._v(" is valid, so you rarely need a pointer to a mutex.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bXUgOj0gbmV3KHN5bmMuTXV0ZXgpCm11LkxvY2soKQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIG11IHN5bmMuTXV0ZXgKbXUuTG9jaygpCg=="}}),e._v(" "),a("p",[e._v("If you use a struct by pointer, then the mutex should be a non-pointer field. Do not embed the mutex on the struct, even if the struct is not exported.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTTWFwIHN0cnVjdCB7CiAgc3luYy5NdXRleAoKICBkYXRhIG1hcFtzdHJpbmddc3RyaW5nCn0KCmZ1bmMgKG0gKlNNYXApIEdldChrIHN0cmluZykgc3RyaW5nIHsKICBtLkxvY2soKQogIGRlZmVyIG0uVW5sb2NrKCkKCiAgcmV0dXJuIG0uZGF0YVtrXQp9Cg=="}}),e._v(" "),a("p",[e._v("The "),a("code",[e._v("Mutex")]),e._v(" field and the "),a("code",[e._v("Lock")]),e._v(" and "),a("code",[e._v("Unlock")]),e._v(" methods are unintentionally part of the exported API of "),a("code",[e._v("SMap")]),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTTWFwIHN0cnVjdCB7CiAgbXUgc3luYy5NdXRleAoKICBkYXRhIG1hcFtzdHJpbmddc3RyaW5nCn0KCmZ1bmMgKG0gKlNNYXApIEdldChrIHN0cmluZykgc3RyaW5nIHsKICBtLm11LkxvY2soKQogIGRlZmVyIG0ubXUuVW5sb2NrKCkKCiAgcmV0dXJuIG0uZGF0YVtrXQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"copy-slices-and-maps-at-boundaries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#copy-slices-and-maps-at-boundaries"}},[e._v("#")]),e._v(" Copy Slices and Maps at Boundaries")]),e._v(" "),a("p",[e._v("Slices and maps contain pointers to the underlying data, so be wary of scenarios when they need to be copied.")]),e._v(" "),a("h4",{attrs:{id:"receiving-slices-and-maps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiving-slices-and-maps"}},[e._v("#")]),e._v(" Receiving Slices and Maps")]),e._v(" "),a("p",[e._v("Remember that users can modify a map or slice you received as an argument if you store a reference to it.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZCAqRHJpdmVyKSBTZXRUcmlwcyh0cmlwcyBbXVRyaXApIHsKICBkLnRyaXBzID0gdHJpcHMKfQoKdHJpcHMgOj0gLi4uCmQxLlNldFRyaXBzKHRyaXBzKQoKLy8gRGlkIHlvdSBtZWFuIHRvIG1vZGlmeSBkMS50cmlwcz8KdHJpcHNbMF0gPSAuLi4K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZCAqRHJpdmVyKSBTZXRUcmlwcyh0cmlwcyBbXVRyaXApIHsKICBkLnRyaXBzID0gbWFrZShbXVRyaXAsIGxlbih0cmlwcykpCiAgY29weShkLnRyaXBzLCB0cmlwcykKfQoKdHJpcHMgOj0gLi4uCmQxLlNldFRyaXBzKHRyaXBzKQoKLy8gV2UgY2FuIG5vdyBtb2RpZnkgdHJpcHNbMF0gd2l0aG91dCBhZmZlY3RpbmcgZDEudHJpcHMuCnRyaXBzWzBdID0gLi4uCg=="}}),e._v(" "),a("h4",{attrs:{id:"returning-slices-and-maps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returning-slices-and-maps"}},[e._v("#")]),e._v(" Returning Slices and Maps")]),e._v(" "),a("p",[e._v("Similarly, be wary of user modifications to maps or slices exposing the internal state.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTdGF0cyBzdHJ1Y3QgewogIG11IHN5bmMuTXV0ZXgKICBjb3VudGVycyBtYXBbc3RyaW5nXWludAp9CgovLyBTbmFwc2hvdCByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRzLgpmdW5jIChzICpTdGF0cykgU25hcHNob3QoKSBtYXBbc3RyaW5nXWludCB7CiAgcy5tdS5Mb2NrKCkKICBkZWZlciBzLm11LlVubG9jaygpCgogIHJldHVybiBzLmNvdW50ZXJzCn0KCi8vIHNuYXBzaG90IGlzIG5vIGxvbmdlciBwcm90ZWN0ZWQgYnkgdGhlIG11dGV4LCBzbyBhbnkKLy8gYWNjZXNzIHRvIHRoZSBzbmFwc2hvdCBpcyBzdWJqZWN0IHRvIGRhdGEgcmFjZXMuCnNuYXBzaG90IDo9IHN0YXRzLlNuYXBzaG90KCkK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTdGF0cyBzdHJ1Y3QgewogIG11IHN5bmMuTXV0ZXgKICBjb3VudGVycyBtYXBbc3RyaW5nXWludAp9CgpmdW5jIChzICpTdGF0cykgU25hcHNob3QoKSBtYXBbc3RyaW5nXWludCB7CiAgcy5tdS5Mb2NrKCkKICBkZWZlciBzLm11LlVubG9jaygpCgogIHJlc3VsdCA6PSBtYWtlKG1hcFtzdHJpbmddaW50LCBsZW4ocy5jb3VudGVycykpCiAgZm9yIGssIHYgOj0gcmFuZ2Ugcy5jb3VudGVycyB7CiAgICByZXN1bHRba10gPSB2CiAgfQogIHJldHVybiByZXN1bHQKfQoKLy8gU25hcHNob3QgaXMgbm93IGEgY29weS4Kc25hcHNob3QgOj0gc3RhdHMuU25hcHNob3QoKQo="}}),e._v(" "),a("h3",{attrs:{id:"errors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errors"}},[e._v("#")]),e._v(" Errors")]),e._v(" "),a("h4",{attrs:{id:"error-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-types"}},[e._v("#")]),e._v(" Error Types")]),e._v(" "),a("p",[e._v("There are a few options for declaring errors. Consider the following before picking the option best suited for your use case.")]),e._v(" "),a("ul",[a("li",[e._v("Does the caller need to match the error to handle it? If yes, we must support the "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#Is",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.Is")]),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#As",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.As")]),a("OutboundLink")],1),e._v(" functions by declaring a top-level error variable or a custom type.")]),e._v(" "),a("li",[e._v("Is the error message a static string, or is it a dynamic string that requires contextual information? We can use "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1),e._v(", but for the latter, we must use "),a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1),e._v(" or a custom error type.")]),e._v(" "),a("li",[e._v("Are we propagating a new error returned by a downstream function? See the "),a("a",{attrs:{href:"#error-wrapping"}},[e._v("section on error wrapping")]),e._v(".")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Error matching?")]),e._v(" "),a("th",[e._v("Error Message")]),e._v(" "),a("th",[e._v("Guidance")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("No")]),e._v(" "),a("td",[e._v("static")]),e._v(" "),a("td",[a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("No")]),e._v(" "),a("td",[e._v("dynamic")]),e._v(" "),a("td",[a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("Yes")]),e._v(" "),a("td",[e._v("static")]),e._v(" "),a("td",[e._v("top-level "),a("code",[e._v("var")]),e._v(" with "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("Yes")]),e._v(" "),a("td",[e._v("dynamic")]),e._v(" "),a("td",[e._v("custom "),a("code",[e._v("error")]),e._v(" type")])])])]),e._v(" "),a("p",[e._v("For example, use "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1),e._v(" for an error with a static string. Export this error as a variable to support matching it with "),a("code",[e._v("errors.Is")]),e._v(" if the caller needs to match and handle this error.")]),e._v(" "),a("ul",[a("li",[e._v("No error matching:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCmZ1bmMgT3BlbigpIGVycm9yIHsKICByZXR1cm4gZXJyb3JzLk5ldygmcXVvdDtjb3VsZCBub3Qgb3BlbiZxdW90OykKfQoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigpOyBlcnIgIT0gbmlsIHsKICAvL0Nhbid0IGhhbmRsZSB0aGUgZXJyb3IuCiAgcGFuaWMoJnF1b3Q7dW5rbm93biBlcnJvciZxdW90OykKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCnZhciBFcnJDb3VsZE5vdE9wZW4gPSBlcnJvcnMuTmV3KCZxdW90O2NvdWxkIG5vdCBvcGVuJnF1b3Q7KQoKZnVuYyBPcGVuKCkgZXJyb3IgewogIHJldHVybiBFcnJDb3VsZE5vdE9wZW4KfQoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigpOyBlcnIgIT0gbmlsIHsKICBpZiBlcnJvcnMuSXMoZXJyLCBmb28uRXJyQ291bGROb3RPcGVuKSB7CiAgICAvLyBoYW5kbGUgdGhlIGVycm9yCiAgfSBlbHNlIHsKICAgIHBhbmljKCZxdW90O3Vua25vd24gZXJyb3ImcXVvdDspCiAgfQp9Cg=="}}),e._v(" "),a("p",[e._v("For an error with a dynamic string, use "),a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1),e._v(" if the caller does not need to match it and a custom "),a("code",[e._v("error")]),e._v(" if the caller does need to match it.")]),e._v(" "),a("ul",[a("li",[e._v("No error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCmZ1bmMgT3BlbihmaWxlIHN0cmluZykgZXJyb3IgewogIHJldHVybiBmbXQuRXJyb3JmKCZxdW90O2ZpbGUgJXEgbm90IGZvdW5kJnF1b3Q7LCBmaWxlKQp9CgovLyBwYWNrYWdlIGJhcgoKaWYgZXJyIDo9IGZvby5PcGVuKCZxdW90O3Rlc3RmaWxlLnR4dCZxdW90Oyk7IGVyciAhPSBuaWwgewogIC8vQ2FuJ3QgaGFuZGxlIHRoZSBlcnJvci4KICBwYW5pYygmcXVvdDt1bmtub3duIGVycm9yJnF1b3Q7KQp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCnR5cGUgTm90Rm91bmRFcnJvciBzdHJ1Y3QgewogIEZpbGUgc3RyaW5nCn0KCmZ1bmMgKGUgKk5vdEZvdW5kRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7ZmlsZSAlcSBub3QgZm91bmQmcXVvdDssIGUuRmlsZSkKfQoKZnVuYyBPcGVuKGZpbGUgc3RyaW5nKSBlcnJvciB7CiAgcmV0dXJuICZhbXA7Tm90Rm91bmRFcnJvcntGaWxlOiBmaWxlfQp9CgoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigmcXVvdDt0ZXN0ZmlsZS50eHQmcXVvdDspOyBlcnIgIT0gbmlsIHsKICB2YXIgbm90Rm91bmQgKk5vdEZvdW5kRXJyb3IKICBpZiBlcnJvcnMuQXMoZXJyLCAmYW1wO25vdEZvdW5kKSB7CiAgICAvLyBoYW5kbGUgdGhlIGVycm9yCiAgfSBlbHNlIHsKICAgIHBhbmljKCZxdW90O3Vua25vd24gZXJyb3ImcXVvdDspCiAgfQp9Cg=="}}),e._v(" "),a("p",[e._v("Note that if you export error variables or types from a package, they will become part of the public API of the package.")]),e._v(" "),a("h4",{attrs:{id:"error-wrapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-wrapping"}},[e._v("#")]),e._v(" Error Wrapping")]),e._v(" "),a("p",[e._v("There are three main options for propagating errors if a call fails:")]),e._v(" "),a("ul",[a("li",[e._v("return the original error as-is")]),e._v(" "),a("li",[e._v("add context with "),a("code",[e._v("fmt.Errorf")]),e._v(" and the "),a("code",[e._v("%w")]),e._v(" verb")]),e._v(" "),a("li",[e._v("add context with "),a("code",[e._v("fmt.Errorf")]),e._v(" and the "),a("code",[e._v("%v")]),e._v(" verb")])]),e._v(" "),a("p",[e._v("Return the original error as-is if there is no additional context to add. This maintains the original error type and message. This is well suited for cases when the underlying error message has sufficient information to track down where it came from.")]),e._v(" "),a("p",[e._v('Otherwise, add context to the error message where possible so that instead of a vague error such as "connection refused", you get more valuable errors such as "call service foo: connection refused".')]),e._v(" "),a("p",[e._v("Use "),a("code",[e._v("fmt.Errorf")]),e._v(" to add context to your errors, picking between the "),a("code",[e._v("%w")]),e._v(" or "),a("code",[e._v("%v")]),e._v(" verbs based on whether the caller should be able to match and extract the underlying cause.")]),e._v(" "),a("ul",[a("li",[e._v("Use "),a("code",[e._v("%w")]),e._v(" if the caller should have access to the underlying error. This is a good default for most wrapped errors, but be aware that callers may begin to rely on this behavior. So for cases where the wrapped error is a known "),a("code",[e._v("var")]),e._v(" or type, document and test it as part of your function's contract.")]),e._v(" "),a("li",[e._v("Use "),a("code",[e._v("%v")]),e._v(" to obfuscate the underlying error. Callers will be unable to match it, but you can switch to "),a("code",[e._v("%w")]),e._v(" in the future if needed.")])]),e._v(" "),a("p",[e._v('When adding context to returned errors, keep the context succinct by avoiding phrases like "failed to", which state the obvious and pile up as the error percolates up through the stack:')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"cywgZXJyIDo9IHN0b3JlLk5ldygpCmlmIGVyciAhPSBuaWwgewogICAgcmV0dXJuIGZtdC5FcnJvcmYoCiAgICAgICAgJnF1b3Q7ZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzdG9yZTogJXcmcXVvdDssIGVycikKfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmFpbGVkIHRvIHg6IGZhaWxlZCB0byB5OiBmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHN0b3JlOiB0aGUgZXJyb3IK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"cywgZXJyIDo9IHN0b3JlLk5ldygpCmlmIGVyciAhPSBuaWwgewogICAgcmV0dXJuIGZtdC5FcnJvcmYoCiAgICAgICAgJnF1b3Q7bmV3IHN0b3JlOiAldyZxdW90OywgZXJyKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"eDogeTogbmV3IHN0b3JlOiB0aGUgZXJyb3IK"}}),e._v(" "),a("p",[e._v("However, once the error is sent to another system, it should be clear that the message is an error (e.g., an "),a("code",[e._v("err")]),e._v(' tag or "Failed" prefix in logs).')]),e._v(" "),a("p",[e._v("See also "),a("a",{attrs:{href:"https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully",target:"_blank",rel:"noopener noreferrer"}},[e._v("Don't just check errors, handle them gracefully"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-naming"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-naming"}},[e._v("#")]),e._v(" Error Naming")]),e._v(" "),a("p",[e._v("For error values stored as global variables, use the prefix "),a("code",[e._v("Err")]),e._v(" or "),a("code",[e._v("err")]),e._v(" depending on whether they're exported.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyICgKICAvLyBUaGUgZm9sbG93aW5nIHR3byBlcnJvcnMgYXJlIGV4cG9ydGVkCiAgLy8gc28gdGhhdCB1c2VycyBvZiB0aGlzIHBhY2thZ2UgY2FuIG1hdGNoIHRoZW0KICAvLyB3aXRoIGVycm9ycy5Jcy4KCiAgRXJyQnJva2VuTGluayA9IGVycm9ycy5OZXcoJnF1b3Q7bGluayBpcyBicm9rZW4mcXVvdDspCiAgRXJyQ291bGROb3RPcGVuID0gZXJyb3JzLk5ldygmcXVvdDtjb3VsZCBub3Qgb3BlbiZxdW90OykKCiAgLy8gVGhpcyBlcnJvciBpcyBub3QgZXhwb3J0ZWQgYmVjYXVzZQogIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBpdCBwYXJ0IG9mIG91ciBwdWJsaWMgQVBJLgogIC8vIFdlIG1heSBzdGlsbCB1c2UgaXQgaW5zaWRlIHRoZSBwYWNrYWdlCiAgLy8gd2l0aCBlcnJvcnMuSXMuCgogIGVyck5vdEZvdW5kID0gZXJyb3JzLk5ldygmcXVvdDtub3QgZm91bmQmcXVvdDspCikK"}}),e._v(" "),a("p",[e._v("For custom error types, use the suffix "),a("code",[e._v("Error")]),e._v(" instead.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gU2ltaWxhcmx5LCB0aGlzIGVycm9yIGlzIGV4cG9ydGVkCi8vIHNvIHRoYXQgdXNlcnMgb2YgdGhpcyBwYWNrYWdlIGNhbiBtYXRjaCBpdAovLyB3aXRoIGVycm9ycy5Bcy4KCnR5cGUgTm90Rm91bmRFcnJvciBzdHJ1Y3QgewogIEZpbGUgc3RyaW5nCn0KCmZ1bmMgKGUgKk5vdEZvdW5kRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7ZmlsZSAlcSBub3QgZm91bmQmcXVvdDssIGUuRmlsZSkKfQoKLy8gQW5kIHRoaXMgZXJyb3IgaXMgbm90IGV4cG9ydGVkIGJlY2F1c2UKLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGl0IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuCi8vIFdlIGNhbiBzdGlsbCB1c2UgaXQgaW5zaWRlIHRoZSBwYWNrYWdlCi8vIHdpdGggZXJyb3JzLkFzLgoKdHlwZSByZXNvbHZlRXJyb3Igc3RydWN0IHsKICBQYXRoIHN0cmluZwp9CgpmdW5jIChlICpyZXNvbHZlRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7cmVzb2x2ZSAlcSZxdW90OywgZS5QYXRoKQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"handle-type-assertion-failures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#handle-type-assertion-failures"}},[e._v("#")]),e._v(" Handle Type Assertion Failures")]),e._v(" "),a("p",[e._v("The single return value form of a "),a("a",{attrs:{href:"https://golang.org/ref/spec#Type_assertions",target:"_blank",rel:"noopener noreferrer"}},[e._v("type assertion"),a("OutboundLink")],1),e._v(' will panic on an incorrect type. Therefore, always use the "comma ok" idiom.')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCA6PSBpLihzdHJpbmcpCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCwgb2sgOj0gaS4oc3RyaW5nKQppZiAhb2sgewogIC8vIGhhbmRsZSB0aGUgZXJyb3IgZ3JhY2VmdWxseQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"avoid-embedding-types-in-public-structs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-embedding-types-in-public-structs"}},[e._v("#")]),e._v(" Avoid Embedding Types in Public Structs")]),e._v(" "),a("p",[e._v("These embedded types leak implementation details, inhibit type evolution, and obscure documentation.")]),e._v(" "),a("p",[e._v("Assuming you have implemented a variety of list types using a shared "),a("code",[e._v("AbstractList")]),e._v(", avoid embedding the "),a("code",[e._v("AbstractList")]),e._v(" in your concrete list implementations. Instead, hand-write only the methods to your concrete list that will delegate to the abstract list.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBBYnN0cmFjdExpc3Qgc3RydWN0IHt9CgovLyBBZGQgYWRkcyBhbiBlbnRpdHkgdG8gdGhlIGxpc3QuCmZ1bmMgKGwgKkFic3RyYWN0TGlzdCkgQWRkKGUgRW50aXR5KSB7CiAgLy8gLi4uCn0KCi8vIFJlbW92ZSByZW1vdmVzIGFuIGVudGl0eSBmcm9tIHRoZSBsaXN0LgpmdW5jIChsICpBYnN0cmFjdExpc3QpIFJlbW92ZShlIEVudGl0eSkgewogIC8vIC4uLgp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICAqQWJzdHJhY3RMaXN0Cn0K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICBsaXN0ICpBYnN0cmFjdExpc3QKfQoKLy8gQWRkIGFkZHMgYW4gZW50aXR5IHRvIHRoZSBsaXN0LgpmdW5jIChsICpDb25jcmV0ZUxpc3QpIEFkZChlIEVudGl0eSkgewogIGwubGlzdC5BZGQoZSkKfQoKLy8gUmVtb3ZlIHJlbW92ZXMgYW4gZW50aXR5IGZyb20gdGhlIGxpc3QuCmZ1bmMgKGwgKkNvbmNyZXRlTGlzdCkgUmVtb3ZlKGUgRW50aXR5KSB7CiAgbC5saXN0LlJlbW92ZShlKQp9Cg=="}}),e._v(" "),a("p",[e._v("Go allows "),a("a",{attrs:{href:"https://golang.org/doc/effective_go.html#embedding",target:"_blank",rel:"noopener noreferrer"}},[e._v("type embedding"),a("OutboundLink")],1),e._v(" as a compromise between inheritance and composition. The outer type gets implicit copies of the embedded type's methods. These methods, by default, delegate to the same method of the embedded instance.")]),e._v(" "),a("p",[e._v("The struct also gains a field by the same name as the type. So, if the embedded type is public, the field is public. To maintain backward compatibility, every future version of the outer type must keep the embedded type. An embedded type is rarely necessary. It is a convenience that helps you avoid writing tedious delegate methods.")]),e._v(" "),a("p",[e._v("Even embedding a compatible AbstractList "),a("em",[e._v("interface")]),e._v(" instead of the struct would offer the developer more flexibility to change in the future but still leak the detail that the concrete lists use an abstract implementation.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQWJzdHJhY3RMaXN0IGlzIGEgZ2VuZXJhbGl6ZWQgaW1wbGVtZW50YXRpb24KLy8gZm9yIHZhcmlvdXMga2luZHMgb2YgbGlzdHMgb2YgZW50aXRpZXMuCnR5cGUgQWJzdHJhY3RMaXN0IGludGVyZmFjZSB7CiAgQWRkKEVudGl0eSkKICBSZW1vdmUoRW50aXR5KQp9CgovLyBDb25jcmV0ZUxpc3QgaXMgYSBsaXN0IG9mIGVudGl0aWVzLgp0eXBlIENvbmNyZXRlTGlzdCBzdHJ1Y3QgewogIEFic3RyYWN0TGlzdAp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICBsaXN0IEFic3RyYWN0TGlzdAp9CgovLyBBZGQgYWRkcyBhbiBlbnRpdHkgdG8gdGhlIGxpc3QuCmZ1bmMgKGwgKkNvbmNyZXRlTGlzdCkgQWRkKGUgRW50aXR5KSB7CiAgbC5saXN0LkFkZChlKQp9CgovLyBSZW1vdmUgcmVtb3ZlcyBhbiBlbnRpdHkgZnJvbSB0aGUgbGlzdC4KZnVuYyAobCAqQ29uY3JldGVMaXN0KSBSZW1vdmUoZSBFbnRpdHkpIHsKICBsLmxpc3QuUmVtb3ZlKGUpCn0K"}}),e._v(" "),a("p",[e._v("Either with an embedded struct or an embedded interface, the embedded type places limits on the evolution of the type.")]),e._v(" "),a("ul",[a("li",[e._v("Adding methods to an embedded interface is a breaking change.")]),e._v(" "),a("li",[e._v("Removing methods from an embedded struct is a breaking change.")]),e._v(" "),a("li",[e._v("Removing the embedded type is a breaking change.")]),e._v(" "),a("li",[e._v("Replacing the embedded type, even with an alternative that satisfies the same\ninterface, is a breaking change.")])]),e._v(" "),a("p",[e._v("Although writing these delegate methods is tedious, the additional effort hides an implementation detail, leaves more opportunities for change, and eliminates indirection for discovering the whole List interface in the documentation.")]),e._v(" "),a("h3",{attrs:{id:"avoid-init"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-init"}},[e._v("#")]),e._v(" Avoid "),a("code",[e._v("init()")])]),e._v(" "),a("p",[e._v("Avoid "),a("code",[e._v("init()")]),e._v(" where possible. When "),a("code",[e._v("init()")]),e._v(" is unavoidable or desirable, code should attempt to:")]),e._v(" "),a("ol",[a("li",[e._v("Be completely deterministic, regardless of program environment or invocation.")]),e._v(" "),a("li",[e._v("Avoid depending on the ordering or side-effects of other "),a("code",[e._v("init()")]),e._v(" functions. While the "),a("code",[e._v("init()")]),e._v(" order is well-known, code can change, and thus relationships between "),a("code",[e._v("init()")]),e._v(" functions can make code brittle and error-prone.")]),e._v(" "),a("li",[e._v("Avoid accessing or manipulating global or environment states, such as machine information, environment variables, working directory, program arguments/inputs, etc.")]),e._v(" "),a("li",[e._v("Avoid I/O, including filesystem, network, and system calls.")])]),e._v(" "),a("p",[e._v("Code that cannot satisfy these requirements likely belongs as a helper to be called as part of "),a("code",[e._v("main()")]),e._v(" (or elsewhere in a program's lifecycle), or be written as part of "),a("code",[e._v("main()")]),e._v(' itself. In particular, libraries intended to be used by other programs should take special care to be completely deterministic and not perform "init magic".')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBGb28gc3RydWN0IHsKICAgIC8vIC4uLgp9Cgp2YXIgX2RlZmF1bHRGb28gRm9vCgpmdW5jIGluaXQoKSB7CiAgICBfZGVmYXVsdEZvbyA9IEZvb3sKICAgICAgICAvLyAuLi4KICAgIH0KfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBDb25maWcgc3RydWN0IHsKICAgIC8vIC4uLgp9Cgp2YXIgX2NvbmZpZyBDb25maWcKCmZ1bmMgaW5pdCgpIHsKICAgIC8vIEJhZDogYmFzZWQgb24gY3VycmVudCBkaXJlY3RvcnkKICAgIGN3ZCwgXyA6PSBvcy5HZXR3ZCgpCgogICAgLy8gQmFkOiBJL08KICAgIHJhdywgXyA6PSBvcy5SZWFkRmlsZSgKICAgICAgICBwYXRoLkpvaW4oY3dkLCAmcXVvdDtjb25maWcmcXVvdDssICZxdW90O2NvbmZpZy55YW1sJnF1b3Q7KSwKICAgICkKCiAgICB5YW1sLlVubWFyc2hhbChyYXcsICZhbXA7X2NvbmZpZykKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIF9kZWZhdWx0Rm9vID0gRm9vewogICAgLy8gLi4uCn0KCi8vIG9yLCBiZXR0ZXIsIGZvciB0ZXN0YWJpbGl0eToKCnZhciBfZGVmYXVsdEZvbyA9IGRlZmF1bHRGb28oKQoKZnVuYyBkZWZhdWx0Rm9vKCkgRm9vIHsKICAgIHJldHVybiBGb297CiAgICAgICAgLy8gLi4uCiAgICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBDb25maWcgc3RydWN0IHsKICAgIC8vIC4uLgp9CgpmdW5jIGxvYWRDb25maWcoKSBDb25maWcgewogICAgY3dkLCBlcnIgOj0gb3MuR2V0d2QoKQogICAgLy8gaGFuZGxlIGVycgoKICAgIHJhdywgZXJyIDo9IG9zLlJlYWRGaWxlKAogICAgICAgIHBhdGguSm9pbihjd2QsICZxdW90O2NvbmZpZyZxdW90OywgJnF1b3Q7Y29uZmlnLnlhbWwmcXVvdDspLAogICAgKQogICAgLy8gaGFuZGxlIGVycgoKICAgIHZhciBjb25maWcgQ29uZmlnCiAgICB5YW1sLlVubWFyc2hhbChyYXcsICZhbXA7Y29uZmlnKQoKICAgIHJldHVybiBjb25maWcKfQo="}}),e._v(" "),a("p",[e._v("Considering the above, some situations in which "),a("code",[e._v("init()")]),e._v(" may be preferable or necessary might include:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Complex expressions that cannot be represented as single assignments.")])]),e._v(" "),a("li",[a("p",[e._v("Pluggable hooks, such as "),a("code",[e._v("database/sql")]),e._v(" dialects, encoding type registries, etc.")])]),e._v(" "),a("li",[a("p",[e._v("Optimizations to "),a("a",{attrs:{href:"https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google Cloud Functions"),a("OutboundLink")],1),e._v(" and other forms of deterministic precomputation.")])])]),e._v(" "),a("h2",{attrs:{id:"performance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performance"}},[e._v("#")]),e._v(" Performance")]),e._v(" "),a("p",[e._v("Performance-specific guidelines apply only to the hot path.")]),e._v(" "),a("h4",{attrs:{id:"prefer-strconv-over-fmt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prefer-strconv-over-fmt"}},[e._v("#")]),e._v(" Prefer strconv over fmt")]),e._v(" "),a("p",[e._v("When converting primitives to/from strings, "),a("code",[e._v("strconv")]),e._v(" is faster than "),a("code",[e._v("fmt")]),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICBzIDo9IGZtdC5TcHJpbnQocmFuZC5JbnQoKSkKfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrRm10U3ByaW50LTQgICAgMTQzIG5zL29wICAgIDIgYWxsb2NzL29wCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICBzIDo9IHN0cmNvbnYuSXRvYShyYW5kLkludCgpKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrU3RyY29udi00ICAgIDY0LjIgbnMvb3AgICAgMSBhbGxvY3Mvb3AK"}}),e._v(" "),a("p",[a("strong",[e._v('avoid use "+" for string concatenation')])]),e._v(" "),a("h4",{attrs:{id:"avoid-string-to-byte-conversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-string-to-byte-conversion"}},[e._v("#")]),e._v(" Avoid string-to-byte conversion")]),e._v(" "),a("p",[e._v("Do not create byte slices from a fixed string repeatedly. Instead, perform the conversion once and capture the result.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICB3LldyaXRlKFtdYnl0ZSgmcXVvdDtIZWxsbyB3b3JsZCZxdW90OykpCn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrQmFkLTQgICA1MDAwMDAwMCAgIDIyLjIgbnMvb3AK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZGF0YSA6PSBbXWJ5dGUoJnF1b3Q7SGVsbG8gd29ybGQmcXVvdDspCmZvciBpIDo9IDA7IGkgJmx0OyBiLk47IGkrKyB7CiAgdy5Xcml0ZShkYXRhKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrR29vZC00ICA1MDAwMDAwMDAgICAzLjI1IG5zL29wCg=="}}),e._v(" "),a("h4",{attrs:{id:"prefer-specifying-container-capacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prefer-specifying-container-capacity"}},[e._v("#")]),e._v(" Prefer Specifying Container Capacity")]),e._v(" "),a("p",[e._v("Specify container capacity where possible to allocate memory for the container up front. This minimizes subsequent allocations (copying and resizing the container) as elements are added.")]),e._v(" "),a("h5",{attrs:{id:"specifying-map-capacity-hints"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#specifying-map-capacity-hints"}},[e._v("#")]),e._v(" Specifying Map Capacity Hints")]),e._v(" "),a("p",[e._v("Provide capacity hints when initializing maps with "),a("code",[e._v("make()")]),e._v(" where possible.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bWFrZShtYXBbVDFdVDIsIGhpbnQpCg=="}}),e._v(" "),a("p",[e._v("Providing a capacity hint to "),a("code",[e._v("make()")]),e._v(" tries to right-size the map at initialization time, which reduces the need for growing the map and allocations as elements are added to the map.")]),e._v(" "),a("p",[e._v("Unlike slices, map capacity hints do not guarantee complete, preemptive allocation but are used to approximate the number of hashmap buckets required. Consequently, allocations may still occur when adding elements to the map, even up to the specified capacity.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bSA6PSBtYWtlKG1hcFtzdHJpbmddb3MuRmlsZUluZm8pCgpmaWxlcywgXyA6PSBvcy5SZWFkRGlyKCZxdW90Oy4vZmlsZXMmcXVvdDspCmZvciBfLCBmIDo9IHJhbmdlIGZpbGVzIHsKICAgIG1bZi5OYW1lKCldID0gZgp9Cg=="}}),e._v(" "),a("p",[e._v("`m' is created without a size hint; there may be more allocations at assignment time.")]),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CmZpbGVzLCBfIDo9IG9zLlJlYWREaXIoJnF1b3Q7Li9maWxlcyZxdW90OykKCm0gOj0gbWFrZShtYXBbc3RyaW5nXW9zLkRpckVudHJ5LCBsZW4oZmlsZXMpKQpmb3IgXywgZiA6PSByYW5nZSBmaWxlcyB7CiAgICBtW2YuTmFtZSgpXSA9IGYKfQo="}}),e._v(" "),a("p",[e._v("`m' is created with a size hint; there may be fewer allocations at assignment time.")]),e._v(" "),a("h5",{attrs:{id:"specifying-slice-capacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#specifying-slice-capacity"}},[e._v("#")]),e._v(" Specifying Slice Capacity")]),e._v(" "),a("p",[e._v("Where possible, provide capacity hints when initializing slices with "),a("code",[e._v("make()")]),e._v(", particularly when appending.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bWFrZShbXVQsIGxlbmd0aCwgY2FwYWNpdHkpCg=="}}),e._v(" "),a("p",[e._v("Unlike maps, slice capacity is not a hint: the compiler will allocate enough memory for the capacity of the slice as provided to "),a("code",[e._v("make()")]),e._v(", which means that subsequent "),a("code",[e._v("append()")]),e._v(" operations will incur zero allocations (until the length of the slice matches the capacity, after which any appends will require a resize to hold additional elements).")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIG4gOj0gMDsgbiAmbHQ7IGIuTjsgbisrIHsKICBkYXRhIDo9IG1ha2UoW11pbnQsIDApCiAgZm9yIGsgOj0gMDsgayAmbHQ7IHNpemU7IGsrK3sKICAgIGRhdGEgPSBhcHBlbmQoZGF0YSwgaykKICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrQmFkLTQgICAgMTAwMDAwMDAwICAgIDIuNDhzCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIG4gOj0gMDsgbiAmbHQ7IGIuTjsgbisrIHsKICBkYXRhIDo9IG1ha2UoW11pbnQsIDAsIHNpemUpCiAgZm9yIGsgOj0gMDsgayAmbHQ7IHNpemU7IGsrK3sKICAgIGRhdGEgPSBhcHBlbmQoZGF0YSwgaykKICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrR29vZC00ICAgMTAwMDAwMDAwICAgIDAuMjFzCg=="}}),e._v(" "),a("h3",{attrs:{id:"function-grouping-and-ordering"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#function-grouping-and-ordering"}},[e._v("#")]),e._v(" Function Grouping and Ordering")]),e._v(" "),a("ul",[a("li",[e._v("Functions should be sorted in rough call order.")]),e._v(" "),a("li",[e._v("The receiver should group functions in a file.")])]),e._v(" "),a("p",[e._v("Therefore, exported functions should appear first in a file, after "),a("code",[e._v("struct")]),e._v(", "),a("code",[e._v("const")]),e._v(", and "),a("code",[e._v("var")]),e._v(" definitions.")]),e._v(" "),a("p",[e._v("A "),a("code",[e._v("newXYZ()")]),e._v("/"),a("code",[e._v("NewXYZ()")]),e._v(" may appear after the type is defined but before the rest of the methods on the receiver.")]),e._v(" "),a("p",[e._v("Since the receiver groups functions, plain utility functions should appear toward the end of the file.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAocyAqc29tZXRoaW5nKSBDb3N0KCkgewogIHJldHVybiBjYWxjQ29zdChzLndlaWdodHMpCn0KCnR5cGUgc29tZXRoaW5nIHN0cnVjdHsgLi4uIH0KCmZ1bmMgY2FsY0Nvc3QobiBbXWludCkgaW50IHsuLi59CgpmdW5jIChzICpzb21ldGhpbmcpIFN0b3AoKSB7Li4ufQoKZnVuYyBuZXdTb21ldGhpbmcoKSAqc29tZXRoaW5nIHsKICAgIHJldHVybiAmYW1wO3NvbWV0aGluZ3t9Cn0K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBzb21ldGhpbmcgc3RydWN0eyAuLi4gfQoKZnVuYyBuZXdTb21ldGhpbmcoKSAqc29tZXRoaW5nIHsKICAgIHJldHVybiAmYW1wO3NvbWV0aGluZ3t9Cn0KCmZ1bmMgKHMgKnNvbWV0aGluZykgQ29zdCgpIHsKICByZXR1cm4gY2FsY0Nvc3Qocy53ZWlnaHRzKQp9CgpmdW5jIChzICpzb21ldGhpbmcpIFN0b3AoKSB7Li4ufQoKZnVuYyBjYWxjQ29zdChuIFtdaW50KSBpbnQgey4uLn0K"}}),e._v(" "),a("h3",{attrs:{id:"reduce-nesting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reduce-nesting"}},[e._v("#")]),e._v(" Reduce Nesting")]),e._v(" "),a("p",[e._v("Code should reduce nesting where possible by handling error cases/special conditions first and returning early or continuing the loop. Reduce the amount of code that is nested on multiple levels.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIF8sIHYgOj0gcmFuZ2UgZGF0YSB7CiAgaWYgdi5GMSA9PSAxIHsKICAgIHYgPSBwcm9jZXNzKHYpCiAgICBpZiBlcnIgOj0gdi5DYWxsKCk7IGVyciA9PSBuaWwgewogICAgICB2LlNlbmQoKQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGVycgogICAgfQogIH0gZWxzZSB7CiAgICBsb2cuUHJpbnRmKCZxdW90O0ludmFsaWQgdjogJXYmcXVvdDssIHYpCiAgfQp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIF8sIHYgOj0gcmFuZ2UgZGF0YSB7CiAgaWYgdi5GMSAhPSAxIHsKICAgIGxvZy5QcmludGYoJnF1b3Q7SW52YWxpZCB2OiAldiZxdW90OywgdikKICAgIGNvbnRpbnVlCiAgfQoKICB2ID0gcHJvY2Vzcyh2KQogIGlmIGVyciA6PSB2LkNhbGwoKTsgZXJyICE9IG5pbCB7CiAgICByZXR1cm4gZXJyCiAgfQogIHYuU2VuZCgpCn0K"}}),e._v(" "),a("h3",{attrs:{id:"writing-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#writing-tests"}},[e._v("#")]),e._v(" Writing Tests")]),e._v(" "),a("p",[e._v("Use table-driven tests with "),a("a",{attrs:{href:"https://blog.golang.org/subtests",target:"_blank",rel:"noopener noreferrer"}},[e._v("subtests"),a("OutboundLink")],1),e._v(" to avoid duplicating code when the core\ntest logic is repetitive.")]),e._v(" "),a("ul",[a("li",[e._v("Bad:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gZnVuYyBUZXN0U3BsaXRIb3N0UG9ydCh0ICp0ZXN0aW5nLlQpCgpob3N0LCBwb3J0LCBlcnIgOj0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTkyLjAuMi4wOjgwMDAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsxOTIuMC4yLjAmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDs4MDAwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTkyLjAuMi4wOmh0dHAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsxOTIuMC4yLjAmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDtodHRwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7OjgwMDAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDs4MDAwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTo4JnF1b3Q7KQpyZXF1aXJlLk5vRXJyb3IodCwgZXJyKQphc3NlcnQuRXF1YWwodCwgJnF1b3Q7MSZxdW90OywgaG9zdCkKYXNzZXJ0LkVxdWFsKHQsICZxdW90OzgmcXVvdDssIHBvcnQpCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gZnVuYyBUZXN0U3BsaXRIb3N0UG9ydCh0ICp0ZXN0aW5nLlQpCgp0ZXN0cyA6PSBbXXN0cnVjdHsKICBnaXZlICAgICBzdHJpbmcKICB3YW50SG9zdCBzdHJpbmcKICB3YW50UG9ydCBzdHJpbmcKfXsKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTkyLjAuMi4wOjgwMDAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7MTkyLjAuMi4wJnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90OzgwMDAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTkyLjAuMi4wOmh0dHAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7MTkyLjAuMi4wJnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90O2h0dHAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7OjgwMDAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7JnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90OzgwMDAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTo4JnF1b3Q7LAogICAgd2FudEhvc3Q6ICZxdW90OzEmcXVvdDssCiAgICB3YW50UG9ydDogJnF1b3Q7OCZxdW90OywKICB9LAp9Cgpmb3IgXywgdHQgOj0gcmFuZ2UgdGVzdHMgewogIHQuUnVuKHR0LmdpdmUsIGZ1bmModCAqdGVzdGluZy5UKSB7CiAgICBob3N0LCBwb3J0LCBlcnIgOj0gbmV0LlNwbGl0SG9zdFBvcnQodHQuZ2l2ZSkKICAgIHJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCiAgICBhc3NlcnQuRXF1YWwodCwgdHQud2FudEhvc3QsIGhvc3QpCiAgICBhc3NlcnQuRXF1YWwodCwgdHQud2FudFBvcnQsIHBvcnQpCiAgfSkKfQo="}}),e._v(" "),a("p",[e._v("Test tables make it easier to add context to error messages, reduce duplicate logic, and add new test cases.")]),e._v(" "),a("p",[e._v("We follow the convention that the slice of structs is referred to as "),a("code",[e._v("tests")]),e._v(" and each test case "),a("code",[e._v("tt")]),e._v(". Further, we encourage explicating the input and output values for each test case with "),a("code",[e._v("give")]),e._v(" and "),a("code",[e._v("want")]),e._v(" prefixes.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dGVzdHMgOj0gW11zdHJ1Y3R7CiAgZ2l2ZSAgICAgc3RyaW5nCiAgd2FudEhvc3Qgc3RyaW5nCiAgd2FudFBvcnQgc3RyaW5nCn17CiAgLy8gLi4uCn0KCmZvciBfLCB0dCA6PSByYW5nZSB0ZXN0cyB7CiAgLy8gLi4uCn0K"}}),e._v(" "),a("p",[e._v("Parallel tests, like some specialized loops (for example, those that spawn goroutines or capture references as part of the loop body), must take care to explicitly assign loop variables within the loop's scope to ensure that they hold the expected values.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dGVzdHMgOj0gW11zdHJ1Y3R7CiAgZ2l2ZSBzdHJpbmcKICAvLyAuLi4KfXsKICAvLyAuLi4KfQoKZm9yIF8sIHR0IDo9IHJhbmdlIHRlc3RzIHsKICB0dCA6PSB0dCAvLyBmb3IgdC5QYXJhbGxlbAogIHQuUnVuKHR0LmdpdmUsIGZ1bmModCAqdGVzdGluZy5UKSB7CiAgICB0LlBhcmFsbGVsKCkKICAgIC8vIC4uLgogIH0pCn0K"}}),e._v(" "),a("p",[e._v("In the example above, we must declare a "),a("code",[e._v("tt")]),e._v(" variable scoped to the loop iteration because of the use of "),a("code",[e._v("t.Parallel()")]),e._v(" below. If we do not do that, most or all tests will receive an unexpected value for "),a("code",[e._v("tt")]),e._v(" or a value that changes as they run.")]),e._v(" "),a("h4",{attrs:{id:"use-subtests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-subtests"}},[e._v("#")]),e._v(" Use Subtests")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"avoid-writing-directly-in-the-stdout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-writing-directly-in-the-stdout"}},[e._v("#")]),e._v(" Avoid writing directly in the stdout")]),e._v(" "),a("p",[e._v("Avoid writing logs directly to the stdout or stderr. Use a proper log package for it.\nIt's also easier to maintain. We don't need to find all prints and change the code if we need to change.")]),e._v(" "),a("h3",{attrs:{id:"avoid-panic"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-panic"}},[e._v("#")]),e._v(" Avoid panic")]),e._v(" "),a("p",[e._v("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.\nWe can also create a proper panic recovery to close all states, open connection from the application, and graceful exit without breaking anything.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{485: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:"contributing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contributing"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),a("p",[e._v("If you want to contribute to a project and improve it, your help is welcome. We want to make Gaia as good as it can be. Contributing is also a great way to learn more about blockchain technology and improve it. Please read this document and follow our guidelines to make the process as smooth as possible. We are happy to review your code but please ensure that you have a reasonable and clean pull request.")]),e._v(" "),a("p",[e._v("This documents idiomatic conventions in the Go code that we follow for gaia development. A lot of these are general guidelines for Go, while others extend upon external resources:")]),e._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/effective_go.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Effective Go"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/golang/go/wiki/CommonMistakes",target:"_blank",rel:"noopener noreferrer"}},[e._v("Go Common Mistakes"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/golang/go/wiki/CodeReviewComments",target:"_blank",rel:"noopener noreferrer"}},[e._v("Go Code Review Comments"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"run-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-tests"}},[e._v("#")]),e._v(" Run tests")]),e._v(" "),a("ul",[a("li",[e._v("Run unit tests")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXVuaXQK"}}),e._v(" "),a("ul",[a("li",[e._v("Run the unit tests and output the coverage file (coverage.txt).")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXVuaXQtY292ZXIK"}}),e._v(" "),a("ul",[a("li",[e._v("Run the unit tests with the race condition flag on.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSB0ZXN0LXJhY2UK"}}),e._v(" "),a("ul",[a("li",[e._v("Run end-to-end integration tests (Docker needed).")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWFrZSBkb2NrZXItYnVpbGQtaGVybWVzICZhbXA7JmFtcDsgXAptYWtlIGRvY2tlci1idWlsZC1kZWJ1ZyAmYW1wOyZhbXA7IFwKbWFrZSB0ZXN0LWUyZQo="}}),e._v(" "),a("h1",{attrs:{id:"guidelines"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guidelines"}},[e._v("#")]),e._v(" Guidelines")]),e._v(" "),a("p",[e._v("These guidelines are the conventions that govern our code. These conventions cover far more than just source file formatting. Can "),a("code",[e._v("gofmt")]),e._v(" and "),a("code",[e._v("goimports")]),e._v(" handle that for us.")]),e._v(" "),a("p",[e._v("The goal of this guide is to manage this complexity by describing in detail the Dos and Don'ts of writing Go code. These rules keep the code base manageable while allowing engineers to use Go language features productively.")]),e._v(" "),a("p",[e._v("Try to avoid extensive methods and always test your code. All PRs should have at least 95% of code coverage.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#project-organization"}},[e._v("Project organization")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#how-to-test-this-project-locally"}},[e._v("How to test this project locally")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#unit-tests"}},[e._v("Unit Tests")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#end-to-end-tests"}},[e._v("End-to-End Tests")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-test"}},[e._v("Upgrade Test")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#guidelines"}},[e._v("Guidelines")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#line-length"}},[e._v("Line Length")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#doc-comments"}},[e._v("Doc Comments")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#declaring-smpty-slices"}},[e._v("Declaring Empty Slices")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#indent-error-flow"}},[e._v("Indent Error Flow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#unnecessary-else"}},[e._v("Unnecessary Else")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#named-result-parameters"}},[e._v("Named Result Parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#package-comments"}},[e._v("Package Comments")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#package-names"}},[e._v("Package Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#function-names"}},[e._v("Function Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#pointers"}},[e._v("Pointers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#receiver-names"}},[e._v("Receiver Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variable-names"}},[e._v("Variable Names")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#zero-value-mutexes"}},[e._v("Zero-value Mutexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#copy-slices-and-maps-at-boundaries"}},[e._v("Copy Slices and Maps at Boundaries")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#receiving-slices-and-maps"}},[e._v("Receiving Slices and Maps")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#returning-slices-and-maps"}},[e._v("Returning Slices and Maps")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#errors"}},[e._v("Errors")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-types"}},[e._v("Error Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#error-wrapping"}},[e._v("Error Wrapping")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#error-naming"}},[e._v("Error Naming")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#handle-type-assertion-failures"}},[e._v("Handle Type Assertion Failures")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-embedding-types-in-public-structs"}},[e._v("Avoid Embedding Types in Public Structs")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-init"}},[e._v("Avoid "),a("code",[e._v("init()")])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#Performance"}},[e._v("Performance")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#prefer-strconv-over-fmt"}},[e._v("Prefer strconv over fmt")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-string-to-byte-conversion"}},[e._v("Avoid string-to-byte conversion")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#prefer-specifying-container-capacity"}},[e._v("Prefer Specifying Container Capacity")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#specifying-map-capacity-hints"}},[e._v("Specifying Map Capacity Hints")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#specifying-slice-capacity"}},[e._v("Specifying Slice Capacity")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#function-grouping-and-ordering"}},[e._v("Function Grouping and Ordering")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reduce-nesting"}},[e._v("Reduce Nesting")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#writing-tests"}},[e._v("Writing Tests")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#use-subtests"}},[e._v("Use Subtests")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-writing-directly-in-the-stdout"}},[e._v("Avoid writing directly in the stdout")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avoid-panic"}},[e._v("Avoid panic")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#handle-error-on-the-top-level"}},[e._v("Handle error on the top level")])])])])]),e._v(" "),a("h2",{attrs:{id:"project-organization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-organization"}},[e._v("#")]),e._v(" Project organization")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("/ante: Where the ante-handler logic is defined.")])]),e._v(" "),a("li",[a("p",[e._v("/app: Where the application is defined.")])]),e._v(" "),a("li",[a("p",[e._v("/client: OpenAPI/Swagger specs, JSON schema files, protocol definition files.")]),e._v(" "),a("ul",[a("li",[e._v("/swagger-ui")])])]),e._v(" "),a("li",[a("p",[e._v("/cmd/gaiad: Main applications for this project.")]),e._v(" "),a("ul",[a("li",[e._v("cmd/")]),e._v(" "),a("li",[e._v("main.go")])])]),e._v(" "),a("li",[a("p",[e._v("/contrib (scripts): Scripts to perform various build, install, analysis, etc operations.")]),e._v(" "),a("ul",[a("li",[e._v("/devtools")]),e._v(" "),a("li",[e._v("/generate_release_note")]),e._v(" "),a("li",[e._v("/githooks")]),e._v(" "),a("li",[e._v("/scripts")]),e._v(" "),a("li",[e._v("/testnets")])])]),e._v(" "),a("li",[a("p",[e._v("/docs: Gaia docs.")])]),e._v(" "),a("li",[a("p",[e._v("/pkg: Library code that's to be reusable.")]),e._v(" "),a("ul",[a("li",[e._v("/address")]),e._v(" "),a("li",[e._v("/genesis")])])]),e._v(" "),a("li",[a("p",[e._v("/proto: Proto type definitions")])]),e._v(" "),a("li",[a("p",[e._v("/tests/e2e: Additional external test apps and test data.")])]),e._v(" "),a("li",[a("p",[e._v("/third_party/proto: External proto type definitions")])]),e._v(" "),a("li",[a("p",[e._v("/tools: Supporting tools for this project.")])]),e._v(" "),a("li",[a("p",[e._v("/x: Cosmos Modules.")])])]),e._v(" "),a("h2",{attrs:{id:"how-to-test-this-project-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-test-this-project-locally"}},[e._v("#")]),e._v(" How to test this project locally")]),e._v(" "),a("h3",{attrs:{id:"unit-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unit-tests"}},[e._v("#")]),e._v(" Unit Tests")]),e._v(" "),a("p",[e._v("Running unit tests locally should ensure that the tests inside of "),a("code",[e._v("/tests/e2e")]),e._v(" are not run. These tests require active running docker containers.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSB0ZXN0LXVuaXQK"}}),e._v(" "),a("h3",{attrs:{id:"end-to-end-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#end-to-end-tests"}},[e._v("#")]),e._v(" End-to-End Tests")]),e._v(" "),a("p",[e._v("To run the E2E tests you need to have an instance of Docker running. Then make sure you have the most recent version of the code built in the containers by running:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSBkb2NrZXItYnVpbGQtZGVidWcK"}}),e._v(" "),a("p",[e._v("Then run the tests:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"bWFrZSB0ZXN0LWUyZQo="}}),e._v(" "),a("h3",{attrs:{id:"upgrade-test"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-test"}},[e._v("#")]),e._v(" Upgrade Test")]),e._v(" "),a("p",[e._v("Instructions for running the upgrade test locally")]),e._v(" "),a("h4",{attrs:{id:"build-current-version-and-move-into-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-current-version-and-move-into-build"}},[e._v("#")]),e._v(" Build current version and move into ./build:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IHY4LjAuMAptYWtlIGJ1aWxkIApjcCAuL2J1aWxkL2dhaWFkIC4vYnVpbGQvZ2FpYWQ4Cg=="}}),e._v(" "),a("h4",{attrs:{id:"build-gaia-v9-0-0-and-move-into-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-gaia-v9-0-0-and-move-into-build"}},[e._v("#")]),e._v(" Build gaia v9.0.0 and move into ./build:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IHY5LjAuMAptYWtlIGJ1aWxkIApjcCAuL2J1aWxkL2dhaWFkIC4vYnVpbGQvZ2FpYWQ5Cg=="}}),e._v(" "),a("h4",{attrs:{id:"go-back-to-your-previous-working-branch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#go-back-to-your-previous-working-branch"}},[e._v("#")]),e._v(" Go back to your previous working branch")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z2l0IGNoZWNrb3V0IC0K"}}),e._v(" "),a("h4",{attrs:{id:"install-cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-cosmovisor"}},[e._v("#")]),e._v(" Install cosmovisor")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAdjEuMy4wCg=="}}),e._v(" "),a("h4",{attrs:{id:"run-the-chain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-the-chain"}},[e._v("#")]),e._v(" Run the Chain")]),e._v(" "),a("p",[e._v("This script prepares the chain and starts it using cosmovisor")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvcnVuLWdhaWEtdjguc2gK"}}),e._v(" "),a("h4",{attrs:{id:"run-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-the-upgrade"}},[e._v("#")]),e._v(" Run the upgrade")]),e._v(" "),a("p",[e._v("In another terminal window, run the script that waits 10 seconds for gaia to start then makes gov proposal to perform an upgrade at height 15")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvcnVuLXVwZ3JhZGUtY29tbWFuZHMuc2ggMTUK"}}),e._v(" "),a("h4",{attrs:{id:"monitor-for-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#monitor-for-success"}},[e._v("#")]),e._v(" Monitor for success")]),e._v(" "),a("p",[e._v("In a third window run the upgrade monitoring script that will exit without error when the upgrade succeeds.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"sh",base64:"Li9jb250cmliL3NjcmlwdHMvdGVzdF91cGdyYWRlLnNoIDIwIDUgMTYgbG9jYWxob3N0Cg=="}}),e._v(" "),a("p",[e._v("This should show logs that demonstrate a successful upgrade by reaching block height 16.")]),e._v(" "),a("h2",{attrs:{id:"guidelines-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guidelines-2"}},[e._v("#")]),e._v(" Guidelines")]),e._v(" "),a("h3",{attrs:{id:"line-length"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#line-length"}},[e._v("#")]),e._v(" Line Length")]),e._v(" "),a("p",[e._v("Avoid uncomfortably long lines. Similarly, don't add line breaks to keep lines short when they are more readable long--for example if they are repetitive. The maximum line length is 120. If your line is over 120 characters, break it;")]),e._v(" "),a("h3",{attrs:{id:"doc-comments"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#doc-comments"}},[e._v("#")]),e._v(" Doc Comments")]),e._v(" "),a("p",[e._v("All top-level, exported names should have doc comments, as should non-trivial unexported type or function declarations. See https://go.dev/doc/effective_go#commentary for more information about commentary conventions.")]),e._v(" "),a("h3",{attrs:{id:"declaring-empty-slices"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declaring-empty-slices"}},[e._v("#")]),e._v(" Declaring Empty Slices")]),e._v(" "),a("p",[e._v("When declaring an empty slice, prefer")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIHQgW11zdHJpbmcK"}}),e._v(" "),a("p",[e._v("over")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCA6PSBbXXN0cmluZ3t9Cg=="}}),e._v(" "),a("p",[e._v("The former declares a nil slice value, while the latter is non-nil but zero-length. They are functionally equivalent—their "),a("code",[e._v("len")]),e._v(" and "),a("code",[e._v("cap")]),e._v(" are both zero—but the nil slice is the preferred style.")]),e._v(" "),a("p",[e._v("Note that there are limited circumstances where a non-nil but the zero-length slice is preferred, such as when encoding JSON objects (a "),a("code",[e._v("nil")]),e._v(" slice encodes to "),a("code",[e._v("null")]),e._v(", while "),a("code",[e._v("[]string{}")]),e._v(" encodes to the JSON array "),a("code",[e._v("[]")]),e._v(").")]),e._v(" "),a("p",[e._v("When designing interfaces, avoid distinguishing between a nil slice and a non-nil, zero-length slice, as this can lead to subtle programming errors. It's also important to distinguish if a map key exists from whether its value is "),a("code",[e._v("zero")]),e._v("/"),a("code",[e._v("nil")]),e._v("/"),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("p",[e._v("For more discussion about nil in Go see Francesc Campoy's talk "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=ynoY2xz-F8s",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understanding Nil"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"indent-error-flow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#indent-error-flow"}},[e._v("#")]),e._v(" Indent Error Flow")]),e._v(" "),a("p",[e._v("Try to keep the normal code path at a minimal indentation and indent the error handling, dealing with it first. This improves the readability of the code by permitting visual scanning of the normal path quickly. For instance, don't write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"aWYgZXJyICE9IG5pbCB7CgkvLyBlcnJvciBoYW5kbGluZwp9IGVsc2UgewoJLy8gbm9ybWFsIGNvZGUKfQo="}}),e._v(" "),a("p",[e._v("Instead, write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"aWYgZXJyICE9IG5pbCB7CgkvLyBlcnJvciBoYW5kbGluZwoJcmV0dXJuIC8vIG9yIGNvbnRpbnVlLCBldGMuCn0KLy8gbm9ybWFsIGNvZGUK"}}),e._v(" "),a("h3",{attrs:{id:"unnecessary-else"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unnecessary-else"}},[e._v("#")]),e._v(" Unnecessary Else")]),e._v(" "),a("p",[e._v("If a variable is set in both branches of an if, it can be replaced with a single if.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIGEgaW50CmlmIGIgewogIGEgPSAxMDAKfSBlbHNlIHsKICBhID0gMTAKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"YSA6PSAxMAppZiBiIHsKICBhID0gMTAwCn0K"}}),e._v(" "),a("h3",{attrs:{id:"named-result-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#named-result-parameters"}},[e._v("#")]),e._v(" Named Result Parameters")]),e._v(" "),a("p",[e._v("Consider what it will look like in godoc. Named result parameters like:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobiAqTm9kZSkgUGFyZW50MSgpIChub2RlICpOb2RlKSB7fQpmdW5jIChuICpOb2RlKSBQYXJlbnQyKCkgKG5vZGUgKk5vZGUsIGVyciBlcnJvcikge30K"}}),e._v(" "),a("p",[e._v("It will be repetitive in godoc; better to use:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobiAqTm9kZSkgUGFyZW50MSgpICpOb2RlIHt9CmZ1bmMgKG4gKk5vZGUpIFBhcmVudDIoKSAoKk5vZGUsIGVycm9yKSB7fQo="}}),e._v(" "),a("p",[e._v("On the other hand, adding names may be helpful in some contexts if a function returns two or three parameters of the same type or if the meaning of a result isn't clear from the context. Don't name result parameters just to avoid declaring a var inside the function; that trades off minor implementation brevity at the cost of unnecessary API verbosity.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZiAqRm9vKSBMb2NhdGlvbigpIChmbG9hdDY0LCBmbG9hdDY0LCBlcnJvcikK"}}),e._v(" "),a("p",[e._v("It is less clear than the:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gTG9jYXRpb24gcmV0dXJucyBmJ3MgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS4KLy8gTmVnYXRpdmUgdmFsdWVzIG1lYW4gc291dGggYW5kIHdlc3QsIHJlc3BlY3RpdmVseS4KZnVuYyAoZiAqRm9vKSBMb2NhdGlvbigpIChsYXQsIGxvbmcgZmxvYXQ2NCwgZXJyIGVycm9yKQo="}}),e._v(" "),a("p",[e._v("Naked returns are okay if the function is a handful of lines. Once it's a medium-sized function, be explicit with your return values. Corollary: it's not worth naming result parameters just because it enables you to use naked returns. Clarifying docs is always more important than saving a line or two in your function.")]),e._v(" "),a("p",[e._v("Finally, it would help if you named a result parameter in some cases to change it in a deferred closure. That is always OK.")]),e._v(" "),a("h3",{attrs:{id:"package-comments"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package-comments"}},[e._v("#")]),e._v(" Package Comments")]),e._v(" "),a("p",[e._v("Package comments, like all comments to be presented by godoc, must appear adjacent to the package clause with no blank line.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"LyoKUGFja2FnZSB0ZW1wbGF0ZSBpbXBsZW1lbnRzIGRhdGEtZHJpdmVuIHRlbXBsYXRlcyBmb3IgZ2VuZXJhdGluZyB0ZXh0dWFsCm91dHB1dCBzdWNoIGFzIEhUTUwuCi4uLi4KKi8KcGFja2FnZSB0ZW1wbGF0ZQo="}}),e._v(" "),a("p",[e._v('For "package main" comments, other styles of comment are fine after the binary name (and it may be capitalized if it comes first). For example, for a '),a("code",[e._v("package main")]),e._v(" in the directory "),a("code",[e._v("seedgen")]),e._v(" you could write:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gU2VlZGdlbiAuLgpwYWNrYWdlIG1haW4K"}}),e._v(" "),a("p",[e._v("See https://go.dev/doc/effective_go#commentary for more information about commentary conventions.")]),e._v(" "),a("h3",{attrs:{id:"package-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package-names"}},[e._v("#")]),e._v(" Package Names")]),e._v(" "),a("p",[e._v("All references to names in your package will be done using the package name so that you can omit that name from the identifiers. For example, if you are in package chubby, you don't need to type ChubbyFile, which clients will write as "),a("code",[e._v("chubby.ChubbyFile")]),e._v(". Instead, name the type "),a("code",[e._v("File")]),e._v(", which clients will write as "),a("code",[e._v("chubby.File")]),e._v(". Avoid meaningless package names like util, common, misc, API, types, and interfaces. See https://go.dev/doc/effective_go#package-names and https://go.dev/blog/package-names for more.")]),e._v(" "),a("p",[e._v("When naming packages, choose a name that is:")]),e._v(" "),a("ul",[a("li",[e._v("All lowercase. No capitals or underscores.")]),e._v(" "),a("li",[e._v("Does not need to be renamed using named imports at most call sites.")]),e._v(" "),a("li",[e._v("Short and succinct. Remember that the name is identified in full at every call site.")]),e._v(" "),a("li",[e._v("Not plural. For example, "),a("code",[e._v("net/url")]),e._v(", not "),a("code",[e._v("net/urls")]),e._v(".")]),e._v(" "),a("li",[e._v("Not "),a("code",[e._v("common")]),e._v(", "),a("code",[e._v("util")]),e._v(", "),a("code",[e._v("shared")]),e._v(", or "),a("code",[e._v("lib")]),e._v(". These are bad, uninformative names.")]),e._v(" "),a("li",[e._v("To distinguish SDK and Gaia with the same package name, add SDK or Gaia or the module name as the prefix. E.g.: "),a("code",[e._v("sdk/types")]),e._v(", "),a("code",[e._v("gaia/types")]),e._v(" and "),a("code",[e._v("gaia/x/globalfee/types")]),e._v(", can use "),a("code",[e._v("sdktype")]),e._v(", "),a("code",[e._v("gaiatype")]),e._v(", "),a("code",[e._v("globalfeetype")]),e._v(".")])]),e._v(" "),a("p",[e._v("See also "),a("a",{attrs:{href:"https://blog.golang.org/package-names",target:"_blank",rel:"noopener noreferrer"}},[e._v("Package Names"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://rakyll.org/style-packages/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Style guideline for Go packages"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"function-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#function-names"}},[e._v("#")]),e._v(" Function Names")]),e._v(" "),a("p",[e._v("We follow the Go community's convention of using "),a("a",{attrs:{href:"https://golang.org/doc/effective_go.html#mixed-caps",target:"_blank",rel:"noopener noreferrer"}},[e._v("MixedCaps for function names"),a("OutboundLink")],1),e._v(". An exception is made for test functions, which may contain underscores\nfor grouping related test cases, e.g., "),a("code",[e._v("TestMyFunction_WhatIsBeingTested")]),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"pointers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pointers"}},[e._v("#")]),e._v(" Pointers")]),e._v(" "),a("p",[e._v("Try to avoid pointers if you don't need them. Don't pass pointers as function arguments to save a few bytes. If a function refers to its argument "),a("code",[e._v("x")]),e._v(" only as "),a("code",[e._v("*x")]),e._v(" throughout, then the argument shouldn't be a pointer. Common instances of this include passing a pointer to a string ("),a("code",[e._v("*string")]),e._v(") or a pointer to an interface value ("),a("code",[e._v("*io.Reader")]),e._v("). In both cases, the value itself is a fixed size and can be passed directly. This advice does not apply to large structs or even small structs that might grow.")]),e._v(" "),a("p",[e._v("Choosing whether to use a value or pointer receiver on methods can be difficult, especially for new Go programmers. If in doubt, use a pointer, but there are times when a value receiver makes sense, usually for reasons of efficiency, such as for small unchanging structs or values of basic type. Some useful guidelines:")]),e._v(" "),a("ul",[a("li",[e._v("If the receiver is a map, func, or chan, don't use a pointer to them. If the receiver is a slice and the method doesn't reslice or reallocate the slice, don't use a pointer.")]),e._v(" "),a("li",[e._v("If the method needs to mutate the receiver, the receiver must be a pointer.")]),e._v(" "),a("li",[e._v("If the receiver is a struct that contains a sync.Mutex or similar synchronizing field, the receiver must be a pointer to avoid copying.")]),e._v(" "),a("li",[e._v("A pointer receiver is more efficient if the receiver is a large struct or array. How large is large? Assume it's equivalent to passing all its elements as arguments to the method. If that feels too large, it's also too large for the receiver.")]),e._v(" "),a("li",[e._v("Can functions or methods, either concurrently or when called from this method, mutate the receiver? A value type creates a copy of the receiver when the method is invoked, so outside updates will not be applied to this receiver. If changes must be visible in the original receiver, the receiver must be a pointer.")]),e._v(" "),a("li",[e._v("If the receiver is a struct, array, or slice and any of its elements is a pointer to something that might be mutating, prefer a pointer receiver, as it will make the intention clearer to the reader.")]),e._v(" "),a("li",[e._v("If the receiver is a small array or struct that is naturally a value type (for instance, something like the "),a("code",[e._v("time.Time")]),e._v(" type), with no mutable fields and no pointers, or is just a simple basic type such as int or string, a value receiver makes sense. A value receiver can reduce the amount of garbage generated; if a value is passed to a value method, an on-stack copy can be used instead of allocating it to the heap. (The compiler tries to be smart about avoiding this allocation, but it can't always succeed.) Don't choose a value receiver type for this reason without profiling first.")]),e._v(" "),a("li",[e._v("Don't mix receiver types. Choose either pointers or struct types for all available methods.")]),e._v(" "),a("li",[e._v("Finally, when in doubt, use a pointer receiver.")])]),e._v(" "),a("h3",{attrs:{id:"receiver-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiver-names"}},[e._v("#")]),e._v(" Receiver Names")]),e._v(" "),a("p",[e._v('The name of a method\'s receiver should be a reflection of its identity; often, a one or two-letter abbreviation of its type suffices (such as "c" or "cl" for "Client"). Don\'t use generic names such as "me", "this", or "self", identifiers typical of object-oriented languages that give the method a special meaning. In Go, the receiver of a method is just another parameter and, therefore, should be named accordingly. The name need not be as descriptive as that of a method argument, as its role is evident and serves no documentary purpose. It can be very short as it will appear on almost every line of every type of method; familiarity admits brevity. Be consistent, too: if you call the receiver "c" in one method, don\'t call it "cl" in another.')]),e._v(" "),a("p",[e._v("eg:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAocyAqSW50ZWdyYXRpb25UZXN0U3VpdGUpIFRlc3REZWNvZGUoKQo="}}),e._v(" "),a("h3",{attrs:{id:"variable-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variable-names"}},[e._v("#")]),e._v(" Variable Names")]),e._v(" "),a("p",[e._v("Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer "),a("code",[e._v("c")]),e._v(" to "),a("code",[e._v("lineCount")]),e._v(". Prefer "),a("code",[e._v("i")]),e._v(" to "),a("code",[e._v("sliceIndex")]),e._v(".")]),e._v(" "),a("p",[e._v("The basic rule: the further from its declaration that a name is used, the more descriptive the name must be. For a method receiver, one or two letters are sufficient. Common variables such as loop indices and readers can be a single letter ("),a("code",[e._v("i',")]),e._v("r`). More unusual things and global variables need more descriptive names.")]),e._v(" "),a("h3",{attrs:{id:"zero-value-mutexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#zero-value-mutexes"}},[e._v("#")]),e._v(" Zero-value Mutexes")]),e._v(" "),a("p",[e._v("The zero-value of "),a("code",[e._v("sync.Mutex")]),e._v(" and "),a("code",[e._v("sync.RWMutex")]),e._v(" is valid, so you rarely need a pointer to a mutex.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bXUgOj0gbmV3KHN5bmMuTXV0ZXgpCm11LkxvY2soKQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIG11IHN5bmMuTXV0ZXgKbXUuTG9jaygpCg=="}}),e._v(" "),a("p",[e._v("If you use a struct by pointer, then the mutex should be a non-pointer field. Do not embed the mutex on the struct, even if the struct is not exported.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTTWFwIHN0cnVjdCB7CiAgc3luYy5NdXRleAoKICBkYXRhIG1hcFtzdHJpbmddc3RyaW5nCn0KCmZ1bmMgKG0gKlNNYXApIEdldChrIHN0cmluZykgc3RyaW5nIHsKICBtLkxvY2soKQogIGRlZmVyIG0uVW5sb2NrKCkKCiAgcmV0dXJuIG0uZGF0YVtrXQp9Cg=="}}),e._v(" "),a("p",[e._v("The "),a("code",[e._v("Mutex")]),e._v(" field and the "),a("code",[e._v("Lock")]),e._v(" and "),a("code",[e._v("Unlock")]),e._v(" methods are unintentionally part of the exported API of "),a("code",[e._v("SMap")]),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTTWFwIHN0cnVjdCB7CiAgbXUgc3luYy5NdXRleAoKICBkYXRhIG1hcFtzdHJpbmddc3RyaW5nCn0KCmZ1bmMgKG0gKlNNYXApIEdldChrIHN0cmluZykgc3RyaW5nIHsKICBtLm11LkxvY2soKQogIGRlZmVyIG0ubXUuVW5sb2NrKCkKCiAgcmV0dXJuIG0uZGF0YVtrXQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"copy-slices-and-maps-at-boundaries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#copy-slices-and-maps-at-boundaries"}},[e._v("#")]),e._v(" Copy Slices and Maps at Boundaries")]),e._v(" "),a("p",[e._v("Slices and maps contain pointers to the underlying data, so be wary of scenarios when they need to be copied.")]),e._v(" "),a("h4",{attrs:{id:"receiving-slices-and-maps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiving-slices-and-maps"}},[e._v("#")]),e._v(" Receiving Slices and Maps")]),e._v(" "),a("p",[e._v("Remember that users can modify a map or slice you received as an argument if you store a reference to it.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZCAqRHJpdmVyKSBTZXRUcmlwcyh0cmlwcyBbXVRyaXApIHsKICBkLnRyaXBzID0gdHJpcHMKfQoKdHJpcHMgOj0gLi4uCmQxLlNldFRyaXBzKHRyaXBzKQoKLy8gRGlkIHlvdSBtZWFuIHRvIG1vZGlmeSBkMS50cmlwcz8KdHJpcHNbMF0gPSAuLi4K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAoZCAqRHJpdmVyKSBTZXRUcmlwcyh0cmlwcyBbXVRyaXApIHsKICBkLnRyaXBzID0gbWFrZShbXVRyaXAsIGxlbih0cmlwcykpCiAgY29weShkLnRyaXBzLCB0cmlwcykKfQoKdHJpcHMgOj0gLi4uCmQxLlNldFRyaXBzKHRyaXBzKQoKLy8gV2UgY2FuIG5vdyBtb2RpZnkgdHJpcHNbMF0gd2l0aG91dCBhZmZlY3RpbmcgZDEudHJpcHMuCnRyaXBzWzBdID0gLi4uCg=="}}),e._v(" "),a("h4",{attrs:{id:"returning-slices-and-maps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returning-slices-and-maps"}},[e._v("#")]),e._v(" Returning Slices and Maps")]),e._v(" "),a("p",[e._v("Similarly, be wary of user modifications to maps or slices exposing the internal state.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTdGF0cyBzdHJ1Y3QgewogIG11IHN5bmMuTXV0ZXgKICBjb3VudGVycyBtYXBbc3RyaW5nXWludAp9CgovLyBTbmFwc2hvdCByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRzLgpmdW5jIChzICpTdGF0cykgU25hcHNob3QoKSBtYXBbc3RyaW5nXWludCB7CiAgcy5tdS5Mb2NrKCkKICBkZWZlciBzLm11LlVubG9jaygpCgogIHJldHVybiBzLmNvdW50ZXJzCn0KCi8vIHNuYXBzaG90IGlzIG5vIGxvbmdlciBwcm90ZWN0ZWQgYnkgdGhlIG11dGV4LCBzbyBhbnkKLy8gYWNjZXNzIHRvIHRoZSBzbmFwc2hvdCBpcyBzdWJqZWN0IHRvIGRhdGEgcmFjZXMuCnNuYXBzaG90IDo9IHN0YXRzLlNuYXBzaG90KCkK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBTdGF0cyBzdHJ1Y3QgewogIG11IHN5bmMuTXV0ZXgKICBjb3VudGVycyBtYXBbc3RyaW5nXWludAp9CgpmdW5jIChzICpTdGF0cykgU25hcHNob3QoKSBtYXBbc3RyaW5nXWludCB7CiAgcy5tdS5Mb2NrKCkKICBkZWZlciBzLm11LlVubG9jaygpCgogIHJlc3VsdCA6PSBtYWtlKG1hcFtzdHJpbmddaW50LCBsZW4ocy5jb3VudGVycykpCiAgZm9yIGssIHYgOj0gcmFuZ2Ugcy5jb3VudGVycyB7CiAgICByZXN1bHRba10gPSB2CiAgfQogIHJldHVybiByZXN1bHQKfQoKLy8gU25hcHNob3QgaXMgbm93IGEgY29weS4Kc25hcHNob3QgOj0gc3RhdHMuU25hcHNob3QoKQo="}}),e._v(" "),a("h3",{attrs:{id:"errors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errors"}},[e._v("#")]),e._v(" Errors")]),e._v(" "),a("h4",{attrs:{id:"error-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-types"}},[e._v("#")]),e._v(" Error Types")]),e._v(" "),a("p",[e._v("There are a few options for declaring errors. Consider the following before picking the option best suited for your use case.")]),e._v(" "),a("ul",[a("li",[e._v("Does the caller need to match the error to handle it? If yes, we must support the "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#Is",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.Is")]),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#As",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.As")]),a("OutboundLink")],1),e._v(" functions by declaring a top-level error variable or a custom type.")]),e._v(" "),a("li",[e._v("Is the error message a static string, or is it a dynamic string that requires contextual information? We can use "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1),e._v(", but for the latter, we must use "),a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1),e._v(" or a custom error type.")]),e._v(" "),a("li",[e._v("Are we propagating a new error returned by a downstream function? See the "),a("a",{attrs:{href:"#error-wrapping"}},[e._v("section on error wrapping")]),e._v(".")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Error matching?")]),e._v(" "),a("th",[e._v("Error Message")]),e._v(" "),a("th",[e._v("Guidance")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("No")]),e._v(" "),a("td",[e._v("static")]),e._v(" "),a("td",[a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("No")]),e._v(" "),a("td",[e._v("dynamic")]),e._v(" "),a("td",[a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("Yes")]),e._v(" "),a("td",[e._v("static")]),e._v(" "),a("td",[e._v("top-level "),a("code",[e._v("var")]),e._v(" with "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1)])]),e._v(" "),a("tr",[a("td",[e._v("Yes")]),e._v(" "),a("td",[e._v("dynamic")]),e._v(" "),a("td",[e._v("custom "),a("code",[e._v("error")]),e._v(" type")])])])]),e._v(" "),a("p",[e._v("For example, use "),a("a",{attrs:{href:"https://golang.org/pkg/errors/#New",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("errors.New")]),a("OutboundLink")],1),e._v(" for an error with a static string. Export this error as a variable to support matching it with "),a("code",[e._v("errors.Is")]),e._v(" if the caller needs to match and handle this error.")]),e._v(" "),a("ul",[a("li",[e._v("No error matching:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCmZ1bmMgT3BlbigpIGVycm9yIHsKICByZXR1cm4gZXJyb3JzLk5ldygmcXVvdDtjb3VsZCBub3Qgb3BlbiZxdW90OykKfQoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigpOyBlcnIgIT0gbmlsIHsKICAvL0Nhbid0IGhhbmRsZSB0aGUgZXJyb3IuCiAgcGFuaWMoJnF1b3Q7dW5rbm93biBlcnJvciZxdW90OykKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCnZhciBFcnJDb3VsZE5vdE9wZW4gPSBlcnJvcnMuTmV3KCZxdW90O2NvdWxkIG5vdCBvcGVuJnF1b3Q7KQoKZnVuYyBPcGVuKCkgZXJyb3IgewogIHJldHVybiBFcnJDb3VsZE5vdE9wZW4KfQoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigpOyBlcnIgIT0gbmlsIHsKICBpZiBlcnJvcnMuSXMoZXJyLCBmb28uRXJyQ291bGROb3RPcGVuKSB7CiAgICAvLyBoYW5kbGUgdGhlIGVycm9yCiAgfSBlbHNlIHsKICAgIHBhbmljKCZxdW90O3Vua25vd24gZXJyb3ImcXVvdDspCiAgfQp9Cg=="}}),e._v(" "),a("p",[e._v("For an error with a dynamic string, use "),a("a",{attrs:{href:"https://golang.org/pkg/fmt/#Errorf",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("fmt.Errorf")]),a("OutboundLink")],1),e._v(" if the caller does not need to match it and a custom "),a("code",[e._v("error")]),e._v(" if the caller does need to match it.")]),e._v(" "),a("ul",[a("li",[e._v("No error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCmZ1bmMgT3BlbihmaWxlIHN0cmluZykgZXJyb3IgewogIHJldHVybiBmbXQuRXJyb3JmKCZxdW90O2ZpbGUgJXEgbm90IGZvdW5kJnF1b3Q7LCBmaWxlKQp9CgovLyBwYWNrYWdlIGJhcgoKaWYgZXJyIDo9IGZvby5PcGVuKCZxdW90O3Rlc3RmaWxlLnR4dCZxdW90Oyk7IGVyciAhPSBuaWwgewogIC8vQ2FuJ3QgaGFuZGxlIHRoZSBlcnJvci4KICBwYW5pYygmcXVvdDt1bmtub3duIGVycm9yJnF1b3Q7KQp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Error matching")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gcGFja2FnZSBmb28KCnR5cGUgTm90Rm91bmRFcnJvciBzdHJ1Y3QgewogIEZpbGUgc3RyaW5nCn0KCmZ1bmMgKGUgKk5vdEZvdW5kRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7ZmlsZSAlcSBub3QgZm91bmQmcXVvdDssIGUuRmlsZSkKfQoKZnVuYyBPcGVuKGZpbGUgc3RyaW5nKSBlcnJvciB7CiAgcmV0dXJuICZhbXA7Tm90Rm91bmRFcnJvcntGaWxlOiBmaWxlfQp9CgoKLy8gcGFja2FnZSBiYXIKCmlmIGVyciA6PSBmb28uT3BlbigmcXVvdDt0ZXN0ZmlsZS50eHQmcXVvdDspOyBlcnIgIT0gbmlsIHsKICB2YXIgbm90Rm91bmQgKk5vdEZvdW5kRXJyb3IKICBpZiBlcnJvcnMuQXMoZXJyLCAmYW1wO25vdEZvdW5kKSB7CiAgICAvLyBoYW5kbGUgdGhlIGVycm9yCiAgfSBlbHNlIHsKICAgIHBhbmljKCZxdW90O3Vua25vd24gZXJyb3ImcXVvdDspCiAgfQp9Cg=="}}),e._v(" "),a("p",[e._v("Note that if you export error variables or types from a package, they will become part of the public API of the package.")]),e._v(" "),a("h4",{attrs:{id:"error-wrapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-wrapping"}},[e._v("#")]),e._v(" Error Wrapping")]),e._v(" "),a("p",[e._v("There are three main options for propagating errors if a call fails:")]),e._v(" "),a("ul",[a("li",[e._v("return the original error as-is")]),e._v(" "),a("li",[e._v("add context with "),a("code",[e._v("fmt.Errorf")]),e._v(" and the "),a("code",[e._v("%w")]),e._v(" verb")]),e._v(" "),a("li",[e._v("add context with "),a("code",[e._v("fmt.Errorf")]),e._v(" and the "),a("code",[e._v("%v")]),e._v(" verb")])]),e._v(" "),a("p",[e._v("Return the original error as-is if there is no additional context to add. This maintains the original error type and message. This is well suited for cases when the underlying error message has sufficient information to track down where it came from.")]),e._v(" "),a("p",[e._v('Otherwise, add context to the error message where possible so that instead of a vague error such as "connection refused", you get more valuable errors such as "call service foo: connection refused".')]),e._v(" "),a("p",[e._v("Use "),a("code",[e._v("fmt.Errorf")]),e._v(" to add context to your errors, picking between the "),a("code",[e._v("%w")]),e._v(" or "),a("code",[e._v("%v")]),e._v(" verbs based on whether the caller should be able to match and extract the underlying cause.")]),e._v(" "),a("ul",[a("li",[e._v("Use "),a("code",[e._v("%w")]),e._v(" if the caller should have access to the underlying error. This is a good default for most wrapped errors, but be aware that callers may begin to rely on this behavior. So for cases where the wrapped error is a known "),a("code",[e._v("var")]),e._v(" or type, document and test it as part of your function's contract.")]),e._v(" "),a("li",[e._v("Use "),a("code",[e._v("%v")]),e._v(" to obfuscate the underlying error. Callers will be unable to match it, but you can switch to "),a("code",[e._v("%w")]),e._v(" in the future if needed.")])]),e._v(" "),a("p",[e._v('When adding context to returned errors, keep the context succinct by avoiding phrases like "failed to", which state the obvious and pile up as the error percolates up through the stack:')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"cywgZXJyIDo9IHN0b3JlLk5ldygpCmlmIGVyciAhPSBuaWwgewogICAgcmV0dXJuIGZtdC5FcnJvcmYoCiAgICAgICAgJnF1b3Q7ZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzdG9yZTogJXcmcXVvdDssIGVycikKfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmFpbGVkIHRvIHg6IGZhaWxlZCB0byB5OiBmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHN0b3JlOiB0aGUgZXJyb3IK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"cywgZXJyIDo9IHN0b3JlLk5ldygpCmlmIGVyciAhPSBuaWwgewogICAgcmV0dXJuIGZtdC5FcnJvcmYoCiAgICAgICAgJnF1b3Q7bmV3IHN0b3JlOiAldyZxdW90OywgZXJyKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"eDogeTogbmV3IHN0b3JlOiB0aGUgZXJyb3IK"}}),e._v(" "),a("p",[e._v("However, once the error is sent to another system, it should be clear that the message is an error (e.g., an "),a("code",[e._v("err")]),e._v(' tag or "Failed" prefix in logs).')]),e._v(" "),a("p",[e._v("See also "),a("a",{attrs:{href:"https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully",target:"_blank",rel:"noopener noreferrer"}},[e._v("Don't just check errors, handle them gracefully"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-naming"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-naming"}},[e._v("#")]),e._v(" Error Naming")]),e._v(" "),a("p",[e._v("For error values stored as global variables, use the prefix "),a("code",[e._v("Err")]),e._v(" or "),a("code",[e._v("err")]),e._v(" depending on whether they're exported.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyICgKICAvLyBUaGUgZm9sbG93aW5nIHR3byBlcnJvcnMgYXJlIGV4cG9ydGVkCiAgLy8gc28gdGhhdCB1c2VycyBvZiB0aGlzIHBhY2thZ2UgY2FuIG1hdGNoIHRoZW0KICAvLyB3aXRoIGVycm9ycy5Jcy4KCiAgRXJyQnJva2VuTGluayA9IGVycm9ycy5OZXcoJnF1b3Q7bGluayBpcyBicm9rZW4mcXVvdDspCiAgRXJyQ291bGROb3RPcGVuID0gZXJyb3JzLk5ldygmcXVvdDtjb3VsZCBub3Qgb3BlbiZxdW90OykKCiAgLy8gVGhpcyBlcnJvciBpcyBub3QgZXhwb3J0ZWQgYmVjYXVzZQogIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBpdCBwYXJ0IG9mIG91ciBwdWJsaWMgQVBJLgogIC8vIFdlIG1heSBzdGlsbCB1c2UgaXQgaW5zaWRlIHRoZSBwYWNrYWdlCiAgLy8gd2l0aCBlcnJvcnMuSXMuCgogIGVyck5vdEZvdW5kID0gZXJyb3JzLk5ldygmcXVvdDtub3QgZm91bmQmcXVvdDspCikK"}}),e._v(" "),a("p",[e._v("For custom error types, use the suffix "),a("code",[e._v("Error")]),e._v(" instead.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gU2ltaWxhcmx5LCB0aGlzIGVycm9yIGlzIGV4cG9ydGVkCi8vIHNvIHRoYXQgdXNlcnMgb2YgdGhpcyBwYWNrYWdlIGNhbiBtYXRjaCBpdAovLyB3aXRoIGVycm9ycy5Bcy4KCnR5cGUgTm90Rm91bmRFcnJvciBzdHJ1Y3QgewogIEZpbGUgc3RyaW5nCn0KCmZ1bmMgKGUgKk5vdEZvdW5kRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7ZmlsZSAlcSBub3QgZm91bmQmcXVvdDssIGUuRmlsZSkKfQoKLy8gQW5kIHRoaXMgZXJyb3IgaXMgbm90IGV4cG9ydGVkIGJlY2F1c2UKLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGl0IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuCi8vIFdlIGNhbiBzdGlsbCB1c2UgaXQgaW5zaWRlIHRoZSBwYWNrYWdlCi8vIHdpdGggZXJyb3JzLkFzLgoKdHlwZSByZXNvbHZlRXJyb3Igc3RydWN0IHsKICBQYXRoIHN0cmluZwp9CgpmdW5jIChlICpyZXNvbHZlRXJyb3IpIEVycm9yKCkgc3RyaW5nIHsKICByZXR1cm4gZm10LlNwcmludGYoJnF1b3Q7cmVzb2x2ZSAlcSZxdW90OywgZS5QYXRoKQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"handle-type-assertion-failures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#handle-type-assertion-failures"}},[e._v("#")]),e._v(" Handle Type Assertion Failures")]),e._v(" "),a("p",[e._v("The single return value form of a "),a("a",{attrs:{href:"https://golang.org/ref/spec#Type_assertions",target:"_blank",rel:"noopener noreferrer"}},[e._v("type assertion"),a("OutboundLink")],1),e._v(' will panic on an incorrect type. Therefore, always use the "comma ok" idiom.')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCA6PSBpLihzdHJpbmcpCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dCwgb2sgOj0gaS4oc3RyaW5nKQppZiAhb2sgewogIC8vIGhhbmRsZSB0aGUgZXJyb3IgZ3JhY2VmdWxseQp9Cg=="}}),e._v(" "),a("h3",{attrs:{id:"avoid-embedding-types-in-public-structs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-embedding-types-in-public-structs"}},[e._v("#")]),e._v(" Avoid Embedding Types in Public Structs")]),e._v(" "),a("p",[e._v("These embedded types leak implementation details, inhibit type evolution, and obscure documentation.")]),e._v(" "),a("p",[e._v("Assuming you have implemented a variety of list types using a shared "),a("code",[e._v("AbstractList")]),e._v(", avoid embedding the "),a("code",[e._v("AbstractList")]),e._v(" in your concrete list implementations. Instead, hand-write only the methods to your concrete list that will delegate to the abstract list.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBBYnN0cmFjdExpc3Qgc3RydWN0IHt9CgovLyBBZGQgYWRkcyBhbiBlbnRpdHkgdG8gdGhlIGxpc3QuCmZ1bmMgKGwgKkFic3RyYWN0TGlzdCkgQWRkKGUgRW50aXR5KSB7CiAgLy8gLi4uCn0KCi8vIFJlbW92ZSByZW1vdmVzIGFuIGVudGl0eSBmcm9tIHRoZSBsaXN0LgpmdW5jIChsICpBYnN0cmFjdExpc3QpIFJlbW92ZShlIEVudGl0eSkgewogIC8vIC4uLgp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICAqQWJzdHJhY3RMaXN0Cn0K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICBsaXN0ICpBYnN0cmFjdExpc3QKfQoKLy8gQWRkIGFkZHMgYW4gZW50aXR5IHRvIHRoZSBsaXN0LgpmdW5jIChsICpDb25jcmV0ZUxpc3QpIEFkZChlIEVudGl0eSkgewogIGwubGlzdC5BZGQoZSkKfQoKLy8gUmVtb3ZlIHJlbW92ZXMgYW4gZW50aXR5IGZyb20gdGhlIGxpc3QuCmZ1bmMgKGwgKkNvbmNyZXRlTGlzdCkgUmVtb3ZlKGUgRW50aXR5KSB7CiAgbC5saXN0LlJlbW92ZShlKQp9Cg=="}}),e._v(" "),a("p",[e._v("Go allows "),a("a",{attrs:{href:"https://golang.org/doc/effective_go.html#embedding",target:"_blank",rel:"noopener noreferrer"}},[e._v("type embedding"),a("OutboundLink")],1),e._v(" as a compromise between inheritance and composition. The outer type gets implicit copies of the embedded type's methods. These methods, by default, delegate to the same method of the embedded instance.")]),e._v(" "),a("p",[e._v("The struct also gains a field by the same name as the type. So, if the embedded type is public, the field is public. To maintain backward compatibility, every future version of the outer type must keep the embedded type. An embedded type is rarely necessary. It is a convenience that helps you avoid writing tedious delegate methods.")]),e._v(" "),a("p",[e._v("Even embedding a compatible AbstractList "),a("em",[e._v("interface")]),e._v(" instead of the struct would offer the developer more flexibility to change in the future but still leak the detail that the concrete lists use an abstract implementation.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQWJzdHJhY3RMaXN0IGlzIGEgZ2VuZXJhbGl6ZWQgaW1wbGVtZW50YXRpb24KLy8gZm9yIHZhcmlvdXMga2luZHMgb2YgbGlzdHMgb2YgZW50aXRpZXMuCnR5cGUgQWJzdHJhY3RMaXN0IGludGVyZmFjZSB7CiAgQWRkKEVudGl0eSkKICBSZW1vdmUoRW50aXR5KQp9CgovLyBDb25jcmV0ZUxpc3QgaXMgYSBsaXN0IG9mIGVudGl0aWVzLgp0eXBlIENvbmNyZXRlTGlzdCBzdHJ1Y3QgewogIEFic3RyYWN0TGlzdAp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gQ29uY3JldGVMaXN0IGlzIGEgbGlzdCBvZiBlbnRpdGllcy4KdHlwZSBDb25jcmV0ZUxpc3Qgc3RydWN0IHsKICBsaXN0IEFic3RyYWN0TGlzdAp9CgovLyBBZGQgYWRkcyBhbiBlbnRpdHkgdG8gdGhlIGxpc3QuCmZ1bmMgKGwgKkNvbmNyZXRlTGlzdCkgQWRkKGUgRW50aXR5KSB7CiAgbC5saXN0LkFkZChlKQp9CgovLyBSZW1vdmUgcmVtb3ZlcyBhbiBlbnRpdHkgZnJvbSB0aGUgbGlzdC4KZnVuYyAobCAqQ29uY3JldGVMaXN0KSBSZW1vdmUoZSBFbnRpdHkpIHsKICBsLmxpc3QuUmVtb3ZlKGUpCn0K"}}),e._v(" "),a("p",[e._v("Either with an embedded struct or an embedded interface, the embedded type places limits on the evolution of the type.")]),e._v(" "),a("ul",[a("li",[e._v("Adding methods to an embedded interface is a breaking change.")]),e._v(" "),a("li",[e._v("Removing methods from an embedded struct is a breaking change.")]),e._v(" "),a("li",[e._v("Removing the embedded type is a breaking change.")]),e._v(" "),a("li",[e._v("Replacing the embedded type, even with an alternative that satisfies the same\ninterface, is a breaking change.")])]),e._v(" "),a("p",[e._v("Although writing these delegate methods is tedious, the additional effort hides an implementation detail, leaves more opportunities for change, and eliminates indirection for discovering the whole List interface in the documentation.")]),e._v(" "),a("h3",{attrs:{id:"avoid-init"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-init"}},[e._v("#")]),e._v(" Avoid "),a("code",[e._v("init()")])]),e._v(" "),a("p",[e._v("Avoid "),a("code",[e._v("init()")]),e._v(" where possible. When "),a("code",[e._v("init()")]),e._v(" is unavoidable or desirable, code should attempt to:")]),e._v(" "),a("ol",[a("li",[e._v("Be completely deterministic, regardless of program environment or invocation.")]),e._v(" "),a("li",[e._v("Avoid depending on the ordering or side-effects of other "),a("code",[e._v("init()")]),e._v(" functions. While the "),a("code",[e._v("init()")]),e._v(" order is well-known, code can change, and thus relationships between "),a("code",[e._v("init()")]),e._v(" functions can make code brittle and error-prone.")]),e._v(" "),a("li",[e._v("Avoid accessing or manipulating global or environment states, such as machine information, environment variables, working directory, program arguments/inputs, etc.")]),e._v(" "),a("li",[e._v("Avoid I/O, including filesystem, network, and system calls.")])]),e._v(" "),a("p",[e._v("Code that cannot satisfy these requirements likely belongs as a helper to be called as part of "),a("code",[e._v("main()")]),e._v(" (or elsewhere in a program's lifecycle), or be written as part of "),a("code",[e._v("main()")]),e._v(' itself. In particular, libraries intended to be used by other programs should take special care to be completely deterministic and not perform "init magic".')]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBGb28gc3RydWN0IHsKICAgIC8vIC4uLgp9Cgp2YXIgX2RlZmF1bHRGb28gRm9vCgpmdW5jIGluaXQoKSB7CiAgICBfZGVmYXVsdEZvbyA9IEZvb3sKICAgICAgICAvLyAuLi4KICAgIH0KfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBDb25maWcgc3RydWN0IHsKICAgIC8vIC4uLgp9Cgp2YXIgX2NvbmZpZyBDb25maWcKCmZ1bmMgaW5pdCgpIHsKICAgIC8vIEJhZDogYmFzZWQgb24gY3VycmVudCBkaXJlY3RvcnkKICAgIGN3ZCwgXyA6PSBvcy5HZXR3ZCgpCgogICAgLy8gQmFkOiBJL08KICAgIHJhdywgXyA6PSBvcy5SZWFkRmlsZSgKICAgICAgICBwYXRoLkpvaW4oY3dkLCAmcXVvdDtjb25maWcmcXVvdDssICZxdW90O2NvbmZpZy55YW1sJnF1b3Q7KSwKICAgICkKCiAgICB5YW1sLlVubWFyc2hhbChyYXcsICZhbXA7X2NvbmZpZykKfQo="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dmFyIF9kZWZhdWx0Rm9vID0gRm9vewogICAgLy8gLi4uCn0KCi8vIG9yLCBiZXR0ZXIsIGZvciB0ZXN0YWJpbGl0eToKCnZhciBfZGVmYXVsdEZvbyA9IGRlZmF1bHRGb28oKQoKZnVuYyBkZWZhdWx0Rm9vKCkgRm9vIHsKICAgIHJldHVybiBGb297CiAgICAgICAgLy8gLi4uCiAgICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBDb25maWcgc3RydWN0IHsKICAgIC8vIC4uLgp9CgpmdW5jIGxvYWRDb25maWcoKSBDb25maWcgewogICAgY3dkLCBlcnIgOj0gb3MuR2V0d2QoKQogICAgLy8gaGFuZGxlIGVycgoKICAgIHJhdywgZXJyIDo9IG9zLlJlYWRGaWxlKAogICAgICAgIHBhdGguSm9pbihjd2QsICZxdW90O2NvbmZpZyZxdW90OywgJnF1b3Q7Y29uZmlnLnlhbWwmcXVvdDspLAogICAgKQogICAgLy8gaGFuZGxlIGVycgoKICAgIHZhciBjb25maWcgQ29uZmlnCiAgICB5YW1sLlVubWFyc2hhbChyYXcsICZhbXA7Y29uZmlnKQoKICAgIHJldHVybiBjb25maWcKfQo="}}),e._v(" "),a("p",[e._v("Considering the above, some situations in which "),a("code",[e._v("init()")]),e._v(" may be preferable or necessary might include:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Complex expressions that cannot be represented as single assignments.")])]),e._v(" "),a("li",[a("p",[e._v("Pluggable hooks, such as "),a("code",[e._v("database/sql")]),e._v(" dialects, encoding type registries, etc.")])]),e._v(" "),a("li",[a("p",[e._v("Optimizations to "),a("a",{attrs:{href:"https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google Cloud Functions"),a("OutboundLink")],1),e._v(" and other forms of deterministic precomputation.")])])]),e._v(" "),a("h2",{attrs:{id:"performance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performance"}},[e._v("#")]),e._v(" Performance")]),e._v(" "),a("p",[e._v("Performance-specific guidelines apply only to the hot path.")]),e._v(" "),a("h4",{attrs:{id:"prefer-strconv-over-fmt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prefer-strconv-over-fmt"}},[e._v("#")]),e._v(" Prefer strconv over fmt")]),e._v(" "),a("p",[e._v("When converting primitives to/from strings, "),a("code",[e._v("strconv")]),e._v(" is faster than "),a("code",[e._v("fmt")]),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICBzIDo9IGZtdC5TcHJpbnQocmFuZC5JbnQoKSkKfQo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrRm10U3ByaW50LTQgICAgMTQzIG5zL29wICAgIDIgYWxsb2NzL29wCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICBzIDo9IHN0cmNvbnYuSXRvYShyYW5kLkludCgpKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrU3RyY29udi00ICAgIDY0LjIgbnMvb3AgICAgMSBhbGxvY3Mvb3AK"}}),e._v(" "),a("p",[a("strong",[e._v('avoid use "+" for string concatenation')])]),e._v(" "),a("h4",{attrs:{id:"avoid-string-to-byte-conversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-string-to-byte-conversion"}},[e._v("#")]),e._v(" Avoid string-to-byte conversion")]),e._v(" "),a("p",[e._v("Do not create byte slices from a fixed string repeatedly. Instead, perform the conversion once and capture the result.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIGkgOj0gMDsgaSAmbHQ7IGIuTjsgaSsrIHsKICB3LldyaXRlKFtdYnl0ZSgmcXVvdDtIZWxsbyB3b3JsZCZxdW90OykpCn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrQmFkLTQgICA1MDAwMDAwMCAgIDIyLjIgbnMvb3AK"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZGF0YSA6PSBbXWJ5dGUoJnF1b3Q7SGVsbG8gd29ybGQmcXVvdDspCmZvciBpIDo9IDA7IGkgJmx0OyBiLk47IGkrKyB7CiAgdy5Xcml0ZShkYXRhKQp9Cg=="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrR29vZC00ICA1MDAwMDAwMDAgICAzLjI1IG5zL29wCg=="}}),e._v(" "),a("h4",{attrs:{id:"prefer-specifying-container-capacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prefer-specifying-container-capacity"}},[e._v("#")]),e._v(" Prefer Specifying Container Capacity")]),e._v(" "),a("p",[e._v("Specify container capacity where possible to allocate memory for the container up front. This minimizes subsequent allocations (copying and resizing the container) as elements are added.")]),e._v(" "),a("h5",{attrs:{id:"specifying-map-capacity-hints"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#specifying-map-capacity-hints"}},[e._v("#")]),e._v(" Specifying Map Capacity Hints")]),e._v(" "),a("p",[e._v("Provide capacity hints when initializing maps with "),a("code",[e._v("make()")]),e._v(" where possible.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bWFrZShtYXBbVDFdVDIsIGhpbnQpCg=="}}),e._v(" "),a("p",[e._v("Providing a capacity hint to "),a("code",[e._v("make()")]),e._v(" tries to right-size the map at initialization time, which reduces the need for growing the map and allocations as elements are added to the map.")]),e._v(" "),a("p",[e._v("Unlike slices, map capacity hints do not guarantee complete, preemptive allocation but are used to approximate the number of hashmap buckets required. Consequently, allocations may still occur when adding elements to the map, even up to the specified capacity.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bSA6PSBtYWtlKG1hcFtzdHJpbmddb3MuRmlsZUluZm8pCgpmaWxlcywgXyA6PSBvcy5SZWFkRGlyKCZxdW90Oy4vZmlsZXMmcXVvdDspCmZvciBfLCBmIDo9IHJhbmdlIGZpbGVzIHsKICAgIG1bZi5OYW1lKCldID0gZgp9Cg=="}}),e._v(" "),a("p",[e._v("`m' is created without a size hint; there may be more allocations at assignment time.")]),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CmZpbGVzLCBfIDo9IG9zLlJlYWREaXIoJnF1b3Q7Li9maWxlcyZxdW90OykKCm0gOj0gbWFrZShtYXBbc3RyaW5nXW9zLkRpckVudHJ5LCBsZW4oZmlsZXMpKQpmb3IgXywgZiA6PSByYW5nZSBmaWxlcyB7CiAgICBtW2YuTmFtZSgpXSA9IGYKfQo="}}),e._v(" "),a("p",[e._v("`m' is created with a size hint; there may be fewer allocations at assignment time.")]),e._v(" "),a("h5",{attrs:{id:"specifying-slice-capacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#specifying-slice-capacity"}},[e._v("#")]),e._v(" Specifying Slice Capacity")]),e._v(" "),a("p",[e._v("Where possible, provide capacity hints when initializing slices with "),a("code",[e._v("make()")]),e._v(", particularly when appending.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"bWFrZShbXVQsIGxlbmd0aCwgY2FwYWNpdHkpCg=="}}),e._v(" "),a("p",[e._v("Unlike maps, slice capacity is not a hint: the compiler will allocate enough memory for the capacity of the slice as provided to "),a("code",[e._v("make()")]),e._v(", which means that subsequent "),a("code",[e._v("append()")]),e._v(" operations will incur zero allocations (until the length of the slice matches the capacity, after which any appends will require a resize to hold additional elements).")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIG4gOj0gMDsgbiAmbHQ7IGIuTjsgbisrIHsKICBkYXRhIDo9IG1ha2UoW11pbnQsIDApCiAgZm9yIGsgOj0gMDsgayAmbHQ7IHNpemU7IGsrK3sKICAgIGRhdGEgPSBhcHBlbmQoZGF0YSwgaykKICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrQmFkLTQgICAgMTAwMDAwMDAwICAgIDIuNDhzCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIG4gOj0gMDsgbiAmbHQ7IGIuTjsgbisrIHsKICBkYXRhIDo9IG1ha2UoW11pbnQsIDAsIHNpemUpCiAgZm9yIGsgOj0gMDsgayAmbHQ7IHNpemU7IGsrK3sKICAgIGRhdGEgPSBhcHBlbmQoZGF0YSwgaykKICB9Cn0K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QmVuY2htYXJrR29vZC00ICAgMTAwMDAwMDAwICAgIDAuMjFzCg=="}}),e._v(" "),a("h3",{attrs:{id:"function-grouping-and-ordering"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#function-grouping-and-ordering"}},[e._v("#")]),e._v(" Function Grouping and Ordering")]),e._v(" "),a("ul",[a("li",[e._v("Functions should be sorted in rough call order.")]),e._v(" "),a("li",[e._v("The receiver should group functions in a file.")])]),e._v(" "),a("p",[e._v("Therefore, exported functions should appear first in a file, after "),a("code",[e._v("struct")]),e._v(", "),a("code",[e._v("const")]),e._v(", and "),a("code",[e._v("var")]),e._v(" definitions.")]),e._v(" "),a("p",[e._v("A "),a("code",[e._v("newXYZ()")]),e._v("/"),a("code",[e._v("NewXYZ()")]),e._v(" may appear after the type is defined but before the rest of the methods on the receiver.")]),e._v(" "),a("p",[e._v("Since the receiver groups functions, plain utility functions should appear toward the end of the file.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAocyAqc29tZXRoaW5nKSBDb3N0KCkgewogIHJldHVybiBjYWxjQ29zdChzLndlaWdodHMpCn0KCnR5cGUgc29tZXRoaW5nIHN0cnVjdHsgLi4uIH0KCmZ1bmMgY2FsY0Nvc3QobiBbXWludCkgaW50IHsuLi59CgpmdW5jIChzICpzb21ldGhpbmcpIFN0b3AoKSB7Li4ufQoKZnVuYyBuZXdTb21ldGhpbmcoKSAqc29tZXRoaW5nIHsKICAgIHJldHVybiAmYW1wO3NvbWV0aGluZ3t9Cn0K"}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBzb21ldGhpbmcgc3RydWN0eyAuLi4gfQoKZnVuYyBuZXdTb21ldGhpbmcoKSAqc29tZXRoaW5nIHsKICAgIHJldHVybiAmYW1wO3NvbWV0aGluZ3t9Cn0KCmZ1bmMgKHMgKnNvbWV0aGluZykgQ29zdCgpIHsKICByZXR1cm4gY2FsY0Nvc3Qocy53ZWlnaHRzKQp9CgpmdW5jIChzICpzb21ldGhpbmcpIFN0b3AoKSB7Li4ufQoKZnVuYyBjYWxjQ29zdChuIFtdaW50KSBpbnQgey4uLn0K"}}),e._v(" "),a("h3",{attrs:{id:"reduce-nesting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reduce-nesting"}},[e._v("#")]),e._v(" Reduce Nesting")]),e._v(" "),a("p",[e._v("Code should reduce nesting where possible by handling error cases/special conditions first and returning early or continuing the loop. Reduce the amount of code that is nested on multiple levels.")]),e._v(" "),a("ul",[a("li",[e._v("Bad")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIF8sIHYgOj0gcmFuZ2UgZGF0YSB7CiAgaWYgdi5GMSA9PSAxIHsKICAgIHYgPSBwcm9jZXNzKHYpCiAgICBpZiBlcnIgOj0gdi5DYWxsKCk7IGVyciA9PSBuaWwgewogICAgICB2LlNlbmQoKQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGVycgogICAgfQogIH0gZWxzZSB7CiAgICBsb2cuUHJpbnRmKCZxdW90O0ludmFsaWQgdjogJXYmcXVvdDssIHYpCiAgfQp9Cg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Zm9yIF8sIHYgOj0gcmFuZ2UgZGF0YSB7CiAgaWYgdi5GMSAhPSAxIHsKICAgIGxvZy5QcmludGYoJnF1b3Q7SW52YWxpZCB2OiAldiZxdW90OywgdikKICAgIGNvbnRpbnVlCiAgfQoKICB2ID0gcHJvY2Vzcyh2KQogIGlmIGVyciA6PSB2LkNhbGwoKTsgZXJyICE9IG5pbCB7CiAgICByZXR1cm4gZXJyCiAgfQogIHYuU2VuZCgpCn0K"}}),e._v(" "),a("h3",{attrs:{id:"writing-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#writing-tests"}},[e._v("#")]),e._v(" Writing Tests")]),e._v(" "),a("p",[e._v("Use table-driven tests with "),a("a",{attrs:{href:"https://blog.golang.org/subtests",target:"_blank",rel:"noopener noreferrer"}},[e._v("subtests"),a("OutboundLink")],1),e._v(" to avoid duplicating code when the core\ntest logic is repetitive.")]),e._v(" "),a("ul",[a("li",[e._v("Bad:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gZnVuYyBUZXN0U3BsaXRIb3N0UG9ydCh0ICp0ZXN0aW5nLlQpCgpob3N0LCBwb3J0LCBlcnIgOj0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTkyLjAuMi4wOjgwMDAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsxOTIuMC4yLjAmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDs4MDAwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTkyLjAuMi4wOmh0dHAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsxOTIuMC4yLjAmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDtodHRwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7OjgwMDAmcXVvdDspCnJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDsmcXVvdDssIGhvc3QpCmFzc2VydC5FcXVhbCh0LCAmcXVvdDs4MDAwJnF1b3Q7LCBwb3J0KQoKaG9zdCwgcG9ydCwgZXJyID0gbmV0LlNwbGl0SG9zdFBvcnQoJnF1b3Q7MTo4JnF1b3Q7KQpyZXF1aXJlLk5vRXJyb3IodCwgZXJyKQphc3NlcnQuRXF1YWwodCwgJnF1b3Q7MSZxdW90OywgaG9zdCkKYXNzZXJ0LkVxdWFsKHQsICZxdW90OzgmcXVvdDssIHBvcnQpCg=="}}),e._v(" "),a("ul",[a("li",[e._v("Good:")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"Ly8gZnVuYyBUZXN0U3BsaXRIb3N0UG9ydCh0ICp0ZXN0aW5nLlQpCgp0ZXN0cyA6PSBbXXN0cnVjdHsKICBnaXZlICAgICBzdHJpbmcKICB3YW50SG9zdCBzdHJpbmcKICB3YW50UG9ydCBzdHJpbmcKfXsKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTkyLjAuMi4wOjgwMDAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7MTkyLjAuMi4wJnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90OzgwMDAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTkyLjAuMi4wOmh0dHAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7MTkyLjAuMi4wJnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90O2h0dHAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7OjgwMDAmcXVvdDssCiAgICB3YW50SG9zdDogJnF1b3Q7JnF1b3Q7LAogICAgd2FudFBvcnQ6ICZxdW90OzgwMDAmcXVvdDssCiAgfSwKICB7CiAgICBnaXZlOiAgICAgJnF1b3Q7MTo4JnF1b3Q7LAogICAgd2FudEhvc3Q6ICZxdW90OzEmcXVvdDssCiAgICB3YW50UG9ydDogJnF1b3Q7OCZxdW90OywKICB9LAp9Cgpmb3IgXywgdHQgOj0gcmFuZ2UgdGVzdHMgewogIHQuUnVuKHR0LmdpdmUsIGZ1bmModCAqdGVzdGluZy5UKSB7CiAgICBob3N0LCBwb3J0LCBlcnIgOj0gbmV0LlNwbGl0SG9zdFBvcnQodHQuZ2l2ZSkKICAgIHJlcXVpcmUuTm9FcnJvcih0LCBlcnIpCiAgICBhc3NlcnQuRXF1YWwodCwgdHQud2FudEhvc3QsIGhvc3QpCiAgICBhc3NlcnQuRXF1YWwodCwgdHQud2FudFBvcnQsIHBvcnQpCiAgfSkKfQo="}}),e._v(" "),a("p",[e._v("Test tables make it easier to add context to error messages, reduce duplicate logic, and add new test cases.")]),e._v(" "),a("p",[e._v("We follow the convention that the slice of structs is referred to as "),a("code",[e._v("tests")]),e._v(" and each test case "),a("code",[e._v("tt")]),e._v(". Further, we encourage explicating the input and output values for each test case with "),a("code",[e._v("give")]),e._v(" and "),a("code",[e._v("want")]),e._v(" prefixes.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dGVzdHMgOj0gW11zdHJ1Y3R7CiAgZ2l2ZSAgICAgc3RyaW5nCiAgd2FudEhvc3Qgc3RyaW5nCiAgd2FudFBvcnQgc3RyaW5nCn17CiAgLy8gLi4uCn0KCmZvciBfLCB0dCA6PSByYW5nZSB0ZXN0cyB7CiAgLy8gLi4uCn0K"}}),e._v(" "),a("p",[e._v("Parallel tests, like some specialized loops (for example, those that spawn goroutines or capture references as part of the loop body), must take care to explicitly assign loop variables within the loop's scope to ensure that they hold the expected values.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dGVzdHMgOj0gW11zdHJ1Y3R7CiAgZ2l2ZSBzdHJpbmcKICAvLyAuLi4KfXsKICAvLyAuLi4KfQoKZm9yIF8sIHR0IDo9IHJhbmdlIHRlc3RzIHsKICB0dCA6PSB0dCAvLyBmb3IgdC5QYXJhbGxlbAogIHQuUnVuKHR0LmdpdmUsIGZ1bmModCAqdGVzdGluZy5UKSB7CiAgICB0LlBhcmFsbGVsKCkKICAgIC8vIC4uLgogIH0pCn0K"}}),e._v(" "),a("p",[e._v("In the example above, we must declare a "),a("code",[e._v("tt")]),e._v(" variable scoped to the loop iteration because of the use of "),a("code",[e._v("t.Parallel()")]),e._v(" below. If we do not do that, most or all tests will receive an unexpected value for "),a("code",[e._v("tt")]),e._v(" or a value that changes as they run.")]),e._v(" "),a("h4",{attrs:{id:"use-subtests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-subtests"}},[e._v("#")]),e._v(" Use Subtests")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"avoid-writing-directly-in-the-stdout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-writing-directly-in-the-stdout"}},[e._v("#")]),e._v(" Avoid writing directly in the stdout")]),e._v(" "),a("p",[e._v("Avoid writing logs directly to the stdout or stderr. Use a proper log package for it.\nIt's also easier to maintain. We don't need to find all prints and change the code if we need to change.")]),e._v(" "),a("h3",{attrs:{id:"avoid-panic"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avoid-panic"}},[e._v("#")]),e._v(" Avoid panic")]),e._v(" "),a("p",[e._v("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.\nWe can also create a proper panic recovery to close all states, open connection from the application, and graceful exit without breaking anything.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/117.01b7cd9e.js b/main/assets/js/117.06c62341.js similarity index 89% rename from main/assets/js/117.01b7cd9e.js rename to main/assets/js/117.06c62341.js index 2afe6280196..5794f1ed46d 100644 --- a/main/assets/js/117.01b7cd9e.js +++ b/main/assets/js/117.06c62341.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{577: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],{585: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/118.dcb45bc7.js b/main/assets/js/118.3d452723.js similarity index 95% rename from main/assets/js/118.dcb45bc7.js rename to main/assets/js/118.3d452723.js index 5018cbb3600..8b511be08a0 100644 --- a/main/assets/js/118.dcb45bc7.js +++ b/main/assets/js/118.3d452723.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{580:function(t,a,o){"use strict";o.r(a);var i=o(1),e=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-tutorials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-tutorials"}},[t._v("#")]),t._v(" Gaia Tutorials")]),t._v(" "),o("p",[t._v("This folder contains tutorials related to the "),o("code",[t._v("gaia")]),t._v(" application.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Running a full-node for the Cosmos Hub Mainnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("Running a full-node for a "),o("code",[t._v("gaia")]),t._v(" testnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/upgrade-node.html"}},[t._v("Upgrading a Node from a previous version")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/live-upgrade-tutorial.html"}},[t._v("Creating an upgrade governance proposal")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[t._v("Interacting with the "),o("code",[t._v("gaiad")]),t._v(" binary")])],1)])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{583:function(t,a,o){"use strict";o.r(a);var i=o(1),e=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-tutorials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-tutorials"}},[t._v("#")]),t._v(" Gaia Tutorials")]),t._v(" "),o("p",[t._v("This folder contains tutorials related to the "),o("code",[t._v("gaia")]),t._v(" application.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Running a full-node for the Cosmos Hub Mainnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("Running a full-node for a "),o("code",[t._v("gaia")]),t._v(" testnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/upgrade-node.html"}},[t._v("Upgrading a Node from a previous version")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/live-upgrade-tutorial.html"}},[t._v("Creating an upgrade governance proposal")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[t._v("Interacting with the "),o("code",[t._v("gaiad")]),t._v(" binary")])],1)])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/119.4b1ad2bc.js b/main/assets/js/119.d0e59606.js similarity index 99% rename from main/assets/js/119.4b1ad2bc.js rename to main/assets/js/119.d0e59606.js index c1d8263bb71..e0d72b7bbf1 100644 --- a/main/assets/js/119.4b1ad2bc.js +++ b/main/assets/js/119.d0e59606.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/main/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/main/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.a31adfab.js b/main/assets/js/120.84cdb815.js similarity index 99% rename from main/assets/js/120.a31adfab.js rename to main/assets/js/120.84cdb815.js index 20da5c6fb74..433687a4618 100644 --- a/main/assets/js/120.a31adfab.js +++ b/main/assets/js/120.84cdb815.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{488: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(" from "),a("code",[e._v("16,596,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-amp=-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(" from "),a("code",[e._v("16,596,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-amp=-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.ddc5c405.js b/main/assets/js/121.b5b58299.js similarity index 99% rename from main/assets/js/121.ddc5c405.js rename to main/assets/js/121.b5b58299.js index 3efde2652e7..efa398b6221 100644 --- a/main/assets/js/121.ddc5c405.js +++ b/main/assets/js/121.b5b58299.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{572:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("p",[t._v("This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Join Mainnet")]),t._v(" for a detailed walkthrough.")],1),t._v(" "),a("ul",[a("li",[t._v("Current Version: v12")]),t._v(" "),a("li",[t._v("Chain ID: "),a("code",[t._v("theta-testnet-001")])])]),t._v(" "),a("h2",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[t._v("#")]),t._v(" Background")]),t._v(" "),a("p",[t._v("The Cosmos Hub Public Testnet is currently running Gaia v12. Visit the "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to view all on-chain activity.")]),t._v(" "),a("p",[t._v("For those who just need instructions on performing the upgrade, see the "),a("a",{attrs:{href:"#upgrading-your-node"}},[t._v("Upgrading Your Node")]),t._v(" section.")]),t._v(" "),a("h3",{attrs:{id:"version-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-history"}},[t._v("#")]),t._v(" Version History")]),t._v(" "),a("p",[t._v("The table below shows all past and upcoming versions of the public testnet.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Release")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Block Height")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Date")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v13.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v12.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,550,150")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-08-23")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v11.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,107,825")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-07-26")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v10.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("16,117,530")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-05-24")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v9.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,476,206")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-02-08")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v8.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,175,595")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-01-20")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v7.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("9,283,650")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2022-03-17")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v6.0.0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Genesis")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Launched 2022-03-10")])])])]),t._v(" "),a("p",[t._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia release page"),a("OutboundLink")],1),t._v(" for details on each release.")]),t._v(" "),a("h2",{attrs:{id:"how-to-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-join"}},[t._v("#")]),t._v(" How to Join")]),t._v(" "),a("p",[t._v("We offer three ways to set up a node in the testnet:")]),t._v(" "),a("ul",[a("li",[t._v("Quickstart scripts\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#bash-script",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets"),a("OutboundLink")],1),t._v(" repo has shell scripts to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Ansible playbooks\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/hyphacoop/cosmos-ansible#-quick-start",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos-ansible"),a("OutboundLink")],1),t._v(" repo has an inventory file to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Step-by-step instructions\n"),a("ul",[a("li",[t._v("The rest of this document provides a step-by-step walkthrough for setting up a testnet node.")])])])]),t._v(" "),a("p",[t._v("We recommend running public testnet nodes on machines with at least 8 cores, 32GB of RAM, and 300GB of disk space.")]),t._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),a("p",[t._v("There are two ways to sync a testnet node, Fastsync and State Sync.")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("Fast Sync"),a("OutboundLink")],1),t._v(" syncs the chain from genesis by downloading blocks in parallel and then verifying them.")]),t._v(" "),a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("State Sync"),a("OutboundLink")],1),t._v(" will look for snapshots from peers at a trusted height and then verifying a minimal set of snapshot chunks against the network.")])]),t._v(" "),a("p",[t._v("State Sync is far faster and more efficient than Fast Sync, but Fast Sync offers higher data integrity and more robust history. For those who are concerned about storage and costs, State Sync can be the better option as it minimizes storage usage when rebuilding initial state.")]),t._v(" "),a("h2",{attrs:{id:"step-by-step-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-by-step-setup"}},[t._v("#")]),t._v(" Step-by-Step Setup")]),t._v(" "),a("p",[t._v("The following set of instructions assumes you are logged in as root.")]),t._v(" "),a("ul",[a("li",[t._v("You can run the relevant commands from a sudoer account.")]),t._v(" "),a("li",[t._v("The "),a("code",[t._v("/root/")]),t._v(" part in service file paths can be changed to "),a("code",[t._v("/home//")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"build-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tools"}},[t._v("#")]),t._v(" Build Tools")]),t._v(" "),a("p",[t._v("Install build tools and Go.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpzdWRvIHJtIC1yZiAvdXNyL2xvY2FsL2dvICZhbXA7JmFtcDsgc3VkbyB0YXIgLUMgL3Vzci9sb2NhbCAteHpmIGdvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpleHBvcnQgUEFUSD0kUEFUSDovdXNyL2xvY2FsL2dvL2Jpbgo="}}),t._v(" "),a("h3",{attrs:{id:"installation-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation-configuration"}},[t._v("#")]),t._v(" Installation & Configuration")]),t._v(" "),a("p",[t._v("You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v12.0.0")]),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("For up-to-date endpoints like seeds and state sync RPC servers, visit the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets repository"),a("OutboundLink")],1),t._v(".")])]),t._v(" "),a("p",[t._v("Build the gaiad binary and initialize the chain home folder.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTIuMC4wCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIHVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGFuZCBza2lwIHRoZSBTdGF0ZSBTeW5jIFNldHVwIHNlY3Rpb24uCiMgZ2l0IGNoZWNrb3V0IHY2LjAuNAptYWtlIGluc3RhbGwKZXhwb3J0IFBBVEg9JFBBVEg6JEhPTUUvZ28vYmluCmdhaWFkIGluaXQgJmx0O2N1c3RvbV9tb25pa2VyJmd0Owo="}}),t._v(" "),a("p",[t._v("Prepare the genesis file.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKd2dldCBodHRwczovL2dpdGh1Yi5jb20vY29zbW9zL3Rlc3RuZXRzL3Jhdy9tYXN0ZXIvcHVibGljL2dlbmVzaXMuanNvbi5negpnemlwIC1kIGdlbmVzaXMuanNvbi5negptdiBnZW5lc2lzLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgoKIyBTZXQgbWluaW11bSBnYXMgcHJpY2UgJmFtcDsgcGVlcnMKY2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDsmcXVvdDsvbWluaW11bS1nYXMtcHJpY2VzID0gJnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsvJyBhcHAudG9tbApzZWQgLWkgJ3Mvc2VlZHMgPSAmcXVvdDsmcXVvdDsvc2VlZHMgPSAmcXVvdDs2MzlkNTAzMzlkNzA0NTQzNmM3NTZhMDQyOTA2YjlhNjk5NzA5MTNmQHNlZWQtMDEudGhldGEtdGVzdG5ldC5wb2x5cG9yZS54eXo6MjY2NTYsM2U1MDY0NzI2ODNjZWI3ZWQ3NWMxNTc4ZDA5MmM3OTc4NWMyNzg1N0BzZWVkLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU2JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("h4",{attrs:{id:"state-sync-setup-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync-setup-recommended"}},[t._v("#")]),t._v(" State Sync Setup (Recommended)")]),t._v(" "),a("p",[t._v("State sync requires you to configure a trust height and trust hash. These depend on the current block height, so they will vary depending on when you are joining the network.")]),t._v(" "),a("ul",[a("li",[t._v("Visit a "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to find the block and hash for the current height - 1000.")]),t._v(" "),a("li",[t._v("Set these parameters in the code snippet below: "),a("code",[t._v("")]),t._v(" and "),a("code",[t._v("")]),t._v(".")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyBjb25maWcudG9tbApzZWQgLWkgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cDpcL1wvc3RhdGUtc3luYy0wMS50aGV0YS10ZXN0bmV0LnBvbHlwb3JlLnh5ejoyNjY1NyxodHRwOlwvXC9zdGF0ZS1zeW5jLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU3JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("ul",[a("li",[t._v("For example, if the block explorer lists a current block height of 12,563,326, we could use a trust height of "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/blocks/12562000",target:"_blank",rel:"noopener noreferrer"}},[t._v("12,562,000"),a("OutboundLink")],1),t._v(" and the trust hash would be "),a("code",[t._v("6F958861E1FA409639C8F2DA899D09B9F50A66DBBD49CE021A2FF680FA8A9204")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"cosmovisor-setup-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor-setup-optional"}},[t._v("#")]),t._v(" Cosmovisor Setup (Optional)")]),t._v(" "),a("p",[t._v("Cosmovisor is a process manager that monitors the governance module for incoming chain upgrade proposals. When a proposal is approved, Cosmovisor can automatically download the new binary, stop the chain binary when it hits the upgrade height, switch to the new binary, and restart the daemon. Cosmovisor can be used with either Fast Sync or State Sync.")]),t._v(" "),a("p",[t._v("The instructions below provide a simple way to sync via Cosmovisor. For more information on configuration, check out the Cosmos SDK's "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor documentation"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Cosmovisor requires the creation of the following directory structure:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUlOKUgOKUgCBnZW5lc2lzCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQK"}}),t._v(" "),a("p",[t._v("Install Cosmovisor and copy Gaia binary to genesis folder")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z28gaW5zdGFsbCBjb3Ntb3NzZGsuaW8vdG9vbHMvY29zbW92aXNvci9jbWQvY29zbW92aXNvckB2MS41LjAKbWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwIH4vZ28vYmluL2dhaWFkIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8K"}}),t._v(" "),a("h3",{attrs:{id:"create-service-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-service-file"}},[t._v("#")]),t._v(" Create Service File")]),t._v(" "),a("ul",[a("li",[t._v("Cosmos Hub recommends running "),a("code",[t._v("gaiad")]),t._v(" or "),a("code",[t._v("cosmovisor")]),t._v(" with the "),a("code",[t._v("--x-crisis-skip-assert-invariants")]),t._v(" flag. If checking for invariants, operators are likely to see "),a("code",[t._v("rounding error withdrawing rewards from validator")]),t._v(". These are expected. For more information see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#verify-mainnet"}},[t._v("Verify Mainnet")]),t._v(".")],1)]),t._v(" "),a("p",[t._v("Create one of the following service files.")]),t._v(" "),a("p",[t._v("If you are not using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/gaiad.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9nYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0Cg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/cosmovisor.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vdmlzb3Igc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9jb3Ntb3Zpc29yIHJ1biBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgpFbnZpcm9ubWVudD0nREFFTU9OX05BTUU9Z2FpYWQnCkVudmlyb25tZW50PSdEQUVNT05fSE9NRT0vcm9vdC8uZ2FpYScKRW52aXJvbm1lbnQ9J0RBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX0xPR19CVUZGRVJfU0laRT01MTInCkVudmlyb25tZW50PSdVTlNBRkVfU0tJUF9CQUNLVVA9dHJ1ZScKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}}),t._v(" "),a("h3",{attrs:{id:"start-the-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-service"}},[t._v("#")]),t._v(" Start the Service")]),t._v(" "),a("p",[t._v("Reload the systemd manager configuration.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQKc3lzdGVtY3RsIHJlc3RhcnQgc3lzdGVtZC1qb3VybmFsZAo="}}),t._v(" "),a("p",[t._v("If you are not using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBnYWlhZC5zZXJ2aWNlCnN5c3RlbWN0bCBzdGFydCBnYWlhZC5zZXJ2aWNlCg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBjb3Ntb3Zpc29yLnNlcnZpY2UKc3lzdGVtY3RsIHN0YXJ0IGNvc21vdmlzb3Iuc2VydmljZQo="}}),t._v(" "),a("p",[t._v("To follow the service log, run "),a("code",[t._v("journalctl -fu gaiad")]),t._v(" or "),a("code",[t._v("journalctl -fu cosmovisor")]),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.")]),t._v(" "),a("li",[t._v("If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. "),a("strong",[t._v("Syncing to the current block height will take several days")]),t._v(".")])]),t._v(" "),a("h2",{attrs:{id:"create-a-validator-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-optional"}},[t._v("#")]),t._v(" Create a Validator (Optional)")]),t._v(" "),a("p",[t._v("If you want to create a validator in the testnet, request tokens through the "),a("a",{attrs:{href:"https://discord.com/channels/669268347736686612/953697793476821092",target:"_blank",rel:"noopener noreferrer"}},[t._v("faucet Discord channel"),a("OutboundLink")],1),t._v(" and follow the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Running a validator")]),t._v(" instructions provided for mainnet.")],1),t._v(" "),a("h2",{attrs:{id:"upgrading-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-your-node"}},[t._v("#")]),t._v(" Upgrading Your Node")]),t._v(" "),a("p",[t._v("Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.")]),t._v(" "),a("p",[t._v("When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show "),a("code",[t._v('ERR UPGRADE "" NEEDED at height: XXXX')]),t._v(" or something similar).")]),t._v(" "),a("p",[t._v("There are three ways you can update the binary:")]),t._v(" "),a("ol",[a("li",[t._v("Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:")])]),t._v(" "),a("ul",[a("li",[t._v("Stop the gaiad service with "),a("code",[t._v("systemctl stop gaiad.service")]),t._v(".")]),t._v(" "),a("li",[t._v("Build or download the new binary, replacing the existing "),a("code",[t._v("~/go/bin")]),t._v(" one.")]),t._v(" "),a("li",[t._v("Start the gaiad service with "),a("code",[t._v("systemctl start gaiad.service")]),t._v(".")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[t._v("With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.")]),t._v(" "),a("li",[t._v("With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.")])]),t._v(" "),a("p",[t._v("The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor#auto-download",target:"_blank",rel:"noopener noreferrer"}},[t._v("documentation"),a("OutboundLink")],1),t._v(" in the Cosmos SDK repo.")]),t._v(" "),a("p",[t._v("If the environment variable "),a("code",[t._v("DAEMON_ALLOW_DOWNLOAD_BINARIES")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(", Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the "),a("code",[t._v("v13")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTMKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxMy9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjEzLjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxMyB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjEzL2Jpbi9nYWlhZAo="}}),t._v(" "),a("p",[t._v("When the upgrade height is reached, Cosmovisor will stop the gaiad binary, copy the new binary to the "),a("code",[t._v("current/bin")]),t._v(" folder and restart. After a few minutes, the node should start syncing blocks using the new binary.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{524:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("p",[t._v("This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Join Mainnet")]),t._v(" for a detailed walkthrough.")],1),t._v(" "),a("ul",[a("li",[t._v("Current Version: v12")]),t._v(" "),a("li",[t._v("Chain ID: "),a("code",[t._v("theta-testnet-001")])])]),t._v(" "),a("h2",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[t._v("#")]),t._v(" Background")]),t._v(" "),a("p",[t._v("The Cosmos Hub Public Testnet is currently running Gaia v12. Visit the "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to view all on-chain activity.")]),t._v(" "),a("p",[t._v("For those who just need instructions on performing the upgrade, see the "),a("a",{attrs:{href:"#upgrading-your-node"}},[t._v("Upgrading Your Node")]),t._v(" section.")]),t._v(" "),a("h3",{attrs:{id:"version-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-history"}},[t._v("#")]),t._v(" Version History")]),t._v(" "),a("p",[t._v("The table below shows all past and upcoming versions of the public testnet.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Release")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Block Height")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Date")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v13.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v12.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,550,150")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-08-23")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v11.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,107,825")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-07-26")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v10.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("16,117,530")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-05-24")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v9.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,476,206")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-02-08")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v8.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,175,595")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-01-20")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v7.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("9,283,650")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2022-03-17")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v6.0.0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Genesis")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Launched 2022-03-10")])])])]),t._v(" "),a("p",[t._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia release page"),a("OutboundLink")],1),t._v(" for details on each release.")]),t._v(" "),a("h2",{attrs:{id:"how-to-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-join"}},[t._v("#")]),t._v(" How to Join")]),t._v(" "),a("p",[t._v("We offer three ways to set up a node in the testnet:")]),t._v(" "),a("ul",[a("li",[t._v("Quickstart scripts\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#bash-script",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets"),a("OutboundLink")],1),t._v(" repo has shell scripts to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Ansible playbooks\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/hyphacoop/cosmos-ansible#-quick-start",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos-ansible"),a("OutboundLink")],1),t._v(" repo has an inventory file to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Step-by-step instructions\n"),a("ul",[a("li",[t._v("The rest of this document provides a step-by-step walkthrough for setting up a testnet node.")])])])]),t._v(" "),a("p",[t._v("We recommend running public testnet nodes on machines with at least 8 cores, 32GB of RAM, and 300GB of disk space.")]),t._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),a("p",[t._v("There are two ways to sync a testnet node, Fastsync and State Sync.")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("Fast Sync"),a("OutboundLink")],1),t._v(" syncs the chain from genesis by downloading blocks in parallel and then verifying them.")]),t._v(" "),a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("State Sync"),a("OutboundLink")],1),t._v(" will look for snapshots from peers at a trusted height and then verifying a minimal set of snapshot chunks against the network.")])]),t._v(" "),a("p",[t._v("State Sync is far faster and more efficient than Fast Sync, but Fast Sync offers higher data integrity and more robust history. For those who are concerned about storage and costs, State Sync can be the better option as it minimizes storage usage when rebuilding initial state.")]),t._v(" "),a("h2",{attrs:{id:"step-by-step-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-by-step-setup"}},[t._v("#")]),t._v(" Step-by-Step Setup")]),t._v(" "),a("p",[t._v("The following set of instructions assumes you are logged in as root.")]),t._v(" "),a("ul",[a("li",[t._v("You can run the relevant commands from a sudoer account.")]),t._v(" "),a("li",[t._v("The "),a("code",[t._v("/root/")]),t._v(" part in service file paths can be changed to "),a("code",[t._v("/home//")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"build-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tools"}},[t._v("#")]),t._v(" Build Tools")]),t._v(" "),a("p",[t._v("Install build tools and Go.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpzdWRvIHJtIC1yZiAvdXNyL2xvY2FsL2dvICZhbXA7JmFtcDsgc3VkbyB0YXIgLUMgL3Vzci9sb2NhbCAteHpmIGdvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpleHBvcnQgUEFUSD0kUEFUSDovdXNyL2xvY2FsL2dvL2Jpbgo="}}),t._v(" "),a("h3",{attrs:{id:"installation-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation-configuration"}},[t._v("#")]),t._v(" Installation & Configuration")]),t._v(" "),a("p",[t._v("You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v12.0.0")]),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("For up-to-date endpoints like seeds and state sync RPC servers, visit the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets repository"),a("OutboundLink")],1),t._v(".")])]),t._v(" "),a("p",[t._v("Build the gaiad binary and initialize the chain home folder.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTIuMC4wCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIHVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGFuZCBza2lwIHRoZSBTdGF0ZSBTeW5jIFNldHVwIHNlY3Rpb24uCiMgZ2l0IGNoZWNrb3V0IHY2LjAuNAptYWtlIGluc3RhbGwKZXhwb3J0IFBBVEg9JFBBVEg6JEhPTUUvZ28vYmluCmdhaWFkIGluaXQgJmx0O2N1c3RvbV9tb25pa2VyJmd0Owo="}}),t._v(" "),a("p",[t._v("Prepare the genesis file.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKd2dldCBodHRwczovL2dpdGh1Yi5jb20vY29zbW9zL3Rlc3RuZXRzL3Jhdy9tYXN0ZXIvcHVibGljL2dlbmVzaXMuanNvbi5negpnemlwIC1kIGdlbmVzaXMuanNvbi5negptdiBnZW5lc2lzLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgoKIyBTZXQgbWluaW11bSBnYXMgcHJpY2UgJmFtcDsgcGVlcnMKY2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDsmcXVvdDsvbWluaW11bS1nYXMtcHJpY2VzID0gJnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsvJyBhcHAudG9tbApzZWQgLWkgJ3Mvc2VlZHMgPSAmcXVvdDsmcXVvdDsvc2VlZHMgPSAmcXVvdDs2MzlkNTAzMzlkNzA0NTQzNmM3NTZhMDQyOTA2YjlhNjk5NzA5MTNmQHNlZWQtMDEudGhldGEtdGVzdG5ldC5wb2x5cG9yZS54eXo6MjY2NTYsM2U1MDY0NzI2ODNjZWI3ZWQ3NWMxNTc4ZDA5MmM3OTc4NWMyNzg1N0BzZWVkLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU2JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("h4",{attrs:{id:"state-sync-setup-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync-setup-recommended"}},[t._v("#")]),t._v(" State Sync Setup (Recommended)")]),t._v(" "),a("p",[t._v("State sync requires you to configure a trust height and trust hash. These depend on the current block height, so they will vary depending on when you are joining the network.")]),t._v(" "),a("ul",[a("li",[t._v("Visit a "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to find the block and hash for the current height - 1000.")]),t._v(" "),a("li",[t._v("Set these parameters in the code snippet below: "),a("code",[t._v("")]),t._v(" and "),a("code",[t._v("")]),t._v(".")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyBjb25maWcudG9tbApzZWQgLWkgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cDpcL1wvc3RhdGUtc3luYy0wMS50aGV0YS10ZXN0bmV0LnBvbHlwb3JlLnh5ejoyNjY1NyxodHRwOlwvXC9zdGF0ZS1zeW5jLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU3JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("ul",[a("li",[t._v("For example, if the block explorer lists a current block height of 12,563,326, we could use a trust height of "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/blocks/12562000",target:"_blank",rel:"noopener noreferrer"}},[t._v("12,562,000"),a("OutboundLink")],1),t._v(" and the trust hash would be "),a("code",[t._v("6F958861E1FA409639C8F2DA899D09B9F50A66DBBD49CE021A2FF680FA8A9204")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"cosmovisor-setup-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor-setup-optional"}},[t._v("#")]),t._v(" Cosmovisor Setup (Optional)")]),t._v(" "),a("p",[t._v("Cosmovisor is a process manager that monitors the governance module for incoming chain upgrade proposals. When a proposal is approved, Cosmovisor can automatically download the new binary, stop the chain binary when it hits the upgrade height, switch to the new binary, and restart the daemon. Cosmovisor can be used with either Fast Sync or State Sync.")]),t._v(" "),a("p",[t._v("The instructions below provide a simple way to sync via Cosmovisor. For more information on configuration, check out the Cosmos SDK's "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor documentation"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Cosmovisor requires the creation of the following directory structure:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUlOKUgOKUgCBnZW5lc2lzCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQK"}}),t._v(" "),a("p",[t._v("Install Cosmovisor and copy Gaia binary to genesis folder")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z28gaW5zdGFsbCBjb3Ntb3NzZGsuaW8vdG9vbHMvY29zbW92aXNvci9jbWQvY29zbW92aXNvckB2MS41LjAKbWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwIH4vZ28vYmluL2dhaWFkIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8K"}}),t._v(" "),a("h3",{attrs:{id:"create-service-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-service-file"}},[t._v("#")]),t._v(" Create Service File")]),t._v(" "),a("ul",[a("li",[t._v("Cosmos Hub recommends running "),a("code",[t._v("gaiad")]),t._v(" or "),a("code",[t._v("cosmovisor")]),t._v(" with the "),a("code",[t._v("--x-crisis-skip-assert-invariants")]),t._v(" flag. If checking for invariants, operators are likely to see "),a("code",[t._v("rounding error withdrawing rewards from validator")]),t._v(". These are expected. For more information see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#verify-mainnet"}},[t._v("Verify Mainnet")]),t._v(".")],1)]),t._v(" "),a("p",[t._v("Create one of the following service files.")]),t._v(" "),a("p",[t._v("If you are not using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/gaiad.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9nYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0Cg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/cosmovisor.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vdmlzb3Igc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9jb3Ntb3Zpc29yIHJ1biBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgpFbnZpcm9ubWVudD0nREFFTU9OX05BTUU9Z2FpYWQnCkVudmlyb25tZW50PSdEQUVNT05fSE9NRT0vcm9vdC8uZ2FpYScKRW52aXJvbm1lbnQ9J0RBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX0xPR19CVUZGRVJfU0laRT01MTInCkVudmlyb25tZW50PSdVTlNBRkVfU0tJUF9CQUNLVVA9dHJ1ZScKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}}),t._v(" "),a("h3",{attrs:{id:"start-the-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-service"}},[t._v("#")]),t._v(" Start the Service")]),t._v(" "),a("p",[t._v("Reload the systemd manager configuration.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQKc3lzdGVtY3RsIHJlc3RhcnQgc3lzdGVtZC1qb3VybmFsZAo="}}),t._v(" "),a("p",[t._v("If you are not using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBnYWlhZC5zZXJ2aWNlCnN5c3RlbWN0bCBzdGFydCBnYWlhZC5zZXJ2aWNlCg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBjb3Ntb3Zpc29yLnNlcnZpY2UKc3lzdGVtY3RsIHN0YXJ0IGNvc21vdmlzb3Iuc2VydmljZQo="}}),t._v(" "),a("p",[t._v("To follow the service log, run "),a("code",[t._v("journalctl -fu gaiad")]),t._v(" or "),a("code",[t._v("journalctl -fu cosmovisor")]),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.")]),t._v(" "),a("li",[t._v("If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. "),a("strong",[t._v("Syncing to the current block height will take several days")]),t._v(".")])]),t._v(" "),a("h2",{attrs:{id:"create-a-validator-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-optional"}},[t._v("#")]),t._v(" Create a Validator (Optional)")]),t._v(" "),a("p",[t._v("If you want to create a validator in the testnet, request tokens through the "),a("a",{attrs:{href:"https://discord.com/channels/669268347736686612/953697793476821092",target:"_blank",rel:"noopener noreferrer"}},[t._v("faucet Discord channel"),a("OutboundLink")],1),t._v(" and follow the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Running a validator")]),t._v(" instructions provided for mainnet.")],1),t._v(" "),a("h2",{attrs:{id:"upgrading-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-your-node"}},[t._v("#")]),t._v(" Upgrading Your Node")]),t._v(" "),a("p",[t._v("Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.")]),t._v(" "),a("p",[t._v("When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show "),a("code",[t._v('ERR UPGRADE "" NEEDED at height: XXXX')]),t._v(" or something similar).")]),t._v(" "),a("p",[t._v("There are three ways you can update the binary:")]),t._v(" "),a("ol",[a("li",[t._v("Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:")])]),t._v(" "),a("ul",[a("li",[t._v("Stop the gaiad service with "),a("code",[t._v("systemctl stop gaiad.service")]),t._v(".")]),t._v(" "),a("li",[t._v("Build or download the new binary, replacing the existing "),a("code",[t._v("~/go/bin")]),t._v(" one.")]),t._v(" "),a("li",[t._v("Start the gaiad service with "),a("code",[t._v("systemctl start gaiad.service")]),t._v(".")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[t._v("With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.")]),t._v(" "),a("li",[t._v("With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.")])]),t._v(" "),a("p",[t._v("The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor#auto-download",target:"_blank",rel:"noopener noreferrer"}},[t._v("documentation"),a("OutboundLink")],1),t._v(" in the Cosmos SDK repo.")]),t._v(" "),a("p",[t._v("If the environment variable "),a("code",[t._v("DAEMON_ALLOW_DOWNLOAD_BINARIES")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(", Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the "),a("code",[t._v("v13")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTMKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxMy9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjEzLjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxMyB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjEzL2Jpbi9nYWlhZAo="}}),t._v(" "),a("p",[t._v("When the upgrade height is reached, Cosmovisor will stop the gaiad binary, copy the new binary to the "),a("code",[t._v("current/bin")]),t._v(" folder and restart. After a few minutes, the node should start syncing blocks using the new binary.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/123.eacc5a93.js b/main/assets/js/123.69ec9ad9.js similarity index 99% rename from main/assets/js/123.eacc5a93.js rename to main/assets/js/123.69ec9ad9.js index 1beac21f499..922947f8531 100644 --- a/main/assets/js/123.eacc5a93.js +++ b/main/assets/js/123.69ec9ad9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{583: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("div",{staticClass:"custom-block warning"},[a("p",[e._v("If the new version you are upgrading to has breaking changes, you will have to restart your chain. If it is not breaking, you can skip to "),a("a",{attrs:{href:"#restart"}},[e._v("Restart")])])]),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 the version you are upgrading to is not breaking from the previous one, you should not reset the data. If it is not breaking, you can skip to "),a("a",{attrs:{href:"#restart"}},[e._v("Restart")])])]),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],{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("div",{staticClass:"custom-block warning"},[a("p",[e._v("If the new version you are upgrading to has breaking changes, you will have to restart your chain. If it is not breaking, you can skip to "),a("a",{attrs:{href:"#restart"}},[e._v("Restart")])])]),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 the version you are upgrading to is not breaking from the previous one, you should not reset the data. If it is not breaking, you can skip to "),a("a",{attrs:{href:"#restart"}},[e._v("Restart")])])]),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.bfa80ec4.js b/main/assets/js/124.3b78d336.js similarity index 79% rename from main/assets/js/124.bfa80ec4.js rename to main/assets/js/124.3b78d336.js index aa1e06af87f..fc6e0a50c22 100644 --- a/main/assets/js/124.bfa80ec4.js +++ b/main/assets/js/124.3b78d336.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{585: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.c6074627.js b/main/assets/js/125.b8ef922c.js similarity index 97% rename from main/assets/js/125.c6074627.js rename to main/assets/js/125.b8ef922c.js index cbbc4d128fe..a169bbcff62 100644 --- a/main/assets/js/125.c6074627.js +++ b/main/assets/js/125.b8ef922c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{586: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],{579: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/126.73158116.js b/main/assets/js/126.436c676f.js similarity index 99% rename from main/assets/js/126.73158116.js rename to main/assets/js/126.436c676f.js index 7eec20ec9a2..5f1483f8239 100644 --- a/main/assets/js/126.73158116.js +++ b/main/assets/js/126.436c676f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{483:function(g,I,C){"use strict";C.r(I);var s=C(1),t=Object(s.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:"위임자-가이드라인-cli"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#위임자-가이드라인-cli"}},[g._v("#")]),g._v(" 위임자 가이드라인 (CLI)")]),g._v(" "),C("p",[g._v("이 문서는 위임자가 커맨드라인 인터페이스(CLI, Command-Line Interface)를 통해 코스모스 허브와 소통하기 위해 필요한 모든 정보를 포함하고 있습니다.")]),g._v(" "),C("p",[g._v("또한 계정 관리, 코스모스 펀드레이저로 받은 계정을 복구하는 방법, 그리고 렛저 나노 하드웨어 지갑 사용법 또한 포함되어있습니다.")]),g._v(" "),C("p",[C("strong",[g._v("중요")]),g._v(": 이 문서에 설명되어있는 모든 단계를 신중하게 진행하십시오. 특정 행동의 실수는 소유하고 있는 아톰의 손실을 초래할 수 있습니다. 진행 전 이 문서에 있는 모든 절차를 자세히 확인하시고 필요시 코스모스 팀에게 연락하십시오. "),C("strong",[g._v("이 문서는 참고용 정보를 제공하기 위해 번역된 영어 원문의 번역본입니다. 이 문서에 포함되어있는 정보의 완결성은 보장되지 않으며, 개인의 행동에 따른 손실을 책임지지 않습니다. 꼭 영어 원문을 참고하시기 바랍니다. 만약 이 문서의 정보와 영어 원문의 정보가 다른 경우, 영어 문서의 정보가 상위 권한을 가지게 됩니다.")])]),g._v(" "),C("p",[g._v("CLI를 사용하는 위임자는 매우 실험적인 블록체인 기술이 사용되고 있는 코스모스 허브를 사용하게됩니다. 코스모스 허브는 우수한 기술을 기반으로 다수의 보안 감사를 진행했으나 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 또한 블록체인 기술을 사용하는 것은 상당한 기술적 배경을 필요로 하며, 공식 팀의 컨트롤 밖에 있는 리스크가 따릅니다. 유저는 이 소프트웨어를 사용함으로써 암호학 기반 소프트웨어를 사용하는 리스크를 인지하고 있음을 인정하는 것입니다. (참고 문서: "),C("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[g._v("인터체인 코스모스 펀드레이저 약관"),C("OutboundLink")],1),g._v(").")]),g._v(" "),C("p",[g._v("인터체인 재단(Interchain Foundation)과 텐더민트 팀은 소프트웨어 사용으로 발생하는 모든 손실에 대해서 책임을 지지 않습니다. Apache 2.0 라이선스 기반의 오픈소스 소프트웨어를 사용하는 것은 각 개인의 책임이며, 소프트웨어는 그 어떤 보증과 조건이 없는 'As Is(있는 그대로)' 기반으로 제공됩니다.")]),g._v(" "),C("p",[g._v("모든 절차는 신중하게 진행하시기 바랍니다.")]),g._v(" "),C("h2",{attrs:{id:"목차"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#목차"}},[g._v("#")]),g._v(" 목차")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#installing-gaiad"}},[C("code",[g._v("gaiad")]),g._v(" 설치하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#cosmos-accounts"}},[g._v("코스모스 계정")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[g._v("펀드레이저 계정 복구하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#creating-an-account"}},[g._v("계정 생성하기")])])])]),g._v(" "),C("li",[C("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[g._v("코스모스 허브 네트워크 액세스하기")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#running-your-own-full-node"}},[g._v("자체 풀노드 운영하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#connecting-to-a-remote-full-node"}},[g._v("원격 풀노드 연결하기")])])])]),g._v(" "),C("li",[C("a",{attrs:{href:"#setting-up-gaiad"}},[C("code",[g._v("gaiad")]),g._v(" 설정하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#querying-the-state"}},[g._v("상태(state) 조회하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#sending-transactions"}},[g._v("트랜잭션 전송하기")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#a-note-on-gas-and-fees"}},[g._v("가스(Gas)와 수수료 관련 정보")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[g._v("아톰 위임 및 위임 보상 수령하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#participating-in-governance"}},[g._v("거버넌스에 참여하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("오프라인 컴퓨터에서 트랜잭션 서명하기")])])])])]),g._v(" "),C("h2",{attrs:{id:"gaiad-설치하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설치하기"}},[g._v("#")]),g._v(" "),C("code",[g._v("gaiad")]),g._v(" 설치하기")]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v(": "),C("code",[g._v("gaiad")]),g._v("는 "),C("code",[g._v("gaiad")]),g._v(" 풀노드와 소통하기 위해 사용되는 명령어 기반 인터페이스입니다.")]),g._v(" "),C("p",[g._v("::: 경고\n"),C("strong",[g._v("추가적인 행동을 진행하기 전 최신 "),C("code",[g._v("gaiad")]),g._v(" 클라이언트를 다운로드 하셨는지 확인하십시오")]),g._v("\n:::")]),g._v(" "),C("p",[g._v("["),C("strong",[g._v("바이너리 설치하기")]),g._v("]")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[C("strong",[g._v("소스에서 설치하기")]),C("OutboundLink")],1)]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("`gaiad`는 터미널 환경에서 사용됩니다. 다음과 같이 터미널을 실행하세요:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("윈도우")]),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(" "),C("li",[C("strong",[g._v("맥OS")]),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(" "),C("li",[C("strong",[g._v("리눅스")]),g._v(": "),C("code",[g._v("Ctrl")]),g._v(" + "),C("code",[g._v("Alt")]),g._v(" + "),C("code",[g._v("T")]),g._v(":::")])]),g._v(" "),C("h2",{attrs:{id:"코스모스-계정"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-계정"}},[g._v("#")]),g._v(" 코스모스 계정")]),g._v(" "),C("p",[g._v("모든 코스모스 계정에는 12개 또는 24개의 단어로 이루어진 '시드(Seed)'가 할당됩니다. 이 시드 단어(또는 시드 키)를 기반으로 다수의 코스모스 계정을 생성할 수 있습니다 (예를들어: 다수의 프라이빗 키/퍼블릭 키 쌍). 이런 형태의 월렛은 HD(Hierarchical deterministic) 월렛이라고 불립니다 (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("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICAgICDqs4TsoJUgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg6rOE7KCVIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDqs4TsoJUgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICAgICDso7zshowgMCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAg7KO87IaMIDEgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICDso7zshowgMiAgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgICAg7Y2867iU66atIO2CpCAwICAgIHwgICAgICAgICAgICAgIHwgICAgIO2NvOu4lOumrSDtgqQgMSAgICAgfCAgICAgICAgICAgICAgIHwgICAgIO2NvOu4lOumrSDtgqQgMiAgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICArICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8CnwgICAg7ZSE65287J2067mXIO2CpCAwICAgIHwgICAgICAgICAgICAgIHwgICAgIO2UhOudvOydtOu5lyDtgqQgMSAgIHwgICAgICAgICAgICAgICB8ICAgICDtlITrnbzsnbTruZcg7YKkIDIgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgTW5lbW9uaWMgKOyLnOuTnCkgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKwo="}}),g._v(" "),C("p",[g._v("특정 계좌에 보관된 자산은 프라이빗 키에 의해 관리됩니다. 이 프라이빗 키는 시드의 일방적 기능(one-way function)을 통해 생성됩니다. 프라이빗 키를 분실한 경우, 시드 키를 사용하여 프라이빗 키를 다시 복구하는 것이 가능합니다. 하지만 시드 키를 분실한 경우, 모든 프라이빗 키에 대한 사용권을 잃게 됩니다. 누군가 본인의 시드 키를 가진 경우, 해당 키와 연관된 모든 계정의 소유권을 가진 것과 동일합니다.")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])])])],1),g._v(" "),C("p",[g._v("주소는 특정 계정을 구분하는 용도로 사용되며, 단어로 이루어진 특정 프리픽스(예, cosmos10)와 스트링 값을 조합한 값입니다 (예, "),C("code",[g._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),g._v("). 주소는 누군가 자산을 특정 계정으로 전송할때 사용되며, 퍼블릭키를 사용해 프라이빗 키를 추출하는 것은 불가능합니다.")]),g._v(" "),C("h3",{attrs:{id:"펀드레이저-계정-복구하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#펀드레이저-계정-복구하기"}},[g._v("#")]),g._v(" 펀드레이저 계정 복구하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",[C("em",[g._v("참고: 이 항목은 코스모스 펀드레이저 참가자만을 위한 정보입니다")])])]),g._v(" "),C("p",[g._v("코스모스 펀드레이저에 참가한 인원은 12개의 단어로 구성된 시드키를 부여받습니다. 새로 생성된 시드키는 24개 단어로 이루어졌으나, 12개 단어로 이루어진 시드키 또한 모든 코스모스가 제공하는 도구에서 호환됩니다.")]),g._v(" "),C("h4",{attrs:{id:"렛저-ledger-기기-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#렛저-ledger-기기-사용하기"}},[g._v("#")]),g._v(" 렛저(Ledger) 기기 사용하기")]),g._v(" "),C("p",[g._v("모든 렛저 기기에는 (코스모스 허브를 포함한) 다수의 블록체인에서 계정을 생성하기 위해 사용되는 시드키가 있습니다. 통상 시드키는 렛저 기기를 처음 활성화 할때 생성하지만, 유저가 시드키를 직접 입력하는 것 또한 가능합니다. 이제 펀드레이저를 통해 받은 시드키를 어떻게 렛저 하드웨어 지갑에 입력하는지 알아보겠습니다.")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("em",[g._v("참고: 이번 단계를 진행하실때 "),C("strong",[g._v("신규 기기를 사용하는 것을 권장합니다")]),g._v(". 한 렛저 기기에는 하나의 시드키만을 입력할 수 있습니다. 만약 이미 사용하시던 하드웨어 지갑을 사용하시기를 바라는 경우, "),C("code",[g._v("Settings")]),g._v(">"),C("code",[g._v("Device")]),g._v(">"),C("code",[g._v("Reset All")]),g._v("를 통해 리셋을 진행한 후 펀드레이저 시드를 입력할 수 있습니다. "),C("strong",[g._v("렛저 기기를 리셋할 경우, 기존에 사용했던 시드키는 기기에서 삭제됩니다. 리셋을 진행하기 전 기존 기기의 시드키를 백업하셨는지 확인하신 후 진행하시기 바랍니다.")]),g._v(" 백업 되지 않은 상태로 기기를 리셋하는 경우, 관련 계정의 자산을 잃을 수 있습니다.")])])]),g._v(" "),C("p",[g._v("다음 단계는 신규 렛저 기기 또는 초기화 된 렛저 기기에서 진행되어야 합니다:")]),g._v(" "),C("ol",[C("li",[g._v("USB를 사용해 렛저 기기를 컴퓨터에 연결하세요")]),g._v(" "),C("li",[g._v("두개의 버튼을 동시에 누르세요")]),g._v(" "),C("li",[g._v('"Restore Configuration"을 선택하세요. '),C("strong",[g._v('"Config as a new device"를 선택하시면 안됩니다')])]),g._v(" "),C("li",[g._v("원하시는 핀 번호를 입력하세요")]),g._v(" "),C("li",[g._v("12-words 옵션을 선택하세요")]),g._v(" "),C("li",[g._v("코스모스 펀드레이저에서 부여 받은 시드키를 차례대로 정확하게 입력하세요")])]),g._v(" "),C("p",[g._v("이제 렛저 하드웨어 지갑 기기가 펀드레이저 시드로 활성화되었습니다. 기존의 펀드레이저 시드를 파기하지 마십시오! 만약 렛저 기기가 고장나거나 분실된 경우, 동일한 시드키를 이용해 복구가 가능합니다.")]),g._v(" "),C("p",[g._v("이제 "),C("a",{attrs:{href:"#using-a-ledger-device"}},[g._v("여기")]),g._v("를 클릭하여 계정을 생성하는 방법을 확인하세요.")]),g._v(" "),C("h4",{attrs:{id:"컴퓨터-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#컴퓨터-사용하기"}},[g._v("#")]),g._v(" 컴퓨터 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 행동은 오프라인 상태인 컴퓨터에서 진행하는 것이 더욱 안전합니다.")])])]),g._v(" "),C("p",[g._v("컴퓨터를 이용해 펀드레이저 시드키를 복구하시고 컴퓨터에 프라이빗 키를 저장사기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oWW91cktleU5hbWUpJmd0OyAtLXJlY292ZXIK"}}),g._v(" "),C("p",[g._v("명령어를 입력하셨다면 프로그램이 지금 생성(복구)하시는 계정의 프라이빗 키를 암호화할때 사용될 비밀번호를 입력할 것을 요청합니다. 해당 계정을 이용해 트랜잭션을 보낼때마다 이 비밀번호를 입력하셔야 합니다. 만약 비밀번호를 잃어버리셨다면 시드키를 사용해 계정을 다시 복구할 수 있습니다.")]),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("h3",{attrs:{id:"계정-생성하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#계정-생성하기"}},[g._v("#")]),g._v(" 계정 생성하기")]),g._v(" "),C("p",[g._v("새로운 계정을 생성하기 위해서는 "),C("code",[g._v("gaiad")]),g._v("를 설치해야합니다. 신규 계정을 생성하기 전, 프라이빗 키를 어디에 저장하고 어떻게 불러올지 미리 인지를 하셔야 합니다. 프라이빗 키를 보관하기 가장 좋은 곳은 오프라인 컴퓨터 또는 렛저 하드웨어 월렛 기기입니다. 흔히 사용되는 온라인 컴퓨터에 프라이빗 키를 보관하게 될 경우, 인터넷을 통해 컴퓨터를 침투한 공격자가 프라이빗 키를 탈취할 수 있기 때문에 상당한 리스크가 존재합니다.")]),g._v(" "),C("h4",{attrs:{id:"렛저-ledger-하드웨어-월렛-기기-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#렛저-ledger-하드웨어-월렛-기기-사용하기"}},[g._v("#")]),g._v(" 렛저(Ledger) 하드웨어 월렛 기기 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("새로 주문한 렛저 기기 또는 신뢰할 수 있는 렛저 기기만을 사용하세요")])])]),g._v(" "),C("p",[g._v("렛저 기기를 처음 활성화할때 24개 단어로 구성된 시드키가 생성되고 기기에 저장됩니다. 렛저 기기의 시드키는 코스모스와 코스모스 계정과 호환이 되며, 해당 시드키를 기반으로 계정을 생성할 수 있습니다. 렛저 기기는 "),C("code",[g._v("gaiad")]),g._v("와 호환될 수 있게 설정이 되어야 합니다. 렛저 기기를 설정하는 방법은 다음과 같습니다:")]),g._v(" "),C("ol",[C("li",[C("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[g._v("Ledger Live 앱"),C("OutboundLink")],1),g._v(" 다운로드")]),g._v(" "),C("li",[g._v("렛저 기기를 USB로 연결한 후 최신 펌웨어 버전으로 업데이트")]),g._v(" "),C("li",[g._v('Ledger Live 앱스토어로 이동한 후, "Cosmos" 애플리케이션 다운로드. (이 단계는 다소 시간이 걸릴 수 있습니다)')]),g._v(" "),C("li",[g._v("렛저 기기에서 코스모스 앱 선택")])]),g._v(" "),C("p",[g._v("계정을 생성하기 위해서는 다음 명령어를 실행하십시오:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0OyAtLWxlZGdlciAK"}}),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("h4",{attrs:{id:"컴퓨터-사용하기-2"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#컴퓨터-사용하기-2"}},[g._v("#")]),g._v(" 컴퓨터 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 행동은 오프라인 상태인 컴퓨터에서 진행하는 것이 더욱 안전합니다.")])])]),g._v(" "),C("p",[g._v("계정을 생성하기 위해서는 다음 명령어를 입력하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0Owo="}}),g._v(" "),C("p",[g._v("위 명령어는 새로운 24단어로 구성된 시드키를 생성하고, 계정 "),C("code",[g._v("0")]),g._v("의 프라이빗 키와 퍼블릭 키를 저장합니다. 이후, 디스크에 저장될 계정 "),C("code",[g._v("0")]),g._v("의 프라이빗 키를 암호화할때 사용될 비밀번호를 입력할 것을 요청합니다. 해당 계정을 이용해 트랜잭션을 보낼때마다 이 비밀번호를 입력하셔야 합니다. 만약 비밀번호를 잃어버리셨다면 시드키를 사용해 계정을 다시 복구할 수 있습니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("경고: 12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])])]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[g._v("시드키를 안전하게 보관하셨다면 (두번 세번씩이라도 정확하게 작성되었는지 확인하셔야 합니다!) 커맨드 라인의 기록을 다음과 같이 삭제하시면 됩니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}})],1),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("p",[g._v("동일한 시드키로 추가적인 계정을 생성하기 원한다면, 다음 명령어를 사용하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),g._v(" "),C("p",[g._v("해당 명령어는 비밀번호와 시드키를 입력할 것을 요청할 것입니다. 이 외에 추가적인 계정을 생성하시기 원한다면 account 플래그의 번호를 바꾸십시오.")]),g._v(" "),C("h2",{attrs:{id:"코스모스-허브-네트워크-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-네트워크-사용하기"}},[g._v("#")]),g._v(" 코스모스 허브 네트워크 사용하기")]),g._v(" "),C("p",[g._v("블록체인의 상태(state)를 확인하거나 트랜잭션을 전송하기 위해서는 직접 풀노드를 운영하거나 다른 사람이 운영하는 풀노드에 연결할 수 있습니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("경고: 12개 단어 / 24개 단어 시드키를 그 누구와도 공유하지 마세요. 시드키는 본인만이 알고있어야 합니다. 특히 이메일, 메시지 등의 수단으로 블록체인 서비스 지원을 사칭해 시드키를 요청할 수 있으니 주의를 바랍니다. 코스모스 팀, 텐더민트 팀 그리고 인터체인 재단은 절대로 이메일을 통해 개인 정보 또는 시드키를 요청하지 않습니다.")]),g._v(".")])]),g._v(" "),C("h3",{attrs:{id:"직접-풀노드-운영하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#직접-풀노드-운영하기"}},[g._v("#")]),g._v(" 직접 풀노드 운영하기")]),g._v(" "),C("p",[g._v("이 방법이 가장 안전한 방법이지만, 대량의 리소스를 필요로 합니다. 풀노드를 직접 운영하기 위해서는 우수한 인터넷 대역폭과 최소 1TB 상당의 하드디스크 용량을 필요로 합니다.")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/join-mainnet.html",target:"_blank",rel:"noopener noreferrer"}},[g._v("풀노드를 운영하는 절차"),C("OutboundLink")],1),g._v("와 "),C("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[C("code",[g._v("gaiad")]),g._v("를 설치하는 방법"),C("OutboundLink")],1),g._v("은 첨부된 링크를 확인하세요.")]),g._v(" "),C("h3",{attrs:{id:"원격-풀노드-연결하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#원격-풀노드-연결하기"}},[g._v("#")]),g._v(" 원격 풀노드 연결하기")]),g._v(" "),C("p",[g._v("만약 본인이 직접 풀노드를 운영하는 것을 원하지 않는다면 다른 사람의 풀노드에 연결을 할 수 있습니다. 이 과정에서는 신뢰할 수 있는 풀노드 운영자에만 연결하세요. 악의적인 풀노드 운영자는 트랜잭션을 막거나 틀린 정보를 전달할 가능성이 있습니다. 하지만 프라이빗 키는 당신의 컴퓨터/렛저 기기에 저장되어 있기 때문에 풀노드 운영자는 절대로 자금을 탈취할 수 없습니다. 검증된 검증인, 월렛 제공자, 거래소 등의 풀노드에만 연결하는 것을 추천드립니다.")]),g._v(" "),C("p",[g._v("풀노드에 연결하기 위해서는 다음과 같은 형식의 주소가 필요합니다: "),C("code",[g._v("https://77.87.106.33:26657")]),g._v(" ("),C("em",[g._v("이는 예시를 위한 주소이며 실제 풀노드 주소가 아닙니다")]),g._v("). 이 계정은 신뢰할 수 있는 풀노드 운영자에게서 직접 받으시기 바랍니다. 이 주소는 "),C("a",{attrs:{href:"#setting-up-gaiad"}},[g._v("다음 항목")]),g._v("에서 사용됩니다.")]),g._v(" "),C("h2",{attrs:{id:"gaiad-설정하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설정하기"}},[g._v("#")]),g._v(" "),C("code",[g._v("gaiad")]),g._v(" 설정하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[C("code",[g._v("gaiad")]),g._v("의 최신 스테이블 버전을 사용하고 있는지 확인해주세요")])])]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v("는 코스모스 허브 네트워크에서 운영되고 있는 노드와 소통할 수 있게 하는 도구입니다. 풀노드는 본인이 직접 운영하거나, 타인이 운영하는 풀노드를 사용할 수 있습니다. 이제 "),C("code",[g._v("gaiad")]),g._v("의 설정을 진행하겠습니다.")]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v("을 설정하기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDvtlIzrnpjqt7goZmxhZykmZ3Q7ICZsdDvqsJIodmFsdWUpJmd0Owo="}}),g._v(" "),C("p",[g._v("해당 명령어는 각 플래그에 대한 값을 설정할 수 있게 합니다. 우선 연결하고 싶은 풀노드의 주소를 입력하겠습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O+2YuOyKpO2KuChob3N0KSZndDs6Jmx0O+2PrO2KuChwb3J0KSZndDsKCi8vIOyYiOyLnDogZ2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly83Ny44Ny4xMDYuMzM6MjY2NTcK"}}),g._v(" "),C("p",[g._v("만약 풀노드를 직접 운영하시는 경우, "),C("code",[g._v("tcp://localhost:26657")]),g._v("을 주소 값으로 입력하세요.")]),g._v(" "),C("p",[g._v("마지막으로 소통하고 싶은 블록체인의 "),C("code",[g._v("chain-id")]),g._v("를 입력하겠습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGdvcy0zCg=="}}),g._v(" "),C("h2",{attrs:{id:"블록체인-상태-조회하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#블록체인-상태-조회하기"}},[g._v("#")]),g._v(" 블록체인 상태 조회하기")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/gaiad.html",target:"_blank",rel:"noopener noreferrer"}},[C("code",[g._v("gaiad")]),C("OutboundLink")],1),g._v("는 계정 잔고, 스테이킹 중인 토큰 수량, 지급 가능한 보상, 거버넌스 프로포절 등 블록체인과 관련된 모든 정보를 확인할 수 있게 합니다. 다음은 위임자에게 유용한 명령어들입니다. 다음 명령어를 실행하기 전 "),C("a",{attrs:{href:"#setting-up-gaiad"}},[g._v("gaiad 설정")]),g._v("을 진행하세요.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g6rOE7KCVIOyelOqzoOyZgCDqs4TsoJUg6rSA66CoIOygleuztCDsobDtmowKZ2FpYWQgcXVlcnkgYWNjb3VudAoKLy8g6rKA7Kad7J24IOuqqeuhnSDsobDtmowKZ2FpYWQgcXVlcnkgdmFsaWRhdG9ycwoKLy8g6rKA7Kad7J24IOyjvOyGjOuhnCAo7JiI7IucOiBjb3Ntb3MxMHNuanQ4ZG1wcjVteTBoNzZ4ajQ4dHk4MHV6d2hyYXFhbHU0ZWcpIOqygOymneyduCDsoJXrs7Qg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHZhbGlkYXRvciAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzKSZndDsKCi8vIOychOyehOyekCDso7zshozroZwgKOyYiOyLnDogY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKSDqs4TsoJXsnZgg66qo65OgIOychOyehCDquLDroZ0g7KGw7ZqMCmdhaWFkIHF1ZXJ5IGRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OwoKLy8g7JyE7J6E7J6Q6rCAIO2KueyglSDqsoDspp3snbjsl5Dqsowg7JyE7J6E7ZWcIOq4sOuhnSDsobDtmowKZ2FpYWQgcXVlcnkgZGVsZWdhdGlvbnMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yQWRkcmVzcykmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvckFkZHJlc3MpJmd0OwoKLy8g7JyE7J6E7J6QIOyjvOyGjOuhnCAo7JiI7IucOiBjb3Ntb3MxMHNuanQ4ZG1wcjVteTBoNzZ4ajQ4dHk4MHV6d2hyYXFhbHU0ZWcpIOychOyehOyekCDrpqzsm4zrk5wg7KGw7ZqMCmdhaWFkIHF1ZXJ5IGRpc3RyaWJ1dGlvbiByZXdhcmRzICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OyAKCi8vIOuztOymneq4iChkZXBvc2l0KeydhCDrjIDquLDspJHsnbgg66qo65OgIO2UhOuhnO2PrOygiCDsobDtmowKZ2FpYWQgcXVlcnkgcHJvcG9zYWxzIC0tc3RhdHVzIGRlcG9zaXRfcGVyaW9kCgovLyDtiKztkZzqsIAg6rCA64ql7ZWcIOuqqOuToCDtlITroZztj6zsoIgg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHByb3Bvc2FscyAtLXN0YXR1cyB2b3RpbmdfcGVyaW9kCgovLyDtirnsoJUg7ZSE66Gc7Y+s7KCIIElE66GcIO2UhOuhnO2PrOygiCDsoJXrs7Qg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHByb3Bvc2FsICZsdDtwcm9wb3NhbElEJmd0Owo="}}),g._v(" "),C("p",[g._v("더 많은 명령어를 확인하기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),g._v(" "),C("p",[g._v("각 명령어에는 "),C("code",[g._v("-h")]),g._v(" 또는 "),C("code",[g._v("--help")]),g._v("를 추가하여 관련 정보를 확인하실 수 있습니다.")]),g._v(" "),C("h2",{attrs:{id:"트랜잭션-전송하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-전송하기"}},[g._v("#")]),g._v(" 트랜잭션 전송하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[g._v("코스모스 메인넷에서는 "),C("code",[g._v("uatom")]),g._v(" 단위가 표준 단위로 사용됩니다. "),C("code",[g._v("1atom = 1,000,000uatom")]),g._v("으로 환산됩니다.")])]),g._v(" "),C("h3",{attrs:{id:"가스와-수수료에-대해서"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#가스와-수수료에-대해서"}},[g._v("#")]),g._v(" 가스와 수수료에 대해서")]),g._v(" "),C("p",[g._v("코스모스 허브 네트워크는 트랜잭션 처리를 위해 트랜잭션 수수료를 부과합니다. 해당 수수료는 트랜잭션을 실행하기 위한 가스로 사용됩니다. 공식은 다음과 같습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"7IiY7IiY66OMKEZlZSkgPSDqsIDsiqQoR2FzKSAqIOqwgOyKpCDqsJIoR2FzUHJpY2VzKQo="}}),g._v(" "),C("p",[g._v("위 공식에서 "),C("code",[g._v("gas")]),g._v("는 전송하는 트랜잭션에 따라 다릅니다. 다른 형태의 트랜잭션은 각자 다른 "),C("code",[g._v("gas")]),g._v("량을 필요로 합니다. "),C("code",[g._v("gas")]),g._v(" 수량은 트랜잭션이 실행될때 계산됨으로 사전에 정확한 값을 확인할 수 있는 방법은 없습니다. 다만, "),C("code",[g._v("gas")]),g._v(" 플래그의 값을 "),C("code",[g._v("auto")]),g._v("로 설정함으로 예상 값을 추출할 수는 있습니다. 예상 값을 수정하기 위해서는 "),C("code",[g._v("--gas-adjustment")]),g._v(" (기본 값 "),C("code",[g._v("1.0")]),g._v(") 플래그 값을 변경하셔서 트랜잭션이 충분한 가스를 확보할 수 있도록 하십시오.")]),g._v(" "),C("p",[C("code",[g._v("gasPrice")]),g._v("는 각 "),C("code",[g._v("gas")]),g._v(" 유닛의 가격입니다. 각 검증인은 직접 최소 가스 가격인 "),C("code",[g._v("min-gas-price")]),g._v("를 설정하며, 트랜잭션의 "),C("code",[g._v("gasPrice")]),g._v("가 설정한 "),C("code",[g._v("min-gas-price")]),g._v("보다 높을때 트랜잭션을 처리합니다.")]),g._v(" "),C("p",[g._v("트랜잭션 피("),C("code",[g._v("fees")]),g._v(")는 "),C("code",[g._v("gas")]),g._v(" 수량과 "),C("code",[g._v("gasPrice")]),g._v("를 곱한 값입니다. 유저는 3개의 값 중 2개의 값을 입력하게 됩니다. "),C("code",[g._v("gasPrice")]),g._v("가 높을수록 트랜잭션이 블록에 포함될 확률이 높아집니다.")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",[g._v("메인넷 권장 "),C("code",[g._v("gas-prices")]),g._v("는 "),C("code",[g._v("0.0025uatom")]),g._v(" 입니다.")])]),g._v(" "),C("h3",{attrs:{id:"토큰-전송하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#토큰-전송하기"}},[g._v("#")]),g._v(" 토큰 전송하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("**아톰을 위임하거나 위임 보상을 수령하기 전에 `gaiad`를 설치하시고 계정을 만드셔야 합니다**:::")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",{staticClass:"custom-block-title"},[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서 실행되어야 합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 [여기](#signing-transactions-from-an-offline-computer)를 참고하세요")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly/tirnsoJUg7IiY65+J7J2YIO2GoO2BsOydhCDsp4DsoJXtlZwg7KO87IaM66GcIOyghOyGoe2VmOq4sAovL+2MjOudvOuvuO2EsCDqsJIg7JiI7IucKOyLpOygnCDthqDtgbAg7KCE7Iah7IucIOyCrOyaqe2VmOyngCDrp4jshLjsmpQhKTogJmx0O+yImOyLoOyekF/so7zshoxf7JiI7IucJmd0Oz1jb3Ntb3MxNm05M2ZlemZpZXpodm5qYWp6cmZ5c3ptbDhxbTkyYTB3NjdudGpoZDNkMCAmbHQ77IiY65+JX+yYiOyLnCZndDs9MTAwMDAwMHVhdG9tCi8v7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGJhbmsgc2VuZCAmbHQ77IiY7Iug7J6QX+yjvOyGjCZndDsgJmx0O+uztOuCtOuKlF/siJjrn4kmZ3Q7IC0tZnJvbSAmbHQ77YKkX+ydtOumhCZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Owo="}}),g._v(" "),C("h3",{attrs:{id:"아톰-위임하기-리워드-수령하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#아톰-위임하기-리워드-수령하기"}},[g._v("#")]),g._v(" 아톰 위임하기 / 리워드 수령하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("**아톰을 위임하거나 위임 보상을 수령하기 전에 `gaiad`를 설치하시고 계정을 만드셔야 합니다**:::")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("아톰을 위임하기 전에 "),C("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[g._v("위임자 faq"),C("OutboundLink")],1),g._v("를 먼저 확인하시고 위임에 따르는 책임과 위험을 사전에 인지하시기 바랍니다")])])])])],1)]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서 실행되어야 합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 "),C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("여기")]),g._v("를 참고하세요.")])])]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7Yq57KCVIOqygOymneyduOyXkOqyjCDslYTthrAg7JyE7J6E7ZWY6riwIAovLyDtlIzrnpjqt7gg6rCSIOyYiOyLnDogJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yQWRkcmVzcykmZ3Q7PSBjb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ77JyE7J6E7ZWgX+yImOufiShhbW91bnRUb0JvdW5kKSZndDs9MTAwMDAwMDB1YXRvbSwgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ77JyE7J6E7ZWgX+yImOufiShhbW91bnRUb0JvbmQpJmd0OyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7CgovLyDsnITsnoTrkJwg7JWE7Yaw7J2EIOuLpOuluCDqsoDspp3snbjsl5Dqsowg7J6s7JyE7J6EIO2VmOq4sAovLyDsnbTrr7gg6rKA7Kad7J247JeQ6rKMIOychOyehOydtCDrkJwg7IOB7YOc7JeQ7ISc66eMIOyCrOyaqe2VmOyLpCDsiJgg7J6I7Iq164uI64ukCi8vIOyerOychOyehOydgCDsponsi5wg67CY7JiB65Cp64uI64ukLiDsnqzsnITsnoQg64yA6riwIOq4sOqwhOydgCDsl4bsirXri4jri6QKLy8g7J6s7JyE7J6E7J2EIOynhO2Wie2VmOyLoCDtm4QsIOuPmeydvO2VnCDslYTthrDsl5Ag64yA7ZWcIOyerOychOyehOydgCAz7KO8IO2bhCDqsIDriqXtlanri4jri6QuCi8vIO2UjOuemOq3uCDqsJIg7JiI7IucOiAmbHQ76riw7KG0X+qygOymneyduF/so7zshowoc3JjVmFsaWRhdG9yQWRkcmVzcykmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDvsnqzsnITsnoTtlaBf7IiY65+JJmd0Oz0xMDAwMDAwMDB1YXRvbSwgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlICZsdDvquLDsobRf6rKA7Kad7J24X+yjvOyGjChzcmNWYWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+ydtOuPme2VoF/qsoDspp3snbhf7KO87IaMKGRlc3RWYWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+yerOychOyehO2VoF/siJjrn4koYW1vdW50VG9SZWRlbGVnYXRlKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0OwoKLy8g66qo65OgIOumrOybjOuTnCDsiJjroLntlZjquLAKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGRpc3RyaWJ1dGlvbiB3aXRoZHJhdy1hbGwtcmV3YXJkcyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7CgovLyDtirnsoJUg6rKA7Kad7J247Jy866GcIOu2gO2EsCDsnITsnoQg7Leo7IaM7ZWY6riwCi8vIOychOyehCDst6jshozqsIAg7JmE66OM65CY6riwIOychO2VtOyEnOuKlCAz7KO87J2YIOq4sOqwhOydtCDqsbjrpqzrqbAsIOychOyehCDst6jshozqsIAg7KeE7ZaJ7KSR7J24IOq4sOqwhOyXkOuKlCDtlbTri7kg7JWE7Yaw7J2EIOyghOyGoe2VmOyLpCDsiJgg7JeG7Iq164uI64ukLgovLyDtlIzrnpjqt7gg6rCSIOyYiOyLnDogJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yQWRkcmVzcykmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDvsnITsnoRf7Leo7IaM7ZWgX+yImOufiShhbW91bnRUb1VuYm9uZCkmZ3Q7PTEwMDAwMDAwdWF0b20sICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgdW5ib25kICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvckFkZHJlc3MpJmd0OyAmbHQ77JyE7J6EX+y3qOyGjO2VoF/siJjrn4koYW1vdW50VG9VbmJvbmQpJmd0OyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7Cgo6OjogdGlwCuugm+yggCDquLDquLDrpbwg7IKs7Jqp7ZW0IO2KuOuenOyereyFmOydhCDrsJzsg53tlZjsi5zripQg6rK97JqwLCDroJvsoIAg6riw6riw7JeQ7IScIO2KuOuenOyereyFmOydhCDtmZXsnbjtlZjripQg6rO87KCV7J20IOy2lOqwgOyggeycvOuhnCDrsJzsg53rkKnri4jri6QuIOy7tO2TqO2EsOyXkCDsl7DqsrDrkJjslrQg7J6I64qUIOq4sOq4sOyXkOyEnCDtirjrnpzsnq3shZjsnYQg7ISc66qF7ZWY7IWU7JW8IOuEpO2KuOybjO2BrOuhnCDsoITtjIzrkKnri4jri6QuCjo6OiAKCu2VtOuLuSDtirjrnpzsnq3shZjsnbQg7ISx6rO17KCB7Jy866GcIOynhO2WieuQnCDqsoPsnYQg7ZmV7J247ZWY6riwIOychO2VtOyEnOuKlCDri6TsnYwg7KGw7ZqMIOuqheugueyWtOulvCDsgqzsmqntlZjshLjsmpQ6CgpgYGBiYXNoCi8vIOyVhO2GsOydhCDsnITsnoTtlZjqsbDrgpgg66as7JuM65Oc66W8IOyImOugue2VmOyLoCDtm4Qg6rOE7KCVIOyelOqzoOqwgCDri6zrnbzsp5Hri4jri6QgKOqzhOyglSDsnpTqs6Ag7ZmV7J24IOuqheugueyWtCkKZ2FpYWQgcXVlcnkgYWNjb3VudAoKLy8g7JyE7J6E7J2EIOynhO2Wie2VmOyFqOuLpOuptCDsiqTthYzsnbTtgrkg7J6U6rOg6rCAIO2RnOyLnOuQqeuLiOuLpCAo7Iqk7YWM7J207YK5IO2ZleyduCDrqoXroLnslrQpCmdhaWFkIHF1ZXJ5IGRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OwoKLy8g7Yq4656c7J6t7IWY7J20IOu4lOuhneyytOyduOyXkCDtj6ztlajrkJjsl4jsnLzrqbQg7ZW064u5IHR4IOygleuztOulvCDsoITri6ztlanri4jri6QKLy8g7Yq4656c7J6t7IWY7J2EIOyDneyEse2VmOyFqOydhOuVjCDtkZzsi5zrkJjsl4jrjZggdHggaGFzaOulvCDsnoXroKXtlZjshLjsmpQgKO2KuOuenOyereyFmCDtmZXsnbgg66qF66C57Ja0KQpnYWlhZCBxdWVyeSB0eCAmbHQ77Yq4656c7J6t7IWYX+2VtOyLnCh0eEhhc2gpJmd0OwoK"}}),g._v(" "),C("p",[g._v("만약 원격 풀노드를 사용해 트랜잭션을 전송하신 경우, 블록 익스플로러를 통해 트랜잭션을 확인하십시오.")]),g._v(" "),C("h2",{attrs:{id:"거버넌스-참가하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-참가하기"}},[g._v("#")]),g._v(" 거버넌스 참가하기")]),g._v(" "),C("h3",{attrs:{id:"거버넌스에-대해서"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스에-대해서"}},[g._v("#")]),g._v(" 거버넌스에 대해서")]),g._v(" "),C("p",[g._v("코스모스 허브는 아톰을 스테이킹 한 위임자들이 투표를 할 수 있는 시스템이 내장되어있습니다. 프로포절의 종류는 3개가 있으며 다음과 같습니다:")]),g._v(" "),C("ul",[C("li",[C("code",[g._v("텍스트 프로포절(Text Proposals)")]),g._v(": 가장 기본적인 형태의 프로포절입니다. 특정 주제에 대한 네트워크의 의견을 확인하기 위해서 사용됩니다.")]),g._v(" "),C("li",[C("code",[g._v("파라미터 프로포절(Parameter Proposals)")]),g._v(": 네트워크의 기존 파라미터 값을 변경하는 것을 제안하기 위해서 사용됩니다.")]),g._v(" "),C("li",[C("code",[g._v("소프트웨어 업그레이드 프로포절(Software Upgrade Proposal)")]),g._v(": 코스모스 허브의 소프트웨어를 업그레이드 하는 것을 제안하기 위해서 사용됩니다.")])]),g._v(" "),C("p",[g._v("모든 아톰 보유자는 프로포절을 제안할 수 있습니다. 특정 프로포절의 투표가 활성화되기 위해서는 "),C("code",[g._v("minDeposit")]),g._v("값에 정의된 보증금 보다 높은 "),C("code",[g._v("deposit")]),g._v(" 비용이 예치되어야 합니다. "),C("code",[g._v("deposit")]),g._v("은 프로포절 제안자 외에도 보증금을 추가할 수 있습니다. 만약 제안자가 필요한 보증금 보다 낮은 보증금을 입금한 경우, 프로포절은 "),C("code",[g._v("deposit_period")]),g._v(" 상태로 들어가 추가 보증금 입금을 대기합니다. 모든 아톰 보유자는 "),C("code",[g._v("depositTx")]),g._v(" 트랜잭션을 통해 보증금을 추가할 수 있습니다.")]),g._v(" "),C("p",[g._v("프로포절의 "),C("code",[g._v("deposit")]),g._v("이 "),C("code",[g._v("minDeposit")]),g._v("을 도달하게 되면 해당 프로포절의 2주 간의 "),C("code",[g._v("voting_period")]),g._v("(투표 기간)이 시작됩니다. __위임된 아톰__의 보유자는 해당 프로포절에 투표를 행사할 수 있으며, "),C("code",[g._v("Yes")]),g._v(", "),C("code",[g._v("No")]),g._v(", "),C("code",[g._v("NoWithVeto")]),g._v(" 또는 "),C("code",[g._v("Abstain")]),g._v(" 표를 선택할 수 있습니다. 각 표는 투표자의 위임된 아톰 수량을 반영하게 됩니다. 만약 위임자가 직접 투표를 진행하지 않은 경우, 위임자는 검증인의 표를 따르게 됩니다. 하지만 모든 위임자는 직접 투표를 행사하여 검증인의 표와 다른 표를 행사할 수 있습니다.")]),g._v(" "),C("p",[g._v("투표 기간이 끝난 후, 프로포절이 50% 이상의 "),C("code",[g._v("Yes")]),g._v("표를 받았고 ("),C("code",[g._v("Abstain")]),g._v(" 표를 제외하고) "),C("code",[g._v("NoWithVeto")]),g._v(" ("),C("code",[g._v("Abstain")]),g._v(" 표를 제외하고) 표가 33.33% 이하일 경우 통과하게 됩니다.")]),g._v(" "),C("h3",{attrs:{id:"거버넌스-참여하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-참여하기"}},[g._v("#")]),g._v(" 거버넌스 참여하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서만 진행이 가능합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 "),C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("여기")]),g._v("를 참고하세요.")])])]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7ZSE66Gc7Y+s7KCIIOygnOyViO2VmOq4sAovLyAmbHQ77ZSE66Gc7Y+s7KCIX+yiheulmCh0eXBlKSZndDs9dGV4dC9wYXJhbWV0ZXJfY2hhbmdlL3NvZnR3YXJlX3VwZ3JhZGUKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgLS10aXRsZSAmcXVvdDtUZXN0IFByb3Bvc2FsJnF1b3Q7IC0tZGVzY3JpcHRpb24gJnF1b3Q7TXkgYXdlc29tZSBwcm9wb3NhbCZxdW90OyAtLXR5cGUgJmx0O+2UhOuhnO2PrOygiF/sooXrpZgodHlwZSkmZ3Q7IC0tZGVwb3NpdD0xMDAwMDAwMHVhdG9tIC0tZ2FzIGF1dG8gLS1nYXMtcHJpY2VzICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsKCi8vIO2UhOuhnO2PrOygiOydmCDrs7Tspp3quIgg7LaU6rCA7ZWY6riwCi8vIO2UhOuhnO2PrOygiOydmCBwcm9wb3NhbElEIOyhsO2ajDogJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKLy8g7YyM652866+47YSwIOqwkiDsmIjsi5w6ICZsdDvrs7Tspp3quIgoZGVwb3NpdCkmZ3Q7PTEwMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxJRCkmZ3Q7ICZsdDvstpTqsIDtlaBf67O07Kad6riIKGRlcG9zaXQpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZnJvbSAmbHQ77JyE7J6E7J6QX+2CpF/rqoXsua0oZGVsZWdhdG9yS2V5TmFtZSkmZ3Q7CgovLyDtlITroZztj6zsoIjsl5Ag7Yis7ZGc7ZWY6riwCi8vIO2UhOuhnO2PrOygiOydmCBwcm9wb3NhbElEIOyhsO2ajDogJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZCAKLy8gJmx0O+2RnF/shKDtg50ob3B0aW9uKSZndDs9eWVzL25vL25vX3dpdGhfdmV0by9hYnN0YWluCgpnYWlhZCB0eCBnb3Ygdm90ZSAmbHQ77ZSE66Gc7Y+s7KCIX0lEKHByb3Bvc2FsSUQpJmd0OyAmbHQ77ZGcX+yEoO2DnShvcHRpb24pJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZnJvbSAmbHQ77JyE7J6E7J6QX+2CpF/rqoXsua0oZGVsZWdhdG9yS2V5TmFtZSkmZ3Q7Cg=="}}),g._v(" "),C("h2",{attrs:{id:"오프라인-컴퓨터에서-트랜잭션-서명하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#오프라인-컴퓨터에서-트랜잭션-서명하기"}},[g._v("#")]),g._v(" 오프라인 컴퓨터에서 트랜잭션 서명하기")]),g._v(" "),C("p",[g._v("렛저 기기가 없거나 오프라인 컴퓨터에서 프라이빗 키를 관리하고 싶으신 경우, 다음 절차를 따라하세요. 우선 "),C("strong",[g._v("온라인")]),g._v(" 컴퓨터에서 미서명 트랜잭션을 다음과 같이 생성하십시오 (다음 예시에서는 위임 트랜잭션을 예시로 사용합니다):")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JWE7YawIOuzuOuUqe2VmOq4sCAKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvrs7jrlKntlaAg7IiY65+JKGFtb3VudFRvQm9uZCkmZ3Q7PTEwMDAwMDAwdWF0b20sICZsdDvsnITsnoTtlaAg6rKA7Kad7J247J2YIGJlY2gzMiDso7zshowoYmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yKSZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O+qwgOyKpCDqsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+ychOyehO2VoF/siJjrn4koYW1vdW50VG9Cb25kKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVFguanNvbgo="}}),g._v(" "),C("p",[g._v("서명을 진행하기 위해서는 "),C("code",[g._v("chain-id")]),g._v(", "),C("code",[g._v("account-number")]),g._v(", 그리고 "),C("code",[g._v("sequence")]),g._v(" 값이 필요합니다. "),C("code",[g._v("chain-id")]),g._v("는 트랜잭션을 전송할 블록체인의 고유 식별 번호입니다. "),C("code",[g._v("account-number")]),g._v("는 계정이 처음 자산을 받을 때 생성되는 고유 번호입니다. "),C("code",[g._v("sequence")]),g._v("는 리플레이 공격을 방지하기 위해 전송한 트랜잭션의 수량을 기록하는데 사용됩니다.")]),g._v(" "),C("p",[g._v("체인 아이디(chain-id) 값은 해당 블록체인의 제네시스 파일에서 받으실 수 있습니다 (현재 기준 코스모스 허브는 "),C("code",[g._v("cosmoshub-2")]),g._v("). account-number와 sequence는 계정 조회 명령어를 사용해 확인하실 수 있습니다.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ76rOE7KCVX+yjvOyGjCh5b3VyQWRkcmVzcykmZ3Q7IC0tY2hhaW4taWQgY29zbW9zaHViLTIK"}}),g._v(" "),C("p",[g._v("이후 서명이 진행되지 않은 "),C("code",[g._v("unsignedTx.json")]),g._v(" 파일을 복사하신 후 (USB 등을 이용하여) 오프라인 컴퓨터로 이동하십시오. 만약 오프라인 컴퓨터에 아직 계정을 생성하지 않으셨을 경우, "),C("a",{attrs:{href:"#using-a-computer"}},[g._v("이 항목")]),g._v("을 참고하여 오프라인 컴퓨터에서 계정을 생성하세요. 안전을 위해서 서명하기 전에 다음 명령어를 실행해 트랜잭션의 파라미터를 한번 더 확인하십시오:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),g._v(" "),C("p",[g._v("이제 다음 명령어를 실행해 트랜잭션을 서명합니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsgLS1vZmZsaW5lIC0tY2hhaW4taWQgY29zbW9zaHViLTIgLS1zZXF1ZW5jZSAmbHQ77Iuc7YCA7IqkKHNlcXVlbmNlKSZndDsgLS1hY2NvdW50LW51bWJlciAmbHQ76rOE7KCVX+uyiO2YuChhY2NvdW50TnVtYmVyKSZndDsgJmd0OyBzaWduZWRUeC5qc29uCg=="}}),g._v(" "),C("p",[g._v("서명된 "),C("code",[g._v("signedTx.json")]),g._v(" 파일을 복사하시고 다시 온라인 컴퓨터로 이동하세요. 다음 명령어를 실행해 해당 트랜잭션을 네트워크에 전파하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{484:function(g,I,C){"use strict";C.r(I);var s=C(1),t=Object(s.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:"위임자-가이드라인-cli"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#위임자-가이드라인-cli"}},[g._v("#")]),g._v(" 위임자 가이드라인 (CLI)")]),g._v(" "),C("p",[g._v("이 문서는 위임자가 커맨드라인 인터페이스(CLI, Command-Line Interface)를 통해 코스모스 허브와 소통하기 위해 필요한 모든 정보를 포함하고 있습니다.")]),g._v(" "),C("p",[g._v("또한 계정 관리, 코스모스 펀드레이저로 받은 계정을 복구하는 방법, 그리고 렛저 나노 하드웨어 지갑 사용법 또한 포함되어있습니다.")]),g._v(" "),C("p",[C("strong",[g._v("중요")]),g._v(": 이 문서에 설명되어있는 모든 단계를 신중하게 진행하십시오. 특정 행동의 실수는 소유하고 있는 아톰의 손실을 초래할 수 있습니다. 진행 전 이 문서에 있는 모든 절차를 자세히 확인하시고 필요시 코스모스 팀에게 연락하십시오. "),C("strong",[g._v("이 문서는 참고용 정보를 제공하기 위해 번역된 영어 원문의 번역본입니다. 이 문서에 포함되어있는 정보의 완결성은 보장되지 않으며, 개인의 행동에 따른 손실을 책임지지 않습니다. 꼭 영어 원문을 참고하시기 바랍니다. 만약 이 문서의 정보와 영어 원문의 정보가 다른 경우, 영어 문서의 정보가 상위 권한을 가지게 됩니다.")])]),g._v(" "),C("p",[g._v("CLI를 사용하는 위임자는 매우 실험적인 블록체인 기술이 사용되고 있는 코스모스 허브를 사용하게됩니다. 코스모스 허브는 우수한 기술을 기반으로 다수의 보안 감사를 진행했으나 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 또한 블록체인 기술을 사용하는 것은 상당한 기술적 배경을 필요로 하며, 공식 팀의 컨트롤 밖에 있는 리스크가 따릅니다. 유저는 이 소프트웨어를 사용함으로써 암호학 기반 소프트웨어를 사용하는 리스크를 인지하고 있음을 인정하는 것입니다. (참고 문서: "),C("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[g._v("인터체인 코스모스 펀드레이저 약관"),C("OutboundLink")],1),g._v(").")]),g._v(" "),C("p",[g._v("인터체인 재단(Interchain Foundation)과 텐더민트 팀은 소프트웨어 사용으로 발생하는 모든 손실에 대해서 책임을 지지 않습니다. Apache 2.0 라이선스 기반의 오픈소스 소프트웨어를 사용하는 것은 각 개인의 책임이며, 소프트웨어는 그 어떤 보증과 조건이 없는 'As Is(있는 그대로)' 기반으로 제공됩니다.")]),g._v(" "),C("p",[g._v("모든 절차는 신중하게 진행하시기 바랍니다.")]),g._v(" "),C("h2",{attrs:{id:"목차"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#목차"}},[g._v("#")]),g._v(" 목차")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#installing-gaiad"}},[C("code",[g._v("gaiad")]),g._v(" 설치하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#cosmos-accounts"}},[g._v("코스모스 계정")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[g._v("펀드레이저 계정 복구하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#creating-an-account"}},[g._v("계정 생성하기")])])])]),g._v(" "),C("li",[C("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[g._v("코스모스 허브 네트워크 액세스하기")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#running-your-own-full-node"}},[g._v("자체 풀노드 운영하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#connecting-to-a-remote-full-node"}},[g._v("원격 풀노드 연결하기")])])])]),g._v(" "),C("li",[C("a",{attrs:{href:"#setting-up-gaiad"}},[C("code",[g._v("gaiad")]),g._v(" 설정하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#querying-the-state"}},[g._v("상태(state) 조회하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#sending-transactions"}},[g._v("트랜잭션 전송하기")]),g._v(" "),C("ul",[C("li",[C("a",{attrs:{href:"#a-note-on-gas-and-fees"}},[g._v("가스(Gas)와 수수료 관련 정보")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[g._v("아톰 위임 및 위임 보상 수령하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#participating-in-governance"}},[g._v("거버넌스에 참여하기")])]),g._v(" "),C("li",[C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("오프라인 컴퓨터에서 트랜잭션 서명하기")])])])])]),g._v(" "),C("h2",{attrs:{id:"gaiad-설치하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설치하기"}},[g._v("#")]),g._v(" "),C("code",[g._v("gaiad")]),g._v(" 설치하기")]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v(": "),C("code",[g._v("gaiad")]),g._v("는 "),C("code",[g._v("gaiad")]),g._v(" 풀노드와 소통하기 위해 사용되는 명령어 기반 인터페이스입니다.")]),g._v(" "),C("p",[g._v("::: 경고\n"),C("strong",[g._v("추가적인 행동을 진행하기 전 최신 "),C("code",[g._v("gaiad")]),g._v(" 클라이언트를 다운로드 하셨는지 확인하십시오")]),g._v("\n:::")]),g._v(" "),C("p",[g._v("["),C("strong",[g._v("바이너리 설치하기")]),g._v("]")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[C("strong",[g._v("소스에서 설치하기")]),C("OutboundLink")],1)]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("`gaiad`는 터미널 환경에서 사용됩니다. 다음과 같이 터미널을 실행하세요:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("윈도우")]),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(" "),C("li",[C("strong",[g._v("맥OS")]),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(" "),C("li",[C("strong",[g._v("리눅스")]),g._v(": "),C("code",[g._v("Ctrl")]),g._v(" + "),C("code",[g._v("Alt")]),g._v(" + "),C("code",[g._v("T")]),g._v(":::")])]),g._v(" "),C("h2",{attrs:{id:"코스모스-계정"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-계정"}},[g._v("#")]),g._v(" 코스모스 계정")]),g._v(" "),C("p",[g._v("모든 코스모스 계정에는 12개 또는 24개의 단어로 이루어진 '시드(Seed)'가 할당됩니다. 이 시드 단어(또는 시드 키)를 기반으로 다수의 코스모스 계정을 생성할 수 있습니다 (예를들어: 다수의 프라이빗 키/퍼블릭 키 쌍). 이런 형태의 월렛은 HD(Hierarchical deterministic) 월렛이라고 불립니다 (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("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICAgICDqs4TsoJUgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg6rOE7KCVIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDqs4TsoJUgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICAgICDso7zshowgMCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAg7KO87IaMIDEgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICDso7zshowgMiAgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgICAg7Y2867iU66atIO2CpCAwICAgIHwgICAgICAgICAgICAgIHwgICAgIO2NvOu4lOumrSDtgqQgMSAgICAgfCAgICAgICAgICAgICAgIHwgICAgIO2NvOu4lOumrSDtgqQgMiAgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICArICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8CnwgICAg7ZSE65287J2067mXIO2CpCAwICAgIHwgICAgICAgICAgICAgIHwgICAgIO2UhOudvOydtOu5lyDtgqQgMSAgIHwgICAgICAgICAgICAgICB8ICAgICDtlITrnbzsnbTruZcg7YKkIDIgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgTW5lbW9uaWMgKOyLnOuTnCkgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKwo="}}),g._v(" "),C("p",[g._v("특정 계좌에 보관된 자산은 프라이빗 키에 의해 관리됩니다. 이 프라이빗 키는 시드의 일방적 기능(one-way function)을 통해 생성됩니다. 프라이빗 키를 분실한 경우, 시드 키를 사용하여 프라이빗 키를 다시 복구하는 것이 가능합니다. 하지만 시드 키를 분실한 경우, 모든 프라이빗 키에 대한 사용권을 잃게 됩니다. 누군가 본인의 시드 키를 가진 경우, 해당 키와 연관된 모든 계정의 소유권을 가진 것과 동일합니다.")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])])])],1),g._v(" "),C("p",[g._v("주소는 특정 계정을 구분하는 용도로 사용되며, 단어로 이루어진 특정 프리픽스(예, cosmos10)와 스트링 값을 조합한 값입니다 (예, "),C("code",[g._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),g._v("). 주소는 누군가 자산을 특정 계정으로 전송할때 사용되며, 퍼블릭키를 사용해 프라이빗 키를 추출하는 것은 불가능합니다.")]),g._v(" "),C("h3",{attrs:{id:"펀드레이저-계정-복구하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#펀드레이저-계정-복구하기"}},[g._v("#")]),g._v(" 펀드레이저 계정 복구하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",[C("em",[g._v("참고: 이 항목은 코스모스 펀드레이저 참가자만을 위한 정보입니다")])])]),g._v(" "),C("p",[g._v("코스모스 펀드레이저에 참가한 인원은 12개의 단어로 구성된 시드키를 부여받습니다. 새로 생성된 시드키는 24개 단어로 이루어졌으나, 12개 단어로 이루어진 시드키 또한 모든 코스모스가 제공하는 도구에서 호환됩니다.")]),g._v(" "),C("h4",{attrs:{id:"렛저-ledger-기기-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#렛저-ledger-기기-사용하기"}},[g._v("#")]),g._v(" 렛저(Ledger) 기기 사용하기")]),g._v(" "),C("p",[g._v("모든 렛저 기기에는 (코스모스 허브를 포함한) 다수의 블록체인에서 계정을 생성하기 위해 사용되는 시드키가 있습니다. 통상 시드키는 렛저 기기를 처음 활성화 할때 생성하지만, 유저가 시드키를 직접 입력하는 것 또한 가능합니다. 이제 펀드레이저를 통해 받은 시드키를 어떻게 렛저 하드웨어 지갑에 입력하는지 알아보겠습니다.")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("em",[g._v("참고: 이번 단계를 진행하실때 "),C("strong",[g._v("신규 기기를 사용하는 것을 권장합니다")]),g._v(". 한 렛저 기기에는 하나의 시드키만을 입력할 수 있습니다. 만약 이미 사용하시던 하드웨어 지갑을 사용하시기를 바라는 경우, "),C("code",[g._v("Settings")]),g._v(">"),C("code",[g._v("Device")]),g._v(">"),C("code",[g._v("Reset All")]),g._v("를 통해 리셋을 진행한 후 펀드레이저 시드를 입력할 수 있습니다. "),C("strong",[g._v("렛저 기기를 리셋할 경우, 기존에 사용했던 시드키는 기기에서 삭제됩니다. 리셋을 진행하기 전 기존 기기의 시드키를 백업하셨는지 확인하신 후 진행하시기 바랍니다.")]),g._v(" 백업 되지 않은 상태로 기기를 리셋하는 경우, 관련 계정의 자산을 잃을 수 있습니다.")])])]),g._v(" "),C("p",[g._v("다음 단계는 신규 렛저 기기 또는 초기화 된 렛저 기기에서 진행되어야 합니다:")]),g._v(" "),C("ol",[C("li",[g._v("USB를 사용해 렛저 기기를 컴퓨터에 연결하세요")]),g._v(" "),C("li",[g._v("두개의 버튼을 동시에 누르세요")]),g._v(" "),C("li",[g._v('"Restore Configuration"을 선택하세요. '),C("strong",[g._v('"Config as a new device"를 선택하시면 안됩니다')])]),g._v(" "),C("li",[g._v("원하시는 핀 번호를 입력하세요")]),g._v(" "),C("li",[g._v("12-words 옵션을 선택하세요")]),g._v(" "),C("li",[g._v("코스모스 펀드레이저에서 부여 받은 시드키를 차례대로 정확하게 입력하세요")])]),g._v(" "),C("p",[g._v("이제 렛저 하드웨어 지갑 기기가 펀드레이저 시드로 활성화되었습니다. 기존의 펀드레이저 시드를 파기하지 마십시오! 만약 렛저 기기가 고장나거나 분실된 경우, 동일한 시드키를 이용해 복구가 가능합니다.")]),g._v(" "),C("p",[g._v("이제 "),C("a",{attrs:{href:"#using-a-ledger-device"}},[g._v("여기")]),g._v("를 클릭하여 계정을 생성하는 방법을 확인하세요.")]),g._v(" "),C("h4",{attrs:{id:"컴퓨터-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#컴퓨터-사용하기"}},[g._v("#")]),g._v(" 컴퓨터 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 행동은 오프라인 상태인 컴퓨터에서 진행하는 것이 더욱 안전합니다.")])])]),g._v(" "),C("p",[g._v("컴퓨터를 이용해 펀드레이저 시드키를 복구하시고 컴퓨터에 프라이빗 키를 저장사기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oWW91cktleU5hbWUpJmd0OyAtLXJlY292ZXIK"}}),g._v(" "),C("p",[g._v("명령어를 입력하셨다면 프로그램이 지금 생성(복구)하시는 계정의 프라이빗 키를 암호화할때 사용될 비밀번호를 입력할 것을 요청합니다. 해당 계정을 이용해 트랜잭션을 보낼때마다 이 비밀번호를 입력하셔야 합니다. 만약 비밀번호를 잃어버리셨다면 시드키를 사용해 계정을 다시 복구할 수 있습니다.")]),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("h3",{attrs:{id:"계정-생성하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#계정-생성하기"}},[g._v("#")]),g._v(" 계정 생성하기")]),g._v(" "),C("p",[g._v("새로운 계정을 생성하기 위해서는 "),C("code",[g._v("gaiad")]),g._v("를 설치해야합니다. 신규 계정을 생성하기 전, 프라이빗 키를 어디에 저장하고 어떻게 불러올지 미리 인지를 하셔야 합니다. 프라이빗 키를 보관하기 가장 좋은 곳은 오프라인 컴퓨터 또는 렛저 하드웨어 월렛 기기입니다. 흔히 사용되는 온라인 컴퓨터에 프라이빗 키를 보관하게 될 경우, 인터넷을 통해 컴퓨터를 침투한 공격자가 프라이빗 키를 탈취할 수 있기 때문에 상당한 리스크가 존재합니다.")]),g._v(" "),C("h4",{attrs:{id:"렛저-ledger-하드웨어-월렛-기기-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#렛저-ledger-하드웨어-월렛-기기-사용하기"}},[g._v("#")]),g._v(" 렛저(Ledger) 하드웨어 월렛 기기 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("새로 주문한 렛저 기기 또는 신뢰할 수 있는 렛저 기기만을 사용하세요")])])]),g._v(" "),C("p",[g._v("렛저 기기를 처음 활성화할때 24개 단어로 구성된 시드키가 생성되고 기기에 저장됩니다. 렛저 기기의 시드키는 코스모스와 코스모스 계정과 호환이 되며, 해당 시드키를 기반으로 계정을 생성할 수 있습니다. 렛저 기기는 "),C("code",[g._v("gaiad")]),g._v("와 호환될 수 있게 설정이 되어야 합니다. 렛저 기기를 설정하는 방법은 다음과 같습니다:")]),g._v(" "),C("ol",[C("li",[C("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[g._v("Ledger Live 앱"),C("OutboundLink")],1),g._v(" 다운로드")]),g._v(" "),C("li",[g._v("렛저 기기를 USB로 연결한 후 최신 펌웨어 버전으로 업데이트")]),g._v(" "),C("li",[g._v('Ledger Live 앱스토어로 이동한 후, "Cosmos" 애플리케이션 다운로드. (이 단계는 다소 시간이 걸릴 수 있습니다)')]),g._v(" "),C("li",[g._v("렛저 기기에서 코스모스 앱 선택")])]),g._v(" "),C("p",[g._v("계정을 생성하기 위해서는 다음 명령어를 실행하십시오:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0OyAtLWxlZGdlciAK"}}),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("h4",{attrs:{id:"컴퓨터-사용하기-2"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#컴퓨터-사용하기-2"}},[g._v("#")]),g._v(" 컴퓨터 사용하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 행동은 오프라인 상태인 컴퓨터에서 진행하는 것이 더욱 안전합니다.")])])]),g._v(" "),C("p",[g._v("계정을 생성하기 위해서는 다음 명령어를 입력하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0Owo="}}),g._v(" "),C("p",[g._v("위 명령어는 새로운 24단어로 구성된 시드키를 생성하고, 계정 "),C("code",[g._v("0")]),g._v("의 프라이빗 키와 퍼블릭 키를 저장합니다. 이후, 디스크에 저장될 계정 "),C("code",[g._v("0")]),g._v("의 프라이빗 키를 암호화할때 사용될 비밀번호를 입력할 것을 요청합니다. 해당 계정을 이용해 트랜잭션을 보낼때마다 이 비밀번호를 입력하셔야 합니다. 만약 비밀번호를 잃어버리셨다면 시드키를 사용해 계정을 다시 복구할 수 있습니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("경고: 12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])])]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[g._v("시드키를 안전하게 보관하셨다면 (두번 세번씩이라도 정확하게 작성되었는지 확인하셔야 합니다!) 커맨드 라인의 기록을 다음과 같이 삭제하시면 됩니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}})],1),g._v(" "),C("ul",[C("li",[C("code",[g._v("")]),g._v(" 은 계정의 이름입니다. 이는 시드키로부터 키 페어를 파생할때 레퍼런스로 사용됩니다. 이 이름은 토큰을 전송할때 보내는 계정을 구분하기 위해서 사용됩니다.")]),g._v(" "),C("li",[g._v("추가적인 선택 사항으로 명령어에 "),C("code",[g._v("--account")]),g._v(" 플래그를 추가해 특정 패스("),C("code",[g._v("0")]),g._v(", "),C("code",[g._v("1")]),g._v(", "),C("code",[g._v("2")]),g._v(", 등)를 지정할 수 있습니다. 기본적으로 "),C("code",[g._v("0")]),g._v("을 사용하여 계정이 생성됩니다.")])]),g._v(" "),C("p",[g._v("동일한 시드키로 추가적인 계정을 생성하기 원한다면, 다음 명령어를 사용하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+2CpF/rqoXsua0oeW91cktleU5hbWUpJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),g._v(" "),C("p",[g._v("해당 명령어는 비밀번호와 시드키를 입력할 것을 요청할 것입니다. 이 외에 추가적인 계정을 생성하시기 원한다면 account 플래그의 번호를 바꾸십시오.")]),g._v(" "),C("h2",{attrs:{id:"코스모스-허브-네트워크-사용하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-네트워크-사용하기"}},[g._v("#")]),g._v(" 코스모스 허브 네트워크 사용하기")]),g._v(" "),C("p",[g._v("블록체인의 상태(state)를 확인하거나 트랜잭션을 전송하기 위해서는 직접 풀노드를 운영하거나 다른 사람이 운영하는 풀노드에 연결할 수 있습니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("경고: 12개 단어 / 24개 단어 시드키를 그 누구와도 공유하지 마세요. 시드키는 본인만이 알고있어야 합니다. 특히 이메일, 메시지 등의 수단으로 블록체인 서비스 지원을 사칭해 시드키를 요청할 수 있으니 주의를 바랍니다. 코스모스 팀, 텐더민트 팀 그리고 인터체인 재단은 절대로 이메일을 통해 개인 정보 또는 시드키를 요청하지 않습니다.")]),g._v(".")])]),g._v(" "),C("h3",{attrs:{id:"직접-풀노드-운영하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#직접-풀노드-운영하기"}},[g._v("#")]),g._v(" 직접 풀노드 운영하기")]),g._v(" "),C("p",[g._v("이 방법이 가장 안전한 방법이지만, 대량의 리소스를 필요로 합니다. 풀노드를 직접 운영하기 위해서는 우수한 인터넷 대역폭과 최소 1TB 상당의 하드디스크 용량을 필요로 합니다.")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/join-mainnet.html",target:"_blank",rel:"noopener noreferrer"}},[g._v("풀노드를 운영하는 절차"),C("OutboundLink")],1),g._v("와 "),C("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[C("code",[g._v("gaiad")]),g._v("를 설치하는 방법"),C("OutboundLink")],1),g._v("은 첨부된 링크를 확인하세요.")]),g._v(" "),C("h3",{attrs:{id:"원격-풀노드-연결하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#원격-풀노드-연결하기"}},[g._v("#")]),g._v(" 원격 풀노드 연결하기")]),g._v(" "),C("p",[g._v("만약 본인이 직접 풀노드를 운영하는 것을 원하지 않는다면 다른 사람의 풀노드에 연결을 할 수 있습니다. 이 과정에서는 신뢰할 수 있는 풀노드 운영자에만 연결하세요. 악의적인 풀노드 운영자는 트랜잭션을 막거나 틀린 정보를 전달할 가능성이 있습니다. 하지만 프라이빗 키는 당신의 컴퓨터/렛저 기기에 저장되어 있기 때문에 풀노드 운영자는 절대로 자금을 탈취할 수 없습니다. 검증된 검증인, 월렛 제공자, 거래소 등의 풀노드에만 연결하는 것을 추천드립니다.")]),g._v(" "),C("p",[g._v("풀노드에 연결하기 위해서는 다음과 같은 형식의 주소가 필요합니다: "),C("code",[g._v("https://77.87.106.33:26657")]),g._v(" ("),C("em",[g._v("이는 예시를 위한 주소이며 실제 풀노드 주소가 아닙니다")]),g._v("). 이 계정은 신뢰할 수 있는 풀노드 운영자에게서 직접 받으시기 바랍니다. 이 주소는 "),C("a",{attrs:{href:"#setting-up-gaiad"}},[g._v("다음 항목")]),g._v("에서 사용됩니다.")]),g._v(" "),C("h2",{attrs:{id:"gaiad-설정하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설정하기"}},[g._v("#")]),g._v(" "),C("code",[g._v("gaiad")]),g._v(" 설정하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[C("code",[g._v("gaiad")]),g._v("의 최신 스테이블 버전을 사용하고 있는지 확인해주세요")])])]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v("는 코스모스 허브 네트워크에서 운영되고 있는 노드와 소통할 수 있게 하는 도구입니다. 풀노드는 본인이 직접 운영하거나, 타인이 운영하는 풀노드를 사용할 수 있습니다. 이제 "),C("code",[g._v("gaiad")]),g._v("의 설정을 진행하겠습니다.")]),g._v(" "),C("p",[C("code",[g._v("gaiad")]),g._v("을 설정하기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDvtlIzrnpjqt7goZmxhZykmZ3Q7ICZsdDvqsJIodmFsdWUpJmd0Owo="}}),g._v(" "),C("p",[g._v("해당 명령어는 각 플래그에 대한 값을 설정할 수 있게 합니다. 우선 연결하고 싶은 풀노드의 주소를 입력하겠습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O+2YuOyKpO2KuChob3N0KSZndDs6Jmx0O+2PrO2KuChwb3J0KSZndDsKCi8vIOyYiOyLnDogZ2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly83Ny44Ny4xMDYuMzM6MjY2NTcK"}}),g._v(" "),C("p",[g._v("만약 풀노드를 직접 운영하시는 경우, "),C("code",[g._v("tcp://localhost:26657")]),g._v("을 주소 값으로 입력하세요.")]),g._v(" "),C("p",[g._v("마지막으로 소통하고 싶은 블록체인의 "),C("code",[g._v("chain-id")]),g._v("를 입력하겠습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGdvcy0zCg=="}}),g._v(" "),C("h2",{attrs:{id:"블록체인-상태-조회하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#블록체인-상태-조회하기"}},[g._v("#")]),g._v(" 블록체인 상태 조회하기")]),g._v(" "),C("p",[C("a",{attrs:{href:"https://cosmos.network/docs/gaia/gaiad.html",target:"_blank",rel:"noopener noreferrer"}},[C("code",[g._v("gaiad")]),C("OutboundLink")],1),g._v("는 계정 잔고, 스테이킹 중인 토큰 수량, 지급 가능한 보상, 거버넌스 프로포절 등 블록체인과 관련된 모든 정보를 확인할 수 있게 합니다. 다음은 위임자에게 유용한 명령어들입니다. 다음 명령어를 실행하기 전 "),C("a",{attrs:{href:"#setting-up-gaiad"}},[g._v("gaiad 설정")]),g._v("을 진행하세요.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g6rOE7KCVIOyelOqzoOyZgCDqs4TsoJUg6rSA66CoIOygleuztCDsobDtmowKZ2FpYWQgcXVlcnkgYWNjb3VudAoKLy8g6rKA7Kad7J24IOuqqeuhnSDsobDtmowKZ2FpYWQgcXVlcnkgdmFsaWRhdG9ycwoKLy8g6rKA7Kad7J24IOyjvOyGjOuhnCAo7JiI7IucOiBjb3Ntb3MxMHNuanQ4ZG1wcjVteTBoNzZ4ajQ4dHk4MHV6d2hyYXFhbHU0ZWcpIOqygOymneyduCDsoJXrs7Qg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHZhbGlkYXRvciAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzKSZndDsKCi8vIOychOyehOyekCDso7zshozroZwgKOyYiOyLnDogY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKSDqs4TsoJXsnZgg66qo65OgIOychOyehCDquLDroZ0g7KGw7ZqMCmdhaWFkIHF1ZXJ5IGRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OwoKLy8g7JyE7J6E7J6Q6rCAIO2KueyglSDqsoDspp3snbjsl5Dqsowg7JyE7J6E7ZWcIOq4sOuhnSDsobDtmowKZ2FpYWQgcXVlcnkgZGVsZWdhdGlvbnMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yQWRkcmVzcykmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvckFkZHJlc3MpJmd0OwoKLy8g7JyE7J6E7J6QIOyjvOyGjOuhnCAo7JiI7IucOiBjb3Ntb3MxMHNuanQ4ZG1wcjVteTBoNzZ4ajQ4dHk4MHV6d2hyYXFhbHU0ZWcpIOychOyehOyekCDrpqzsm4zrk5wg7KGw7ZqMCmdhaWFkIHF1ZXJ5IGRpc3RyaWJ1dGlvbiByZXdhcmRzICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OyAKCi8vIOuztOymneq4iChkZXBvc2l0KeydhCDrjIDquLDspJHsnbgg66qo65OgIO2UhOuhnO2PrOygiCDsobDtmowKZ2FpYWQgcXVlcnkgcHJvcG9zYWxzIC0tc3RhdHVzIGRlcG9zaXRfcGVyaW9kCgovLyDtiKztkZzqsIAg6rCA64ql7ZWcIOuqqOuToCDtlITroZztj6zsoIgg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHByb3Bvc2FscyAtLXN0YXR1cyB2b3RpbmdfcGVyaW9kCgovLyDtirnsoJUg7ZSE66Gc7Y+s7KCIIElE66GcIO2UhOuhnO2PrOygiCDsoJXrs7Qg7KGw7ZqMCmdhaWFkIHF1ZXJ5IHByb3Bvc2FsICZsdDtwcm9wb3NhbElEJmd0Owo="}}),g._v(" "),C("p",[g._v("더 많은 명령어를 확인하기 위해서는 다음 명령어를 실행하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),g._v(" "),C("p",[g._v("각 명령어에는 "),C("code",[g._v("-h")]),g._v(" 또는 "),C("code",[g._v("--help")]),g._v("를 추가하여 관련 정보를 확인하실 수 있습니다.")]),g._v(" "),C("h2",{attrs:{id:"트랜잭션-전송하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-전송하기"}},[g._v("#")]),g._v(" 트랜잭션 전송하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[g._v("코스모스 메인넷에서는 "),C("code",[g._v("uatom")]),g._v(" 단위가 표준 단위로 사용됩니다. "),C("code",[g._v("1atom = 1,000,000uatom")]),g._v("으로 환산됩니다.")])]),g._v(" "),C("h3",{attrs:{id:"가스와-수수료에-대해서"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#가스와-수수료에-대해서"}},[g._v("#")]),g._v(" 가스와 수수료에 대해서")]),g._v(" "),C("p",[g._v("코스모스 허브 네트워크는 트랜잭션 처리를 위해 트랜잭션 수수료를 부과합니다. 해당 수수료는 트랜잭션을 실행하기 위한 가스로 사용됩니다. 공식은 다음과 같습니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"7IiY7IiY66OMKEZlZSkgPSDqsIDsiqQoR2FzKSAqIOqwgOyKpCDqsJIoR2FzUHJpY2VzKQo="}}),g._v(" "),C("p",[g._v("위 공식에서 "),C("code",[g._v("gas")]),g._v("는 전송하는 트랜잭션에 따라 다릅니다. 다른 형태의 트랜잭션은 각자 다른 "),C("code",[g._v("gas")]),g._v("량을 필요로 합니다. "),C("code",[g._v("gas")]),g._v(" 수량은 트랜잭션이 실행될때 계산됨으로 사전에 정확한 값을 확인할 수 있는 방법은 없습니다. 다만, "),C("code",[g._v("gas")]),g._v(" 플래그의 값을 "),C("code",[g._v("auto")]),g._v("로 설정함으로 예상 값을 추출할 수는 있습니다. 예상 값을 수정하기 위해서는 "),C("code",[g._v("--gas-adjustment")]),g._v(" (기본 값 "),C("code",[g._v("1.0")]),g._v(") 플래그 값을 변경하셔서 트랜잭션이 충분한 가스를 확보할 수 있도록 하십시오.")]),g._v(" "),C("p",[C("code",[g._v("gasPrice")]),g._v("는 각 "),C("code",[g._v("gas")]),g._v(" 유닛의 가격입니다. 각 검증인은 직접 최소 가스 가격인 "),C("code",[g._v("min-gas-price")]),g._v("를 설정하며, 트랜잭션의 "),C("code",[g._v("gasPrice")]),g._v("가 설정한 "),C("code",[g._v("min-gas-price")]),g._v("보다 높을때 트랜잭션을 처리합니다.")]),g._v(" "),C("p",[g._v("트랜잭션 피("),C("code",[g._v("fees")]),g._v(")는 "),C("code",[g._v("gas")]),g._v(" 수량과 "),C("code",[g._v("gasPrice")]),g._v("를 곱한 값입니다. 유저는 3개의 값 중 2개의 값을 입력하게 됩니다. "),C("code",[g._v("gasPrice")]),g._v("가 높을수록 트랜잭션이 블록에 포함될 확률이 높아집니다.")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",[g._v("메인넷 권장 "),C("code",[g._v("gas-prices")]),g._v("는 "),C("code",[g._v("0.0025uatom")]),g._v(" 입니다.")])]),g._v(" "),C("h3",{attrs:{id:"토큰-전송하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#토큰-전송하기"}},[g._v("#")]),g._v(" 토큰 전송하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("**아톰을 위임하거나 위임 보상을 수령하기 전에 `gaiad`를 설치하시고 계정을 만드셔야 합니다**:::")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",{staticClass:"custom-block-title"},[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서 실행되어야 합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 [여기](#signing-transactions-from-an-offline-computer)를 참고하세요")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly/tirnsoJUg7IiY65+J7J2YIO2GoO2BsOydhCDsp4DsoJXtlZwg7KO87IaM66GcIOyghOyGoe2VmOq4sAovL+2MjOudvOuvuO2EsCDqsJIg7JiI7IucKOyLpOygnCDthqDtgbAg7KCE7Iah7IucIOyCrOyaqe2VmOyngCDrp4jshLjsmpQhKTogJmx0O+yImOyLoOyekF/so7zshoxf7JiI7IucJmd0Oz1jb3Ntb3MxNm05M2ZlemZpZXpodm5qYWp6cmZ5c3ptbDhxbTkyYTB3NjdudGpoZDNkMCAmbHQ77IiY65+JX+yYiOyLnCZndDs9MTAwMDAwMHVhdG9tCi8v7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGJhbmsgc2VuZCAmbHQ77IiY7Iug7J6QX+yjvOyGjCZndDsgJmx0O+uztOuCtOuKlF/siJjrn4kmZ3Q7IC0tZnJvbSAmbHQ77YKkX+ydtOumhCZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Owo="}}),g._v(" "),C("h3",{attrs:{id:"아톰-위임하기-리워드-수령하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#아톰-위임하기-리워드-수령하기"}},[g._v("#")]),g._v(" 아톰 위임하기 / 리워드 수령하기")]),g._v(" "),C("div",{staticClass:"custom-block tip"},[C("p",{staticClass:"custom-block-title"},[g._v("**아톰을 위임하거나 위임 보상을 수령하기 전에 `gaiad`를 설치하시고 계정을 만드셔야 합니다**:::")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("아톰을 위임하기 전에 "),C("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[g._v("위임자 faq"),C("OutboundLink")],1),g._v("를 먼저 확인하시고 위임에 따르는 책임과 위험을 사전에 인지하시기 바랍니다")])])])])],1)]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서 실행되어야 합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 "),C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("여기")]),g._v("를 참고하세요.")])])]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7Yq57KCVIOqygOymneyduOyXkOqyjCDslYTthrAg7JyE7J6E7ZWY6riwIAovLyDtlIzrnpjqt7gg6rCSIOyYiOyLnDogJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yQWRkcmVzcykmZ3Q7PSBjb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ77JyE7J6E7ZWgX+yImOufiShhbW91bnRUb0JvdW5kKSZndDs9MTAwMDAwMDB1YXRvbSwgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ77JyE7J6E7ZWgX+yImOufiShhbW91bnRUb0JvbmQpJmd0OyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7CgovLyDsnITsnoTrkJwg7JWE7Yaw7J2EIOuLpOuluCDqsoDspp3snbjsl5Dqsowg7J6s7JyE7J6EIO2VmOq4sAovLyDsnbTrr7gg6rKA7Kad7J247JeQ6rKMIOychOyehOydtCDrkJwg7IOB7YOc7JeQ7ISc66eMIOyCrOyaqe2VmOyLpCDsiJgg7J6I7Iq164uI64ukCi8vIOyerOychOyehOydgCDsponsi5wg67CY7JiB65Cp64uI64ukLiDsnqzsnITsnoQg64yA6riwIOq4sOqwhOydgCDsl4bsirXri4jri6QKLy8g7J6s7JyE7J6E7J2EIOynhO2Wie2VmOyLoCDtm4QsIOuPmeydvO2VnCDslYTthrDsl5Ag64yA7ZWcIOyerOychOyehOydgCAz7KO8IO2bhCDqsIDriqXtlanri4jri6QuCi8vIO2UjOuemOq3uCDqsJIg7JiI7IucOiAmbHQ76riw7KG0X+qygOymneyduF/so7zshowoc3JjVmFsaWRhdG9yQWRkcmVzcykmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDvsnqzsnITsnoTtlaBf7IiY65+JJmd0Oz0xMDAwMDAwMDB1YXRvbSwgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlICZsdDvquLDsobRf6rKA7Kad7J24X+yjvOyGjChzcmNWYWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+ydtOuPme2VoF/qsoDspp3snbhf7KO87IaMKGRlc3RWYWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+yerOychOyehO2VoF/siJjrn4koYW1vdW50VG9SZWRlbGVnYXRlKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O+qwgOyKpF/qsIDqsqkoZ2FzUHJpY2UpJmd0OwoKLy8g66qo65OgIOumrOybjOuTnCDsiJjroLntlZjquLAKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGRpc3RyaWJ1dGlvbiB3aXRoZHJhdy1hbGwtcmV3YXJkcyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7CgovLyDtirnsoJUg6rKA7Kad7J247Jy866GcIOu2gO2EsCDsnITsnoQg7Leo7IaM7ZWY6riwCi8vIOychOyehCDst6jshozqsIAg7JmE66OM65CY6riwIOychO2VtOyEnOuKlCAz7KO87J2YIOq4sOqwhOydtCDqsbjrpqzrqbAsIOychOyehCDst6jshozqsIAg7KeE7ZaJ7KSR7J24IOq4sOqwhOyXkOuKlCDtlbTri7kg7JWE7Yaw7J2EIOyghOyGoe2VmOyLpCDsiJgg7JeG7Iq164uI64ukLgovLyDtlIzrnpjqt7gg6rCSIOyYiOyLnDogJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yQWRkcmVzcykmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDvsnITsnoRf7Leo7IaM7ZWgX+yImOufiShhbW91bnRUb1VuYm9uZCkmZ3Q7PTEwMDAwMDAwdWF0b20sICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgdW5ib25kICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvckFkZHJlc3MpJmd0OyAmbHQ77JyE7J6EX+y3qOyGjO2VoF/siJjrn4koYW1vdW50VG9VbmJvbmQpJmd0OyAtLWZyb20gJmx0O+ychOyehOyekF/tgqRf66qF7LmtKGRlbGVnYXRvcktleU5hbWUpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7Cgo6OjogdGlwCuugm+yggCDquLDquLDrpbwg7IKs7Jqp7ZW0IO2KuOuenOyereyFmOydhCDrsJzsg53tlZjsi5zripQg6rK97JqwLCDroJvsoIAg6riw6riw7JeQ7IScIO2KuOuenOyereyFmOydhCDtmZXsnbjtlZjripQg6rO87KCV7J20IOy2lOqwgOyggeycvOuhnCDrsJzsg53rkKnri4jri6QuIOy7tO2TqO2EsOyXkCDsl7DqsrDrkJjslrQg7J6I64qUIOq4sOq4sOyXkOyEnCDtirjrnpzsnq3shZjsnYQg7ISc66qF7ZWY7IWU7JW8IOuEpO2KuOybjO2BrOuhnCDsoITtjIzrkKnri4jri6QuCjo6OiAKCu2VtOuLuSDtirjrnpzsnq3shZjsnbQg7ISx6rO17KCB7Jy866GcIOynhO2WieuQnCDqsoPsnYQg7ZmV7J247ZWY6riwIOychO2VtOyEnOuKlCDri6TsnYwg7KGw7ZqMIOuqheugueyWtOulvCDsgqzsmqntlZjshLjsmpQ6CgpgYGBiYXNoCi8vIOyVhO2GsOydhCDsnITsnoTtlZjqsbDrgpgg66as7JuM65Oc66W8IOyImOugue2VmOyLoCDtm4Qg6rOE7KCVIOyelOqzoOqwgCDri6zrnbzsp5Hri4jri6QgKOqzhOyglSDsnpTqs6Ag7ZmV7J24IOuqheugueyWtCkKZ2FpYWQgcXVlcnkgYWNjb3VudAoKLy8g7JyE7J6E7J2EIOynhO2Wie2VmOyFqOuLpOuptCDsiqTthYzsnbTtgrkg7J6U6rOg6rCAIO2RnOyLnOuQqeuLiOuLpCAo7Iqk7YWM7J207YK5IO2ZleyduCDrqoXroLnslrQpCmdhaWFkIHF1ZXJ5IGRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OwoKLy8g7Yq4656c7J6t7IWY7J20IOu4lOuhneyytOyduOyXkCDtj6ztlajrkJjsl4jsnLzrqbQg7ZW064u5IHR4IOygleuztOulvCDsoITri6ztlanri4jri6QKLy8g7Yq4656c7J6t7IWY7J2EIOyDneyEse2VmOyFqOydhOuVjCDtkZzsi5zrkJjsl4jrjZggdHggaGFzaOulvCDsnoXroKXtlZjshLjsmpQgKO2KuOuenOyereyFmCDtmZXsnbgg66qF66C57Ja0KQpnYWlhZCBxdWVyeSB0eCAmbHQ77Yq4656c7J6t7IWYX+2VtOyLnCh0eEhhc2gpJmd0OwoK"}}),g._v(" "),C("p",[g._v("만약 원격 풀노드를 사용해 트랜잭션을 전송하신 경우, 블록 익스플로러를 통해 트랜잭션을 확인하십시오.")]),g._v(" "),C("h2",{attrs:{id:"거버넌스-참가하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-참가하기"}},[g._v("#")]),g._v(" 거버넌스 참가하기")]),g._v(" "),C("h3",{attrs:{id:"거버넌스에-대해서"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스에-대해서"}},[g._v("#")]),g._v(" 거버넌스에 대해서")]),g._v(" "),C("p",[g._v("코스모스 허브는 아톰을 스테이킹 한 위임자들이 투표를 할 수 있는 시스템이 내장되어있습니다. 프로포절의 종류는 3개가 있으며 다음과 같습니다:")]),g._v(" "),C("ul",[C("li",[C("code",[g._v("텍스트 프로포절(Text Proposals)")]),g._v(": 가장 기본적인 형태의 프로포절입니다. 특정 주제에 대한 네트워크의 의견을 확인하기 위해서 사용됩니다.")]),g._v(" "),C("li",[C("code",[g._v("파라미터 프로포절(Parameter Proposals)")]),g._v(": 네트워크의 기존 파라미터 값을 변경하는 것을 제안하기 위해서 사용됩니다.")]),g._v(" "),C("li",[C("code",[g._v("소프트웨어 업그레이드 프로포절(Software Upgrade Proposal)")]),g._v(": 코스모스 허브의 소프트웨어를 업그레이드 하는 것을 제안하기 위해서 사용됩니다.")])]),g._v(" "),C("p",[g._v("모든 아톰 보유자는 프로포절을 제안할 수 있습니다. 특정 프로포절의 투표가 활성화되기 위해서는 "),C("code",[g._v("minDeposit")]),g._v("값에 정의된 보증금 보다 높은 "),C("code",[g._v("deposit")]),g._v(" 비용이 예치되어야 합니다. "),C("code",[g._v("deposit")]),g._v("은 프로포절 제안자 외에도 보증금을 추가할 수 있습니다. 만약 제안자가 필요한 보증금 보다 낮은 보증금을 입금한 경우, 프로포절은 "),C("code",[g._v("deposit_period")]),g._v(" 상태로 들어가 추가 보증금 입금을 대기합니다. 모든 아톰 보유자는 "),C("code",[g._v("depositTx")]),g._v(" 트랜잭션을 통해 보증금을 추가할 수 있습니다.")]),g._v(" "),C("p",[g._v("프로포절의 "),C("code",[g._v("deposit")]),g._v("이 "),C("code",[g._v("minDeposit")]),g._v("을 도달하게 되면 해당 프로포절의 2주 간의 "),C("code",[g._v("voting_period")]),g._v("(투표 기간)이 시작됩니다. __위임된 아톰__의 보유자는 해당 프로포절에 투표를 행사할 수 있으며, "),C("code",[g._v("Yes")]),g._v(", "),C("code",[g._v("No")]),g._v(", "),C("code",[g._v("NoWithVeto")]),g._v(" 또는 "),C("code",[g._v("Abstain")]),g._v(" 표를 선택할 수 있습니다. 각 표는 투표자의 위임된 아톰 수량을 반영하게 됩니다. 만약 위임자가 직접 투표를 진행하지 않은 경우, 위임자는 검증인의 표를 따르게 됩니다. 하지만 모든 위임자는 직접 투표를 행사하여 검증인의 표와 다른 표를 행사할 수 있습니다.")]),g._v(" "),C("p",[g._v("투표 기간이 끝난 후, 프로포절이 50% 이상의 "),C("code",[g._v("Yes")]),g._v("표를 받았고 ("),C("code",[g._v("Abstain")]),g._v(" 표를 제외하고) "),C("code",[g._v("NoWithVeto")]),g._v(" ("),C("code",[g._v("Abstain")]),g._v(" 표를 제외하고) 표가 33.33% 이하일 경우 통과하게 됩니다.")]),g._v(" "),C("h3",{attrs:{id:"거버넌스-참여하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-참여하기"}},[g._v("#")]),g._v(" 거버넌스 참여하기")]),g._v(" "),C("div",{staticClass:"custom-block warning"},[C("p",[C("strong",[g._v("참고: 다음 명령어는 온라인 상태인 컴퓨터에서만 진행이 가능합니다. 해당 명령은 렛저 하드웨어 월렛 기기를 사용해 실행하는 것을 추천드립니다. 오프라인으로 트랜잭션을 발생하는 방법을 확인하기 위해서는 "),C("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[g._v("여기")]),g._v("를 참고하세요.")])])]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7ZSE66Gc7Y+s7KCIIOygnOyViO2VmOq4sAovLyAmbHQ77ZSE66Gc7Y+s7KCIX+yiheulmCh0eXBlKSZndDs9dGV4dC9wYXJhbWV0ZXJfY2hhbmdlL3NvZnR3YXJlX3VwZ3JhZGUKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgLS10aXRsZSAmcXVvdDtUZXN0IFByb3Bvc2FsJnF1b3Q7IC0tZGVzY3JpcHRpb24gJnF1b3Q7TXkgYXdlc29tZSBwcm9wb3NhbCZxdW90OyAtLXR5cGUgJmx0O+2UhOuhnO2PrOygiF/sooXrpZgodHlwZSkmZ3Q7IC0tZGVwb3NpdD0xMDAwMDAwMHVhdG9tIC0tZ2FzIGF1dG8gLS1nYXMtcHJpY2VzICZsdDvqsIDsiqRf6rCA6rKpKGdhc1ByaWNlKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsKCi8vIO2UhOuhnO2PrOygiOydmCDrs7Tspp3quIgg7LaU6rCA7ZWY6riwCi8vIO2UhOuhnO2PrOygiOydmCBwcm9wb3NhbElEIOyhsO2ajDogJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKLy8g7YyM652866+47YSwIOqwkiDsmIjsi5w6ICZsdDvrs7Tspp3quIgoZGVwb3NpdCkmZ3Q7PTEwMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxJRCkmZ3Q7ICZsdDvstpTqsIDtlaBf67O07Kad6riIKGRlcG9zaXQpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZnJvbSAmbHQ77JyE7J6E7J6QX+2CpF/rqoXsua0oZGVsZWdhdG9yS2V5TmFtZSkmZ3Q7CgovLyDtlITroZztj6zsoIjsl5Ag7Yis7ZGc7ZWY6riwCi8vIO2UhOuhnO2PrOygiOydmCBwcm9wb3NhbElEIOyhsO2ajDogJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZCAKLy8gJmx0O+2RnF/shKDtg50ob3B0aW9uKSZndDs9eWVzL25vL25vX3dpdGhfdmV0by9hYnN0YWluCgpnYWlhZCB0eCBnb3Ygdm90ZSAmbHQ77ZSE66Gc7Y+s7KCIX0lEKHByb3Bvc2FsSUQpJmd0OyAmbHQ77ZGcX+yEoO2DnShvcHRpb24pJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZnJvbSAmbHQ77JyE7J6E7J6QX+2CpF/rqoXsua0oZGVsZWdhdG9yS2V5TmFtZSkmZ3Q7Cg=="}}),g._v(" "),C("h2",{attrs:{id:"오프라인-컴퓨터에서-트랜잭션-서명하기"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#오프라인-컴퓨터에서-트랜잭션-서명하기"}},[g._v("#")]),g._v(" 오프라인 컴퓨터에서 트랜잭션 서명하기")]),g._v(" "),C("p",[g._v("렛저 기기가 없거나 오프라인 컴퓨터에서 프라이빗 키를 관리하고 싶으신 경우, 다음 절차를 따라하세요. 우선 "),C("strong",[g._v("온라인")]),g._v(" 컴퓨터에서 미서명 트랜잭션을 다음과 같이 생성하십시오 (다음 예시에서는 위임 트랜잭션을 예시로 사용합니다):")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JWE7YawIOuzuOuUqe2VmOq4sCAKLy8g7ZSM656Y6re4IOqwkiDsmIjsi5w6ICZsdDvrs7jrlKntlaAg7IiY65+JKGFtb3VudFRvQm9uZCkmZ3Q7PTEwMDAwMDAwdWF0b20sICZsdDvsnITsnoTtlaAg6rKA7Kad7J247J2YIGJlY2gzMiDso7zshowoYmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yKSZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O+qwgOyKpCDqsIDqsqkoZ2FzUHJpY2UpJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JBZGRyZXNzKSZndDsgJmx0O+ychOyehO2VoF/siJjrn4koYW1vdW50VG9Cb25kKSZndDsgLS1mcm9tICZsdDvsnITsnoTsnpBf7KO87IaMKGRlbGVnYXRvckFkZHJlc3MpJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ76rCA7IqkX+qwgOqyqShnYXNQcmljZSkmZ3Q7IC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVFguanNvbgo="}}),g._v(" "),C("p",[g._v("서명을 진행하기 위해서는 "),C("code",[g._v("chain-id")]),g._v(", "),C("code",[g._v("account-number")]),g._v(", 그리고 "),C("code",[g._v("sequence")]),g._v(" 값이 필요합니다. "),C("code",[g._v("chain-id")]),g._v("는 트랜잭션을 전송할 블록체인의 고유 식별 번호입니다. "),C("code",[g._v("account-number")]),g._v("는 계정이 처음 자산을 받을 때 생성되는 고유 번호입니다. "),C("code",[g._v("sequence")]),g._v("는 리플레이 공격을 방지하기 위해 전송한 트랜잭션의 수량을 기록하는데 사용됩니다.")]),g._v(" "),C("p",[g._v("체인 아이디(chain-id) 값은 해당 블록체인의 제네시스 파일에서 받으실 수 있습니다 (현재 기준 코스모스 허브는 "),C("code",[g._v("cosmoshub-2")]),g._v("). account-number와 sequence는 계정 조회 명령어를 사용해 확인하실 수 있습니다.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ76rOE7KCVX+yjvOyGjCh5b3VyQWRkcmVzcykmZ3Q7IC0tY2hhaW4taWQgY29zbW9zaHViLTIK"}}),g._v(" "),C("p",[g._v("이후 서명이 진행되지 않은 "),C("code",[g._v("unsignedTx.json")]),g._v(" 파일을 복사하신 후 (USB 등을 이용하여) 오프라인 컴퓨터로 이동하십시오. 만약 오프라인 컴퓨터에 아직 계정을 생성하지 않으셨을 경우, "),C("a",{attrs:{href:"#using-a-computer"}},[g._v("이 항목")]),g._v("을 참고하여 오프라인 컴퓨터에서 계정을 생성하세요. 안전을 위해서 서명하기 전에 다음 명령어를 실행해 트랜잭션의 파라미터를 한번 더 확인하십시오:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),g._v(" "),C("p",[g._v("이제 다음 명령어를 실행해 트랜잭션을 서명합니다:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tICZsdDvsnITsnoTsnpBf7YKkX+uqhey5rShkZWxlZ2F0b3JLZXlOYW1lKSZndDsgLS1vZmZsaW5lIC0tY2hhaW4taWQgY29zbW9zaHViLTIgLS1zZXF1ZW5jZSAmbHQ77Iuc7YCA7IqkKHNlcXVlbmNlKSZndDsgLS1hY2NvdW50LW51bWJlciAmbHQ76rOE7KCVX+uyiO2YuChhY2NvdW50TnVtYmVyKSZndDsgJmd0OyBzaWduZWRUeC5qc29uCg=="}}),g._v(" "),C("p",[g._v("서명된 "),C("code",[g._v("signedTx.json")]),g._v(" 파일을 복사하시고 다시 온라인 컴퓨터로 이동하세요. 다음 명령어를 실행해 해당 트랜잭션을 네트워크에 전파하세요:")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file diff --git a/main/assets/js/127.530e9f27.js b/main/assets/js/127.cd5d7474.js similarity index 99% rename from main/assets/js/127.530e9f27.js rename to main/assets/js/127.cd5d7474.js index 4b70f882f20..f64928bd9a7 100644 --- a/main/assets/js/127.530e9f27.js +++ b/main/assets/js/127.cd5d7474.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{588: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],{578: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.ede1e479.js b/main/assets/js/128.c6c460b3.js similarity index 99% rename from main/assets/js/128.ede1e479.js rename to main/assets/js/128.c6c460b3.js index a72c41c19f6..953ec2a5e8f 100644 --- a/main/assets/js/128.ede1e479.js +++ b/main/assets/js/128.c6c460b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{569:function(a,t,s){"use strict";s.r(t);var v=s(1),c=Object(v.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"최신-퍼블릭-테스트넷에-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최신-퍼블릭-테스트넷에-참가하기"}},[a._v("#")]),a._v(" 최신 퍼블릭 테스트넷에 참가하기")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("최신 테스트넷")]),a._v(" "),s("p",[a._v("최신 테스트넷에 대한 정보는 다음의 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[a._v("테스트넷 리포"),s("OutboundLink")],1),a._v("를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.")])]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[s("strong",[a._v("여기에서 더 진행하시기 전에 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[a._v("gaia")]),a._v("가 꼭 설치되어있어야 합니다.")],1)])]),a._v(" "),s("h2",{attrs:{id:"새로운-노드-세팅하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#새로운-노드-세팅하기"}},[a._v("#")]),a._v(" 새로운 노드 세팅하기")]),a._v(" "),s("p",[a._v("다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.")]),a._v(" "),s("p",[a._v("우선 노드를 실행하고 필요한 config 파일을 생성합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),s("p",[s("code",[a._v("--moniker")]),a._v("는 ASCII 캐릭터만을 지원합니다. Unicode 캐릭터를 이용하는 경우 노드 접근이 불가능할 수 있으니 참고하세요.")])]),a._v(" "),s("p",[s("code",[a._v("moniker")]),a._v("는 "),s("code",[a._v("~/.gaia/config/config.toml")]),a._v(" 파일을 통해 추후에 변경이 가능합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("최소 가스 가격보다 낮은 트랜잭션을 거절하는 스팸 방지 메커니즘을 활성화 하시려면 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v(" 파일을 변경하시면 됩니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("이제 풀노드가 활성화 되었습니다!")]),a._v(" "),s("h2",{attrs:{id:"제네시스와-시드"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스와-시드"}},[a._v("#")]),a._v(" 제네시스와 시드")]),a._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사하기"}},[a._v("#")]),a._v(" 제네시스 파일 복사하기")]),a._v(" "),s("p",[a._v("테스트넷의 "),s("code",[a._v("genesis.json")]),a._v("파일을 "),s("code",[a._v("gaiad")]),a._v("의 config 디렉토리로 가져옵니다.")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),s("p",[a._v("위 예시에서는 최신 테스트넷에 대한 정보가 포함되어있는 "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),s("OutboundLink")],1),a._v("의 "),s("code",[a._v("latest")]),a._v(" 디렉토리를 이용하는 것을 참고하세요.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("만약 다른 퍼블릭 테스트넷에 연결하신다면 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[a._v("여기")]),a._v("에 있는 정보를 확인하세요.")],1)]),a._v(" "),s("p",[a._v("설정이 올바르게 작동하는지 확인하기 위해서는 다음을 실행하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("h3",{attrs:{id:"시드-노드-추가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#시드-노드-추가하기"}},[a._v("#")]),a._v(" 시드 노드 추가하기")]),a._v(" "),s("p",[a._v("이제 노드가 다른 피어들을 찾는 방법을 알아야합니다. "),s("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("에 안정적인 시드 노드들을 추가할 차례입니다. "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[s("code",[a._v("launch")]),s("OutboundLink")],1),a._v(" repo에 몇 개 시드 노드 링크가 포함되어있습니다.")]),a._v(" "),s("p",[a._v("만약 해당 시드가 작동하지 않는다면, 추가적인 시드와 피어들을 코스모스 허브 익스플로러에서 확인하세요(목록은 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch"),s("OutboundLink")],1),a._v(" 페이지에 있습니다.)")]),a._v(" "),s("p",[a._v("이 외에도 "),s("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("밸리데이터 라이엇 채팅방"),s("OutboundLink")],1),a._v("을 통해서 피어 요청을 할 수 있습니다.")]),a._v(" "),s("p",[a._v("시드와 피어에 대한 더 많은 정보를 원하시면 "),s("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),s("OutboundLink")],1),a._v("를 확인하세요.")]),a._v(" "),s("h3",{attrs:{id:"가스와-수수료에-대해서"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#가스와-수수료에-대해서"}},[a._v("#")]),a._v(" 가스와 수수료에 대해서")]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[a._v("코스모스 메인넷에서는 "),s("code",[a._v("uatom")]),a._v(" 단위가 표준 단위로 사용됩니다. "),s("code",[a._v("1atom = 1,000,000uatom")]),a._v("으로 환산됩니다.")])]),a._v(" "),s("p",[a._v("코스모스 허브 네트워크는 트랜잭션 처리를 위해 트랜잭션 수수료를 부과합니다. 해당 수수료는 트랜잭션을 실행하기 위한 가스로 사용됩니다. 공식은 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"7IiY7IiY66OMKEZlZSkgPSDqsIDsiqQoR2FzKSAqIOqwgOyKpCDqsJIoR2FzUHJpY2VzKQo="}}),a._v(" "),s("p",[a._v("위 공식에서 "),s("code",[a._v("gas")]),a._v("는 전송하는 트랜잭션에 따라 다릅니다. 다른 형태의 트랜잭션은 각자 다른 "),s("code",[a._v("gas")]),a._v("량을 필요로 합니다. "),s("code",[a._v("gas")]),a._v(" 수량은 트랜잭션이 실행될때 계산됨으로 사전에 정확한 값을 확인할 수 있는 방법은 없습니다. 다만, "),s("code",[a._v("gas")]),a._v(" 플래그의 값을 "),s("code",[a._v("auto")]),a._v("로 설정함으로 예상 값을 추출할 수는 있습니다. 예상 값을 수정하기 위해서는 "),s("code",[a._v("--gas-adjustment")]),a._v(" (기본 값 "),s("code",[a._v("1.0")]),a._v(") 플래그 값을 변경하셔서 트랜잭션이 충분한 가스를 확보할 수 있도록 하십시오.")]),a._v(" "),s("p",[s("code",[a._v("gasPrice")]),a._v("는 각 "),s("code",[a._v("gas")]),a._v(" 유닛의 가격입니다. 각 검증인은 직접 최소 가스 가격인 "),s("code",[a._v("min-gas-price")]),a._v("를 설정하며, 트랜잭션의 "),s("code",[a._v("gasPrice")]),a._v("가 설정한 "),s("code",[a._v("min-gas-price")]),a._v("보다 높을때 트랜잭션을 처리합니다.")]),a._v(" "),s("p",[a._v("트랜잭션 피("),s("code",[a._v("fees")]),a._v(")는 "),s("code",[a._v("gas")]),a._v(" 수량과 "),s("code",[a._v("gasPrice")]),a._v("를 곱한 값입니다. 유저는 3개의 값 중 2개의 값을 입력하게 됩니다. "),s("code",[a._v("gasPrice")]),a._v("가 높을수록 트랜잭션이 블록에 포함될 확률이 높아집니다.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("메인넷 권장 "),s("code",[a._v("gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v(" 입니다.")])]),a._v(" "),s("h2",{attrs:{id:"최소-가스-가격-minimum-gas-prices-설정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최소-가스-가격-minimum-gas-prices-설정하기"}},[a._v("#")]),a._v(" 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(") 설정하기")]),a._v(" "),s("p",[a._v("풀노드는 컨펌되지 않은 트랜잭션을 멤풀에 보관합니다. 스팸 트랜잭션으로부터 풀노드를 보호하기 위해서 노드 멤풀에 보관되기 위한 트랜잭션의 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(")을 설정할 것을 권장합니다. 해당 파라미터는 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("에서 설정하실 수 있씁니다.")]),a._v(" "),s("p",[a._v("기본 권장 "),s("code",[a._v("minimum-gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v("이지만, 추후 바꾸실 수 있습니다.")]),a._v(" "),s("h2",{attrs:{id:"풀노드-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#풀노드-운영하기"}},[a._v("#")]),a._v(" 풀노드 운영하기")]),a._v(" "),s("p",[a._v("다음 커맨드로 풀노드를 시작하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("p",[a._v("모든 것이 잘 작동하고 있는지 확인하기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),s("p",[a._v("네트워크 상태를 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 익스플로러"),s("OutboundLink")],1),a._v("에서 확인하세요.")]),a._v(" "),s("h2",{attrs:{id:"상태-내보내기-export-state"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#상태-내보내기-export-state"}},[a._v("#")]),a._v(" 상태 내보내기(Export State)")]),a._v(" "),s("p",[a._v("Gaia는 현재 애플리케이션의 상태를 JSON파일 형태로 내보낼 수 있습니다. 이런 데이터는 수동 분석과 새로운 네트워크의 제네시스 파일로 이용될 때 유용할 수 있습니다.")]),a._v(" "),s("p",[a._v("현재 상태를 내보내기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("특정 블록 높이의 상태를 내보낼 수 있습니다(해당 블록 처리 후 상태):")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, "),s("code",[a._v("--for-zero-height")]),a._v(" 플래그를 이용하셔서 내보내기를 실행해주세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("h2",{attrs:{id:"메인넷-검증하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-검증하기"}},[a._v("#")]),a._v(" 메인넷 검증하기")]),a._v(" "),s("p",[a._v("각 폴노드에서 invariant를 실행하여 검증 중 위험한 상황이 발생하는 것을 방지하세요. Invariant를 사용하여 메인넷의 상태(state)가 올바른 상태인 것을 확인합니다. 중요한 invariant 검증 중 하나는 프로토콜 예상 범위 밖에서 새로운 아톰이 생성되거나 사라지는 행위를 미리 감지하고 예빵합니다. 이 외에도 다양한 invariant check가 모듈 내 내장되어있습니다.")]),a._v(" "),s("p",[a._v("Invariant check는 블록체인 연산력을 상당하게 소모하기 때문에, 기본적으로 비활성화 되어있습니다. Invariant check를 실행한 상태로 노드를 시작하기 원하시는 경우 "),s("code",[a._v("inv-check-period")]),a._v(" 플래그를 추가하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),a._v(" "),s("p",[a._v("만약 노드 내 invariant가 문제를 감지하는 경우, 노드는 패닉하여 메인넷을 중지하는 트랜잭션을 전송합니다. 예시 메시지는 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),a._v(" "),s("p",[a._v("Invariant-broken 트랜잭션을 전송하는 경우 블록체인이 중지되기 떄문에 수수료가 없습니다.")]),a._v(" "),s("h2",{attrs:{id:"검증인-노드로-업그레이드-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-노드로-업그레이드-하기"}},[a._v("#")]),a._v(" 검증인 노드로 업그레이드 하기")]),a._v(" "),s("p",[a._v("이제 풀노드 설정을 완료하셨습니다. 원하신다면 풀노드를 코스모스 검증인으로 업그레이드 하실 수 있습니다. 보팅 파워 상위 100위 검증인은 코스모스 허브의 새로운 블록 프로포즈 과정에 참여할 수 있습니다. "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[a._v("검증인 세팅하기")]),a._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{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.9e1ef4a0.js b/main/assets/js/129.d68bae07.js similarity index 99% rename from main/assets/js/129.9e1ef4a0.js rename to main/assets/js/129.d68bae07.js index bf50de6d226..594de5735de 100644 --- a/main/assets/js/129.9e1ef4a0.js +++ b/main/assets/js/129.d68bae07.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{589: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/13.f91af9bf.js b/main/assets/js/13.ac39b3bc.js similarity index 98% rename from main/assets/js/13.f91af9bf.js rename to main/assets/js/13.ac39b3bc.js index 60da030f7cd..0b8c4232f06 100644 --- a/main/assets/js/13.f91af9bf.js +++ b/main/assets/js/13.ac39b3bc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{406:function(t,e,i){},435:function(t,e,i){"use strict";i(406)},460:function(t,e,i){"use strict";i.r(e);var r=i(10),n={props:["tree"],methods:{shorten(t){let e=t.split(" ");return e=e.length>20?e.slice(0,20).join(" ")+"...":e.join(" "),this.md(e)}},computed:{linkPrevNext(){if(!this.tree)return;let t={};const e=i=>i.forEach((n,s)=>{const l=n.children;if(l){const a=Object(r.findIndex)(l,["regularPath",this.$page.path]);return a>=0&&l[a-1]&&(t.prev=l[a-1]),a>=0&&l[a+1]?t.next=l[a+1]:a>=0&&i[s+1]&&i[s+1].children&&(t.next=Object(r.find)(i[s+1].children,t=>t.frontmatter&&!1!==t.frontmatter.order)),e(n.children)}});return e(this.tree),t}}},s=(i(435),i(1)),l=Object(s.a)(n,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("div",{staticClass:"links"},[i("div",{staticClass:"links__wrapper"},[t.$page.frontmatter.prev||t.linkPrevNext&&t.linkPrevNext.prev&&t.linkPrevNext.prev.frontmatter&&!1!==t.linkPrevNext.prev.frontmatter.order?i("div",{staticClass:"links__container"},[i("router-link",{staticClass:"links__item links__item__left",attrs:{to:t.$page.frontmatter.prev||t.linkPrevNext.prev.regularPath}},[i("div",{staticClass:"links__item__icon"},[i("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 64 64"}},[i("title",[t._v("arrow-right")]),i("g",{attrs:{"stroke-linecap":"square","stroke-linejoin":"miter","stroke-width":"2"}},[i("line",{attrs:{fill:"none","stroke-miterlimit":"10",x1:"61",y1:"32",x2:"3",y2:"32","stroke-linecap":"butt"}}),i("polyline",{attrs:{fill:"none","stroke-miterlimit":"10",points:"21,14 3,32 21,50 "}})])])]),i("div",[i("div",{staticClass:"links__label"},[t._v("Previous")]),i("div",{staticClass:"links__item__title"},[t._v(t._s(t.$page.frontmatter.prev||t.linkPrevNext.prev.title))]),t.linkPrevNext.prev.frontmatter.description?i("div",{staticClass:"links__item__desc",domProps:{innerHTML:t._s(t.shorten(t.linkPrevNext.prev.frontmatter.description))}}):t._e()])])],1):t._e()]),i("div",{staticClass:"links__wrapper"},[t.$page.frontmatter.next||t.linkPrevNext&&t.linkPrevNext.next&&t.linkPrevNext.next.frontmatter&&!1!==t.linkPrevNext.next.frontmatter.order?i("div",{staticClass:"links__container"},[i("router-link",{staticClass:"links__item links__item__right",attrs:{to:t.$page.frontmatter.next||t.linkPrevNext.next.regularPath}},[i("div",[i("div",{staticClass:"links__label"},[t._v("Next")]),i("div",{staticClass:"links__item__title"},[t._v(t._s(t.$page.frontmatter.next||t.linkPrevNext.next.title))]),t.linkPrevNext.next.frontmatter.description?i("div",{staticClass:"links__item__desc",domProps:{innerHTML:t._s(t.shorten(t.linkPrevNext.next.frontmatter.description))}}):t._e()]),i("div",{staticClass:"links__item__icon"},[i("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 64 64"}},[i("title",[t._v("arrow-right")]),i("g",{attrs:{"stroke-linecap":"square","stroke-linejoin":"miter","stroke-width":"2"}},[i("line",{attrs:{fill:"none","stroke-miterlimit":"10",x1:"3",y1:"32",x2:"61",y2:"32","stroke-linecap":"butt"}}),i("polyline",{attrs:{fill:"none","stroke-miterlimit":"10",points:"43,14 61,32 43,50 "}})])])])])],1):t._e()])])])}),[],!1,null,"15325c0d",null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{406:function(t,e,i){},435:function(t,e,i){"use strict";i(406)},459:function(t,e,i){"use strict";i.r(e);var r=i(10),n={props:["tree"],methods:{shorten(t){let e=t.split(" ");return e=e.length>20?e.slice(0,20).join(" ")+"...":e.join(" "),this.md(e)}},computed:{linkPrevNext(){if(!this.tree)return;let t={};const e=i=>i.forEach((n,s)=>{const l=n.children;if(l){const a=Object(r.findIndex)(l,["regularPath",this.$page.path]);return a>=0&&l[a-1]&&(t.prev=l[a-1]),a>=0&&l[a+1]?t.next=l[a+1]:a>=0&&i[s+1]&&i[s+1].children&&(t.next=Object(r.find)(i[s+1].children,t=>t.frontmatter&&!1!==t.frontmatter.order)),e(n.children)}});return e(this.tree),t}}},s=(i(435),i(1)),l=Object(s.a)(n,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("div",{staticClass:"links"},[i("div",{staticClass:"links__wrapper"},[t.$page.frontmatter.prev||t.linkPrevNext&&t.linkPrevNext.prev&&t.linkPrevNext.prev.frontmatter&&!1!==t.linkPrevNext.prev.frontmatter.order?i("div",{staticClass:"links__container"},[i("router-link",{staticClass:"links__item links__item__left",attrs:{to:t.$page.frontmatter.prev||t.linkPrevNext.prev.regularPath}},[i("div",{staticClass:"links__item__icon"},[i("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 64 64"}},[i("title",[t._v("arrow-right")]),i("g",{attrs:{"stroke-linecap":"square","stroke-linejoin":"miter","stroke-width":"2"}},[i("line",{attrs:{fill:"none","stroke-miterlimit":"10",x1:"61",y1:"32",x2:"3",y2:"32","stroke-linecap":"butt"}}),i("polyline",{attrs:{fill:"none","stroke-miterlimit":"10",points:"21,14 3,32 21,50 "}})])])]),i("div",[i("div",{staticClass:"links__label"},[t._v("Previous")]),i("div",{staticClass:"links__item__title"},[t._v(t._s(t.$page.frontmatter.prev||t.linkPrevNext.prev.title))]),t.linkPrevNext.prev.frontmatter.description?i("div",{staticClass:"links__item__desc",domProps:{innerHTML:t._s(t.shorten(t.linkPrevNext.prev.frontmatter.description))}}):t._e()])])],1):t._e()]),i("div",{staticClass:"links__wrapper"},[t.$page.frontmatter.next||t.linkPrevNext&&t.linkPrevNext.next&&t.linkPrevNext.next.frontmatter&&!1!==t.linkPrevNext.next.frontmatter.order?i("div",{staticClass:"links__container"},[i("router-link",{staticClass:"links__item links__item__right",attrs:{to:t.$page.frontmatter.next||t.linkPrevNext.next.regularPath}},[i("div",[i("div",{staticClass:"links__label"},[t._v("Next")]),i("div",{staticClass:"links__item__title"},[t._v(t._s(t.$page.frontmatter.next||t.linkPrevNext.next.title))]),t.linkPrevNext.next.frontmatter.description?i("div",{staticClass:"links__item__desc",domProps:{innerHTML:t._s(t.shorten(t.linkPrevNext.next.frontmatter.description))}}):t._e()]),i("div",{staticClass:"links__item__icon"},[i("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 64 64"}},[i("title",[t._v("arrow-right")]),i("g",{attrs:{"stroke-linecap":"square","stroke-linejoin":"miter","stroke-width":"2"}},[i("line",{attrs:{fill:"none","stroke-miterlimit":"10",x1:"3",y1:"32",x2:"61",y2:"32","stroke-linecap":"butt"}}),i("polyline",{attrs:{fill:"none","stroke-miterlimit":"10",points:"43,14 61,32 43,50 "}})])])])])],1):t._e()])])])}),[],!1,null,"15325c0d",null);e.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/130.d8b943d0.js b/main/assets/js/130.b3f6dbe9.js similarity index 97% rename from main/assets/js/130.d8b943d0.js rename to main/assets/js/130.b3f6dbe9.js index 3f27690b916..6078e72ed53 100644 --- a/main/assets/js/130.d8b943d0.js +++ b/main/assets/js/130.b3f6dbe9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{591: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.8f91e26e.js b/main/assets/js/131.c29e9eb8.js similarity index 98% rename from main/assets/js/131.8f91e26e.js rename to main/assets/js/131.c29e9eb8.js index 8041a1c8a0f..2bd6d435fe3 100644 --- a/main/assets/js/131.8f91e26e.js +++ b/main/assets/js/131.c29e9eb8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{592: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],{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 diff --git a/main/assets/js/132.e068d009.js b/main/assets/js/132.0c8ce5ea.js similarity index 94% rename from main/assets/js/132.e068d009.js rename to main/assets/js/132.0c8ce5ea.js index 04cb543141b..4dffdace3f2 100644 --- a/main/assets/js/132.e068d009.js +++ b/main/assets/js/132.0c8ce5ea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{594: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.27518b66.js b/main/assets/js/133.50ac843b.js similarity index 99% rename from main/assets/js/133.27518b66.js rename to main/assets/js/133.50ac843b.js index ea2b8801829..900d12f3f81 100644 --- a/main/assets/js/133.27518b66.js +++ b/main/assets/js/133.50ac843b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{566:function(r,e,t){"use strict";t.r(e);var o=t(1),a=Object(o.a)({},(function(){var r=this,e=r.$createElement,t=r._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[t("h1",{attrs:{id:"코스모스-허브-메인넷의-시작"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-메인넷의-시작"}},[r._v("#")]),r._v(" 코스모스 허브 메인넷의 시작")]),r._v(" "),t("h4",{attrs:{id:"런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[r._v("#")]),r._v(" 런칭 준비 체크리스트 & 안전하게 아톰 수령하기")]),r._v(" "),t("p",[r._v("2016년 여름, 코스모스 "),t("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[r._v("백서가"),t("OutboundLink")],1),r._v(" 세상에 공개되었습니다. 이후 2017년 봄, 코스모스의 "),t("a",{attrs:{href:"%ED%8E%80%EB%93%9C%EB%A0%88%EC%9D%B4%EC%A0%80%EA%B0%80"}},[r._v("펀드레이저가")]),r._v(" 성공적으로 완료되었습니다. 그리고 2019년 2월, 코스모스의 소프트웨어"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.31.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("가 기능 완성"),t("OutboundLink")],1),r._v("(feature complete)단계에 도달했습니다. 이제 코스모스 허브의 런칭을 앞두고 있는 이 시점에서, 아톰 보유자들은 무엇을 해야될까요?")]),r._v(" "),t("p",[r._v("아톰 보유자는 메인넷에서 본인의 아톰을 검증인에게 위임하고 거버넌스 프로포절에 투표를 할 수 있는 권리를 가질 수 있게 됩니다. 어떻게 보면 위임자들의 선택이 코스모스 네트워크의 성공을 좌우할 수 있다고 볼 수 있습니다. 단, 런칭 초기 아톰 송금 기능은 프로토콜 레벨에서 비활성화될 계획이며, 추후 하드포크를 통해 활성화될 것입니다.")]),r._v(" "),t("p",[t("strong",[r._v("📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/develop/docs/delegators/delegator-guide-cli.md",target:"_blank",rel:"noopener noreferrer"}},[r._v("CLI 사용법"),t("OutboundLink")],1),r._v("을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.")])]),r._v(" "),t("p",[r._v("안전하게 아톰을 위임하는 방법은 이 가이드에 설명된 것 외에는 없습니다. 현재로써 "),t("code",[r._v("gaiad")]),r._v(" 외 보안 감사를 거친 월렛 소프트웨어는 없습니다. 다른 월렛은 보안 감사를 시작하지 않은 상태입니다.")]),r._v(" "),t("p",[r._v("추가로 아톰을 위임하는 행위에는 매우 큰 리스크가 존재한다는 점을 인지하셔야 합니다. 한번 검증인에게 위임된 아톰은 일정 기간동안 묶이게 되며, 이 스테이킹 기간 동안 검증인의 실수로 슬래싱(아톰 삭감)이 발생하는 경우 위임자의 아톰 또한 함께 삭감될 수 있습니다. 검증인들에 대한 충분한 정보를 미리 확인하고 위임을 진행하는 것은 각 위임자의 책임입니다.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 허브는 매우 실험적인 소프트웨어입니다. 메인넷 초기에는 다수의 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 현재 제공되는 도구를 사용하는데에는 상당한 기술적 실력이 필요하며, 인터체인 재단과 텐더민트 팀의 컨트롤 밖에 있는 리스크가 존재합니다 (관련 리스크에 대한 자세한 정보는 인터체인 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 펀드레이저 약관"),t("OutboundLink")],1),r._v("을 참고하세요). "),t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("아파치 2.0 라이선스"),t("OutboundLink")],1),r._v(" 기반의 오픈 소스 소프트웨어를 사용함으로 발생하는 리스크는 본인의 책임이며, 어떠한 보증과 조건이 따르지 않습니다. 소프트웨어 사용으로 발생하는 문제에 대해서 인터체인 재단과 텐더민트는 책임을 지지 않습니다. 상당한 주의를 기울이며 신중하게 진행하시기 바랍니다.")])]),r._v(" "),t("p",[r._v("만약 위임 절차에 대한 질문이 있거나, 코스모스 개발자들과 대화를 나누고 싶으시다면 2월 14일에 열리는 온라인 밋업에 참가해주세요. 해당 밋업에서 런칭 때 아톰을 위임하는 절차를 한 단계씩 설명해 드릴 예정입니다.")]),r._v(" "),t("p",[r._v("등록 링크: "),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[r._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),r._v(" "),t("h2",{attrs:{id:"런칭을-위해-남은-마일스톤"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭을-위해-남은-마일스톤"}},[r._v("#")]),r._v(" 런칭을 위해 남은 마일스톤")]),r._v(" "),t("p",[r._v("🚦메인넷 런칭 프로세스를 확인하기 위해서는 다음 링크를 참고하세요: "),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[r._v("cosmos.network/launch"),t("OutboundLink")],1)]),r._v(" "),t("h3",{attrs:{id:"_5-코스모스-sdk-보안-감사-✔"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-코스모스-sdk-보안-감사-✔"}},[r._v("#")]),r._v(" 5: 코스모스 SDK 보안 감사 ✔")]),r._v(" "),t("p",[r._v("지난 1월, 코스모스 SDK는 다수의 외부 보안 감사 절차의 첫 단계를 진행했습니다. 보안 감사는 약 2주 반 기간에 걸려 진행되었습니다. 현재 두 개의 기관이 코스모스 SDK 코드를 검증한 상태이며, 다른 한 개 기관의 보안 감사가 진행 중입니다.")]),r._v(" "),t("h3",{attrs:{id:"_4-코스모스-sdk-기능-동결-feature-freeze"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-코스모스-sdk-기능-동결-feature-freeze"}},[r._v("#")]),r._v(" 4: 코스모스 SDK 기능 동결 (feature freeze)")]),r._v(" "),t("p",[r._v("코스모스 SDK의 최종 주요 수정 사항은 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[r._v("SDK v0.31.0 RC에"),t("OutboundLink")],1),r._v(" 반영되었습니다. 해당 RC(Release candidate)가 완료된 후, 코스모스 SDK 팀은 추가적인 디버깅을 진행하여 런칭 전 보안성 확보를 위해 노력을 기울일 예정입니다.")]),r._v(" "),t("p",[r._v("코스모스 SDK v0.31.0이 릴리즈된 후, 혹시라도 발견되지 않은 버그를 검증하기 위해 Gaia 테스트넷을 추가로 진행할 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_3-게임-오브-스테이크-완료"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-게임-오브-스테이크-완료"}},[r._v("#")]),r._v(" 3: 게임 오브 스테이크 완료")]),r._v(" "),t("p",[r._v("지난 2018년 12월, 사상 최초의 경쟁적 테스트넷인 게임 오브 스테이크(GoS, Game of Stakes)가 시작되었습니다. GoS의 목표는 경제적 인센티브 검증, 지분증명으로 보안이 유지되는 블록체인의 사회적 요소를 검증하기 위해 진행되었습니다. 이후, GoS는 무려 3번의 하드 포크를 성공적으로 진행했습니다. GoS가 완료된 후, 점수 측정 기준을 기반으로 우승자를 발표하게 될 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_2-제네시스-트랜잭션-모으기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-제네시스-트랜잭션-모으기"}},[r._v("#")]),r._v(" 2: 제네시스 트랜잭션 모으기")]),r._v(" "),t("p",[r._v("제네시스 시점에서 인터체인 재단은 아톰 분배 권고를 작성합니다. 여기에는 코스모스 펀드레이저 참가자, 초기 기여자, 게임 오브 스테이크 우승자 등이 포함됩니다. 아톰 분배 권고 목록에 포함된 인원은 "),t("code",[r._v("gentx")]),r._v("를 제출할 수 있으며, 제네시스 검증인이 되기 위해서 "),t("code",[r._v("gentx")]),r._v(" 제출은 필수입니다. 이후 모든 "),t("code",[r._v("gentx")]),r._v(" 파일이 모이게 되면 최종 제네시스 파일이 만들어집니다.")]),r._v(" "),t("h3",{attrs:{id:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[r._v("#")]),r._v(" 1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥")]),r._v(" "),t("p",[r._v("+⅔의 보팅 파워가 온라인 상태가 되고, 커뮤니티가 제네시스 파일을 승인하게 된다면 코스모스 메인넷이 시작됩니다.")]),r._v(" "),t("h2",{attrs:{id:"공식-코스모스-소통-채널"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#공식-코스모스-소통-채널"}},[r._v("#")]),r._v(" 공식 코스모스 소통 채널")]),r._v(" "),t("p",[r._v("런칭 관련 소식을 전하는 공식 소통 채널은 다음과 같습니다:")]),r._v(" "),t("ul",[t("li",[r._v("코스모스 트위터 (twitter.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 깃허브 (github.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 블로그 (blog.cosmos.network)")])]),r._v(" "),t("p",[r._v("또한 "),t("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 포럼"),t("OutboundLink")],1),r._v(", "),t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[r._v("라이엇 그룹 채팅"),t("OutboundLink")],1),r._v(" 그리고 "),t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[r._v("텔레그램 방"),t("OutboundLink")],1),r._v("은 코스모스의 공식적인 소식을 전달하는 채널이 아니라는 것을 인지하시기 바랍니다.")]),r._v(" "),t("p",[r._v("만약 앞으로 진행해야 하는 절차가 어렵거나 특정 정보의 소스를 확인할 수 없는 경우, 초기 시점에서 아무 행동을 하지 않고 위 3개의 공식 채널로 전달되는 업데이트를 확인하시기 바랍니다. 12개의 시드 단어를 그 어떤 단톡방 관리자, 웹사이트, 비공식 소프트웨어에 제공하지 마십시오.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 팀은 절대로 개인적인 채널을 통해 프라이빗 키 또는 시드 단어를 요청하지 않습니다.")])]),r._v(" "),t("h2",{attrs:{id:"메인넷-런칭때-안전할-수-있는-방법은"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-런칭때-안전할-수-있는-방법은"}},[r._v("#")]),r._v(" 메인넷 런칭때 안전할 수 있는 방법은?")]),r._v(" "),t("p",[r._v("런칭 시기가 다가오며 코스모스 허브 메인넷에 대한 기대감 또한 커지고 있습니다. 하지만 이런 시기를 틈타 일부는 본인의 이득을 위해 악의적이 행동을 할 확률 또한 높습니다. "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=863068&cid=42346&categoryId=42346",target:"_blank",rel:"noopener noreferrer"}},[r._v("사회 공학"),t("OutboundLink")],1),r._v(" (social engineering)을 이용한 범죄는 인류 역사에서 꾸준히 있었으며, 오늘까지 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3434661&cid=40942&categoryId=32828",target:"_blank",rel:"noopener noreferrer"}},[r._v("스피어피싱"),t("OutboundLink")],1),r._v("과 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3432525&cid=58445&categoryId=58445",target:"_blank",rel:"noopener noreferrer"}},[r._v("피싱 공격"),t("OutboundLink")],1),r._v(" 같은 일종의 범죄 수단으로 이어지고 있습니다.")]),r._v(" "),t("p",[r._v("약 성공한 공격의 95%는 스피어피싱과 피싱 공격으로 이루어졌으며, 이메일 외의 다수의 수단을 통해서도 일어나고 있습니다. 카카오톡, 텔레그램, 문자 메시지, 트위터 등 해커들의 공격 수단은 매우 다양하며, 개인의 자산과 개인 정보를 탈취하고 있습니다.")]),r._v(" "),t("p",[r._v("이런 공격을 대비하는 것은 벅차게 느껴질 수 있지만 몇 가지 유의 사항을 참고하신다면 공격의 위험을 크게 낮출 수 있습니다. 메인넷 런칭 준비에 관련해서는 다음 가이드라인이 보안적 리스크를 줄이고 정보를 검증하는데 도움이 될 수 있을 것입니다.")]),r._v(" "),t("h2",{attrs:{id:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[r._v("#")]),r._v(" 다음은 코스모스 메인넷 런칭 준비 유의사항입니다")]),r._v(" "),t("ul",[t("li",[r._v("모든 소프트웨어는 공식 채널을 통해서만 다운로드를 하십시오. 또한, 12개 시드키가 입력될 수 있는 모든 작업은 최신 "),t("code",[r._v("gaiad")]),r._v(" 버전만을 사용하시기 바랍니다. 텐더민트, 코스모스 SDK 그리고 "),t("code",[r._v("gaiad")]),r._v(" 최신 버전은 공식 코스모스 깃허브를 통해서 배포됩니다. 공식 깃허브를 통해서 소프트웨어를 다운로드 함으로써 악의적으로 수정된 소프트웨어를 사용하는 것을 방지할 수 있습니다.")]),r._v(" "),t("li",[r._v("12개 시드 단어(시드 키)를 그 누구에게도 알려주지 마십시오. 시드 키는 오직 본인만이 관리해야 합니다. 특히 아톰 보관, 거래 등을 대행해주는 행위를 사칭하여 접근하는 사람들을 유의하십시오. 시드키를 안전하게 관리하기 위해서는 도난으로부터 안전한 오프라인 장소에 보관하시고, 혹시 모를 상황을 대비한 백업 수단을 유지하십시오. "),t("em",[r._v("시드키를 절대로 제삼자와 공유하지 마십시오.")])]),r._v(" "),t("li",[r._v("블록체인 또는 암호화폐 관련된 이메일과 웹사이트에서 다운로드를 유도하는 첨부 파일을 유의하십시오. 해커는 악의적으로 수정된 웹사이트를 통해서 컴퓨터 내에 있는 파일을 탈취할 수 있습니다. Gmail을 사용하신다면 흔히 사용되는 이메일 기반 피싱 공격을 다음 링크에서 확인하세요.")]),r._v(" "),t("li",[r._v("아톰 구매 시 충분한 검증을 진행하세요. 메인넷 런칭 초기에는 아톰 송금이 불가능 하므로, 송금 활성화가 되기 전에는 아톰 매수/매도가 불가능합니다. 또한 송금이 활성화된 후에도 매수/매도를 진행하는 거래소가 안전한지 확인을 하십시오.")]),r._v(" "),t("li",[r._v("텐더민트 팀 또는 인터체인 재단은 "),t("strong",[r._v("절대로")]),r._v(" 아톰을 팔지 않습니다. 만약 소셜 미디어 또는 이메일을 통한 토큰 세일 제안이 있다면, 해당 정보는 허위 정보입니다.")]),r._v(" "),t("li",[r._v("2단계 인증(2-factor authentication)을 활성화 하시고 주요 계정 복구 수단을 확인하십시오. 이메일, 소셜 미디어 계정, 깃허브 계정, 코스모스 포럼 계정 등은 공격자가 본인의 온라인 계정을 탈취할 수 있는 플랫폼을 제공합니다. 현재 2단계 인증을 사용하고 계시지 않는다면 활성화하시고 추가로 토큰 관리에 하드웨어 기반 키를 사용하시는 방법을 추천해 드립니다. 위 방법은 간단하지만 효율적으로 계정 탈취 가능성을 줄여줍니다.")]),r._v(" "),t("li",[r._v("포럼 또는 단톡방을 통해서 모르는 사람이 기술적 조언을 제공하는 것에 주의를 기울이십시오. 리스크가 높은 행동(토큰 전송, 키 입력 등)들의 명령어에 익숙해지시고 공식 문서를 참고하셔서 본인의 자산을 위험에 취할 수 있는 행동을 숙지하십시오. 코스모스 포럼, 라이엇 채팅 그리고 텔레그램 방은 공식 뉴스 제공 채널이 아니라는 점을 인지하십시오.")]),r._v(" "),t("li",[r._v("모든 송금 트랜잭션을 발생하기 전에 관련 정보를 확인하세요. 코스모스 주소는 길 수 있지만 4개 단어로 묶어서 확인하는 습관이 실수로 토큰을 소각하는 것을 방지할 수 있습니다.")])]),r._v(" "),t("p",[r._v("만약 누군가 과도하게 좋은 조건으로 코스모스 관련 서비스를 제공한다면 우선 의심을 하시는 것을 추천합니다. 주요 정보는 그 어떤 상황에서도 외부인과 공유하면 안 됩니다. 또한 모든 정보를 공식 채널들을 통해 확인하십시오.")]),r._v(" "),t("p",[r._v("코스모스 팀, 텐더민트 팀 그리고 인터체인 팀은 개인 정보를 요청하거나 12개 시드키를 요구하는 이메일을 보내지 않습니다. 코스모스 팀은 언제나 공식 블로그, 트위터 그리고 깃허브를 통해서만 소통을 진행합니다.")]),r._v(" "),t("h4",{attrs:{id:"thank-you-to-cosmos-korea"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-to-cosmos-korea"}},[r._v("#")]),r._v(" Thank you to Cosmos Korea")]),r._v(" "),t("ul",[t("li",[r._v("텔레그램: "),t("a",{attrs:{href:"https://t.me/cosmoskr",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://t.me/cosmoskr"),t("OutboundLink")],1)]),r._v(" "),t("li",[r._v("페이스북 : "),t("a",{attrs:{href:"https://facebook.com/groups/cosmoskorea",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://facebook.com/groups/cosmoskorea"),t("OutboundLink")],1)])]),r._v(" "),t("p",[r._v("참고: 이 글은 정보 제공을 위하여 번역된 글입니다. 내용/해석에 차이가 있을 수 있으며, 이 경우 영문 원문이 상위 권한을 가집니다.")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{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.9e50057b.js b/main/assets/js/134.6d928121.js similarity index 99% rename from main/assets/js/134.9e50057b.js rename to main/assets/js/134.6d928121.js index 7ba4340924f..234e1391471 100644 --- a/main/assets/js/134.9e50057b.js +++ b/main/assets/js/134.6d928121.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{595: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],{573: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/135.2933dbb2.js b/main/assets/js/135.374d0ffc.js similarity index 99% rename from main/assets/js/135.2933dbb2.js rename to main/assets/js/135.374d0ffc.js index 81854a93b01..cb8db664cbd 100644 --- a/main/assets/js/135.2933dbb2.js +++ b/main/assets/js/135.374d0ffc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{487:function(a,s,t){"use strict";t.r(s);var c=t(1),v=Object(c.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"gaia-클라이언트"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaia-클라이언트"}},[a._v("#")]),a._v(" Gaia 클라이언트")]),a._v(" "),t("h2",{attrs:{id:"gaia-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli"}},[a._v("#")]),a._v(" Gaia CLI")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v("는 사용자가 풀노드를 통해 코스모스 허브 네트워크를 사용할 수 있게하는 도구입니다. 풀노드는 사용자가 직접 운영하거나 원격 풀노드에 연결하여 사용하실 수 있습니다. "),t("code",[a._v("gaiad")]),a._v("를 설치하기 위해서는 "),t("RouterLink",{attrs:{to:"/ko/resources/installation.html"}},[a._v("다음 과정")]),a._v("을 참고하세요.")],1),a._v(" "),t("h3",{attrs:{id:"gaiad-설정하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설정하기"}},[a._v("#")]),a._v(" gaiad 설정하기")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v("를 설정하는데 사용되는 주 명령어는 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDvtlIzrnpjqt7goZmxhZykmZ3Q7ICZsdDvqsJIodmFsdWUpJmd0Owo="}}),a._v(" "),t("p",[a._v("위 명령어는 각 플래그의 기본 값을 설정할 수 있도록 합니다.")]),a._v(" "),t("p",[a._v("우선 연결할 풀노드의 주소를 설정하겠습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O+2YuOyKpO2KuChob3N0KSZndDs6Jmx0O+2PrO2KuChwb3J0KSZndDsKCiMg7JiI7IucOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),a._v(" "),t("p",[a._v("자체적으로 풀노드를 운영하시는 경우, 주소 값에 "),t("code",[a._v("tcp://localhost:26657")]),a._v("을 입력하세요.")]),a._v(" "),t("p",[a._v("마지막으로 연결하려는 블록체인의 "),t("code",[a._v("chain-id")]),a._v(" 값을 설정하겠습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),a._v(" "),t("h3",{attrs:{id:"키-keys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-keys"}},[a._v("#")]),a._v(" 키(Keys)")]),a._v(" "),t("h4",{attrs:{id:"키-종류"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-종류"}},[a._v("#")]),a._v(" 키 종류")]),a._v(" "),t("p",[a._v("키의 형태는 총 3개가 있습니다:")]),a._v(" "),t("ul",[t("li",[t("p",[t("code",[a._v("cosmos")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad keys add")]),a._v("로 생성되는 계정 키")]),a._v(" "),t("li",[a._v("자금을 받는데 사용")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmosvaloper")])]),a._v(" "),t("ul",[t("li",[a._v("특정 검증인을 운영자와 연관하는데 사용됨")]),a._v(" "),t("li",[a._v("스테이킹 명령 요청에 이용됨")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmospub")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad keys add")]),a._v("로 생성되는 계정 키")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmosvalconspub")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad init")]),a._v("로 새로운 노드가 생성될때 같이 생성되는 키.")]),a._v(" "),t("li",[t("code",[a._v("gaiad tendermint show-validator")]),a._v(" 명령으로 키 값을 확인할 수 있음")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),a._v(" "),t("h4",{attrs:{id:"키-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-생성하기"}},[a._v("#")]),a._v(" 키 생성하기")]),a._v(" "),t("p",[a._v("자금을 받거나, 트랜잭션을 전송하거나, 스테이킹을 하기 위해서는 프라이빗 키("),t("code",[a._v("sk")]),a._v(")와 퍼블릭 키("),t("code",[a._v("pk")]),a._v(") 쌍이 필요합니다.")]),a._v(" "),t("p",[a._v("새로운 "),t("em",[a._v("secp256k1")]),a._v(" 키를 생성하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+qzhOyglV/rqoXsua0oYWNjb3VudF9uYW1lKSZndDsK"}}),a._v(" "),t("p",[a._v("이제 해당 키를 안전하게 디스크에 보관하기 위해서 비밀번호를 설정합니다.")]),a._v(" "),t("p",[a._v("새로운 키를 생성하는 과정에서 나오는 "),t("em",[a._v("시트키(seed phrase)")]),a._v(" 는 안전하게 저장하시길 바랍니다. 시드키는 다음과 같은 명령을 실행하여 잊어버린 퍼블릭/프라이빗 키를 복구하는데 이용됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),a._v(" "),t("p",[a._v("이제 프라이빗 키를 확인하고 "),t("code",[a._v("<계정_명칭(account_name)>")]),a._v("을 찾으면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDvqs4TsoJVf66qF7LmtKGFjY291bnRfbmFtZSkmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("검증인 운영자 주소는 다음과 같이 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),a._v(" "),t("p",[a._v("관련 되어 있는 모든 키 목록은 다음 명령어로 찾으실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("본인이 연결된 노드의 검증인 pubkey는 다음과 같이 확인할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),a._v(" "),t("p",[a._v("위 키는 텐더민트 사이닝 키이며, 위임 트랜잭션에서 이용되는 '오퍼레이터 키'가 아니라는 점을 참고하세요.")]),a._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[a._v("경고")]),a._v(" "),t("p",[a._v("다수의 키에 동일한 passphrase를 사용하는 것을 추천하지 않습니다. 텐더민트 팀과 인터체인 재단은 자산 손실에 대한 책임을 지지 않습니다.")])]),a._v(" "),t("h4",{attrs:{id:"멀티시그-퍼블릭-키-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#멀티시그-퍼블릭-키-생성하기"}},[a._v("#")]),a._v(" 멀티시그 퍼블릭 키 생성하기")]),a._v(" "),t("p",[a._v("새로운 멀티시그 퍼블릭키를 생성하고 확인하시려면 다음과 같은 명령을 입력하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),a._v(" "),t("p",[a._v("여기서 "),t("code",[a._v("K")]),a._v("는 트랜잭션이 승인되기 위해서 필요한 최소의 키 개수입니다.")]),a._v(" "),t("p",[t("code",[a._v("--multisig")]),a._v(" 플래그는 로컬 데이터베이스에 "),t("code",[a._v("new_key_name")]),a._v("으로 저장될 멀티시그 퍼블릭 키를 생성할때 사용되는 다수의 퍼블릭 키들의 값을 뜻합니다. "),t("code",[a._v("--multisig")]),a._v(" 값에 포함될 각 키는 로컬 데이터베이스에 존재해야 합니다. "),t("code",[a._v("--nosort")]),a._v(" 플래그가 정의된지 않은 경우, 멀티시그 조합에 필요한 키들이 입력되는 순서는 무관합니다. 예를 들어 다음 두 명령어는 두개의 동일한 멀티시그 퍼블릭 키를 생성합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),a._v(" "),t("p",[a._v("멀티시그 키의 주소는 다음과 같이 빠르게 생성하여 커맨드라인에 프린트할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),a._v(" "),t("p",[a._v("멀티시그 트랜잭션를 생성, 서명, 전파하는 방법은 "),t("a",{attrs:{href:"#%EB%A9%80%ED%8B%B0%EC%8B%9C%EA%B7%B8-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98"}},[a._v("멀티시그 트랜잭션")]),a._v(" 항목을 참고하세요.")]),a._v(" "),t("h3",{attrs:{id:"트랜잭션-전파"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-전파"}},[a._v("#")]),a._v(" 트랜잭션 전파")]),a._v(" "),t("p",[a._v("트랜잭션을 전파할때 "),t("code",[a._v("gaiad")]),a._v("에서 "),t("code",[a._v("--broadcast-mode")]),a._v("를 사용하실 수 있습니다. "),t("code",[a._v("--broadcast-mode")]),a._v("는 "),t("code",[a._v("sync")]),a._v("(동기, 기본 값), "),t("code",[a._v("async")]),a._v("(비동기), 또는 "),t("code",[a._v("block")]),a._v("(보류) 값으로 설정될 수 있습니다. "),t("code",[a._v("sync")]),a._v(" 값은 클라이언트가 CheckTx 리턴 값을 돌려주고, "),t("code",[a._v("async")]),a._v(" 값은 클라이언트가 즉시 반응을 알려주며, "),t("code",[a._v("block")]),a._v(" 값은 트랜잭션이 커밋(또는 타임이웃)될 때까지 대기합니다.")]),a._v(" "),t("p",[a._v("대다수의 상황에서 "),t("code",[a._v("block")]),a._v(" 모드는 사용하지 "),t("em",[a._v("않을 것을")]),a._v(" 추천드립니다. 이는 트랜잭션이 타임아웃 되었어도 블록에 포함되있을 수 있으며 이 과정에서 원하지 않은 문제가 발생할 가능성이 존재합니다. 대다수의 상황에서는 "),t("code",[a._v("sync")]),a._v(" 또는 "),t("code",[a._v("async")]),a._v("를 사용하신 후 트랜잭션 해시 값을 조회하여 트랜잭션이 블록에 포함된 것을 확인하시는 것을 추천드립니다.")]),a._v(" "),t("h3",{attrs:{id:"수수료와-가스"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수수료와-가스"}},[a._v("#")]),a._v(" 수수료와 가스")]),a._v(" "),t("p",[a._v("각 트랜잭션은 수수료(fee)를 지정하거나 가스 가격(gas price)을 지정할 수 있지만, 두 값을 함께 지정하는 것은 불가능합니다.")]),a._v(" "),t("p",[a._v("각 검증인은 최소 가스 가격(minimum gas price)를 (다수 토큰 사용 가능) 설정할 수 있으며 이 값을 기준으로 "),t("code",[a._v("CheckTx")]),a._v(" 단계에서 특정 트랜잭션을 블록에 포함시킬지 확인합니다. "),t("code",[a._v("gasPrices >= minGasPrices")]),a._v("일때 검증인은 트랜잭션을 처리합니다. 참고로 트랜잭션 전파시 검증인이 요구하는 토큰 중 하나를 수수료 지불 토큰으로 사용하셔야 합니다.")]),a._v(" "),t("p",[t("strong",[a._v("참고")]),a._v(": 위와 같은 메커니즘에서 일부 검증인은 멤풀에 있는 트랜잭션 중 높은 "),t("code",[a._v("gasPrice")]),a._v("의 트랜잭션을 우선적으로 처리할 수 있습니다. 그렇기 때문에 높은 수수료는 트랜잭션 처리 우선 순위를 높힐 수 있습니다.")]),a._v(" "),t("p",[a._v("예시)")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMHVhdG9tCg=="}}),a._v(" "),t("p",[a._v("또는")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),a._v(" "),t("h3",{attrs:{id:"계정"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#계정"}},[a._v("#")]),a._v(" 계정")]),a._v(" "),t("h4",{attrs:{id:"테스트-토큰-받기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트-토큰-받기"}},[a._v("#")]),a._v(" 테스트 토큰 받기")]),a._v(" "),t("p",[a._v("토큰을 받기 가장 쉬운 곳은 "),t("a",{attrs:{href:"https://faucetcosmos.network",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 테스트넷 faucet"),t("OutboundLink")],1),a._v(" 입니다. 만약 해당 faucet이 작동하지 않는 경우 "),t("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("#cosmos-validators"),t("OutboundLink")],1),a._v(" 채팅 방에서 요청을 하실 수 있습니다. 해당 faucet은 스테이킹을 하려고 하시는 계정의 "),t("code",[a._v("cosmos")]),a._v(" 주소를 입력하시면 됩니다.")]),a._v(" "),t("h4",{attrs:{id:"계정-잔고-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#계정-잔고-조회하기"}},[a._v("#")]),a._v(" 계정 잔고 조회하기")]),a._v(" "),t("p",[a._v("주소에 토큰을 받으신 후 잔고를 확인하시려면 다음 명령어를 입력하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ77L2U7Iqk66qo7IqkX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7Cg=="}}),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("계정의 토큰 잔고가 "),t("code",[a._v("0")]),a._v("인 계정을 조회하실 경우 다음과 같은 에러 메시지가 표시될 수 있습니다: "),t("code",[a._v("No account with address was found in the state.")]),a._v(" 노드가 체인과 완벽하게 연동이 안된 상태에서 조회를 할 경우 동일한 에러가 발생할 수 있습니다.")])]),a._v(" "),t("h3",{attrs:{id:"토큰-전송하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-전송하기"}},[a._v("#")]),a._v(" 토큰 전송하기")]),a._v(" "),t("p",[a._v("한 계정에서 다른 계정으로 토큰/코인을 전송하기 위해서는 다음 명령어를 이용하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripRf7IKs656MX+2CpF/rqoXsua1f65iQ64qUX+yjvOyGjChzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcykmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0OyBcCg=="}}),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("--amount")]),a._v(" 플래그는 다음과 같은 포맷을 사용합니다 "),t("code",[a._v("--amount=<수량|코인 이름>")]),a._v(".")])]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("해당 트랜잭션이 사용할 가스에 한도를 설정하기 원하시면 "),t("code",[a._v("--gas")]),a._v(" 플래그를 이용하세요. 만약 "),t("code",[a._v("--gas=auto")]),a._v("를 이용하시는 경우, 트랜잭션이 실행되기 전에 가스 서플라이가 자동으로 예측됩니다. 예측된 가스 값과 실제 트랜잭션이 일어나는 사이에 블록체인 상태가 변경될 수 있으며, 기존 예측 수량에서 값이 변경이 될 수 있다는 점을 유의하십시오. 변경 값은 "),t("code",[a._v("--gas-adjustment")]),a._v(" 플래그를 이용해 설정하실 수 있으며 기본 값은 1.0입니다.")])]),a._v(" "),t("p",[a._v("이제 토큰을 전송한 계정과 토큰을 받은 계정의 잔고를 확인합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ767O064K064qUX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O+yImOyLoOyekF/so7zshowoZGVzdGluYXRpb25fY29zbW9zKSZndDsK"}}),a._v(" "),t("p",[a._v("특정 블록 높의에서의 잔고를 확인하고 싶으시다면 "),t("code",[a._v("--block")]),a._v(" 플래그를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ77L2U7Iqk66qo7IqkX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7IC0tYmxvY2s9Jmx0O+u4lOuhnV/rhpLsnbQoYmxvY2tfaGVpZ2h0KSZndDsK"}}),a._v(" "),t("p",[a._v("트랜잭션을 실제 전파하지 않고 시뮬레이션을 하시려면 명령어 뒤에 "),t("code",[a._v("--dry-run")]),a._v(" 플래그를 추가하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripRf7IKs656MX+2CpF/rqoXsua1f65iQ64qUX+yjvOyGjChzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcykmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),a._v(" "),t("p",[a._v("또한 트랜잭션을 빌드한 후 해당 트랜잭션을 JSON 포맷으로 STDOUT에 프린트 하시기를 원하면 "),t("code",[a._v("--generate-only")]),a._v("를 명령어에 추가하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripTsnbRf7KO87IaMKHNlbmRlcl9hZGRyZXNzKSZndDsgJmx0O+yImOyLoOyekF/so7zshowoZGVzdGluYXRpb25fY29zbW9zYWNjYWRkcikmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0OyBcCiAgLS1nZW5lcmF0ZS1vbmx5ICZndDsgdW5zaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("--generate-only")]),a._v(" 명령어는 "),t("code",[a._v("gaiad")]),a._v("가 로컬 키베이스를 액세스하지 않습니다. "),t("code",[a._v("--generate-only")]),a._v(" 플래그를 사용하시는 경우, "),t("code",[a._v("<보내는_사람_키_명칭_또는_주소(sender_key_name_or_address)>")]),a._v(" 값은 키 명칭이 아닌 주소 값을 입력하세요.")])]),a._v(" "),t("p",[a._v("이제 "),t("code",[a._v("--generate-only")]),a._v("를 통해 프린트된 트랜잭션 파일을 서명하시려면 다음 명령어를 통해 키를 입력하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ77LK07J24X+yVhOydtOuUlChjaGFpbi1pZCkmZ3Q7IFwKICAtLWZyb209Jmx0O+2CpF/rqoXsua0oa2V5X25hbWUpJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),a._v(" "),t("p",[a._v("해당 트랜잭션의 서명은 다음 명령어를 통해 검증하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMKICBzaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),t("p",[a._v("서명된 트랜잭션을 노드로 전파하기 위해서는 JSON 파일을 다음 명령어를 통해 전달하면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),t("h3",{attrs:{id:"트랜잭션-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-조회하기"}},[a._v("#")]),a._v(" 트랜잭션 조회하기")]),a._v(" "),t("h4",{attrs:{id:"태그-매칭하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#태그-매칭하기"}},[a._v("#")]),a._v(" 태그 매칭하기")]),a._v(" "),t("p",[a._v("트랜잭션 검색 명령을 이용하여 모든 트랜잭션에 추가되는 특정 "),t("code",[a._v("events")]),a._v(" 세트를 검색할 수 있습니다.")]),a._v(" "),t("p",[a._v("각 태그의 키-값 페어는 "),t("code",[a._v("{eventType}.{eventAttribute}={value}")]),a._v(" 형태로 이루어집니다. 더 상세한 검색을 원하실 경우 "),t("code",[a._v("&")]),a._v(" 를 사용하여 태그를 추가할 수 있습니다.")]),a._v(" "),t("p",[t("code",[a._v("events")]),a._v("를 이용한 트랜잭션 조회는 다음과 같이 합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),a._v(" "),t("p",[a._v("다수의 "),t("code",[a._v("events")]),a._v("를 이용하실 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),a._v(" "),t("p",[a._v("페이지네이션은 "),t("code",[a._v("page")]),a._v("와 "),t("code",[a._v("limit")]),a._v(" 값으로 지원됩니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("액션 태그는 관련 메시지의 "),t("code",[a._v("Type()")]),a._v(" 명령이 응답하는 메시지 타입과 언제나 동일합니다.")]),a._v(" "),t("p",[a._v("각 SDK 모듈에 대한 "),t("code",[a._v("events")]),a._v("는 여기에서 확인할 수 있습니다:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Staking events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Governance events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Slashing events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Distribution events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Bank events"),t("OutboundLink")],1)])])]),a._v(" "),t("h4",{attrs:{id:"트랜잭션-해시로-검색하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-해시로-검색하기"}},[a._v("#")]),a._v(" 트랜잭션 해시로 검색하기")]),a._v(" "),t("p",[a._v("다음과 같은 명령어를 이용하여 한 트랜잭션의 해시값을 이용해 조회를 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),a._v(" "),t("h3",{attrs:{id:"슬래싱"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱"}},[a._v("#")]),a._v(" 슬래싱")]),a._v(" "),t("h4",{attrs:{id:"언제일-unjailing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#언제일-unjailing"}},[a._v("#")]),a._v(" 언제일(Unjailing)")]),a._v(" "),t("p",[a._v("제일링 된 검증인을 언제일 하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ76rKA7Kad7J24X+yYpO2NvOugiOydtO2EsF/so7zshowodmFsaWRhdG9yLW9wZXJhdG9yLWFkZHIpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"서명-정보"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#서명-정보"}},[a._v("#")]),a._v(" 서명 정보")]),a._v(" "),t("p",[a._v("특정 검증인의 서명 정보를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDvqsoDspp3snbhfcHVia2V5KHZhbGlkYXRvci1wdWJrZXkpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"슬래싱-파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-파라미터-조회"}},[a._v("#")]),a._v(" 슬래싱 파라미터 조회")]),a._v(" "),t("p",[a._v("현재 슬래싱 파라미터를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),a._v(" "),t("h3",{attrs:{id:"민팅"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#민팅"}},[a._v("#")]),a._v(" 민팅")]),a._v(" "),t("p",[a._v("민팅/인플레이션 파라미터 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),a._v(" "),t("p",[a._v("현재 인플레이션 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),a._v(" "),t("p",[a._v("현재 프로비젼(provisions) 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),a._v(" "),t("h3",{attrs:{id:"스테이킹"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹"}},[a._v("#")]),a._v(" 스테이킹")]),a._v(" "),t("h4",{attrs:{id:"검증인-세팅하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-세팅하기"}},[a._v("#")]),a._v(" 검증인 세팅하기")]),a._v(" "),t("p",[a._v("검증인 후보가 되기 위한 가이드는 "),t("RouterLink",{attrs:{to:"/ko/validators/validator-setup.html"}},[a._v("검증인 세팅")]),a._v(" 문서를 참고하세요.")],1),a._v(" "),t("h4",{attrs:{id:"검증인에게-위임하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인에게-위임하기"}},[a._v("#")]),a._v(" 검증인에게 위임하기")]),a._v(" "),t("p",[a._v("메인넷에서는 "),t("code",[a._v("atom")]),a._v("을 특정 검증인에게 위임할 수 있습니다. 스테이킹에 참여하는 "),t("a",{attrs:{href:"/resources/delegators-faq"}},[a._v("위임자")]),a._v("는 검증인 보상의 일부를 받을 수 있습니다. 관련 정보는 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 토큰 모델"),t("OutboundLink")],1),a._v("에서 확인하세요.")]),a._v(" "),t("h5",{attrs:{id:"검증인-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-조회하기"}},[a._v("#")]),a._v(" 검증인 조회하기")]),a._v(" "),t("p",[a._v("특정 체인의 모든 검증인 목록을 확인하기 위해서는 다음 명령을 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),a._v(" "),t("p",[a._v("특정 검증인에 대한 정보를 원하실 경우 다음 명령을 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2Nvc21vc3ZhbF/qs4TsoJUoYWNjb3VudF9jb3Ntb3N2YWwpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"토큰-본딩하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-본딩하기"}},[a._v("#")]),a._v(" 토큰 본딩하기")]),a._v(" "),t("p",[a._v("코스모스 허브 메인넷에서는 "),t("code",[a._v("uatom")]),a._v(" 단위로 위임이 가능하며 "),t("code",[a._v("1atom = 1000000uatom")]),a._v("입니다. 테스트넷 검증인에게 위임하는 방법은 다음과 같습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yKSZndDsgXAogIC0tZnJvbT0mbHQ77YKkX+uqhey5rShrZXlfbmFtZSkmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),a._v(" "),t("p",[t("code",[a._v("")]),a._v(" 는 위임 대상 검증인의 검증인 운영자 주소(valoper)입니다. 로컬 테스트넷을 운영하시는 경우, 다음 명령어로 관련 주소를 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),a._v(" "),t("p",[a._v("여기에서"),t("code",[a._v("[name]")]),a._v("은 "),t("code",[a._v("gaiad")]),a._v("를 처음 설정하셨을때 정의한 키의 명칭입니다.")]),a._v(" "),t("p",[a._v("토큰이 본딩되고 있는 기간 동안에는 다른 본딩된 토큰과 함께 하나의 '풀'을 이룹니다. 검증인들과 위임인들은 해당 풀의 소유량에 비례하는 보상을 받게 됩니다.")]),a._v(" "),t("h5",{attrs:{id:"위임-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임-조회"}},[a._v("#")]),a._v(" 위임 조회")]),a._v(" "),t("p",[a._v("위임 요청을 검증인에게 전송한 경우, 관련 정보를 다음 명령을 통해 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDvsnITsnoTsnpBf7L2U7Iqk66qo7IqkX+yjvOyGjChkZWxlZ2F0b3JfYWRkcikmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsKCg=="}}),a._v(" "),t("p",[a._v("만약 모든 위임 상태를 확인하고 싶으실 경우 다음 명령을 이용하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDvsnITsnoTsnpBf7L2U7Iqk66qo7IqkX+yjvOyGjChkZWxlZ2F0b3JfYWRkcikmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"토큰-언본딩-하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-언본딩-하기"}},[a._v("#")]),a._v(" 토큰 언본딩 하기")]),a._v(" "),t("p",[a._v("만약 특정 검증인이 악의적인 행동을 했거나 또는 본인이 개인적인 이유로 일부 토큰을 언본딩을 워하는 경우 다음 명령어를 통해 토큰을 언본딩 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("언본딩은 언본딩 기간이 끝나는 대로 완료됩니다.")]),a._v(" "),t("h5",{attrs:{id:"언본딩-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#언본딩-조회하기"}},[a._v("#")]),a._v(" 언본딩 조회하기")]),a._v(" "),t("p",[a._v("언본딩 절차를 시작하신 후 관련 정보를 조회하는 방법은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ77JyE7J6E7J6QX+yjvOyGjChkZWxlZ2F0b3ItYWRkcikmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsK"}}),a._v(" "),t("p",[a._v("또는 특정 위임자의 모든 언본딩 정보를 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O+ychOyehOyekF/so7zshowoYWNjb3VudF9jb3Ntb3MpJmd0Owo="}}),a._v(" "),t("p",[a._v("추가적으로 특정 검증인으로 부터 언본딩하는 정보를 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ76rKA7Kad7J24X2Nvc21vc3ZhbF/so7zshowoYWNjb3VudF9jb3Ntb3N2YWwpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"재위임-redelegate-하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#재위임-redelegate-하기"}},[a._v("#")]),a._v(" 재위임(Redelegate) 하기")]),a._v(" "),t("p",[a._v("재위임이란 본딩 되어있는 토큰을 한 검증인으로 부터 다른 검증인으로 옮기는 것입니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ76riw7KG0X+qygOymneyduF92YWxvcGVyX+yjvOyGjChzcmNfdmFsaWRhdG9yX29wZXJhdG9yX2FkZHIpJmd0OyBcCiAgJmx0O+uMgOyDgV/qsoDspp3snbhfdmFsb3Blcl/so7zshowoZHN0X3ZhbGlkYXRvcl9vcGVyYXRvcl9hZGRyKSZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("위 예시와 같이 재위임될 토큰의 수량은 특정 수량("),t("code",[a._v("shares-amount")]),a._v(") 또는 일정 비율("),t("code",[a._v("shares-fraction")]),a._v(")로 표현될 수 있습니다.")]),a._v(" "),t("p",[a._v("언본딩 기간이 지나면 재위임은 자동으로 완료됩니다.")]),a._v(" "),t("h5",{attrs:{id:"재위임-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#재위임-조회하기"}},[a._v("#")]),a._v(" 재위임 조회하기")]),a._v(" "),t("p",[a._v("재위임을 시작하신 후, 다음 명령을 통해서 관련 정보를 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHIpJmd0OyAmbHQ76riw7KG0X+qygOymneyduF/so7zshowoc3JjX3ZhbF9hZGRyKSZndDsgJmx0O+uMgOyDgV/qsoDspp3snbhf7KO87IaMKGRzdF92YWxfYWRkcikmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("특정 위임자의 모든 검증인에 대한 재위임을 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGFjY291bnRfY29zbW9zKSZndDsK"}}),a._v(" "),t("p",[a._v("특정 검증인에 대한 재위임을 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBzdGFraW5nIHJlZGVsZWdhdGlvbnMtZnJvbSAmbHQ76rKA7Kad7J24X+yjvOyGjChhY2NvdW50X2Nvc21vc3ZhbCkmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#파라미터-조회"}},[a._v("#")]),a._v(" 파라미터 조회")]),a._v(" "),t("p",[a._v("파라미터는 스테이킹의 하이-레벨 설정을 정의합니다. 현재 값은 다음 명령어를 통해서 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),a._v(" "),t("p",[a._v("위 명령어는 다음과 같은 정보를 표기합니다:")]),a._v(" "),t("ul",[t("li",[a._v("언본딩 기간")]),a._v(" "),t("li",[a._v("최대 검증인 수")]),a._v(" "),t("li",[a._v("스테이킹 코인 표기")])]),a._v(" "),t("p",[a._v("해당 값은 거버넌스 절차의 "),t("code",[a._v("ParameterChange")]),a._v("(파라미터 변경) 프로포절을 통해서 변경됩니다.")]),a._v(" "),t("h4",{attrs:{id:"스테이킹-풀-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-풀-조회하기"}},[a._v("#")]),a._v(" 스테이킹 풀 조회하기")]),a._v(" "),t("p",[a._v("스티이킹 풀은 현재 상태(state)에 대한 다이내믹 파라미터(dynamic parameter)를 정의합니다. 관련 정보는 다음 명령을 통해 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),a._v(" "),t("p",[t("code",[a._v("pool")]),a._v(" 명령은 다음과 같은 정보에 대한 현재 값을 제공합니다:")]),a._v(" "),t("ul",[t("li",[a._v("본딩된 토큰 / 본딩 되어있지 않은 토큰")]),a._v(" "),t("li",[a._v("총 토큰 수량")]),a._v(" "),t("li",[a._v("연 인플레이션 비율과 가장 최근에 인플레이션이 변경된 블록 높이")]),a._v(" "),t("li",[a._v("가장 최근 기록된 bonded shares")])]),a._v(" "),t("h5",{attrs:{id:"검증인-위임-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-위임-조회하기"}},[a._v("#")]),a._v(" 검증인 위임 조회하기")]),a._v(" "),t("p",[a._v("특정 검증인에 대한 모든 위임은 다음 명령으로 조회가 가능합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBkZWxlZ2F0aW9ucy10byAmbHQ76rKA7Kad7J24X+yjvOyGjChhY2NvdW50X2Nvc21vc3ZhbCkmZ3Q7Cg=="}}),a._v(" "),t("h3",{attrs:{id:"거버넌스"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스"}},[a._v("#")]),a._v(" 거버넌스")]),a._v(" "),t("p",[a._v("거버넌스는 코스모스 허브의 유저가 소프트웨어 업그레이드, 메인넷 파라미터 또는 문서 형태의 프로포절 등에 대한 합의를 하는 절차입니다. 유저는 프로포절에 대한 투표를 함으로 이 절차에 참여할 수 있으며, 투표권은 메인넷 아톰 홀더들에게 주어집니다.")]),a._v(" "),t("p",[a._v("다음은 투표 절차에 대한 정보입니다:")]),a._v(" "),t("ul",[t("li",[a._v("투표권은 본딩된 "),t("code",[a._v("Atom")]),a._v("을 소유한 유저에게만 주어지며, "),t("code",[a._v("본딩된 아톰 1개 = 1표")]),a._v(" 기준으로 집계됩니다")]),a._v(" "),t("li",[a._v("투표권을 행사하지 않은 위임자는 본인이 위임한 검증인의 투표를 따르게 됩니다")]),a._v(" "),t("li",[a._v("표는 각 프로포절의 투표 마감 시점(메인넷 기준 2주)에서 집계됩니다. 각 계정은 투표기간 중 표를 변경할 수 있으며(트랜잭션 수수료는 부과됩니다), 가장 마지막 표가 유효한 표로 집계됩니다")]),a._v(" "),t("li",[a._v("투표자들은 "),t("code",[a._v("Yes")]),a._v(", "),t("code",[a._v("No")]),a._v(", "),t("code",[a._v("NoWithVeto")]),a._v("와 "),t("code",[a._v("Abstain")]),a._v(" 중에서 하나를 선택하여 투표할 수 있습니다")]),a._v(" "),t("li",[a._v("프로포절은 다음 조건을 충족할 경우에만 통과한 것으로 간주됩니다:\n"),t("ul",[t("li",[t("code",[a._v("(YesVote/(YesVotes+NoVotes+NoWithVetoVotes)) > 1/2")])]),a._v(" "),t("li",[t("code",[a._v("(NoWithVetoVotes/(YesVotes+NoVotes+NoWithVetoVotes)) < 1/3")])]),a._v(" "),t("li",[t("code",[a._v("((YesVotes+NoVotes+NoWithVetoVotes) / totalBondedStake) >= quorum")])])])])]),a._v(" "),t("p",[a._v("거버넌스 절차에 대한 더 자세한 정보는 "),t("a",{attrs:{href:"./../spec/governance"}},[a._v("거버넌스 모듈 스펙")]),a._v("을 확인하세요.")]),a._v(" "),t("h4",{attrs:{id:"거버넌스-프로포절-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-프로포절-생성하기"}},[a._v("#")]),a._v(" 거버넌스 프로포절 생성하기")]),a._v(" "),t("p",[a._v("새로운 거버넌스 프로포절을 생성하기 위해서는 프로포절 제목, 프로포절 내용 그리고 보증금을 예치해야 합니다. 거버넌스 모듈 외의 모듈에서 프로포절 타입과 핸들러를 도입할 수 있습니다 (예, 파라미터 변경), 거버넌스 모듈 자체는 "),t("code",[a._v("Text")]),a._v(" 프로포절을 지원합니다. 거버넌스 외 모듈의 프로포절은 "),t("code",[a._v("submit-proposal")]),a._v(" 위에 명령을 추가할 수 있습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ77KCc66qpKHRpdGxlKSZndDsgXAogIC0tZGVzY3JpcHRpb249Jmx0O+yEpOuqhShkZXNjcmlwdGlvbikmZ3Q7IFwKICAtLXR5cGU9JnF1b3Q7VGV4dCZxdW90OyBcCiAgLS1kZXBvc2l0PSZxdW90OzEwMDAwMDB1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKG5hbWUpJmd0OyBcCiAgLS1jaGFpbi1pZD0mbHQ77LK07J24X+yVhOydtOuUlChjaGFpbl9pZCkmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("또한 "),t("code",[a._v("--proposal")]),a._v(" 플래그를 이용해 프로포절이 포함된 JSON 파일을 직접적으로 제공할 수도 있습니다.")]),a._v(" "),t("p",[a._v("파라미터 변경 프로포절의 경우 내용을 CLI 인풋으로 입력하기 어렵기 때문에 프로포절 파일을 제출해야 합니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O+2UhOuhnO2PrOygiC/tjIzsnbwv6rK966GcL+2UhOuhnO2PrOygiC5qc29uJmd0OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[t("code",[a._v("proposal.json")]),a._v(" 파일 형식은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),a._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[a._v("경고")]),a._v(" "),t("p",[a._v("현재 파라미터 변경 프로포절은 "),t("em",[a._v("검토")]),a._v(" 되지만, "),t("em",[a._v("검증")]),a._v(" 되지는 않기 때문에 모든 "),t("code",[a._v("값")]),a._v("은 유효하다는 것을 미리 확인해야 합니다(예, 올바른 타입과 한도 내). 예) "),t("code",[a._v("MaxValidator")]),a._v("(최대 검증인) 값은 소수점이 아닌 integer 값이어야 합니다.")]),a._v(" "),t("p",[a._v("파라미터 변경 프로포절 검토 단계에서 이런 문제가 발견될 것 확률이 높지만, 참고할 필요는 있습니다.")])]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("SoftwareUpgrade")]),a._v(" 프로포절은 현재 개발되지 않은 상황이므로 지원되지 않으며, 형태는 "),t("code",[a._v("Text")]),a._v(" 프로포절과 동일합니다.")])]),a._v(" "),t("h5",{attrs:{id:"프로포절-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-조회"}},[a._v("#")]),a._v(" 프로포절 조회")]),a._v(" "),t("p",[a._v("프로포절이 생성된 후 관련 정보를 조회하는 방법은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("모든 프로포절에 대한 조회를 하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),a._v(" "),t("p",[a._v("프로포절을 "),t("code",[a._v("voter")]),a._v(" 또는 "),t("code",[a._v("depositor")]),a._v("로 필터링 해서 조회할 수도 있습니다.")]),a._v(" "),t("p",[a._v("특정 거버넌스 프로포절의 제안자를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"보증금-추가하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보증금-추가하기"}},[a._v("#")]),a._v(" 보증금 추가하기")]),a._v(" "),t("p",[a._v("프로포절이 네트워크에 전파되기 위해서는 해당 프로포절의 보증금이 "),t("code",[a._v("minDeposit")]),a._v(" 값 이상이어야 합니다 (현재 기본 값은 "),t("code",[a._v("512000000uatom")]),a._v("입니다). 만약 사전에 생성한 프로포절이 해당 기준을 충족하지 못하였다면 추후에 보증금을 추가 예치하여 활성화할 수 있습니다. 프로포절의 보증금이 최소 값을 도달하면 해당 프로포절의 투표는 활성화 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZxdW90OzEwMDAwMDAwdWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ77YKkX+uqhey5rShuYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF9JRChjaGFpbl9pZCkmZ3Q7Cg=="}}),a._v(" "),t("blockquote",[t("p",[t("em",[a._v("참고")]),a._v(": 기본 보증금 기준을 충족하지 못한 프로포절은 "),t("code",[a._v("MaxDepositPeriod")]),a._v("이 지나면 자동으로 삭제됩니다.")])]),a._v(" "),t("h5",{attrs:{id:"보증금-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보증금-조회하기"}},[a._v("#")]),a._v(" 보증금 조회하기")]),a._v(" "),t("p",[a._v("새로운 프로포절이 생성된 후, 해당 프로포절에 대한 보증금은 다음과 같이 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("특정 주소에 대한 보증금은 다음과 같이 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDvrs7Tspp3quIhf7KCc6rO17J6QX+yjvOyGjChkZXBvc2l0b3JfYWRkcmVzcykmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"프로포절-투표하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-투표하기"}},[a._v("#")]),a._v(" 프로포절 투표하기")]),a._v(" "),t("p",[a._v("프로포절의 보증금이 "),t("code",[a._v("MinDeposit")]),a._v(" 값에 도달하면 투표 기간이 시작됩니다. 본딩된 "),t("code",[a._v("Atom")]),a._v("을 보유한 홀더들은 각자 투표를 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDtZZXMvTm8vTm9XaXRoVmV0by9BYnN0YWluKO2RnCDshKDtg50pJmd0OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0Owo="}}),a._v(" "),t("h5",{attrs:{id:"표-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#표-조회하기"}},[a._v("#")]),a._v(" 표 조회하기")]),a._v(" "),t("p",[a._v("특정 표와 관련한 정보를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDvtiKztkZzsnpBf7KO87IaMKHZvdGVyX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("p",[a._v("과거 프로포절에 대한 표 정보를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"프로포절-결과-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-결과-조회하기"}},[a._v("#")]),a._v(" 프로포절 결과 조회하기")]),a._v(" "),t("p",[a._v("특정 프로포절에 대한 결과를 확인하기 위해서는 "),t("code",[a._v("tally")]),a._v(" 명령어를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"거버넌스-파라미터-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-파라미터-조회하기"}},[a._v("#")]),a._v(" 거버넌스 파라미터 조회하기")]),a._v(" "),t("p",[a._v("현재 거버넌스 파라미터를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),a._v(" "),t("h3",{attrs:{id:"스테이킹-리워드-분배"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-리워드-분배"}},[a._v("#")]),a._v(" 스테이킹 리워드 분배")]),a._v(" "),t("h4",{attrs:{id:"리워드-분배-파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#리워드-분배-파라미터-조회"}},[a._v("#")]),a._v(" 리워드 분배 파라미터 조회")]),a._v(" "),t("p",[a._v("현재 리워드 분배 파라미터 값을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),t("h4",{attrs:{id:"커뮤니티-풀-잔고-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#커뮤니티-풀-잔고-조회"}},[a._v("#")]),a._v(" 커뮤니티 풀 잔고 조회")]),a._v(" "),t("p",[a._v("거버넌스 소유권에 있는 커뮤니티 풀 자산을 조회하기 위해서는 다음 명령어를 사용하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),t("h4",{attrs:{id:"수령되지-않은-리워드를-받기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수령되지-않은-리워드를-받기"}},[a._v("#")]),a._v(" 수령되지 않은 리워드를 받기")]),a._v(" "),t("p",[a._v("수령하지 않은 리워드를 수령하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),a._v(" "),t("h4",{attrs:{id:"검증인-커미션-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-커미션-조회"}},[a._v("#")]),a._v(" 검증인 커미션 조회")]),a._v(" "),t("p",[a._v("특정 검증인의 커미션을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"검증인-슬래싱-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-슬래싱-조회"}},[a._v("#")]),a._v(" 검증인 슬래싱 조회")]),a._v(" "),t("p",[a._v("특정 검증인의 슬래싱 기록을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yX2FkZHJlc3MpJmd0OyAmbHQ77Iuc7J6RX+u4lOuhnV/rhpLsnbQoc3RhcnRfaGVpZ2h0KSZndDsgJmx0O+uBnV/ruJTroZ1f64aS7J20KGVuZF9oZWlnaHQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"특정-검증인에서-수령되지-않은-리워드-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#특정-검증인에서-수령되지-않은-리워드-조회"}},[a._v("#")]),a._v(" 특정 검증인에서 수령되지 않은 리워드 조회")]),a._v(" "),t("p",[a._v("위임자의 특정 검증인에서 발생된 미수령 리워드를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHJlc3MpJmd0OyAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JfYWRkcmVzcykmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"위임자의-수령-대기중인-모든-리워드-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임자의-수령-대기중인-모든-리워드-조회"}},[a._v("#")]),a._v(" 위임자의 수령 대기중인 모든 리워드 조회")]),a._v(" "),t("p",[a._v("위임자의 모든 수령 대기 리워드를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("h3",{attrs:{id:"멀티시그-트랜잭션"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#멀티시그-트랜잭션"}},[a._v("#")]),a._v(" 멀티시그 트랜잭션")]),a._v(" "),t("p",[a._v("멀티시그 트랜잭션을 서명하기 위해서는 다수의 프라이빗 기가 필요합니다. 그렇기 때문에 멀티시그 계정에서 트랜잭션을 생성하고 서명하기 위해서는 여러 인원간의 협동이 필요합니다. 멀티시그 키 보유자 누구나 트랜잭션을 생성할 수 있으며, 멀티시그 퍼블릭키를 생성하고 트랜잭션을 전파하기 위해서는 키 소유자 중 최소 한명이 다른 키 소유자들의 모든 퍼블릭 키를 로컬 데이터베이스에 보유해야합니다.")]),a._v(" "),t("p",[a._v("예를 들어 멀티시그 키가 "),t("code",[a._v("p1")]),a._v(", "),t("code",[a._v("p2")]),a._v(", "),t("code",[a._v("p3")]),a._v(" 키로 이루어진다면, "),t("code",[a._v("p1")]),a._v(" 키 보유자는 "),t("code",[a._v("p2")]),a._v("와 "),t("code",[a._v("p3")]),a._v("의 키가 있어야 멀티시그 계정의 퍼블릭 키를 생성할 수 있습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIC0tcHVia2V5PWNvc21vc3B1YjFhZGR3bnBlcHF0ZDI4dXdhMHl4dHdhbDUyMjNxcXI1YXFmNXk1N3RjN2trN3o4cWQ0enBscmRsazVlejVrZG5scmo0IFwKICBwMgogZ2FpYWQga2V5cyBhZGQgXAogIC0tcHVia2V5PWNvc21vc3B1YjFhZGR3bnBlcHFnajA0anBtOXdyZG1sNXFuc3M5a2p4a214enl3dWtsbmtqMGczYTNmOGw1d3g5ejRlbm56ODR5bTV0IFwKICBwMwogZ2FpYWQga2V5cyBhZGQgXAogIC0tbXVsdGlzaWctdGhyZXNob2xkPTIgXAogIC0tbXVsdGlzaWc9cDEscDIscDMK"}}),a._v(" "),t("p",[a._v("이제 새로운 멀티시그 키 "),t("code",[a._v("p1p2p3")]),a._v("이 보관되었으며 이 주소를 기반으로 멀티 트랜잭션이 서명됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),a._v(" "),t("p",[a._v("멀티시그 주소의 투표 통과 기준, pubkey 투표자 그리고 각자 투표권 부게를 확인하기 위해서는 JSON 아웃풋을 확인하거나 "),t("code",[a._v("--show-multisig")]),a._v(" 플래그를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),a._v(" "),t("p",[a._v("위 주소를 기반으로 멀티시그 트랜잭션을 생성하는 과정의 첫 단계는 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwMHVhdG9tIFwKICAtLWZyb209Jmx0O+upgO2LsOyLnOq3uF/so7zshowobXVsdGlzaWdfYWRkcmVzcykmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFR4Lmpzb24K"}}),a._v(" "),t("p",[t("code",[a._v("unsignedTx.json")]),a._v(" 파일은 서명되지 않은 트랜잭션을 JSON 형태로 보관합니다. 이제 "),t("code",[a._v("p1")]),a._v("은 본인의 프라이빗 키를 사용해 트랜잭션을 서명할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDvrqYDti7Dsi5zqt7hf7KO87IaMKG11bHRpc2lnX2FkZHJlc3MpJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),t("p",[a._v("서명이 생성된 후, "),t("code",[a._v("p1")]),a._v("은 "),t("code",[a._v("unsignedTx.json")]),a._v("과 "),t("code",[a._v("p1signature.json")]),a._v("을 "),t("code",[a._v("p2")]),a._v(" 또는 "),t("code",[a._v("p3")]),a._v("에게 전다합니다. "),t("code",[a._v("p2")]),a._v("와 "),t("code",[a._v("p3")]),a._v("은 이를 기반으로 서명을 진행합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDvrqYDti7Dsi5zqt7hf7KO87IaMKG11bHRpc2lnX2FkZHJlc3MpJmd0OyBcCiAgLS1uYW1lPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),t("p",[t("code",[a._v("p1p2p3")]),a._v("은 3명 중 2명의 서명을 필요로 하는 멀티시그 키입니다. 그렇기 때문에 "),t("code",[a._v("p1")]),a._v("이 서명한 트랜잭션에 하나의 프라이빗 키만 더해지면 트랜잭션이 유효합니다. 이제 다른 키 보유자들은 필요한 서명 파일을 결합하여 멀티시그 트랜잭션을 생성할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),a._v(" "),t("p",[a._v("서명된 트랜잭션은 다음과 같은 명령을 실행하여 노드에 전파합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),a._v(" "),t("h2",{attrs:{id:"shell-완료-스크립트"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#shell-완료-스크립트"}},[a._v("#")]),a._v(" Shell 완료 스크립트")]),a._v(" "),t("p",[a._v("흔히 사용되는 "),t("code",[a._v("Bash")]),a._v("와 "),t("code",[a._v("Zsh")]),a._v(" 같은 UNIX의 완료 스크립트(completion script)는 "),t("code",[a._v("completion")]),a._v(" 명령어를 사용해 생성될 수 있습니다. 이 명령은 "),t("code",[a._v("gaiad")]),a._v("와 "),t("code",[a._v("gaiad")]),a._v("에서 사용 가능합니다.")]),a._v(" "),t("p",[t("code",[a._v("Bash")]),a._v(" 완료 스크립트를 생성하기 위해서는 다음 명령어를 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),t("p",[t("code",[a._v("Zsh")]),a._v(" 완료 스크립트를 생성하기 위해서는 다음 명령어를 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("대다수의 UNIX 시스템에서는 이런 스크립트를 "),t("code",[a._v(".bashrc")]),a._v(" 또는 "),t("code",[a._v(".bash_profile")]),a._v("을 사용해 로딩할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),a._v(" "),t("p",[a._v("셸 자동 완성을 사용하시려면 사용하시는 OS의 매뉴얼을 참고하십시오.")])],1)],1)}),[],!1,null,null,null);s.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{488:function(a,s,t){"use strict";t.r(s);var c=t(1),v=Object(c.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"gaia-클라이언트"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaia-클라이언트"}},[a._v("#")]),a._v(" Gaia 클라이언트")]),a._v(" "),t("h2",{attrs:{id:"gaia-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli"}},[a._v("#")]),a._v(" Gaia CLI")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v("는 사용자가 풀노드를 통해 코스모스 허브 네트워크를 사용할 수 있게하는 도구입니다. 풀노드는 사용자가 직접 운영하거나 원격 풀노드에 연결하여 사용하실 수 있습니다. "),t("code",[a._v("gaiad")]),a._v("를 설치하기 위해서는 "),t("RouterLink",{attrs:{to:"/ko/resources/installation.html"}},[a._v("다음 과정")]),a._v("을 참고하세요.")],1),a._v(" "),t("h3",{attrs:{id:"gaiad-설정하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gaiad-설정하기"}},[a._v("#")]),a._v(" gaiad 설정하기")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v("를 설정하는데 사용되는 주 명령어는 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDvtlIzrnpjqt7goZmxhZykmZ3Q7ICZsdDvqsJIodmFsdWUpJmd0Owo="}}),a._v(" "),t("p",[a._v("위 명령어는 각 플래그의 기본 값을 설정할 수 있도록 합니다.")]),a._v(" "),t("p",[a._v("우선 연결할 풀노드의 주소를 설정하겠습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O+2YuOyKpO2KuChob3N0KSZndDs6Jmx0O+2PrO2KuChwb3J0KSZndDsKCiMg7JiI7IucOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),a._v(" "),t("p",[a._v("자체적으로 풀노드를 운영하시는 경우, 주소 값에 "),t("code",[a._v("tcp://localhost:26657")]),a._v("을 입력하세요.")]),a._v(" "),t("p",[a._v("마지막으로 연결하려는 블록체인의 "),t("code",[a._v("chain-id")]),a._v(" 값을 설정하겠습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),a._v(" "),t("h3",{attrs:{id:"키-keys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-keys"}},[a._v("#")]),a._v(" 키(Keys)")]),a._v(" "),t("h4",{attrs:{id:"키-종류"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-종류"}},[a._v("#")]),a._v(" 키 종류")]),a._v(" "),t("p",[a._v("키의 형태는 총 3개가 있습니다:")]),a._v(" "),t("ul",[t("li",[t("p",[t("code",[a._v("cosmos")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad keys add")]),a._v("로 생성되는 계정 키")]),a._v(" "),t("li",[a._v("자금을 받는데 사용")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmosvaloper")])]),a._v(" "),t("ul",[t("li",[a._v("특정 검증인을 운영자와 연관하는데 사용됨")]),a._v(" "),t("li",[a._v("스테이킹 명령 요청에 이용됨")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmospub")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad keys add")]),a._v("로 생성되는 계정 키")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),a._v(" "),t("li",[t("p",[t("code",[a._v("cosmosvalconspub")])]),a._v(" "),t("ul",[t("li",[t("code",[a._v("gaiad init")]),a._v("로 새로운 노드가 생성될때 같이 생성되는 키.")]),a._v(" "),t("li",[t("code",[a._v("gaiad tendermint show-validator")]),a._v(" 명령으로 키 값을 확인할 수 있음")]),a._v(" "),t("li",[a._v("예시) "),t("code",[a._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),a._v(" "),t("h4",{attrs:{id:"키-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-생성하기"}},[a._v("#")]),a._v(" 키 생성하기")]),a._v(" "),t("p",[a._v("자금을 받거나, 트랜잭션을 전송하거나, 스테이킹을 하기 위해서는 프라이빗 키("),t("code",[a._v("sk")]),a._v(")와 퍼블릭 키("),t("code",[a._v("pk")]),a._v(") 쌍이 필요합니다.")]),a._v(" "),t("p",[a._v("새로운 "),t("em",[a._v("secp256k1")]),a._v(" 키를 생성하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+qzhOyglV/rqoXsua0oYWNjb3VudF9uYW1lKSZndDsK"}}),a._v(" "),t("p",[a._v("이제 해당 키를 안전하게 디스크에 보관하기 위해서 비밀번호를 설정합니다.")]),a._v(" "),t("p",[a._v("새로운 키를 생성하는 과정에서 나오는 "),t("em",[a._v("시트키(seed phrase)")]),a._v(" 는 안전하게 저장하시길 바랍니다. 시드키는 다음과 같은 명령을 실행하여 잊어버린 퍼블릭/프라이빗 키를 복구하는데 이용됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),a._v(" "),t("p",[a._v("이제 프라이빗 키를 확인하고 "),t("code",[a._v("<계정_명칭(account_name)>")]),a._v("을 찾으면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDvqs4TsoJVf66qF7LmtKGFjY291bnRfbmFtZSkmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("검증인 운영자 주소는 다음과 같이 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),a._v(" "),t("p",[a._v("관련 되어 있는 모든 키 목록은 다음 명령어로 찾으실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("본인이 연결된 노드의 검증인 pubkey는 다음과 같이 확인할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),a._v(" "),t("p",[a._v("위 키는 텐더민트 사이닝 키이며, 위임 트랜잭션에서 이용되는 '오퍼레이터 키'가 아니라는 점을 참고하세요.")]),a._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[a._v("경고")]),a._v(" "),t("p",[a._v("다수의 키에 동일한 passphrase를 사용하는 것을 추천하지 않습니다. 텐더민트 팀과 인터체인 재단은 자산 손실에 대한 책임을 지지 않습니다.")])]),a._v(" "),t("h4",{attrs:{id:"멀티시그-퍼블릭-키-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#멀티시그-퍼블릭-키-생성하기"}},[a._v("#")]),a._v(" 멀티시그 퍼블릭 키 생성하기")]),a._v(" "),t("p",[a._v("새로운 멀티시그 퍼블릭키를 생성하고 확인하시려면 다음과 같은 명령을 입력하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),a._v(" "),t("p",[a._v("여기서 "),t("code",[a._v("K")]),a._v("는 트랜잭션이 승인되기 위해서 필요한 최소의 키 개수입니다.")]),a._v(" "),t("p",[t("code",[a._v("--multisig")]),a._v(" 플래그는 로컬 데이터베이스에 "),t("code",[a._v("new_key_name")]),a._v("으로 저장될 멀티시그 퍼블릭 키를 생성할때 사용되는 다수의 퍼블릭 키들의 값을 뜻합니다. "),t("code",[a._v("--multisig")]),a._v(" 값에 포함될 각 키는 로컬 데이터베이스에 존재해야 합니다. "),t("code",[a._v("--nosort")]),a._v(" 플래그가 정의된지 않은 경우, 멀티시그 조합에 필요한 키들이 입력되는 순서는 무관합니다. 예를 들어 다음 두 명령어는 두개의 동일한 멀티시그 퍼블릭 키를 생성합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),a._v(" "),t("p",[a._v("멀티시그 키의 주소는 다음과 같이 빠르게 생성하여 커맨드라인에 프린트할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),a._v(" "),t("p",[a._v("멀티시그 트랜잭션를 생성, 서명, 전파하는 방법은 "),t("a",{attrs:{href:"#%EB%A9%80%ED%8B%B0%EC%8B%9C%EA%B7%B8-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98"}},[a._v("멀티시그 트랜잭션")]),a._v(" 항목을 참고하세요.")]),a._v(" "),t("h3",{attrs:{id:"트랜잭션-전파"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-전파"}},[a._v("#")]),a._v(" 트랜잭션 전파")]),a._v(" "),t("p",[a._v("트랜잭션을 전파할때 "),t("code",[a._v("gaiad")]),a._v("에서 "),t("code",[a._v("--broadcast-mode")]),a._v("를 사용하실 수 있습니다. "),t("code",[a._v("--broadcast-mode")]),a._v("는 "),t("code",[a._v("sync")]),a._v("(동기, 기본 값), "),t("code",[a._v("async")]),a._v("(비동기), 또는 "),t("code",[a._v("block")]),a._v("(보류) 값으로 설정될 수 있습니다. "),t("code",[a._v("sync")]),a._v(" 값은 클라이언트가 CheckTx 리턴 값을 돌려주고, "),t("code",[a._v("async")]),a._v(" 값은 클라이언트가 즉시 반응을 알려주며, "),t("code",[a._v("block")]),a._v(" 값은 트랜잭션이 커밋(또는 타임이웃)될 때까지 대기합니다.")]),a._v(" "),t("p",[a._v("대다수의 상황에서 "),t("code",[a._v("block")]),a._v(" 모드는 사용하지 "),t("em",[a._v("않을 것을")]),a._v(" 추천드립니다. 이는 트랜잭션이 타임아웃 되었어도 블록에 포함되있을 수 있으며 이 과정에서 원하지 않은 문제가 발생할 가능성이 존재합니다. 대다수의 상황에서는 "),t("code",[a._v("sync")]),a._v(" 또는 "),t("code",[a._v("async")]),a._v("를 사용하신 후 트랜잭션 해시 값을 조회하여 트랜잭션이 블록에 포함된 것을 확인하시는 것을 추천드립니다.")]),a._v(" "),t("h3",{attrs:{id:"수수료와-가스"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수수료와-가스"}},[a._v("#")]),a._v(" 수수료와 가스")]),a._v(" "),t("p",[a._v("각 트랜잭션은 수수료(fee)를 지정하거나 가스 가격(gas price)을 지정할 수 있지만, 두 값을 함께 지정하는 것은 불가능합니다.")]),a._v(" "),t("p",[a._v("각 검증인은 최소 가스 가격(minimum gas price)를 (다수 토큰 사용 가능) 설정할 수 있으며 이 값을 기준으로 "),t("code",[a._v("CheckTx")]),a._v(" 단계에서 특정 트랜잭션을 블록에 포함시킬지 확인합니다. "),t("code",[a._v("gasPrices >= minGasPrices")]),a._v("일때 검증인은 트랜잭션을 처리합니다. 참고로 트랜잭션 전파시 검증인이 요구하는 토큰 중 하나를 수수료 지불 토큰으로 사용하셔야 합니다.")]),a._v(" "),t("p",[t("strong",[a._v("참고")]),a._v(": 위와 같은 메커니즘에서 일부 검증인은 멤풀에 있는 트랜잭션 중 높은 "),t("code",[a._v("gasPrice")]),a._v("의 트랜잭션을 우선적으로 처리할 수 있습니다. 그렇기 때문에 높은 수수료는 트랜잭션 처리 우선 순위를 높힐 수 있습니다.")]),a._v(" "),t("p",[a._v("예시)")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMHVhdG9tCg=="}}),a._v(" "),t("p",[a._v("또는")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),a._v(" "),t("h3",{attrs:{id:"계정"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#계정"}},[a._v("#")]),a._v(" 계정")]),a._v(" "),t("h4",{attrs:{id:"테스트-토큰-받기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트-토큰-받기"}},[a._v("#")]),a._v(" 테스트 토큰 받기")]),a._v(" "),t("p",[a._v("토큰을 받기 가장 쉬운 곳은 "),t("a",{attrs:{href:"https://faucetcosmos.network",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 테스트넷 faucet"),t("OutboundLink")],1),a._v(" 입니다. 만약 해당 faucet이 작동하지 않는 경우 "),t("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("#cosmos-validators"),t("OutboundLink")],1),a._v(" 채팅 방에서 요청을 하실 수 있습니다. 해당 faucet은 스테이킹을 하려고 하시는 계정의 "),t("code",[a._v("cosmos")]),a._v(" 주소를 입력하시면 됩니다.")]),a._v(" "),t("h4",{attrs:{id:"계정-잔고-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#계정-잔고-조회하기"}},[a._v("#")]),a._v(" 계정 잔고 조회하기")]),a._v(" "),t("p",[a._v("주소에 토큰을 받으신 후 잔고를 확인하시려면 다음 명령어를 입력하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ77L2U7Iqk66qo7IqkX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7Cg=="}}),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("계정의 토큰 잔고가 "),t("code",[a._v("0")]),a._v("인 계정을 조회하실 경우 다음과 같은 에러 메시지가 표시될 수 있습니다: "),t("code",[a._v("No account with address was found in the state.")]),a._v(" 노드가 체인과 완벽하게 연동이 안된 상태에서 조회를 할 경우 동일한 에러가 발생할 수 있습니다.")])]),a._v(" "),t("h3",{attrs:{id:"토큰-전송하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-전송하기"}},[a._v("#")]),a._v(" 토큰 전송하기")]),a._v(" "),t("p",[a._v("한 계정에서 다른 계정으로 토큰/코인을 전송하기 위해서는 다음 명령어를 이용하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripRf7IKs656MX+2CpF/rqoXsua1f65iQ64qUX+yjvOyGjChzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcykmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0OyBcCg=="}}),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("--amount")]),a._v(" 플래그는 다음과 같은 포맷을 사용합니다 "),t("code",[a._v("--amount=<수량|코인 이름>")]),a._v(".")])]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("해당 트랜잭션이 사용할 가스에 한도를 설정하기 원하시면 "),t("code",[a._v("--gas")]),a._v(" 플래그를 이용하세요. 만약 "),t("code",[a._v("--gas=auto")]),a._v("를 이용하시는 경우, 트랜잭션이 실행되기 전에 가스 서플라이가 자동으로 예측됩니다. 예측된 가스 값과 실제 트랜잭션이 일어나는 사이에 블록체인 상태가 변경될 수 있으며, 기존 예측 수량에서 값이 변경이 될 수 있다는 점을 유의하십시오. 변경 값은 "),t("code",[a._v("--gas-adjustment")]),a._v(" 플래그를 이용해 설정하실 수 있으며 기본 값은 1.0입니다.")])]),a._v(" "),t("p",[a._v("이제 토큰을 전송한 계정과 토큰을 받은 계정의 잔고를 확인합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ767O064K064qUX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O+yImOyLoOyekF/so7zshowoZGVzdGluYXRpb25fY29zbW9zKSZndDsK"}}),a._v(" "),t("p",[a._v("특정 블록 높의에서의 잔고를 확인하고 싶으시다면 "),t("code",[a._v("--block")]),a._v(" 플래그를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ77L2U7Iqk66qo7IqkX+yjvOyGjChhY2NvdW50X2Nvc21vcykmZ3Q7IC0tYmxvY2s9Jmx0O+u4lOuhnV/rhpLsnbQoYmxvY2tfaGVpZ2h0KSZndDsK"}}),a._v(" "),t("p",[a._v("트랜잭션을 실제 전파하지 않고 시뮬레이션을 하시려면 명령어 뒤에 "),t("code",[a._v("--dry-run")]),a._v(" 플래그를 추가하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripRf7IKs656MX+2CpF/rqoXsua1f65iQ64qUX+yjvOyGjChzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcykmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),a._v(" "),t("p",[a._v("또한 트랜잭션을 빌드한 후 해당 트랜잭션을 JSON 포맷으로 STDOUT에 프린트 하시기를 원하면 "),t("code",[a._v("--generate-only")]),a._v("를 명령어에 추가하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvrs7TrgrTripTsnbRf7KO87IaMKHNlbmRlcl9hZGRyZXNzKSZndDsgJmx0O+yImOyLoOyekF/so7zshowoZGVzdGluYXRpb25fY29zbW9zYWNjYWRkcikmZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0OyBcCiAgLS1nZW5lcmF0ZS1vbmx5ICZndDsgdW5zaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("--generate-only")]),a._v(" 명령어는 "),t("code",[a._v("gaiad")]),a._v("가 로컬 키베이스를 액세스하지 않습니다. "),t("code",[a._v("--generate-only")]),a._v(" 플래그를 사용하시는 경우, "),t("code",[a._v("<보내는_사람_키_명칭_또는_주소(sender_key_name_or_address)>")]),a._v(" 값은 키 명칭이 아닌 주소 값을 입력하세요.")])]),a._v(" "),t("p",[a._v("이제 "),t("code",[a._v("--generate-only")]),a._v("를 통해 프린트된 트랜잭션 파일을 서명하시려면 다음 명령어를 통해 키를 입력하시면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ77LK07J24X+yVhOydtOuUlChjaGFpbi1pZCkmZ3Q7IFwKICAtLWZyb209Jmx0O+2CpF/rqoXsua0oa2V5X25hbWUpJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),a._v(" "),t("p",[a._v("해당 트랜잭션의 서명은 다음 명령어를 통해 검증하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMKICBzaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),t("p",[a._v("서명된 트랜잭션을 노드로 전파하기 위해서는 JSON 파일을 다음 명령어를 통해 전달하면 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),t("h3",{attrs:{id:"트랜잭션-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-조회하기"}},[a._v("#")]),a._v(" 트랜잭션 조회하기")]),a._v(" "),t("h4",{attrs:{id:"태그-매칭하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#태그-매칭하기"}},[a._v("#")]),a._v(" 태그 매칭하기")]),a._v(" "),t("p",[a._v("트랜잭션 검색 명령을 이용하여 모든 트랜잭션에 추가되는 특정 "),t("code",[a._v("events")]),a._v(" 세트를 검색할 수 있습니다.")]),a._v(" "),t("p",[a._v("각 태그의 키-값 페어는 "),t("code",[a._v("{eventType}.{eventAttribute}={value}")]),a._v(" 형태로 이루어집니다. 더 상세한 검색을 원하실 경우 "),t("code",[a._v("&")]),a._v(" 를 사용하여 태그를 추가할 수 있습니다.")]),a._v(" "),t("p",[t("code",[a._v("events")]),a._v("를 이용한 트랜잭션 조회는 다음과 같이 합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),a._v(" "),t("p",[a._v("다수의 "),t("code",[a._v("events")]),a._v("를 이용하실 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),a._v(" "),t("p",[a._v("페이지네이션은 "),t("code",[a._v("page")]),a._v("와 "),t("code",[a._v("limit")]),a._v(" 값으로 지원됩니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("액션 태그는 관련 메시지의 "),t("code",[a._v("Type()")]),a._v(" 명령이 응답하는 메시지 타입과 언제나 동일합니다.")]),a._v(" "),t("p",[a._v("각 SDK 모듈에 대한 "),t("code",[a._v("events")]),a._v("는 여기에서 확인할 수 있습니다:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Staking events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Governance events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Slashing events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Distribution events"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Bank events"),t("OutboundLink")],1)])])]),a._v(" "),t("h4",{attrs:{id:"트랜잭션-해시로-검색하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-해시로-검색하기"}},[a._v("#")]),a._v(" 트랜잭션 해시로 검색하기")]),a._v(" "),t("p",[a._v("다음과 같은 명령어를 이용하여 한 트랜잭션의 해시값을 이용해 조회를 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),a._v(" "),t("h3",{attrs:{id:"슬래싱"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱"}},[a._v("#")]),a._v(" 슬래싱")]),a._v(" "),t("h4",{attrs:{id:"언제일-unjailing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#언제일-unjailing"}},[a._v("#")]),a._v(" 언제일(Unjailing)")]),a._v(" "),t("p",[a._v("제일링 된 검증인을 언제일 하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ76rKA7Kad7J24X+yYpO2NvOugiOydtO2EsF/so7zshowodmFsaWRhdG9yLW9wZXJhdG9yLWFkZHIpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"서명-정보"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#서명-정보"}},[a._v("#")]),a._v(" 서명 정보")]),a._v(" "),t("p",[a._v("특정 검증인의 서명 정보를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDvqsoDspp3snbhfcHVia2V5KHZhbGlkYXRvci1wdWJrZXkpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"슬래싱-파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-파라미터-조회"}},[a._v("#")]),a._v(" 슬래싱 파라미터 조회")]),a._v(" "),t("p",[a._v("현재 슬래싱 파라미터를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),a._v(" "),t("h3",{attrs:{id:"민팅"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#민팅"}},[a._v("#")]),a._v(" 민팅")]),a._v(" "),t("p",[a._v("민팅/인플레이션 파라미터 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),a._v(" "),t("p",[a._v("현재 인플레이션 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),a._v(" "),t("p",[a._v("현재 프로비젼(provisions) 값은 다음과 같이 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),a._v(" "),t("h3",{attrs:{id:"스테이킹"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹"}},[a._v("#")]),a._v(" 스테이킹")]),a._v(" "),t("h4",{attrs:{id:"검증인-세팅하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-세팅하기"}},[a._v("#")]),a._v(" 검증인 세팅하기")]),a._v(" "),t("p",[a._v("검증인 후보가 되기 위한 가이드는 "),t("RouterLink",{attrs:{to:"/ko/validators/validator-setup.html"}},[a._v("검증인 세팅")]),a._v(" 문서를 참고하세요.")],1),a._v(" "),t("h4",{attrs:{id:"검증인에게-위임하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인에게-위임하기"}},[a._v("#")]),a._v(" 검증인에게 위임하기")]),a._v(" "),t("p",[a._v("메인넷에서는 "),t("code",[a._v("atom")]),a._v("을 특정 검증인에게 위임할 수 있습니다. 스테이킹에 참여하는 "),t("a",{attrs:{href:"/resources/delegators-faq"}},[a._v("위임자")]),a._v("는 검증인 보상의 일부를 받을 수 있습니다. 관련 정보는 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 토큰 모델"),t("OutboundLink")],1),a._v("에서 확인하세요.")]),a._v(" "),t("h5",{attrs:{id:"검증인-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-조회하기"}},[a._v("#")]),a._v(" 검증인 조회하기")]),a._v(" "),t("p",[a._v("특정 체인의 모든 검증인 목록을 확인하기 위해서는 다음 명령을 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),a._v(" "),t("p",[a._v("특정 검증인에 대한 정보를 원하실 경우 다음 명령을 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2Nvc21vc3ZhbF/qs4TsoJUoYWNjb3VudF9jb3Ntb3N2YWwpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"토큰-본딩하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-본딩하기"}},[a._v("#")]),a._v(" 토큰 본딩하기")]),a._v(" "),t("p",[a._v("코스모스 허브 메인넷에서는 "),t("code",[a._v("uatom")]),a._v(" 단위로 위임이 가능하며 "),t("code",[a._v("1atom = 1000000uatom")]),a._v("입니다. 테스트넷 검증인에게 위임하는 방법은 다음과 같습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yKSZndDsgXAogIC0tZnJvbT0mbHQ77YKkX+uqhey5rShrZXlfbmFtZSkmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),a._v(" "),t("p",[t("code",[a._v("")]),a._v(" 는 위임 대상 검증인의 검증인 운영자 주소(valoper)입니다. 로컬 테스트넷을 운영하시는 경우, 다음 명령어로 관련 주소를 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),a._v(" "),t("p",[a._v("여기에서"),t("code",[a._v("[name]")]),a._v("은 "),t("code",[a._v("gaiad")]),a._v("를 처음 설정하셨을때 정의한 키의 명칭입니다.")]),a._v(" "),t("p",[a._v("토큰이 본딩되고 있는 기간 동안에는 다른 본딩된 토큰과 함께 하나의 '풀'을 이룹니다. 검증인들과 위임인들은 해당 풀의 소유량에 비례하는 보상을 받게 됩니다.")]),a._v(" "),t("h5",{attrs:{id:"위임-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임-조회"}},[a._v("#")]),a._v(" 위임 조회")]),a._v(" "),t("p",[a._v("위임 요청을 검증인에게 전송한 경우, 관련 정보를 다음 명령을 통해 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDvsnITsnoTsnpBf7L2U7Iqk66qo7IqkX+yjvOyGjChkZWxlZ2F0b3JfYWRkcikmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsKCg=="}}),a._v(" "),t("p",[a._v("만약 모든 위임 상태를 확인하고 싶으실 경우 다음 명령을 이용하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDvsnITsnoTsnpBf7L2U7Iqk66qo7IqkX+yjvOyGjChkZWxlZ2F0b3JfYWRkcikmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"토큰-언본딩-하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#토큰-언본딩-하기"}},[a._v("#")]),a._v(" 토큰 언본딩 하기")]),a._v(" "),t("p",[a._v("만약 특정 검증인이 악의적인 행동을 했거나 또는 본인이 개인적인 이유로 일부 토큰을 언본딩을 워하는 경우 다음 명령어를 통해 토큰을 언본딩 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("언본딩은 언본딩 기간이 끝나는 대로 완료됩니다.")]),a._v(" "),t("h5",{attrs:{id:"언본딩-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#언본딩-조회하기"}},[a._v("#")]),a._v(" 언본딩 조회하기")]),a._v(" "),t("p",[a._v("언본딩 절차를 시작하신 후 관련 정보를 조회하는 방법은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ77JyE7J6E7J6QX+yjvOyGjChkZWxlZ2F0b3ItYWRkcikmZ3Q7ICZsdDvqsoDspp3snbhf7KO87IaMKHZhbGlkYXRvcl9hZGRyKSZndDsK"}}),a._v(" "),t("p",[a._v("또는 특정 위임자의 모든 언본딩 정보를 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O+ychOyehOyekF/so7zshowoYWNjb3VudF9jb3Ntb3MpJmd0Owo="}}),a._v(" "),t("p",[a._v("추가적으로 특정 검증인으로 부터 언본딩하는 정보를 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ76rKA7Kad7J24X2Nvc21vc3ZhbF/so7zshowoYWNjb3VudF9jb3Ntb3N2YWwpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"재위임-redelegate-하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#재위임-redelegate-하기"}},[a._v("#")]),a._v(" 재위임(Redelegate) 하기")]),a._v(" "),t("p",[a._v("재위임이란 본딩 되어있는 토큰을 한 검증인으로 부터 다른 검증인으로 옮기는 것입니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ76riw7KG0X+qygOymneyduF92YWxvcGVyX+yjvOyGjChzcmNfdmFsaWRhdG9yX29wZXJhdG9yX2FkZHIpJmd0OyBcCiAgJmx0O+uMgOyDgV/qsoDspp3snbhfdmFsb3Blcl/so7zshowoZHN0X3ZhbGlkYXRvcl9vcGVyYXRvcl9hZGRyKSZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("위 예시와 같이 재위임될 토큰의 수량은 특정 수량("),t("code",[a._v("shares-amount")]),a._v(") 또는 일정 비율("),t("code",[a._v("shares-fraction")]),a._v(")로 표현될 수 있습니다.")]),a._v(" "),t("p",[a._v("언본딩 기간이 지나면 재위임은 자동으로 완료됩니다.")]),a._v(" "),t("h5",{attrs:{id:"재위임-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#재위임-조회하기"}},[a._v("#")]),a._v(" 재위임 조회하기")]),a._v(" "),t("p",[a._v("재위임을 시작하신 후, 다음 명령을 통해서 관련 정보를 조회하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHIpJmd0OyAmbHQ76riw7KG0X+qygOymneyduF/so7zshowoc3JjX3ZhbF9hZGRyKSZndDsgJmx0O+uMgOyDgV/qsoDspp3snbhf7KO87IaMKGRzdF92YWxfYWRkcikmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("특정 위임자의 모든 검증인에 대한 재위임을 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDvsnITsnoTsnpBf7KO87IaMKGFjY291bnRfY29zbW9zKSZndDsK"}}),a._v(" "),t("p",[a._v("특정 검증인에 대한 재위임을 확인하고 싶으신 경우:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBzdGFraW5nIHJlZGVsZWdhdGlvbnMtZnJvbSAmbHQ76rKA7Kad7J24X+yjvOyGjChhY2NvdW50X2Nvc21vc3ZhbCkmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#파라미터-조회"}},[a._v("#")]),a._v(" 파라미터 조회")]),a._v(" "),t("p",[a._v("파라미터는 스테이킹의 하이-레벨 설정을 정의합니다. 현재 값은 다음 명령어를 통해서 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),a._v(" "),t("p",[a._v("위 명령어는 다음과 같은 정보를 표기합니다:")]),a._v(" "),t("ul",[t("li",[a._v("언본딩 기간")]),a._v(" "),t("li",[a._v("최대 검증인 수")]),a._v(" "),t("li",[a._v("스테이킹 코인 표기")])]),a._v(" "),t("p",[a._v("해당 값은 거버넌스 절차의 "),t("code",[a._v("ParameterChange")]),a._v("(파라미터 변경) 프로포절을 통해서 변경됩니다.")]),a._v(" "),t("h4",{attrs:{id:"스테이킹-풀-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-풀-조회하기"}},[a._v("#")]),a._v(" 스테이킹 풀 조회하기")]),a._v(" "),t("p",[a._v("스티이킹 풀은 현재 상태(state)에 대한 다이내믹 파라미터(dynamic parameter)를 정의합니다. 관련 정보는 다음 명령을 통해 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),a._v(" "),t("p",[t("code",[a._v("pool")]),a._v(" 명령은 다음과 같은 정보에 대한 현재 값을 제공합니다:")]),a._v(" "),t("ul",[t("li",[a._v("본딩된 토큰 / 본딩 되어있지 않은 토큰")]),a._v(" "),t("li",[a._v("총 토큰 수량")]),a._v(" "),t("li",[a._v("연 인플레이션 비율과 가장 최근에 인플레이션이 변경된 블록 높이")]),a._v(" "),t("li",[a._v("가장 최근 기록된 bonded shares")])]),a._v(" "),t("h5",{attrs:{id:"검증인-위임-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-위임-조회하기"}},[a._v("#")]),a._v(" 검증인 위임 조회하기")]),a._v(" "),t("p",[a._v("특정 검증인에 대한 모든 위임은 다음 명령으로 조회가 가능합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBkZWxlZ2F0aW9ucy10byAmbHQ76rKA7Kad7J24X+yjvOyGjChhY2NvdW50X2Nvc21vc3ZhbCkmZ3Q7Cg=="}}),a._v(" "),t("h3",{attrs:{id:"거버넌스"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스"}},[a._v("#")]),a._v(" 거버넌스")]),a._v(" "),t("p",[a._v("거버넌스는 코스모스 허브의 유저가 소프트웨어 업그레이드, 메인넷 파라미터 또는 문서 형태의 프로포절 등에 대한 합의를 하는 절차입니다. 유저는 프로포절에 대한 투표를 함으로 이 절차에 참여할 수 있으며, 투표권은 메인넷 아톰 홀더들에게 주어집니다.")]),a._v(" "),t("p",[a._v("다음은 투표 절차에 대한 정보입니다:")]),a._v(" "),t("ul",[t("li",[a._v("투표권은 본딩된 "),t("code",[a._v("Atom")]),a._v("을 소유한 유저에게만 주어지며, "),t("code",[a._v("본딩된 아톰 1개 = 1표")]),a._v(" 기준으로 집계됩니다")]),a._v(" "),t("li",[a._v("투표권을 행사하지 않은 위임자는 본인이 위임한 검증인의 투표를 따르게 됩니다")]),a._v(" "),t("li",[a._v("표는 각 프로포절의 투표 마감 시점(메인넷 기준 2주)에서 집계됩니다. 각 계정은 투표기간 중 표를 변경할 수 있으며(트랜잭션 수수료는 부과됩니다), 가장 마지막 표가 유효한 표로 집계됩니다")]),a._v(" "),t("li",[a._v("투표자들은 "),t("code",[a._v("Yes")]),a._v(", "),t("code",[a._v("No")]),a._v(", "),t("code",[a._v("NoWithVeto")]),a._v("와 "),t("code",[a._v("Abstain")]),a._v(" 중에서 하나를 선택하여 투표할 수 있습니다")]),a._v(" "),t("li",[a._v("프로포절은 다음 조건을 충족할 경우에만 통과한 것으로 간주됩니다:\n"),t("ul",[t("li",[t("code",[a._v("(YesVote/(YesVotes+NoVotes+NoWithVetoVotes)) > 1/2")])]),a._v(" "),t("li",[t("code",[a._v("(NoWithVetoVotes/(YesVotes+NoVotes+NoWithVetoVotes)) < 1/3")])]),a._v(" "),t("li",[t("code",[a._v("((YesVotes+NoVotes+NoWithVetoVotes) / totalBondedStake) >= quorum")])])])])]),a._v(" "),t("p",[a._v("거버넌스 절차에 대한 더 자세한 정보는 "),t("a",{attrs:{href:"./../spec/governance"}},[a._v("거버넌스 모듈 스펙")]),a._v("을 확인하세요.")]),a._v(" "),t("h4",{attrs:{id:"거버넌스-프로포절-생성하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-프로포절-생성하기"}},[a._v("#")]),a._v(" 거버넌스 프로포절 생성하기")]),a._v(" "),t("p",[a._v("새로운 거버넌스 프로포절을 생성하기 위해서는 프로포절 제목, 프로포절 내용 그리고 보증금을 예치해야 합니다. 거버넌스 모듈 외의 모듈에서 프로포절 타입과 핸들러를 도입할 수 있습니다 (예, 파라미터 변경), 거버넌스 모듈 자체는 "),t("code",[a._v("Text")]),a._v(" 프로포절을 지원합니다. 거버넌스 외 모듈의 프로포절은 "),t("code",[a._v("submit-proposal")]),a._v(" 위에 명령을 추가할 수 있습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ77KCc66qpKHRpdGxlKSZndDsgXAogIC0tZGVzY3JpcHRpb249Jmx0O+yEpOuqhShkZXNjcmlwdGlvbikmZ3Q7IFwKICAtLXR5cGU9JnF1b3Q7VGV4dCZxdW90OyBcCiAgLS1kZXBvc2l0PSZxdW90OzEwMDAwMDB1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKG5hbWUpJmd0OyBcCiAgLS1jaGFpbi1pZD0mbHQ77LK07J24X+yVhOydtOuUlChjaGFpbl9pZCkmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("또한 "),t("code",[a._v("--proposal")]),a._v(" 플래그를 이용해 프로포절이 포함된 JSON 파일을 직접적으로 제공할 수도 있습니다.")]),a._v(" "),t("p",[a._v("파라미터 변경 프로포절의 경우 내용을 CLI 인풋으로 입력하기 어렵기 때문에 프로포절 파일을 제출해야 합니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O+2UhOuhnO2PrOygiC/tjIzsnbwv6rK966GcL+2UhOuhnO2PrOygiC5qc29uJmd0OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW5faWQpJmd0Owo="}}),a._v(" "),t("p",[t("code",[a._v("proposal.json")]),a._v(" 파일 형식은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),a._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[a._v("경고")]),a._v(" "),t("p",[a._v("현재 파라미터 변경 프로포절은 "),t("em",[a._v("검토")]),a._v(" 되지만, "),t("em",[a._v("검증")]),a._v(" 되지는 않기 때문에 모든 "),t("code",[a._v("값")]),a._v("은 유효하다는 것을 미리 확인해야 합니다(예, 올바른 타입과 한도 내). 예) "),t("code",[a._v("MaxValidator")]),a._v("(최대 검증인) 값은 소수점이 아닌 integer 값이어야 합니다.")]),a._v(" "),t("p",[a._v("파라미터 변경 프로포절 검토 단계에서 이런 문제가 발견될 것 확률이 높지만, 참고할 필요는 있습니다.")])]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[t("code",[a._v("SoftwareUpgrade")]),a._v(" 프로포절은 현재 개발되지 않은 상황이므로 지원되지 않으며, 형태는 "),t("code",[a._v("Text")]),a._v(" 프로포절과 동일합니다.")])]),a._v(" "),t("h5",{attrs:{id:"프로포절-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-조회"}},[a._v("#")]),a._v(" 프로포절 조회")]),a._v(" "),t("p",[a._v("프로포절이 생성된 후 관련 정보를 조회하는 방법은 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("모든 프로포절에 대한 조회를 하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),a._v(" "),t("p",[a._v("프로포절을 "),t("code",[a._v("voter")]),a._v(" 또는 "),t("code",[a._v("depositor")]),a._v("로 필터링 해서 조회할 수도 있습니다.")]),a._v(" "),t("p",[a._v("특정 거버넌스 프로포절의 제안자를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"보증금-추가하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보증금-추가하기"}},[a._v("#")]),a._v(" 보증금 추가하기")]),a._v(" "),t("p",[a._v("프로포절이 네트워크에 전파되기 위해서는 해당 프로포절의 보증금이 "),t("code",[a._v("minDeposit")]),a._v(" 값 이상이어야 합니다 (현재 기본 값은 "),t("code",[a._v("512000000uatom")]),a._v("입니다). 만약 사전에 생성한 프로포절이 해당 기준을 충족하지 못하였다면 추후에 보증금을 추가 예치하여 활성화할 수 있습니다. 프로포절의 보증금이 최소 값을 도달하면 해당 프로포절의 투표는 활성화 됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZxdW90OzEwMDAwMDAwdWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ77YKkX+uqhey5rShuYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF9JRChjaGFpbl9pZCkmZ3Q7Cg=="}}),a._v(" "),t("blockquote",[t("p",[t("em",[a._v("참고")]),a._v(": 기본 보증금 기준을 충족하지 못한 프로포절은 "),t("code",[a._v("MaxDepositPeriod")]),a._v("이 지나면 자동으로 삭제됩니다.")])]),a._v(" "),t("h5",{attrs:{id:"보증금-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보증금-조회하기"}},[a._v("#")]),a._v(" 보증금 조회하기")]),a._v(" "),t("p",[a._v("새로운 프로포절이 생성된 후, 해당 프로포절에 대한 보증금은 다음과 같이 조회할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("p",[a._v("특정 주소에 대한 보증금은 다음과 같이 확인하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDvrs7Tspp3quIhf7KCc6rO17J6QX+yjvOyGjChkZXBvc2l0b3JfYWRkcmVzcykmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"프로포절-투표하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-투표하기"}},[a._v("#")]),a._v(" 프로포절 투표하기")]),a._v(" "),t("p",[a._v("프로포절의 보증금이 "),t("code",[a._v("MinDeposit")]),a._v(" 값에 도달하면 투표 기간이 시작됩니다. 본딩된 "),t("code",[a._v("Atom")]),a._v("을 보유한 홀더들은 각자 투표를 할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDtZZXMvTm8vTm9XaXRoVmV0by9BYnN0YWluKO2RnCDshKDtg50pJmd0OyBcCiAgLS1mcm9tPSZsdDvtgqRf66qF7LmtKGtleV9uYW1lKSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O+yytOyduF/slYTsnbTrlJQoY2hhaW4taWQpJmd0Owo="}}),a._v(" "),t("h5",{attrs:{id:"표-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#표-조회하기"}},[a._v("#")]),a._v(" 표 조회하기")]),a._v(" "),t("p",[a._v("특정 표와 관련한 정보를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O+2UhOuhnO2PrOygiF9JRChwcm9wb3NhbF9pZCkmZ3Q7ICZsdDvtiKztkZzsnpBf7KO87IaMKHZvdGVyX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("p",[a._v("과거 프로포절에 대한 표 정보를 확인하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"프로포절-결과-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#프로포절-결과-조회하기"}},[a._v("#")]),a._v(" 프로포절 결과 조회하기")]),a._v(" "),t("p",[a._v("특정 프로포절에 대한 결과를 확인하기 위해서는 "),t("code",[a._v("tally")]),a._v(" 명령어를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDvtlITroZztj6zsoIhfSUQocHJvcG9zYWxfaWQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"거버넌스-파라미터-조회하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-파라미터-조회하기"}},[a._v("#")]),a._v(" 거버넌스 파라미터 조회하기")]),a._v(" "),t("p",[a._v("현재 거버넌스 파라미터를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),a._v(" "),t("h3",{attrs:{id:"스테이킹-리워드-분배"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-리워드-분배"}},[a._v("#")]),a._v(" 스테이킹 리워드 분배")]),a._v(" "),t("h4",{attrs:{id:"리워드-분배-파라미터-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#리워드-분배-파라미터-조회"}},[a._v("#")]),a._v(" 리워드 분배 파라미터 조회")]),a._v(" "),t("p",[a._v("현재 리워드 분배 파라미터 값을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),t("h4",{attrs:{id:"커뮤니티-풀-잔고-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#커뮤니티-풀-잔고-조회"}},[a._v("#")]),a._v(" 커뮤니티 풀 잔고 조회")]),a._v(" "),t("p",[a._v("거버넌스 소유권에 있는 커뮤니티 풀 자산을 조회하기 위해서는 다음 명령어를 사용하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),t("h4",{attrs:{id:"수령되지-않은-리워드를-받기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수령되지-않은-리워드를-받기"}},[a._v("#")]),a._v(" 수령되지 않은 리워드를 받기")]),a._v(" "),t("p",[a._v("수령하지 않은 리워드를 수령하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),a._v(" "),t("h4",{attrs:{id:"검증인-커미션-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-커미션-조회"}},[a._v("#")]),a._v(" 검증인 커미션 조회")]),a._v(" "),t("p",[a._v("특정 검증인의 커미션을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"검증인-슬래싱-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-슬래싱-조회"}},[a._v("#")]),a._v(" 검증인 슬래싱 조회")]),a._v(" "),t("p",[a._v("특정 검증인의 슬래싱 기록을 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O+qygOymneyduF/so7zshowodmFsaWRhdG9yX2FkZHJlc3MpJmd0OyAmbHQ77Iuc7J6RX+u4lOuhnV/rhpLsnbQoc3RhcnRfaGVpZ2h0KSZndDsgJmx0O+uBnV/ruJTroZ1f64aS7J20KGVuZF9oZWlnaHQpJmd0Owo="}}),a._v(" "),t("h4",{attrs:{id:"특정-검증인에서-수령되지-않은-리워드-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#특정-검증인에서-수령되지-않은-리워드-조회"}},[a._v("#")]),a._v(" 특정 검증인에서 수령되지 않은 리워드 조회")]),a._v(" "),t("p",[a._v("위임자의 특정 검증인에서 발생된 미수령 리워드를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHJlc3MpJmd0OyAmbHQ76rKA7Kad7J24X+yjvOyGjCh2YWxpZGF0b3JfYWRkcmVzcykmZ3Q7Cg=="}}),a._v(" "),t("h4",{attrs:{id:"위임자의-수령-대기중인-모든-리워드-조회"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임자의-수령-대기중인-모든-리워드-조회"}},[a._v("#")]),a._v(" 위임자의 수령 대기중인 모든 리워드 조회")]),a._v(" "),t("p",[a._v("위임자의 모든 수령 대기 리워드를 조회하기 위해서는:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O+ychOyehOyekF/so7zshowoZGVsZWdhdG9yX2FkZHJlc3MpJmd0Owo="}}),a._v(" "),t("h3",{attrs:{id:"멀티시그-트랜잭션"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#멀티시그-트랜잭션"}},[a._v("#")]),a._v(" 멀티시그 트랜잭션")]),a._v(" "),t("p",[a._v("멀티시그 트랜잭션을 서명하기 위해서는 다수의 프라이빗 기가 필요합니다. 그렇기 때문에 멀티시그 계정에서 트랜잭션을 생성하고 서명하기 위해서는 여러 인원간의 협동이 필요합니다. 멀티시그 키 보유자 누구나 트랜잭션을 생성할 수 있으며, 멀티시그 퍼블릭키를 생성하고 트랜잭션을 전파하기 위해서는 키 소유자 중 최소 한명이 다른 키 소유자들의 모든 퍼블릭 키를 로컬 데이터베이스에 보유해야합니다.")]),a._v(" "),t("p",[a._v("예를 들어 멀티시그 키가 "),t("code",[a._v("p1")]),a._v(", "),t("code",[a._v("p2")]),a._v(", "),t("code",[a._v("p3")]),a._v(" 키로 이루어진다면, "),t("code",[a._v("p1")]),a._v(" 키 보유자는 "),t("code",[a._v("p2")]),a._v("와 "),t("code",[a._v("p3")]),a._v("의 키가 있어야 멀티시그 계정의 퍼블릭 키를 생성할 수 있습니다.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIC0tcHVia2V5PWNvc21vc3B1YjFhZGR3bnBlcHF0ZDI4dXdhMHl4dHdhbDUyMjNxcXI1YXFmNXk1N3RjN2trN3o4cWQ0enBscmRsazVlejVrZG5scmo0IFwKICBwMgogZ2FpYWQga2V5cyBhZGQgXAogIC0tcHVia2V5PWNvc21vc3B1YjFhZGR3bnBlcHFnajA0anBtOXdyZG1sNXFuc3M5a2p4a214enl3dWtsbmtqMGczYTNmOGw1d3g5ejRlbm56ODR5bTV0IFwKICBwMwogZ2FpYWQga2V5cyBhZGQgXAogIC0tbXVsdGlzaWctdGhyZXNob2xkPTIgXAogIC0tbXVsdGlzaWc9cDEscDIscDMK"}}),a._v(" "),t("p",[a._v("이제 새로운 멀티시그 키 "),t("code",[a._v("p1p2p3")]),a._v("이 보관되었으며 이 주소를 기반으로 멀티 트랜잭션이 서명됩니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),a._v(" "),t("p",[a._v("멀티시그 주소의 투표 통과 기준, pubkey 투표자 그리고 각자 투표권 부게를 확인하기 위해서는 JSON 아웃풋을 확인하거나 "),t("code",[a._v("--show-multisig")]),a._v(" 플래그를 사용하실 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),a._v(" "),t("p",[a._v("위 주소를 기반으로 멀티시그 트랜잭션을 생성하는 과정의 첫 단계는 다음과 같습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwMHVhdG9tIFwKICAtLWZyb209Jmx0O+upgO2LsOyLnOq3uF/so7zshowobXVsdGlzaWdfYWRkcmVzcykmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFR4Lmpzb24K"}}),a._v(" "),t("p",[t("code",[a._v("unsignedTx.json")]),a._v(" 파일은 서명되지 않은 트랜잭션을 JSON 형태로 보관합니다. 이제 "),t("code",[a._v("p1")]),a._v("은 본인의 프라이빗 키를 사용해 트랜잭션을 서명할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDvrqYDti7Dsi5zqt7hf7KO87IaMKG11bHRpc2lnX2FkZHJlc3MpJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),t("p",[a._v("서명이 생성된 후, "),t("code",[a._v("p1")]),a._v("은 "),t("code",[a._v("unsignedTx.json")]),a._v("과 "),t("code",[a._v("p1signature.json")]),a._v("을 "),t("code",[a._v("p2")]),a._v(" 또는 "),t("code",[a._v("p3")]),a._v("에게 전다합니다. "),t("code",[a._v("p2")]),a._v("와 "),t("code",[a._v("p3")]),a._v("은 이를 기반으로 서명을 진행합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDvrqYDti7Dsi5zqt7hf7KO87IaMKG11bHRpc2lnX2FkZHJlc3MpJmd0OyBcCiAgLS1uYW1lPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),t("p",[t("code",[a._v("p1p2p3")]),a._v("은 3명 중 2명의 서명을 필요로 하는 멀티시그 키입니다. 그렇기 때문에 "),t("code",[a._v("p1")]),a._v("이 서명한 트랜잭션에 하나의 프라이빗 키만 더해지면 트랜잭션이 유효합니다. 이제 다른 키 보유자들은 필요한 서명 파일을 결합하여 멀티시그 트랜잭션을 생성할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),a._v(" "),t("p",[a._v("서명된 트랜잭션은 다음과 같은 명령을 실행하여 노드에 전파합니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),a._v(" "),t("h2",{attrs:{id:"shell-완료-스크립트"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#shell-완료-스크립트"}},[a._v("#")]),a._v(" Shell 완료 스크립트")]),a._v(" "),t("p",[a._v("흔히 사용되는 "),t("code",[a._v("Bash")]),a._v("와 "),t("code",[a._v("Zsh")]),a._v(" 같은 UNIX의 완료 스크립트(completion script)는 "),t("code",[a._v("completion")]),a._v(" 명령어를 사용해 생성될 수 있습니다. 이 명령은 "),t("code",[a._v("gaiad")]),a._v("와 "),t("code",[a._v("gaiad")]),a._v("에서 사용 가능합니다.")]),a._v(" "),t("p",[t("code",[a._v("Bash")]),a._v(" 완료 스크립트를 생성하기 위해서는 다음 명령어를 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),t("p",[t("code",[a._v("Zsh")]),a._v(" 완료 스크립트를 생성하기 위해서는 다음 명령어를 실행하세요:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),t("p",[a._v("대다수의 UNIX 시스템에서는 이런 스크립트를 "),t("code",[a._v(".bashrc")]),a._v(" 또는 "),t("code",[a._v(".bash_profile")]),a._v("을 사용해 로딩할 수 있습니다:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),a._v(" "),t("p",[a._v("셸 자동 완성을 사용하시려면 사용하시는 OS의 매뉴얼을 참고하십시오.")])],1)],1)}),[],!1,null,null,null);s.default=v.exports}}]); \ No newline at end of file diff --git a/main/assets/js/136.7cce7c85.js b/main/assets/js/136.ca70607e.js similarity index 99% rename from main/assets/js/136.7cce7c85.js rename to main/assets/js/136.ca70607e.js index a0c4fcd1fc7..f4894bc5ecb 100644 --- a/main/assets/js/136.7cce7c85.js +++ b/main/assets/js/136.ca70607e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{498:function(v,_,d){"use strict";d.r(_);var c=d(1),o=Object(c.a)({},(function(){var v=this,_=v.$createElement,d=v._self._c||_;return d("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[d("h1",{attrs:{id:"제네시스-파일"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일"}},[v._v("#")]),v._v(" 제네시스 파일")]),v._v(" "),d("p",[v._v("이 문서는 코스모스 허브 메인넷의 제네시스 파일의 구조를 설명합니다. 또한, 자체 gaia 테스트넷을 운영하기 위해 자체적으로 제네시스 파일을 작성하는 방법을 설명합니다.")]),v._v(" "),d("p",[v._v("참고로 기본 설정이 적용된 제네시스 파일을 사용해 테스트넷을 운영하기 위해서는 다음 명령어를 입력할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ766qF7LmtKG1vbmlrZXIpJmd0OyAtLWNoYWluLWlkICZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),v._v(" "),d("p",[v._v("제네시스 파일은 "),d("code",[v._v("~/.gaia/config/genesis.toml")]),v._v("에 저장됩니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-파일은-무엇인가"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일은-무엇인가"}},[v._v("#")]),v._v(" 제네시스 파일은 무엇인가?")]),v._v(" "),d("p",[v._v("제네시스 파일은 블록체인 초기 상태(state)를 정의하는 JSON 파일입니다. 이는 실질적으로 블록 높이 "),d("code",[v._v("0")]),v._v("을 뜻하며, 첫 블록이 생성되는 "),d("code",[v._v("1")]),v._v(" 블록은 제네시스 파일을 패런트(parent)로 참조합니다.")]),v._v(" "),d("p",[v._v("제네시스 파일에 정의된 상태는 토큰 분배, 제네시스 시간, 기본 파라미터 값 등의 모든 필수 정보를 포함하고 있습니다. 각 정보를 항목별로 정리합니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-시간과-체인-아이디"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-시간과-체인-아이디"}},[v._v("#")]),v._v(" 제네시스 시간과 체인 아이디")]),v._v(" "),d("p",[d("code",[v._v("genesis_time")]),v._v("은 제네시스 파일 상단에 정의됩니다. 제네시스 타임은 블록체인이 시작되는 "),d("code",[v._v("UTC")]),v._v(" 기준 시간을 정의합니다. 해당 시간에 도달하면 제네시스 검증인은 온라인어 컨센서스 과정에 참여를 시작합니다. 블록체인은 제네시스 검증인의 2/3 이상이 (보팅 파워 기준으로) 온라인될 경우에 시작됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),d("p",[d("code",[v._v("chain_id")]),v._v("는 블록체인의 고유 식별 정보입니다. 동일한 소프트웨어를 운영하는 다양한 체인을 구별하기 위해 사용됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),v._v(" "),d("h2",{attrs:{id:"컨센서스-파라미터"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#컨센서스-파라미터"}},[v._v("#")]),v._v(" 컨센서스 파라미터")]),v._v(" "),d("p",[v._v("이후 제네시스 파일은 컨센서스 파라미터 값을 정의합니다. 컨센서스 파라미터는 모든 합의 계층("),d("code",[v._v("gaia")]),v._v("의 경우 "),d("code",[v._v("Tendermint")]),v._v(" 계층) 관련 값을 리그룹(regroup)합니다. 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("block")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_bytes")]),v._v(": 블록 최대 바이트 크기")]),v._v(" "),d("li",[d("code",[v._v("max_gas")]),v._v(": 블록 가스 한도(gas limit). 블록에 포함되는 모든 트랜잭션은 가스를 소모합니다. 블록에 포함되어있는 트랜잭션들의 총 가스 사용량은 이 한도를 초과할 수 없습니다.")])])]),v._v(" "),d("li",[d("code",[v._v("evidence")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_age")]),v._v(": 증거(evidence)는 검증인이 동일한 블록 높이와 합의 라운드(round)에서 두개의 블록을 동시했다는 증거입니다. 위와 같은 행동은 명백한 악의적 행동으로 간주되며 스테이트 머신 계층에서 페널티를 부과합니다. "),d("code",[v._v("max_age")]),v._v(" 값은 증거 유효성이 유지되는 최대 "),d("em",[v._v("블록")]),v._v(" 개수를 의미합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("validator")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pub_key_types")]),v._v(": 검증인이 사용할 수 있는 pubkey 형태입니다("),d("code",[v._v("ed25519")]),v._v(", "),d("code",[v._v("secp256k1")]),v._v(", ...). 현재 "),d("code",[v._v("ed25519")]),v._v("만 지원됩니다.")])])])]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),d("h2",{attrs:{id:"애플리케이션-상태"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#애플리케이션-상태"}},[v._v("#")]),v._v(" 애플리케이션 상태")]),v._v(" "),d("p",[v._v("애플리케이션 상태(application state)는 스테이트 머신(상태 기계, state machine)의 초기 상태를 정의합니다.")]),v._v(" "),d("h3",{attrs:{id:"제네시스-계정"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-계정"}},[v._v("#")]),v._v(" 제네시스 계정")]),v._v(" "),d("p",[v._v("이 항목에서는 초기 토큰 분배가 정의됩니다. 수동으로 제네시스 파일에 계정을 추가할 수 있지만, 다음 명령어를 통해 계정을 추가할 수도 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JiI7IucOiBnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50IGNvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCAxMDAwMDAwMHVhdG9tCgpnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50ICZsdDvqs4TsoJVf7KO87IaMKGFjY291bnRfYWRkcmVzcykmZ3Q7ICZsdDvsiJjrn4koYW1vdW50KSZndDsgJmx0O+uLqOychChkZW5vbSkmZ3Q7Cg=="}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("app_state")]),v._v(" 항목 내 "),d("code",[v._v("accounts")]),v._v(" 리스트에 아이템을 추가합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),d("p",[v._v("각 파라미터 값을 항목별로 설명하겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("sequence_number")]),v._v(": 이 숫자는 계정이 전송한 트랜잭션 수를 추적하는데 사용됩니다. 트랜잭션이 블록에 포함될 때마다 숫자가 증가하며 리플레이 공격(replay attack)을 방지하기 위해 사용됩니다. 기본 값은 "),d("code",[v._v("0")]),v._v(" 입니다.")]),v._v(" "),d("li",[d("code",[v._v("account_number")]),v._v(": 계정 고유 식별번호입니다. 해당 계정의 첫 트랜잭션이 블록에 포함될때 생성됩니다.")]),v._v(" "),d("li",[d("code",[v._v("original_vesting")]),v._v(": "),d("code",[v._v("gaia")]),v._v("는 베스팅(락업) 기능을 지원합니다. 락업 계정이 소유한 토큰 수량을 지정하고, 토큰 전송이 가능할때까지의 시간을 정할 수 있습니다. 락업된 토큰의 스테이킹은 지원됩니다. 기본 값은 "),d("code",[v._v("null")]),v._v("입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_free")]),v._v(": 락업이 풀린 후 전송될 수 있는 위임된 수량을 뜻합니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_vesting")]),v._v(": 아직 락업이 진행중인 위임된 수량을 뜻합니다. 대분분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("start_time")]),v._v(": 락업이 풀리는 시점의 블록 높이입니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("0")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("end_time")]),v._v(": 락업 기간이 마감되는 시점의 블록 높이입니다. 락업이 없는 계정의 표준 값은 "),d("code",[v._v("0")]),v._v("입니다.")])]),v._v(" "),d("h3",{attrs:{id:"뱅크-bank"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#뱅크-bank"}},[v._v("#")]),v._v(" 뱅크(Bank)")]),v._v(" "),d("p",[d("code",[v._v("bank")]),v._v(" 모듈은 토큰을 관리합니다. 이 항목에서 정의될 파라미터는 제네시스 시작시 전송 가능여부를 정의하는 것입니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),d("h3",{attrs:{id:"스테이킹-staking"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-staking"}},[v._v("#")]),v._v(" 스테이킹(Staking)")]),v._v(" "),d("p",[d("code",[v._v("staking")]),v._v(" 모듈은 스테이트 머신의 지분증명(proof-of-stake) 로직의 대다수를 처리합니다. 이 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("not_bonded_tokens")]),v._v(": 제네시스 시점에서 위임되지 않은 토큰의 수량을 정의합니다. 대부분의 상황에서 이 값은 스테이킹 토큰의 총 발행량을 뜻합니다 (이 예시에서는 "),d("code",[v._v("uatom")]),v._v(" 단위로 정의됩니다).")]),v._v(" "),d("li",[d("code",[v._v("bonded_tokens")]),v._v(": 제네시스 시점에서 위임된 토큰의 수량입니다. 대부분 상황에서 이 값은 "),d("code",[v._v("0")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("unbonding_time")]),v._v(": 토큰의 언본딩이 완료될 때까지의 기간을 "),d("em",[v._v("나노초(nanosecond)")]),v._v(" 단위로 정의합니다.")]),v._v(" "),d("li",[d("code",[v._v("max_validators")]),v._v(": 최대 검증인 수입니다.")]),v._v(" "),d("li",[d("code",[v._v("max_entries")]),v._v(": 특정 검증인/위임자 쌍에서 동시에 진행될 수 있는 최대 언본딩/재위임 회수.")]),v._v(" "),d("li",[d("code",[v._v("bond_denom")]),v._v(": 스테이킹 토큰 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("last_total_power")]),v._v(": 보팅 파워 수치. 통상 제네시스 시점에서 "),d("code",[v._v("0")]),v._v("입니다 (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("last_validator_powers")]),v._v(": 각 검증인의 가장 최근 보팅 파워 수치입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("validators")]),v._v(": 가장 최근 검증인 목록. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("bonds")]),v._v(": 가장 최근 위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("unbonding_delegations")]),v._v(": 가장 최근 위임 취소 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("redelegations")]),v._v(": 가장 최근 재위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("exported")]),v._v(": 제네시스 파일이 과거 상태를 기반을 내보내어 작성된 여부.")])]),v._v(" "),d("h3",{attrs:{id:"민트-mint"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#민트-mint"}},[v._v("#")]),v._v(" 민트(mint)")]),v._v(" "),d("p",[d("code",[v._v("mint")]),v._v(" 모듈은 토큰 발행량의 인플레이션 관련 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("mint")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("minter")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("inflation")]),v._v(": 토큰 총 발행량의 기본 연간 인플레이션 % (주 단위 복리 기준). "),d("code",[v._v("0.070000000000000000")]),v._v(" 값은 주 단위 복리 기준으로 연간 "),d("code",[v._v("7%")]),v._v(" 인플레이션을 뜻합니다.")]),v._v(" "),d("li",[d("code",[v._v("annual_provisions")]),v._v(": 매 블록마다 계산됨. 기본 값은 "),d("code",[v._v("0.000000000000000000")]),v._v("으로 시작합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("mint_denom")]),v._v(": 인플레이션 대상 스테이킹 토큰의 단위.")]),v._v(" "),d("li",[d("code",[v._v("inflation_rate_change")]),v._v(": 연간 인플레이션 변화율.")]),v._v(" "),d("li",[d("code",[v._v("inflation_max")]),v._v(": 인플레이션 최대 수치.")]),v._v(" "),d("li",[d("code",[v._v("inflation_min")]),v._v(": 인플레이션 최소 수치.")]),v._v(" "),d("li",[d("code",[v._v("goal_bonded")]),v._v(": 총 발행량 중 위임 목표 % 수치. 만약 현재 위임 비율이 해당 이 값보다 낮은 경우, 인플레이션은 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_max")]),v._v("까지 증가합니다. 반대로 현재 위임 비율이 이 수치보다 높을 경우 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_min")]),v._v("까지 감소합니다.")]),v._v(" "),d("li",[d("code",[v._v("blocks_per_year")]),v._v(": 연간 생성되는 블록 예상 수치. 스테이킹 토큰 인플레이션으로 발생하는 토큰을 각 블록당 지급(블록 프로비젼, block provisions)하는데 계산하는 용도로 사용됩니다.")])])])]),v._v(" "),d("h3",{attrs:{id:"분배-distribution"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#분배-distribution"}},[v._v("#")]),v._v(" 분배(distribution)")]),v._v(" "),d("p",[d("code",[v._v("distribution")]),v._v(" 모듈은 블록당 위임 보상(block provision)을 검증인과 위임자에게 분배하는 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("distribution")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("fee_pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("community_pool")]),v._v(": 커뮤니티 풀은 임무 수행(개발, 커뮤니티 빌딩, 등)의 보상으로 제공될 수 있는 토큰 자금입니다. 토큰 풀의 사용은 거버넌스 프로포절을 통해 결정됩니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("community_tax")]),v._v(": 블록 보상과 수수료 중 커뮤니티 풀로 예치될 '세금' %.")]),v._v(" "),d("li",[d("code",[v._v("base_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드. 값이 "),d("code",[v._v("0.010000000000000000")]),v._v("인 경우, 수수료의 1%가 블록 프로포저에게 지급됩니다.")]),v._v(" "),d("li",[d("code",[v._v("bonus_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드의 "),d("em",[v._v("최대 한도")]),v._v(". 보너스 수량은 블록 프로포저가 포함한 "),d("code",[v._v("precommit")]),v._v(" 수량에 비례합니다. 만약 프로포저가 보팅 파워 기준으로"),d("code",[v._v("precommit")]),v._v("의 2/3을 포함한 경우 (2/3는 유효한 블록을 생성하기 위한 최소 한도입니다), "),d("code",[v._v("base_proposer_reward")]),v._v(" 만큼의 보너스를 지급 받습니다. 보너스는 블록 프로포저가 "),d("code",[v._v("precommit")]),v._v("의 100%를 포함하는 경우 최대 "),d("code",[v._v("bonus_proposer_reward")]),v._v("까지 선의적(linearly)으로 증가합니다.")]),v._v(" "),d("li",[d("code",[v._v("withdraw_addr_enabled")]),v._v(": 파라미터 값이 "),d("code",[v._v("true")]),v._v("인 경우, 위임자는 위임 보상을 받을 별도의 주소를 지정할 수 있습니다. 제네시스에서 토큰 전송 기능을 비활성화하기 원하시는 경우, 토큰 전송 잠금 기능을 우회할 수 있으니 "),d("code",[v._v("false")]),v._v("로 설정하세요.")]),v._v(" "),d("li",[d("code",[v._v("delegator_withdraw_infos")]),v._v(": 위임자들의 보상 출금 주소 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("previous_proposer")]),v._v(": 지난 블록의 프로포저입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v('""')]),v._v(" 값으로 입력하세요")]),v._v(" "),d("li",[d("code",[v._v("outstanding_rewards")]),v._v(": 보상 출금이 진행되지 않은 리워드입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_accumulated_commission")]),v._v(": 검증인 커미션 중 출금되지 않은 커미션입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_historical_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validators_current_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 현재 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegator_starting_infos")]),v._v(": 검증인 검증 기간, 위임자 스테이킹 토큰 수량, creation height (슬래싱이 발생한 경우 확인용) 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_slash_events")]),v._v(": 과거 검증인의 슬래싱 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"거버넌스-governance"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-governance"}},[v._v("#")]),v._v(" 거버넌스(governance)")]),v._v(" "),d("p",[d("code",[v._v("gov")]),v._v(" 모듈은 모든 거버넌스 관련 트랜잭션을 처리합니다. 제네시스 파일의 기본 "),d("code",[v._v("gov")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("starting_proposal_id")]),v._v(": 이 파라미터는 첫 프로포절의 ID를 정의합니다. 각 프로포절은 고유한 ID를 보유합니다.")]),v._v(" "),d("li",[d("code",[v._v("deposits")]),v._v(": 각 프로포절 ID에 대한 보증금 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("proposals")]),v._v(": 각 프로포절 ID에 대한 프로포절 목록입니다.")]),v._v(" "),d("li",[d("code",[v._v("deposit_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("min_deposit")]),v._v(": 프로포절의 "),d("code",[v._v("voting period")]),v._v(" 단계를 시작하기 위해 필요한 최소 보증금 수량입니다. 만약 다수 단위를 적용할 경우 "),d("code",[v._v("OR")]),v._v(" 연산자를 사용하세요.")]),v._v(" "),d("li",[d("code",[v._v("max_deposit_period")]),v._v(": 프로포절 보증금 추가가 가능한 기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력). 이 기간이 지난 이후에는 프로포절 보증금 추가가 불가능합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("voting_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("voting_period")]),v._v(": 프로포절의 투표 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력).")])])]),v._v(" "),d("li",[d("code",[v._v("tally_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("quorum")]),v._v(": 프로포절 투표 결과가 유효하기 위한 위임된 스테이킹 토큰의 투표율.")]),v._v(" "),d("li",[d("code",[v._v("threshold")]),v._v(": 프로포절 투표가 통과하기 위해 필요한 최소 "),d("code",[v._v("YES")]),v._v(" 투표 %.")]),v._v(" "),d("li",[d("code",[v._v("veto")]),v._v(": 프로포절 투표 결과가 유효하기 위한 "),d("code",[v._v("NO_WITH_VETO")]),v._v(" 투표 %의 최대 한도.")]),v._v(" "),d("li",[d("code",[v._v("governance_penalty")]),v._v(": 프로포절 투표에 참여하지 않은 검증인들에 부과하는 페널티.")])])])]),v._v(" "),d("h3",{attrs:{id:"슬래싱-slashing"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-slashing"}},[v._v("#")]),v._v(" 슬래싱(slashing)")]),v._v(" "),d("p",[d("code",[v._v("slashing")]),v._v(" 모듈은 검증인의 악의적인 행동으로 발생하는 위임자 슬래싱 페널티 로직을 처리합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_evidence_age")]),v._v(": 증거 최대 유효기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위)")]),v._v(" "),d("li",[d("code",[v._v("signed_blocks_window")]),v._v(": 오프라인 검증인 판단을 위해 검토되는 최근 블록 개수.")]),v._v(" "),d("li",[d("code",[v._v("min_signed_per_window")]),v._v(": 검증인이 온라인으로 간주되기 위해"),d("code",[v._v("singed_blocks_window")]),v._v(" 내에 포함되어야하는 최소 "),d("code",[v._v("precommit")]),v._v(" %.")]),v._v(" "),d("li",[d("code",[v._v("downtime_jail_duration")]),v._v(": 다운 타임 슬래싱으로 발생하는 제일(jail) 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_double_sign")]),v._v(": 검증인이 더블 사이닝을 할 경우 슬래싱되는 위임자 위임량의 % 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_downtime")]),v._v(": 검증인이 오프라인인 경우 슬래싱되는 위임자 위임량의 % 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("signing_infos")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 각 검증인의 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("missed_blocks")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 missed blocks 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"제네시스-트랜잭션-genesis-transactions"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-트랜잭션-genesis-transactions"}},[v._v("#")]),v._v(" 제네시스 트랜잭션(genesis transactions)")]),v._v(" "),d("p",[v._v("기본적인 상태에서 제네시스 파일은 "),d("code",[v._v("gentx")]),v._v("를 포함하지 않습니다. "),d("code",[v._v("gentx")]),v._v("는 제네시스 파일 내 "),d("code",[v._v("accounts")]),v._v(" 항목에 있는 스테이킹 토큰을 검증인에게 위임하는 트랜잭션입니다. 실질적으로 제네시스에서 검증인을 생성하는데 사용됩니다. 유효한 "),d("code",[v._v("gentx")]),v._v("를 보유한 검증인(보팅 파워 기준)의 2/3가 "),d("code",[v._v("genesis_time")]),v._v(" 이후 온라인되면 블록체인이 시작됩니다.")]),v._v(" "),d("p",[d("code",[v._v("gentx")]),v._v("는 수동으로 제네시스 파일에 추가되거나 다음 명령어를 사용해 추가할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("~/.gaia/config/gentx")]),v._v("에 있는 모든 "),d("code",[v._v("gentxs")]),v._v("를 제네시스 파일에 추가합니다. 제네시스 트랜잭션을 생성하기 위해서는 "),d("RouterLink",{attrs:{to:"/ko/resources/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[v._v("여기")]),v._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);_.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{499:function(v,_,d){"use strict";d.r(_);var c=d(1),o=Object(c.a)({},(function(){var v=this,_=v.$createElement,d=v._self._c||_;return d("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[d("h1",{attrs:{id:"제네시스-파일"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일"}},[v._v("#")]),v._v(" 제네시스 파일")]),v._v(" "),d("p",[v._v("이 문서는 코스모스 허브 메인넷의 제네시스 파일의 구조를 설명합니다. 또한, 자체 gaia 테스트넷을 운영하기 위해 자체적으로 제네시스 파일을 작성하는 방법을 설명합니다.")]),v._v(" "),d("p",[v._v("참고로 기본 설정이 적용된 제네시스 파일을 사용해 테스트넷을 운영하기 위해서는 다음 명령어를 입력할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ766qF7LmtKG1vbmlrZXIpJmd0OyAtLWNoYWluLWlkICZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),v._v(" "),d("p",[v._v("제네시스 파일은 "),d("code",[v._v("~/.gaia/config/genesis.toml")]),v._v("에 저장됩니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-파일은-무엇인가"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일은-무엇인가"}},[v._v("#")]),v._v(" 제네시스 파일은 무엇인가?")]),v._v(" "),d("p",[v._v("제네시스 파일은 블록체인 초기 상태(state)를 정의하는 JSON 파일입니다. 이는 실질적으로 블록 높이 "),d("code",[v._v("0")]),v._v("을 뜻하며, 첫 블록이 생성되는 "),d("code",[v._v("1")]),v._v(" 블록은 제네시스 파일을 패런트(parent)로 참조합니다.")]),v._v(" "),d("p",[v._v("제네시스 파일에 정의된 상태는 토큰 분배, 제네시스 시간, 기본 파라미터 값 등의 모든 필수 정보를 포함하고 있습니다. 각 정보를 항목별로 정리합니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-시간과-체인-아이디"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-시간과-체인-아이디"}},[v._v("#")]),v._v(" 제네시스 시간과 체인 아이디")]),v._v(" "),d("p",[d("code",[v._v("genesis_time")]),v._v("은 제네시스 파일 상단에 정의됩니다. 제네시스 타임은 블록체인이 시작되는 "),d("code",[v._v("UTC")]),v._v(" 기준 시간을 정의합니다. 해당 시간에 도달하면 제네시스 검증인은 온라인어 컨센서스 과정에 참여를 시작합니다. 블록체인은 제네시스 검증인의 2/3 이상이 (보팅 파워 기준으로) 온라인될 경우에 시작됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),d("p",[d("code",[v._v("chain_id")]),v._v("는 블록체인의 고유 식별 정보입니다. 동일한 소프트웨어를 운영하는 다양한 체인을 구별하기 위해 사용됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),v._v(" "),d("h2",{attrs:{id:"컨센서스-파라미터"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#컨센서스-파라미터"}},[v._v("#")]),v._v(" 컨센서스 파라미터")]),v._v(" "),d("p",[v._v("이후 제네시스 파일은 컨센서스 파라미터 값을 정의합니다. 컨센서스 파라미터는 모든 합의 계층("),d("code",[v._v("gaia")]),v._v("의 경우 "),d("code",[v._v("Tendermint")]),v._v(" 계층) 관련 값을 리그룹(regroup)합니다. 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("block")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_bytes")]),v._v(": 블록 최대 바이트 크기")]),v._v(" "),d("li",[d("code",[v._v("max_gas")]),v._v(": 블록 가스 한도(gas limit). 블록에 포함되는 모든 트랜잭션은 가스를 소모합니다. 블록에 포함되어있는 트랜잭션들의 총 가스 사용량은 이 한도를 초과할 수 없습니다.")])])]),v._v(" "),d("li",[d("code",[v._v("evidence")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_age")]),v._v(": 증거(evidence)는 검증인이 동일한 블록 높이와 합의 라운드(round)에서 두개의 블록을 동시했다는 증거입니다. 위와 같은 행동은 명백한 악의적 행동으로 간주되며 스테이트 머신 계층에서 페널티를 부과합니다. "),d("code",[v._v("max_age")]),v._v(" 값은 증거 유효성이 유지되는 최대 "),d("em",[v._v("블록")]),v._v(" 개수를 의미합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("validator")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pub_key_types")]),v._v(": 검증인이 사용할 수 있는 pubkey 형태입니다("),d("code",[v._v("ed25519")]),v._v(", "),d("code",[v._v("secp256k1")]),v._v(", ...). 현재 "),d("code",[v._v("ed25519")]),v._v("만 지원됩니다.")])])])]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),d("h2",{attrs:{id:"애플리케이션-상태"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#애플리케이션-상태"}},[v._v("#")]),v._v(" 애플리케이션 상태")]),v._v(" "),d("p",[v._v("애플리케이션 상태(application state)는 스테이트 머신(상태 기계, state machine)의 초기 상태를 정의합니다.")]),v._v(" "),d("h3",{attrs:{id:"제네시스-계정"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-계정"}},[v._v("#")]),v._v(" 제네시스 계정")]),v._v(" "),d("p",[v._v("이 항목에서는 초기 토큰 분배가 정의됩니다. 수동으로 제네시스 파일에 계정을 추가할 수 있지만, 다음 명령어를 통해 계정을 추가할 수도 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JiI7IucOiBnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50IGNvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCAxMDAwMDAwMHVhdG9tCgpnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50ICZsdDvqs4TsoJVf7KO87IaMKGFjY291bnRfYWRkcmVzcykmZ3Q7ICZsdDvsiJjrn4koYW1vdW50KSZndDsgJmx0O+uLqOychChkZW5vbSkmZ3Q7Cg=="}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("app_state")]),v._v(" 항목 내 "),d("code",[v._v("accounts")]),v._v(" 리스트에 아이템을 추가합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),d("p",[v._v("각 파라미터 값을 항목별로 설명하겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("sequence_number")]),v._v(": 이 숫자는 계정이 전송한 트랜잭션 수를 추적하는데 사용됩니다. 트랜잭션이 블록에 포함될 때마다 숫자가 증가하며 리플레이 공격(replay attack)을 방지하기 위해 사용됩니다. 기본 값은 "),d("code",[v._v("0")]),v._v(" 입니다.")]),v._v(" "),d("li",[d("code",[v._v("account_number")]),v._v(": 계정 고유 식별번호입니다. 해당 계정의 첫 트랜잭션이 블록에 포함될때 생성됩니다.")]),v._v(" "),d("li",[d("code",[v._v("original_vesting")]),v._v(": "),d("code",[v._v("gaia")]),v._v("는 베스팅(락업) 기능을 지원합니다. 락업 계정이 소유한 토큰 수량을 지정하고, 토큰 전송이 가능할때까지의 시간을 정할 수 있습니다. 락업된 토큰의 스테이킹은 지원됩니다. 기본 값은 "),d("code",[v._v("null")]),v._v("입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_free")]),v._v(": 락업이 풀린 후 전송될 수 있는 위임된 수량을 뜻합니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_vesting")]),v._v(": 아직 락업이 진행중인 위임된 수량을 뜻합니다. 대분분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("start_time")]),v._v(": 락업이 풀리는 시점의 블록 높이입니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("0")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("end_time")]),v._v(": 락업 기간이 마감되는 시점의 블록 높이입니다. 락업이 없는 계정의 표준 값은 "),d("code",[v._v("0")]),v._v("입니다.")])]),v._v(" "),d("h3",{attrs:{id:"뱅크-bank"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#뱅크-bank"}},[v._v("#")]),v._v(" 뱅크(Bank)")]),v._v(" "),d("p",[d("code",[v._v("bank")]),v._v(" 모듈은 토큰을 관리합니다. 이 항목에서 정의될 파라미터는 제네시스 시작시 전송 가능여부를 정의하는 것입니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),d("h3",{attrs:{id:"스테이킹-staking"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-staking"}},[v._v("#")]),v._v(" 스테이킹(Staking)")]),v._v(" "),d("p",[d("code",[v._v("staking")]),v._v(" 모듈은 스테이트 머신의 지분증명(proof-of-stake) 로직의 대다수를 처리합니다. 이 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("not_bonded_tokens")]),v._v(": 제네시스 시점에서 위임되지 않은 토큰의 수량을 정의합니다. 대부분의 상황에서 이 값은 스테이킹 토큰의 총 발행량을 뜻합니다 (이 예시에서는 "),d("code",[v._v("uatom")]),v._v(" 단위로 정의됩니다).")]),v._v(" "),d("li",[d("code",[v._v("bonded_tokens")]),v._v(": 제네시스 시점에서 위임된 토큰의 수량입니다. 대부분 상황에서 이 값은 "),d("code",[v._v("0")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("unbonding_time")]),v._v(": 토큰의 언본딩이 완료될 때까지의 기간을 "),d("em",[v._v("나노초(nanosecond)")]),v._v(" 단위로 정의합니다.")]),v._v(" "),d("li",[d("code",[v._v("max_validators")]),v._v(": 최대 검증인 수입니다.")]),v._v(" "),d("li",[d("code",[v._v("max_entries")]),v._v(": 특정 검증인/위임자 쌍에서 동시에 진행될 수 있는 최대 언본딩/재위임 회수.")]),v._v(" "),d("li",[d("code",[v._v("bond_denom")]),v._v(": 스테이킹 토큰 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("last_total_power")]),v._v(": 보팅 파워 수치. 통상 제네시스 시점에서 "),d("code",[v._v("0")]),v._v("입니다 (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("last_validator_powers")]),v._v(": 각 검증인의 가장 최근 보팅 파워 수치입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("validators")]),v._v(": 가장 최근 검증인 목록. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("bonds")]),v._v(": 가장 최근 위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("unbonding_delegations")]),v._v(": 가장 최근 위임 취소 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("redelegations")]),v._v(": 가장 최근 재위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("exported")]),v._v(": 제네시스 파일이 과거 상태를 기반을 내보내어 작성된 여부.")])]),v._v(" "),d("h3",{attrs:{id:"민트-mint"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#민트-mint"}},[v._v("#")]),v._v(" 민트(mint)")]),v._v(" "),d("p",[d("code",[v._v("mint")]),v._v(" 모듈은 토큰 발행량의 인플레이션 관련 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("mint")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("minter")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("inflation")]),v._v(": 토큰 총 발행량의 기본 연간 인플레이션 % (주 단위 복리 기준). "),d("code",[v._v("0.070000000000000000")]),v._v(" 값은 주 단위 복리 기준으로 연간 "),d("code",[v._v("7%")]),v._v(" 인플레이션을 뜻합니다.")]),v._v(" "),d("li",[d("code",[v._v("annual_provisions")]),v._v(": 매 블록마다 계산됨. 기본 값은 "),d("code",[v._v("0.000000000000000000")]),v._v("으로 시작합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("mint_denom")]),v._v(": 인플레이션 대상 스테이킹 토큰의 단위.")]),v._v(" "),d("li",[d("code",[v._v("inflation_rate_change")]),v._v(": 연간 인플레이션 변화율.")]),v._v(" "),d("li",[d("code",[v._v("inflation_max")]),v._v(": 인플레이션 최대 수치.")]),v._v(" "),d("li",[d("code",[v._v("inflation_min")]),v._v(": 인플레이션 최소 수치.")]),v._v(" "),d("li",[d("code",[v._v("goal_bonded")]),v._v(": 총 발행량 중 위임 목표 % 수치. 만약 현재 위임 비율이 해당 이 값보다 낮은 경우, 인플레이션은 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_max")]),v._v("까지 증가합니다. 반대로 현재 위임 비율이 이 수치보다 높을 경우 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_min")]),v._v("까지 감소합니다.")]),v._v(" "),d("li",[d("code",[v._v("blocks_per_year")]),v._v(": 연간 생성되는 블록 예상 수치. 스테이킹 토큰 인플레이션으로 발생하는 토큰을 각 블록당 지급(블록 프로비젼, block provisions)하는데 계산하는 용도로 사용됩니다.")])])])]),v._v(" "),d("h3",{attrs:{id:"분배-distribution"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#분배-distribution"}},[v._v("#")]),v._v(" 분배(distribution)")]),v._v(" "),d("p",[d("code",[v._v("distribution")]),v._v(" 모듈은 블록당 위임 보상(block provision)을 검증인과 위임자에게 분배하는 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("distribution")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("fee_pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("community_pool")]),v._v(": 커뮤니티 풀은 임무 수행(개발, 커뮤니티 빌딩, 등)의 보상으로 제공될 수 있는 토큰 자금입니다. 토큰 풀의 사용은 거버넌스 프로포절을 통해 결정됩니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("community_tax")]),v._v(": 블록 보상과 수수료 중 커뮤니티 풀로 예치될 '세금' %.")]),v._v(" "),d("li",[d("code",[v._v("base_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드. 값이 "),d("code",[v._v("0.010000000000000000")]),v._v("인 경우, 수수료의 1%가 블록 프로포저에게 지급됩니다.")]),v._v(" "),d("li",[d("code",[v._v("bonus_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드의 "),d("em",[v._v("최대 한도")]),v._v(". 보너스 수량은 블록 프로포저가 포함한 "),d("code",[v._v("precommit")]),v._v(" 수량에 비례합니다. 만약 프로포저가 보팅 파워 기준으로"),d("code",[v._v("precommit")]),v._v("의 2/3을 포함한 경우 (2/3는 유효한 블록을 생성하기 위한 최소 한도입니다), "),d("code",[v._v("base_proposer_reward")]),v._v(" 만큼의 보너스를 지급 받습니다. 보너스는 블록 프로포저가 "),d("code",[v._v("precommit")]),v._v("의 100%를 포함하는 경우 최대 "),d("code",[v._v("bonus_proposer_reward")]),v._v("까지 선의적(linearly)으로 증가합니다.")]),v._v(" "),d("li",[d("code",[v._v("withdraw_addr_enabled")]),v._v(": 파라미터 값이 "),d("code",[v._v("true")]),v._v("인 경우, 위임자는 위임 보상을 받을 별도의 주소를 지정할 수 있습니다. 제네시스에서 토큰 전송 기능을 비활성화하기 원하시는 경우, 토큰 전송 잠금 기능을 우회할 수 있으니 "),d("code",[v._v("false")]),v._v("로 설정하세요.")]),v._v(" "),d("li",[d("code",[v._v("delegator_withdraw_infos")]),v._v(": 위임자들의 보상 출금 주소 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("previous_proposer")]),v._v(": 지난 블록의 프로포저입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v('""')]),v._v(" 값으로 입력하세요")]),v._v(" "),d("li",[d("code",[v._v("outstanding_rewards")]),v._v(": 보상 출금이 진행되지 않은 리워드입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_accumulated_commission")]),v._v(": 검증인 커미션 중 출금되지 않은 커미션입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_historical_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validators_current_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 현재 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegator_starting_infos")]),v._v(": 검증인 검증 기간, 위임자 스테이킹 토큰 수량, creation height (슬래싱이 발생한 경우 확인용) 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_slash_events")]),v._v(": 과거 검증인의 슬래싱 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"거버넌스-governance"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-governance"}},[v._v("#")]),v._v(" 거버넌스(governance)")]),v._v(" "),d("p",[d("code",[v._v("gov")]),v._v(" 모듈은 모든 거버넌스 관련 트랜잭션을 처리합니다. 제네시스 파일의 기본 "),d("code",[v._v("gov")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("starting_proposal_id")]),v._v(": 이 파라미터는 첫 프로포절의 ID를 정의합니다. 각 프로포절은 고유한 ID를 보유합니다.")]),v._v(" "),d("li",[d("code",[v._v("deposits")]),v._v(": 각 프로포절 ID에 대한 보증금 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("proposals")]),v._v(": 각 프로포절 ID에 대한 프로포절 목록입니다.")]),v._v(" "),d("li",[d("code",[v._v("deposit_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("min_deposit")]),v._v(": 프로포절의 "),d("code",[v._v("voting period")]),v._v(" 단계를 시작하기 위해 필요한 최소 보증금 수량입니다. 만약 다수 단위를 적용할 경우 "),d("code",[v._v("OR")]),v._v(" 연산자를 사용하세요.")]),v._v(" "),d("li",[d("code",[v._v("max_deposit_period")]),v._v(": 프로포절 보증금 추가가 가능한 기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력). 이 기간이 지난 이후에는 프로포절 보증금 추가가 불가능합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("voting_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("voting_period")]),v._v(": 프로포절의 투표 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력).")])])]),v._v(" "),d("li",[d("code",[v._v("tally_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("quorum")]),v._v(": 프로포절 투표 결과가 유효하기 위한 위임된 스테이킹 토큰의 투표율.")]),v._v(" "),d("li",[d("code",[v._v("threshold")]),v._v(": 프로포절 투표가 통과하기 위해 필요한 최소 "),d("code",[v._v("YES")]),v._v(" 투표 %.")]),v._v(" "),d("li",[d("code",[v._v("veto")]),v._v(": 프로포절 투표 결과가 유효하기 위한 "),d("code",[v._v("NO_WITH_VETO")]),v._v(" 투표 %의 최대 한도.")]),v._v(" "),d("li",[d("code",[v._v("governance_penalty")]),v._v(": 프로포절 투표에 참여하지 않은 검증인들에 부과하는 페널티.")])])])]),v._v(" "),d("h3",{attrs:{id:"슬래싱-slashing"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-slashing"}},[v._v("#")]),v._v(" 슬래싱(slashing)")]),v._v(" "),d("p",[d("code",[v._v("slashing")]),v._v(" 모듈은 검증인의 악의적인 행동으로 발생하는 위임자 슬래싱 페널티 로직을 처리합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_evidence_age")]),v._v(": 증거 최대 유효기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위)")]),v._v(" "),d("li",[d("code",[v._v("signed_blocks_window")]),v._v(": 오프라인 검증인 판단을 위해 검토되는 최근 블록 개수.")]),v._v(" "),d("li",[d("code",[v._v("min_signed_per_window")]),v._v(": 검증인이 온라인으로 간주되기 위해"),d("code",[v._v("singed_blocks_window")]),v._v(" 내에 포함되어야하는 최소 "),d("code",[v._v("precommit")]),v._v(" %.")]),v._v(" "),d("li",[d("code",[v._v("downtime_jail_duration")]),v._v(": 다운 타임 슬래싱으로 발생하는 제일(jail) 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_double_sign")]),v._v(": 검증인이 더블 사이닝을 할 경우 슬래싱되는 위임자 위임량의 % 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_downtime")]),v._v(": 검증인이 오프라인인 경우 슬래싱되는 위임자 위임량의 % 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("signing_infos")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 각 검증인의 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("missed_blocks")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 missed blocks 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"제네시스-트랜잭션-genesis-transactions"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-트랜잭션-genesis-transactions"}},[v._v("#")]),v._v(" 제네시스 트랜잭션(genesis transactions)")]),v._v(" "),d("p",[v._v("기본적인 상태에서 제네시스 파일은 "),d("code",[v._v("gentx")]),v._v("를 포함하지 않습니다. "),d("code",[v._v("gentx")]),v._v("는 제네시스 파일 내 "),d("code",[v._v("accounts")]),v._v(" 항목에 있는 스테이킹 토큰을 검증인에게 위임하는 트랜잭션입니다. 실질적으로 제네시스에서 검증인을 생성하는데 사용됩니다. 유효한 "),d("code",[v._v("gentx")]),v._v("를 보유한 검증인(보팅 파워 기준)의 2/3가 "),d("code",[v._v("genesis_time")]),v._v(" 이후 온라인되면 블록체인이 시작됩니다.")]),v._v(" "),d("p",[d("code",[v._v("gentx")]),v._v("는 수동으로 제네시스 파일에 추가되거나 다음 명령어를 사용해 추가할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("~/.gaia/config/gentx")]),v._v("에 있는 모든 "),d("code",[v._v("gentxs")]),v._v("를 제네시스 파일에 추가합니다. 제네시스 트랜잭션을 생성하기 위해서는 "),d("RouterLink",{attrs:{to:"/ko/resources/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[v._v("여기")]),v._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);_.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/137.48900642.js b/main/assets/js/137.685386f7.js similarity index 99% rename from main/assets/js/137.48900642.js rename to main/assets/js/137.685386f7.js index 457daeac28c..aaf94470e6a 100644 --- a/main/assets/js/137.48900642.js +++ b/main/assets/js/137.685386f7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{597: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],{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 diff --git a/main/assets/js/138.45b49d81.js b/main/assets/js/138.05c1d988.js similarity index 99% rename from main/assets/js/138.45b49d81.js rename to main/assets/js/138.05c1d988.js index 73a523f89c4..fd5ee4ce64b 100644 --- a/main/assets/js/138.45b49d81.js +++ b/main/assets/js/138.05c1d988.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{563:function(e,t,a){"use strict";a.r(t);var o=a(1),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"레저-ledger-나노-하드웨어-지갑-지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#레저-ledger-나노-하드웨어-지갑-지원"}},[e._v("#")]),e._v(" 레저(Ledger) 나노 하드웨어 지갑 지원")]),e._v(" "),a("p",[e._v("암호화폐 자산을 하드웨어 지갑을 사용하여 보관하는 것은 보안을 상당히 향상합니다. 렛저 기기는 시드와 프라이빗 키를 보관하는 '영역' 역할을 하며, 트래잭션을 기기 내에서 서명합니다. 민감한 정보는 절대로 렛저 기기 밖으로 노출되지 않습니다. 이 문서는 코스모스 렛저 앱을 Gaia CLI 환경에서 사용하거나 "),a("a",{attrs:{href:"https://lunie.io/#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 웹 지갑에서 사용하는 방법을 설명합니다.")]),e._v(" "),a("p",[e._v("모든 렛저 기기의 핵심에는 프라이빗 키를 생성하는데 사용되는 네모닉 시드 단어가 있습니다. 이 시드 단어는 처음 렛저 기기를 활성화할때 생성됩니다(또는 직접 입력됩니다). 이 네모닉 시드는 코스모스와 호환되며 이를 기반으로 코스모스 계정을 생성하실 수 있쓰빈다.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[e._v("코스모스 허브 네트워크에서 새로운 계정을 생성하고 트랜잭션을 전송하는데 사용되는 도구는 "),a("code",[e._v("gaiad")]),e._v("입니다. 다음은 "),a("code",[e._v("gaiad")]),e._v("를 사용하는데 필요한 정보입니다. 만약 CLI 기반 도구가 익숙하지 않으신 경우, 하단에 있는 Lunie.io 지갑 사용법을 참고하세요.")]),e._v(" "),a("h3",{attrs:{id:"시작하기-전에"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#시작하기-전에"}},[e._v("#")]),e._v(" 시작하기 전에")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ledger-cosmos/blob/master/README.md#installing",target:"_blank",rel:"noopener noreferrer"}},[e._v("렛저 기기에 코스모스 앱 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Golang 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia 설치하기"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("다음 명령어를 입력하여 Gaiacli가 올바르게 설치된 것을 확인하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQKCg=="}}),e._v(" "),a("h3",{attrs:{id:"렛저-키-추가하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#렛저-키-추가하기"}},[e._v("#")]),e._v(" 렛저 키 추가하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 연결하시고 잠금해제 하세요")]),e._v(" "),a("li",[e._v("렛저 기기에서 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("렛저키를 사용해 Gaiacli에서 새로운 계정을 생성하세요")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("키 명칭(keyName)")]),e._v(" 파라미터에 의미있는 값을 입력하세요. "),a("code",[e._v("ledger")]),e._v(" 플래그는 "),a("code",[e._v("gaiad")]),e._v("가 렛저 기기의 시드를 사용해 계정을 생성할 것을 알립니다.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("코스모스는 "),a("RouterLink",{attrs:{to:"/ko/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(" 표준을 사용합니다. HD Wallet은 하나의 렛저 시드로부터 다수의 계정을 생성할 수 있게 합니다. 같은 렛저 기기에서 추가 계정을 생성하기 위해서는 다음 명령어를 실행하세요:")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+yDiOuhnOyatF/tgqRf66qF7LmtKHNlY29uZEtleU5hbWUpJmd0OyAtLWxlZGdlcgo="}}),e._v(" "),a("h3",{attrs:{id:"주소-확인하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("키를 새로 생성했을때 표기된 주소와 기기에서 표기된 주소가 일치하는지 확인하세요.")]),e._v(" "),a("h3",{attrs:{id:"풀노드에-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#풀노드에-연결하기"}},[e._v("#")]),e._v(" 풀노드에 연결하기")]),e._v(" "),a("p",[e._v("이제 gaiacli를 코스모스 풀노드의 주소와 "),a("code",[e._v("chain-id")]),e._v("값을 설정해야 합니다. 이 예시에서는 코러스원 검증인이 운영하는 공개 노드를 사용해 "),a("code",[e._v("cosmoshub-2")]),e._v("에 연결하는 방법을 알아보겠습니다. 단, "),a("code",[e._v("gaiad")]),e._v("는 다른 풀노드에 연결하실 수 있다는 점을 참고하세요. Gaiacli에서 설정하는 "),a("code",[e._v("chain-id")]),e._v("와 풀노드의 "),a("code",[e._v("chain-id")]),e._v("은 동일해야합니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("다음과 같은 명령어를 입력하여 연결 상태를 조회하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("자체 풀노드를 로컬 환경에서 운영하기 위해서는 다음 "),a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/join-mainnet.html#setting-up-a-new-node",target:"_blank",rel:"noopener noreferrer"}},[e._v("글"),a("OutboundLink")],1),e._v("을 참고하세요.")])]),e._v(" "),a("h3",{attrs:{id:"트랜잭션-서명하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-서명하기"}},[e._v("#")]),e._v(" 트랜잭션 서명하기")]),e._v(" "),a("p",[e._v("이제 트랜잭션을 서명하고 전송할 수 있습니다. Gaiacli를 사용해 트랜잭션을 전송하기 위해서는 "),a("code",[e._v("tx send")]),e._v(" 명령어를 사용하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("다음 명령어를 실행하기 전 렛저 기기에 비밀번호를 입력하시고 코스모스 앱을 실행하세요")])]),e._v(" "),a("p",[e._v("렛저의 "),a("code",[e._v("키_명칭(keyName)")]),e._v("을 지정하여 Gaia와 코스모스 렛저 앱을 연결하고 트랜잭션을 서명하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvtgqRf66qF7LmtKGtleU5hbWUpJmd0OyAmbHQ77IiY7Iug7J6QX+yjvOyGjChkZXN0aW5hdGlvbkFkZHJlc3MpJmd0OyAmbHQ77IiY65+JKGFtb3VudCkmZ3Q7Jmx0O+uLqOychChkZW5vbWluYXRpb24pJmd0Owo="}}),e._v(" "),a("p",[e._v("만약 "),a("code",[e._v("confirm transaction before signing")]),e._v("이 표기되는 경우, "),a("code",[e._v("Y")]),e._v("를 입력하여 진행하세요.")]),e._v(" "),a("p",[e._v("이후, 렛저 기기에서 트랜잭션 내용을 확인하고 승인합니다. 화면에 표기되는 트랜잭션 내용 JSON을 확인하세요. 각 값을 하나씩 확인하실 수 있습니다. 하단 내용을 확인하여 표준 트랜잭션 내용을 확인하세요.")]),e._v(" "),a("p",[e._v("이제 "),a("RouterLink",{attrs:{to:"/ko/resources/delegator-guide-cli.html#sending-transactions"}},[e._v("네트워크에서 트랜잭션을 전송")]),e._v("할 준비가 되었습니다.")],1),e._v(" "),a("h3",{attrs:{id:"자산-받기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#자산-받기"}},[e._v("#")]),e._v(" 자산 받기")]),e._v(" "),a("p",[e._v("렛저 기기의 코스모스 계정으로 자산을 받기 위해서는 다음 명령어를 입력하여 주소를 확인하세요 ("),a("code",[e._v("TYPE ledger")]),e._v("로 표기되는 주소):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"추가-참고-문서"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#추가-참고-문서"}},[e._v("#")]),e._v(" 추가 참고 문서")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._v("를 어떻게 사용해야되실지 모르시겠나요? 명령어 값을 비운 상태로 입력하여 각 명령어의 정보를 확인하실 수 있습니다.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("code",[e._v("gaiad")]),e._v(" 명령어는 중첩된 형태로 존재합니다. "),a("code",[e._v("$ gaiad")]),e._v(" 명령어는 최상위 명령어만을 표기합니다(status, config, query, tx). 하위 명령어에 대한 정보는 해당 명령어에 help 명령어를 추가하여 확인할 수 있습니다.")]),e._v(" "),a("p",[e._v("예를 들어 "),a("code",[e._v("query")]),e._v(" 명령어에 대한 정보를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("또는 "),a("code",[e._v("tx")]),e._v("(트랜잭션) 명령어를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("를 입력하세요.")]),e._v(" "),a("h1",{attrs:{id:"lunie-io"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lunie-io"}},[e._v("#")]),e._v(" Lunie.io")]),e._v(" "),a("p",[e._v("Lunie 웹 지갑은 렛저 나노 S 기기를 사용해 서명하는 것을 지원합니다. 다음은 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 지갑을 Ledger 기기로 사용하는 방법을 정리합니다.")]),e._v(" "),a("h3",{attrs:{id:"기기-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#기기-연결하기"}},[e._v("#")]),e._v(" 기기 연결하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 컴퓨터에 연결하시고, 비밀번호를 입력하여 잠금해제한 후 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("웹 브라우저에서 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://lunie.io"),a("OutboundLink")],1),e._v("를 가세요")]),e._v(" "),a("li",[e._v('"Sign In"을 클릭하세요')]),e._v(" "),a("li",[e._v('"Sign in with Ledger Nano S"를 선택하세요')])]),e._v(" "),a("h3",{attrs:{id:"주소-확인하기-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기-2"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("렛저에 표기되는 주소와 Lunie.io에 표기되는 주소가 동일한지 먼저 확인하시고 다음 단계를 진행하세요. 확인이 된 경우, Lunie에서 렛저 키를 사용해 트랜잭션을 서명할 수 있습니다.")]),e._v(" "),a("p",[e._v("Lunie에 대해 더 알고싶으시면 이 "),a("a",{attrs:{href:"https://medium.com/easy2stake/how-to-delegate-re-delegate-un-delegate-cosmos-atoms-with-the-lunie-web-wallet-eb72369e52db",target:"_blank",rel:"noopener noreferrer"}},[e._v("투토리얼"),a("OutboundLink")],1),e._v("을 참고하셔서 아톰 위임과 Lunie 웹 지갑에 대해서 더 알아보세요.")]),e._v(" "),a("h1",{attrs:{id:"코스모스-표준-트랜잭션"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-표준-트랜잭션"}},[e._v("#")]),e._v(" 코스모스 표준 트랜잭션")]),e._v(" "),a("p",[e._v("코스모스의 트랜잭션은 코스모스 SDK의"),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("표준 트랜잭션 타입(Standard Transaction Type)"),a("OutboundLink")],1),e._v("를 응용합니다. 렛저 기기는 이 오브젝트의 시리얼화된 JSON을 기기에서 표기하며, 트랜잭션 서명 전 검토하실 수 있습니다. 각 필드에 대한 설명은 다음과 같습니다:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": 트랜잭션을 전송할 체인, (예, "),a("code",[e._v("gaia-13003")]),e._v(" 테스트넷 또는 "),a("code",[e._v("cosmoshub-2")]),e._v(" 메인넷)")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": 계정에 최초로 자금을 입금할때 생성되는 계정의 고유 글로벌 ID")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": 계정의 논스 값. 이후 발생하는 트랜잭션 마다 이 값은 증가합니다.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": 트랜잭션 수수료, 가스 수량, 그리고 수수료의 단위를 설명하는 JSON 오브젝트")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": (선택 값) 트랜잭션 태깅 등의 용도로 사용되는 텍스트 값")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": 트랜잭션에 포함된 메시지 어레이. 더블클릭하여 하위 JSON 값을 확인하실 수 있습니다.")])]),e._v(" "),a("h1",{attrs:{id:"지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#지원"}},[e._v("#")]),e._v(" 지원")]),e._v(" "),a("p",[e._v("추가적인 지원이 필요하신 경우, 코스모스 포럼의 "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("과거 글"),a("OutboundLink")],1),e._v("을 참고하세요.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("텔레그램 채널"),a("OutboundLink")],1),e._v("을 통해 문의하시거나 다음 커뮤니티 가이드를 참고하세요:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://medium.com/@miranugumanova",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ztake"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/@miranugumanova/how-to-re-delegate-cosmos-atoms-with-lunie-web-wallet-8303752832c5",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to Redelegate Cosmos Atoms with the Lunie Web Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium-cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{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.e95740f0.js b/main/assets/js/139.d91652a8.js similarity index 99% rename from main/assets/js/139.e95740f0.js rename to main/assets/js/139.d91652a8.js index 4a517191bb6..4e8fac603ec 100644 --- a/main/assets/js/139.e95740f0.js +++ b/main/assets/js/139.d91652a8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{598: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],{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 diff --git a/main/assets/js/140.b9fdfd5c.js b/main/assets/js/140.979c3402.js similarity index 98% rename from main/assets/js/140.b9fdfd5c.js rename to main/assets/js/140.979c3402.js index 7d3b57fac82..226ab2c931b 100644 --- a/main/assets/js/140.b9fdfd5c.js +++ b/main/assets/js/140.979c3402.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{600:function(t,r,a){"use strict";a.r(r);var e=a(1),s=Object(e.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",[a("RouterLink",{attrs:{to:"/introduction/cosmos-hub.html"}},[t._v("코스모스 허브")]),t._v("는 "),a("RouterLink",{attrs:{to:"/introduction/tendermint.html"}},[t._v("텐더민트")]),t._v(" 기반으로 만들어졌으며 특정 검증인들이 블록체인에 새로운 블록을 기록하는 절차를 기반으로 설계되었습니다. 검증인들은 각 검증인들의 프라이빗키로 서명된 암호화된 표(votes)를 전파하면서 합의 프로토콜에 참여합니다.")],1),t._v(" "),a("p",[t._v("검증인 후보는 본인들의 아톰을 자체적으로 위임하거나, 위임자들의 아톰을 위임받을 수 있습니다. 코스모스 허브는 100개의 검증인으로 시작하여 300개의 검증인으로 숫자를 늘려나갈 예정입니다. 검증인은 위임량에 따라서 정해지며, 상위 100위 검증인은 코스모스 검증인으로 선출됩니다.")]),t._v(" "),a("p",[t._v("검증인들과 위임자들은 텐더민트 합의 프로토콜에 참여하며 블록생성에 대한 보상을 지급받게 됩니다. 초기에 트랜잭션 수수료는 아톰으로 결제되지만, 거버넌스로 통과된 '화이트리스트 토큰'들이 수수료 토큰으로 이용될 수 있습니다. 추가적으로 검증인들은 본인의 검증인 서비스 제공에 대한 커미션을 측정할 수 있습니다.")]),t._v(" "),a("p",[t._v("만약 검증인이 이중서명(double sign)을 하거나, 자주 오프라인 되거나 또는 거버넌스에 참여하지 않는 경우, 그들의 아톰과 해당 검증인에게 위임된 아톰은 '슬래싱'당할 수 있습니다. 슬래싱 페널티는 악의적 행동의 중대성에 따라 비례합니다.")]),t._v(" "),a("h2",{attrs:{id:"하드웨어"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#하드웨어"}},[t._v("#")]),t._v(" 하드웨어")]),t._v(" "),a("p",[t._v("현재 검증인의 키 관리에 적합한 클라우드 솔루션은 없습니다. 앞으로 클라우드 SGX 도입이 되면서 조금 더 안전한 솔루션이 제공될 수 있을 것으로 기대되고 있습니다. 하지만 현재로써 클라우드 키 관리에 리스크가 있기 때문에 검증인들은 제한된 안전한 구역에 장비를 세팅하는 것을 추천합니다. 보안이 확보되는 특정 데이터 센터의 코로케이션(co-location) 같은 형태로 운영이 될 수 있습니다.")]),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-websites/127/3",target:"_blank",rel:"noopener noreferrer"}},[t._v("포럼"),a("OutboundLink")],1),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("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("검증인 채팅"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://forum.cosmos.network/c/validating",target:"_blank",rel:"noopener noreferrer"}},[t._v("검증인 포럼"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{570:function(t,r,a){"use strict";a.r(r);var e=a(1),s=Object(e.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",[a("RouterLink",{attrs:{to:"/introduction/cosmos-hub.html"}},[t._v("코스모스 허브")]),t._v("는 "),a("RouterLink",{attrs:{to:"/introduction/tendermint.html"}},[t._v("텐더민트")]),t._v(" 기반으로 만들어졌으며 특정 검증인들이 블록체인에 새로운 블록을 기록하는 절차를 기반으로 설계되었습니다. 검증인들은 각 검증인들의 프라이빗키로 서명된 암호화된 표(votes)를 전파하면서 합의 프로토콜에 참여합니다.")],1),t._v(" "),a("p",[t._v("검증인 후보는 본인들의 아톰을 자체적으로 위임하거나, 위임자들의 아톰을 위임받을 수 있습니다. 코스모스 허브는 100개의 검증인으로 시작하여 300개의 검증인으로 숫자를 늘려나갈 예정입니다. 검증인은 위임량에 따라서 정해지며, 상위 100위 검증인은 코스모스 검증인으로 선출됩니다.")]),t._v(" "),a("p",[t._v("검증인들과 위임자들은 텐더민트 합의 프로토콜에 참여하며 블록생성에 대한 보상을 지급받게 됩니다. 초기에 트랜잭션 수수료는 아톰으로 결제되지만, 거버넌스로 통과된 '화이트리스트 토큰'들이 수수료 토큰으로 이용될 수 있습니다. 추가적으로 검증인들은 본인의 검증인 서비스 제공에 대한 커미션을 측정할 수 있습니다.")]),t._v(" "),a("p",[t._v("만약 검증인이 이중서명(double sign)을 하거나, 자주 오프라인 되거나 또는 거버넌스에 참여하지 않는 경우, 그들의 아톰과 해당 검증인에게 위임된 아톰은 '슬래싱'당할 수 있습니다. 슬래싱 페널티는 악의적 행동의 중대성에 따라 비례합니다.")]),t._v(" "),a("h2",{attrs:{id:"하드웨어"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#하드웨어"}},[t._v("#")]),t._v(" 하드웨어")]),t._v(" "),a("p",[t._v("현재 검증인의 키 관리에 적합한 클라우드 솔루션은 없습니다. 앞으로 클라우드 SGX 도입이 되면서 조금 더 안전한 솔루션이 제공될 수 있을 것으로 기대되고 있습니다. 하지만 현재로써 클라우드 키 관리에 리스크가 있기 때문에 검증인들은 제한된 안전한 구역에 장비를 세팅하는 것을 추천합니다. 보안이 확보되는 특정 데이터 센터의 코로케이션(co-location) 같은 형태로 운영이 될 수 있습니다.")]),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-websites/127/3",target:"_blank",rel:"noopener noreferrer"}},[t._v("포럼"),a("OutboundLink")],1),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("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("검증인 채팅"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://forum.cosmos.network/c/validating",target:"_blank",rel:"noopener noreferrer"}},[t._v("검증인 포럼"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/141.f18c9e86.js b/main/assets/js/141.57f06276.js similarity index 99% rename from main/assets/js/141.f18c9e86.js rename to main/assets/js/141.57f06276.js index 748bf49f1f4..4a49fa7720a 100644 --- a/main/assets/js/141.f18c9e86.js +++ b/main/assets/js/141.57f06276.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{601: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],{569: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/142.0d58bdd3.js b/main/assets/js/142.3550f901.js similarity index 99% rename from main/assets/js/142.0d58bdd3.js rename to main/assets/js/142.3550f901.js index 59df71b0557..875e8dce8c7 100644 --- a/main/assets/js/142.0d58bdd3.js +++ b/main/assets/js/142.3550f901.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{482:function(v,_,t){"use strict";t.r(_);var a=t(1),r=Object(a.a)({},(function(){var v=this,_=v.$createElement,t=v._self._c||_;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"검증인-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-faq"}},[v._v("#")]),v._v(" 검증인 FAQ")]),v._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[v._v("경고")]),v._v(" "),t("p",[v._v("코스모스 프로젝트는 현재 진행형입니다. 메커니즘과 값은 추후 변경될 수 있다는 점을 확인하십시오.")])]),v._v(" "),t("h2",{attrs:{id:"기본-개념"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#기본-개념"}},[v._v("#")]),v._v(" 기본 개념")]),v._v(" "),t("h3",{attrs:{id:"검증인이란-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인이란-무엇인가"}},[v._v("#")]),v._v(" 검증인이란 무엇인가?")]),v._v(" "),t("p",[t("RouterLink",{attrs:{to:"/introduction/cosmos-hub.html"}},[v._v("코스모스 허브")]),v._v("는 "),t("RouterLink",{attrs:{to:"/introduction/tendermint.html"}},[v._v("텐더민트")]),v._v(" 기반으로 특정 "),t("RouterLink",{attrs:{to:"/validators/overview.html"}},[v._v("검증인")]),v._v(" 들이 네트워크의 보안을 지키는 허브입니다. 검증인들은 풀노드를 운영하며 본인의 프라이빗키로 서명된 암호화된 서명으로 투표를 하며, 이 표를 네트워크에 전파하여 합의 절차에 참여하게 됩니다. 검증인들은 새로운 블록은 블록체인에 기록하고, 이런 역할에 대한 보상을 받게됩니다. 또한 검증인은 프로포절에 대한 투표를 하며 거버넌스 절차에 참여합니다. 검증인들의 순위는 위임 받은 코인 수량에 따라서 정해집니다.")],1),v._v(" "),t("h3",{attrs:{id:"스테이킹-은-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-은-무엇인가"}},[v._v("#")]),v._v(" '스테이킹'은 무엇인가?")]),v._v(" "),t("p",[v._v("코스모스 허브는 퍼블릭 지분증명 블록체인입니다. 이는 각 검증인들의 순위가 각자가 위임받아 본딩된 스테이킹 토큰(아톰)의 수량에 따라 순위가 정해진다는 것입니다. 검증인은 스테이킹은 검증인 자체 물량 또는 위임자가 위임한 토큰이 될 수 있습니다.")]),v._v(" "),t("p",[v._v("검증인이 될 의사가 있는 유저는 누구나 "),t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 발생시켜 의사를 표시하고 검증인이 될 수 있습니다.")]),v._v(" "),t("p",[v._v("(스테이킹 수량으로 결정되는) 검증인의 가중치(weight)는 해당 검증인이 실제 블록 생성에 참여할 수 있는지를 결정하며, 얼마나 자주 블록은 제안할 수 있는지와 얼마나 많은 보상을 가저가는지에 영향을 끼칩니다. 초기에는 가중치가 높은 125개의 검증인들이 실제 블록생성에 참여합니다. 만약 검증인이 이중서명을 하거나, 자주 오프라인 상태로 전환되거나, 거버넌스 절차에 참여하지 않을경우 위임된 모든 아톰(자체물량과 위임 받은 물량 포함)은 '슬래싱'되어 사라지게 됩니다.")]),v._v(" "),t("h3",{attrs:{id:"풀노드는-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#풀노드는-무엇인가"}},[v._v("#")]),v._v(" 풀노드는 무엇인가?")]),v._v(" "),t("p",[v._v("풀노드는 블록의 블록과 트랜잭션을 검증하는 프로그램입니다. 라이트노드와의 차이점은 라이트노드의 경우 블록헤더와 일부 소량의 트랜잭션을 처리하지만, 풀노드는 모든 거래와 모든 기록을 저장하고 검증합니다. 풀노드를 운영하기 위해서는 라이트노드보다 많은 리소스가 필요하지만, 검증인을 운영하기 위해서는 필수적입니다. 실질적으로 풀노드를 운영한다는 것은 최신 버전과 안전성이 확보된 소프트웨어를 다운타임과 네트워크 지연없이 운영하는 것입니다.")]),v._v(" "),t("p",[v._v("검증인을 운영할 의사가 없는 유저들도 풀노드를 운영할 수 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"위임인은-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임인은-무엇인가"}},[v._v("#")]),v._v(" 위임인은 무엇인가?")]),v._v(" "),t("p",[v._v("위임자/위임인은 아톰을 보유하고 있지만 검증인을 운영할 수 없거나, 운영할 의사가 없는 유저입니다. 위임인은 [코스모스 보이저]"),t("RouterLink",{attrs:{to:"/getting-started/voyager.html"}},[v._v("Cosmos Voyager")]),v._v(" 또는 다른 지갑을 통해 본인의 아톰을 검증인에게 위임하여 검증인 보상의 일부를 돌려받을 수 있습니다(보상 분배에 대한 자세한 정보는 "),t("strong",[v._v("스테이킹의 인센티브")]),v._v("와 "),t("strong",[v._v("검증인 커미션은 무엇인가?")]),v._v(" 항목을 확인하십시오).")],1),v._v(" "),t("p",[v._v("위임인은 검증인들과 보상을 나누기 때문에, 위임인에게도 책임이 주어집니다. 만약 검증인이 악의적인 행동을 한다면 위임인들의 토큰 또한 함께 슬래싱될 수 있습니다. 그렇기 때문에 위임인들은 위임을 하기 전 충분한 검토와 조사를 실시한 후 위임을 해야하며, 다수의 검증인에게 분산위임하는 방법을 추천합니다.")]),v._v(" "),t("p",[v._v("위임인들은 코스모스 네트워크를 운영하는 검증인들을 선택하는 역할을 하기 때문에네 네트워크의 핵심적인 역할을 하는 유저입니다. 위임인은 수동적인 역할을 하는 유저가 아닙니다. 활발하게 검증인들의 활동과 행동을 모니터링하고 그들의 거버넌스 참여 투표 등을 자주 확인해야할 필요가 있습니다.")]),v._v(" "),t("h2",{attrs:{id:"검증인-되기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-되기"}},[v._v("#")]),v._v(" 검증인 되기")]),v._v(" "),t("h3",{attrs:{id:"어떻게-검증인이-되는가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#어떻게-검증인이-되는가"}},[v._v("#")]),v._v(" 어떻게 검증인이 되는가?")]),v._v(" "),t("p",[v._v("네트워크에 참여하는 모든 유저는 "),t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 통해 본인이 검증인이 될 의사를 표시할 수 있습니다. 해당 트랜잭션에는 다음과 같은 값이 포함되어야 합니다:")]),v._v(" "),t("ul",[t("li",[v._v("검증인의 PubKey: PubKey와 연관된 프라이빗키는 "),t("em",[v._v("prevote")]),v._v(" 와 "),t("em",[v._v("precommit")]),v._v(" 을 서명하는데 사용됩니다. 이런 방식을 통해서 검증인은 유동적 자금이 있는 계정과 검증용 계정을 따로 관리할 수 있습니다.")]),v._v(" "),t("li",[v._v("검증인 주소: 애플리케이션 단 주소입니다. 이 주소는 공개적으로 검증인의 신원을 확인할때 이용됩니다. 해당 주소와 연관되어있는 프라이빗키는 본딩, 언본딩, 보상 수령, 거버넌스 참여 등에서 이용됩니다.")]),v._v(" "),t("li",[v._v("검증인 이름(moniker)")]),v._v(" "),t("li",[v._v("검증인 웹사이트(선택 사항)")]),v._v(" "),t("li",[v._v("검증인 설명(선택 사항)")]),v._v(" "),t("li",[v._v("최초 커미션: 블록 검증으로 받는 보상에서 위임인들 지불되기 전 삭감되는 수수료")]),v._v(" "),t("li",[v._v("최대 커미션: 해당 검증인이 설정한 최대 수수료")]),v._v(" "),t("li",[v._v("최소 셀프본딩 수량: 검증인이 최소로 본딩해야 하는 아톰의 수량. 만약 해당 검증인의 총 위임 수량이 이 값보다 떨어지는 경우, 스테이킹 풀 전체는 언본딩 됩니다.")]),v._v(" "),t("li",[v._v("최초 셀프본딩 수량: 최초로 검증인이 자체 스테이킹 하는 수량.")])]),v._v(" "),t("p",[v._v("이제 검증인이 만들어지면, 위임인들은 해당 검증인에게 아톰을 위임하며 해당 스테이킹 풀의 수량을 늘려갈 수 있습니다. 특정 주소의 총 스테이크는 자체 스테이킹 물량 + 위임 받은 스테이킹 물량입니다.")]),v._v(" "),t("p",[v._v("검증인으로 참가할 의사를 밝힌 모든 검증인 중 스테이킹 수량이 가장 많은 상위 125개의 검증인은 '활성화된 검증인'으로 블록생성에 참여할 수 있게 됩니다. 상위 125 순위 밖으로 나가게 되는 검증인은 "),t("strong",[v._v("bonded 검증인")]),v._v("이 되며 검증인 권한을 일게됩니다. 이때 해당 검증인의 물량은 "),t("strong",[v._v("언본딩 모드")]),v._v("로 들어가면서 서서히 "),t("strong",[v._v("언본딩")]),v._v(" 됩니다.")]),v._v(" "),t("p",[v._v("코스모스 허브의 검증인 수는 시간이 지날수록 다음과 같이 인상될 예정입니다:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("0년차:")]),v._v(" 100")]),v._v(" "),t("li",[t("strong",[v._v("1년차:")]),v._v(" 125")]),v._v(" "),t("li",[t("strong",[v._v("2년차:")]),v._v(" 130")]),v._v(" "),t("li",[t("strong",[v._v("3년차:")]),v._v(" 144")]),v._v(" "),t("li",[t("strong",[v._v("4년차:")]),v._v(" 163")]),v._v(" "),t("li",[t("strong",[v._v("5년차:")]),v._v(" 184")]),v._v(" "),t("li",[t("strong",[v._v("6년차:")]),v._v(" 208")]),v._v(" "),t("li",[t("strong",[v._v("7년차:")]),v._v(" 235")]),v._v(" "),t("li",[t("strong",[v._v("8년차:")]),v._v(" 265")]),v._v(" "),t("li",[t("strong",[v._v("9년차:")]),v._v(" 300")]),v._v(" "),t("li",[t("strong",[v._v("10년차:")]),v._v(" 300")])]),v._v(" "),t("h2",{attrs:{id:"테스트넷"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트넷"}},[v._v("#")]),v._v(" 테스트넷")]),v._v(" "),t("h3",{attrs:{id:"어떻게-테스트넷에-참여할-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#어떻게-테스트넷에-참여할-수-있나요"}},[v._v("#")]),v._v(" 어떻게 테스트넷에 참여할 수 있나요?")]),v._v(" "),t("p",[v._v("테스트넷은 로치 전에 검증인 세팅을 확인할 수 있는 좋은 환경입니다. 테스트넷에 참가함으로 본인이 검증인 운영을 위해 준비해왔다는 것을 보여주는 기회가 될 수도 있습니다. 테스트넷에 관련된 정보는 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v(" 와 "),t("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v("에서 확인하실 수 있습니다.")]),v._v(" "),t("h3",{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("p",[t("strong",[v._v("텐더민트 키")]),v._v(": 이 키는 블록 해시를 서명할때 이용되는 고유 키입니다. 해당 키는 "),t("code",[v._v("cosmosvalconspub")]),v._v(" 퍼블릭키와 연관되어 있습니다.")]),v._v(" "),t("ul",[t("li",[v._v("gaiad init으로 노드가 생성될때 키가 생성되며")]),v._v(" "),t("li",[v._v("해당 키 정보는 "),t("code",[v._v("gaiad tendermint show-validator")]),v._v(" 명령어로 확인하실 수 있습니다. 예) "),t("code",[v._v("cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c")])])])]),v._v(" "),t("li",[t("p",[t("strong",[v._v("애플리케이션 키")]),v._v(": 이 키는 애플리케이션에 의하여 생성되고 트랜잭션을 서명할때 이용됩니다. 검증인으로써는 이 키를 스테이킹 관련 트랜잭션과 거버넌스 관련 트랜잭션을 서명할때 이용하시게 됩니다. 애플리케이션 키는 "),t("code",[v._v("cosmospub")]),v._v(" 퍼블릭키와 "),t("code",[v._v("cosmos")]),v._v(" 주소와 연관되어있습니다. 두 키 모두 "),t("code",[v._v("gaiad keys add")]),v._v(" 명령으로 생성됩니다.")]),v._v(" "),t("ul",[t("li",[v._v("참고: 특정 검증인의 운영키는 애플리케이션키와 연관이 있으나 "),t("code",[v._v("cosmosvaloper")]),v._v("와 "),t("code",[v._v("cosmosvaloperpub")]),v._v("같은 특정 용도에만 맞는 사전 정의된 prefix를 이용합니다.")])])])]),v._v(" "),t("h3",{attrs:{id:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터들의-상태-state-에는-어떤-것들이-있나요"}},[v._v("#")]),v._v(" 밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?")]),v._v(" "),t("p",[t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 통해 만들어진 검증인은 총 3개의 상태가 있을 수 있습니다:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("bonded")]),v._v(": 검증인은 현재 합의에 참가하고 있는 활성화된 검증인입니다. 이 검증인은 블록 보상을 받을 수 있으며, 악의적인 행동에 대한 슬래싱 페널티를 받을 수도 있습니다.")]),v._v(" "),t("li",[t("code",[v._v("unbonding")]),v._v(": 검증인은 현재 합의에 참가하고 있지 않으면 활성화된 검증인 세트에 포함되어있지 않습니다. 검증인은 블록 생성을 받지 않지만 악의적인 행동에 대한 슬래싱 페널티는 적용될 수 있습니다. 이 상태는 "),t("code",[v._v("bonded")]),v._v(" 상태인 검증인이 "),t("code",[v._v("unbonded")]),v._v("으로 전환되는 중간 상태이며, 만약 "),t("code",[v._v("unbonding")]),v._v(" 상태에서 "),t("code",[v._v("rebond")]),v._v(" 트랜잭션을 발생하지 않으면 최대 3주간 중간 단계에 머무를 수 있습니다.")]),v._v(" "),t("li",[t("code",[v._v("unbonded")]),v._v(": 검증인은 합의에 참가하고 있지 않은 검증인이며, 활성화된 검증인 세트에 포함되어있지 않습니다. 이 검증인은 블록 생성 보상을 받지 않으며 슬래싱 페널티도 적용되지도 않습니다. 이 검증인에게 아톰을 위임하는 것은 가능합니다. "),t("code",[v._v("unbonded")]),v._v(" 상태인 검증인으로 부터의 언본딩은 바로 처리 됩니다.")])]),v._v(" "),t("p",[v._v("위임인들은 관련 검증인들과 동일한 상태를 가지게 됩니다.")]),v._v(" "),t("p",[t("em",[v._v("Note that delegation are not necessarily bonded. Atoms can be delegated and bonded, delegated and unbonding, delegated and unbonded, or liquid")])]),v._v(" "),t("h3",{attrs:{id:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"}},[v._v("#")]),v._v(" 셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?")]),v._v(" "),t("h3",{attrs:{id:"테스트넷-토큰은-어떻게-받을-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트넷-토큰은-어떻게-받을-수-있나요"}},[v._v("#")]),v._v(" 테스트넷 토큰은 어떻게 받을 수 있나요?")]),v._v(" "),t("p",[v._v("테스트넷 토큰을 받고 싶으시다면 "),t("a",{attrs:{href:"https://gaia.faucetcosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[v._v("faucet"),t("OutboundLink")],1),v._v("을 통해서 받으실 수 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"}},[v._v("#")]),v._v(" 활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?")]),v._v(" "),t("p",[v._v("합의 프로세스에 참여하며 블록을 생성하는 검증인이 되기 위해서 특정 수량의 아톰이 필요하지는 않습니다. 다만, 셀프본딩 수량과 위임 받은 수량의 합이 사우이 100위에 들어야 활성화된 검증인이 되실 수 있습니다.")]),v._v(" "),t("h3",{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("strong",[v._v("셀프본딩 수랑:")]),v._v(" 특정 검증인이 자체 본딩한 아톰의 수량입니다. 셀프본딩 수량이 높은 검증인은 본인의 행동에 따라 잃을 수 있는 것이 많기 때문에 더 많은 책임감이 부여될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("위임된 아톰 수량:")]),v._v(" 해당 검증인이 위임받은 아톰의 총 수량. 높은 위임 수량은 해당 검증인에 대한 신뢰도가 높다는 것을 뜻할 수 있습니다. 다만, 대형 검증인은 책임지고 있는 물량이 많기 때문에 해커들의 타겟이 될 수 있다는 위험이 존재할 수 있습니다. 해커들은 특정 검증인이 위임하고 있는 물량의 일정 %를 보상으로 받기 때문에 해커는 대형 검증인을 타겟할 확률이 높습니다. 검증인이 위임받고 있는 아톰이 과도할 경우, 높은 위임 수량은 단점으로 적용될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("커미션:")]),v._v(" 해당 검증인이 생성하는 보상에 대하여 위임인들에게 청구하는 수수료입니다.")]),v._v(" "),t("li",[t("strong",[v._v("검증인 활동 기록:")]),v._v(" 위임인들은 본인들의 아톰을 위임하기 전 검증인들의 활동 기록을 먼저 살펴볼 수 있습니다. 이 항목에는 활동 기간, 과거 투표 현황, 업타임 기록, 노드 공격 기록 등이 포함될 수 있습니다.")])]),v._v(" "),t("p",[v._v("위에 표기된 항목 외에도 검증인 정보에 포함되어있는 웹사이트를 통해서 검증인에 대한 정보를 받을 수 있습니다. 검증인 세팅에 대해 외부 감사를 받은 경우 이를 표기하는 것도 좋은 기록이 될 수 있습니다. 참고로 텐더민트 팀은 특정 검증인에 대한 감사를 진행하지 않습니다. 검증인 선택 기준에 대한 더 많은 정보는 "),t("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[v._v("이 블로그 글"),t("OutboundLink")],1),v._v("에서 확인하실 수 있습니다.")]),v._v(" "),t("h2",{attrs:{id:"검증인들의-책임"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인들의-책임"}},[v._v("#")]),v._v(" 검증인들의 책임")]),v._v(" "),t("h3",{attrs:{id:"검증인을-하기-위해서는-신원을-밝혀야-하나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-하기-위해서는-신원을-밝혀야-하나요"}},[v._v("#")]),v._v(" 검증인을 하기 위해서는 신원을 밝혀야 하나요?")]),v._v(" "),t("p",[v._v("아닙니다. 각 위임인들은 본인들이 설정한 기준으로 각자 투표를 합니다. 검증인들은 홍보 용도를 위해서 본인들에 대한 정보가 표기된 웹사이트를 공개하는 것을 추천합니다. 해당 웹사이트에서 본인들의 정보를 공개할 것인지 또는 익명으로 본인들의 활동 기록만을 공개할 것인지는 검증인의 선택입니다. 코스모스 허브에는 익명의 팀과 팀 정보를 공개하는 팀이 공존할 확률이 높습니다.")]),v._v(" "),t("h3",{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("strong",[v._v("언제나 올바른 소프트웨어로 노드를 운영하기:")]),v._v(" 검증인들은 본인들의 서버가 언제나 온라인 상태며 프라이빗키가 탈취당하지 않게 관리를 해야합니다.")]),v._v(" "),t("li",[t("strong",[v._v("활발하게 거버넌스에 참가하기:")]),v._v(" 검증인들은 모든 프로포절에 투표를 해야 합니다.")])]),v._v(" "),t("p",[v._v("추가적으로 검증인들은 코스모스 커뮤니티에서 활동을 해야합니다. 검증인들은 생태계의 현재 상황에 대해 언제나 인지하며 혹시 있을 변화에 유연하게 대처할 수 있어야 합니다.")]),v._v(" "),t("h3",{attrs:{id:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스에-참여-한다는-것은-무슨-뜻인가요"}},[v._v("#")]),v._v(" '거버넌스에 참여'한다는 것은 무슨 뜻인가요?")]),v._v(" "),t("p",[v._v("코스모스 허브의 검증인들과 위임인들은 블록 가스 제한 같은 운영적 파라미터(operational parameters) 변경을 요청하거나, 소프트웨어 업그레이드를 조율하거나, 코스모스 허브에 대한 헌법을 제안할 수 있습니다.")]),v._v(" "),t("p",[v._v("검증인들은 거버넌스 시스템에서 특별한 역할을 합니다. 검증인들은 코스모스 허브의 기둥으로써 모든 프로포절에 투표를 해야합니다. 이는 투표에 참가하지 않는 위임인들이 검증인들의 투표를 따르기 때문에 특히 중요합니다. 프로포절에 투표를 하지 않는 검증인에게는 슬래싱 페널티가 부여됩니다.")]),v._v(" "),t("h3",{attrs:{id:"스테이킹은-어떤-의미를-가지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹은-어떤-의미를-가지나요"}},[v._v("#")]),v._v(" 스테이킹은 어떤 의미를 가지나요?")]),v._v(" "),t("p",[v._v("아톰을 스테이킹하는 것은 검증 활동에 대한 보증금이라고 생각하시면 됩니다. 만약 특정 검증인 또는 위임인이 본인의 아톰의 전체(또는 일부)를 언본딩 하기 위해서는 언본딩 트랜잭션을 발생해야 합니다. 이후, 해당 아톰은 "),t("em",[v._v("3주 간의")]),v._v(" 언본딩 기간을 두며 검증인들의 악의적인 행동에 대해 함께 책임을 지게 됩니다.")]),v._v(" "),t("p",[v._v("검증인과 해당 검증인에 위임을 한 위임인들은 블록 생성에 대한 보상, 수수료 보상, 그리고 거버넌스에 참여할 권한을 부여받습니다. 만약 특정 검증인이 악의적인 행동을 한다면 해당 검증인의 검증 권한에 있는 아톰은 슬래싱 페널티를 받을 수 있습니다. 그렇기 때문에, 위임인들은 검증인이 안정적이고 안전성을 보장할 수 있는 여부를 확인할 필요가 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"}},[v._v("#")]),v._v(" 검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?")]),v._v(" "),t("p",[v._v("검증인에게 위임을 하는 위임인은 '스테이킹 파워(staking power)'를 위임하는 것입니다. 검증인의 스테이킹 파워가 많을수록 해당 검증인은 합의 절차와 거버넌스 절차에서 가지는 힘이 커집니다. 하지만 검증인은 위임인의 아톰의 소유권을 가지지는 앖습니다. 코스모스 허브의 설계는 검증인이 위임인들의 아톰을 탈취할 수 없게 설계되었습니다.")]),v._v(" "),t("p",[v._v("검증인들은 위임인들의 자산을 직접적으로 탈취할 수 없지만, 검증인들의 악의적인 행동으로 발생하는 페널티에 대한 슬래싱은 검증인과 위임인들에게 동일하게 적용됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"}},[v._v("#")]),v._v(" 검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?")]),v._v(" "),t("p",[v._v("블록체인의 다음 블록을 제안하는 검증인은 '제안자(proposer)'라고 불립니다. 각 제안자는 결정론적이게 선택되며, 제안자로 선택될 확률은 총 스테이킹 물량(셀프 본딩 스테이크 + 위임받은 스테이크)에 비례합니다. 예를들어, 모든 검증인들의 시스템상의 모든 스테이킹 수량이 100 아톰이고, 특정 검증인의 스테이킹 수량이 10아톰일 경우, 해당 검증인이 제안자로 선택될 확률은 10% 입니다.")]),v._v(" "),t("h3",{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:"인센티브"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#인센티브"}},[v._v("#")]),v._v(" 인센티브")]),v._v(" "),t("h3",{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("strong",[v._v("블록 생성 보상:")]),v._v(" 검증인들이 운영하는 특정 블록체인 애플리케이션의 고유 스테이킹 토큰(예, 코스모스 허브의 아톰)은 블록 생성을 통한 인플레이션이 있습니다. 인플레이션은 아톰 부유자들이 스테이킹을 할 인센티브를 부여하기 위한 목적이 있으며, 스테이킹을 하지 않는 아톰의 가치는 시간이 지날수록 희석됩니다.")]),v._v(" "),t("li",[t("strong",[v._v("블록 리워드:")]),v._v(": 이더민트 존의 경우, 블록 생성 보상은 포톤(photon) 토큰으로 지급됩니다. 포톤은 초기에 이더리움에서 '하드 스푼(hard spoon)'을 통해 분배되며 이더리움 수량의 1:1 비율로 지급될 예정입니다(거버넌스에 따라 해당 사항은 변경될 수 있습니다).")]),v._v(" "),t("li",[t("strong",[v._v("트랜잭션 수수료:")]),v._v(" 코스모스 허브는 트랜잭션 수수료로 지불이 가능한 토큰들의 화이트리스트를 관리합니다.")])]),v._v(" "),t("p",[v._v("위에 나열된 보상과 수수료로 발생하는 수익은 각 검증인의 총 스테이킹 물량에 비례하여 지급되며, 각 검증인 풀에 위임한 위임인들은 이 수익을 분배받습니다. 보상 수익은 각 검증인의 커미션을 차감한 후 지급된다는 점을 참고하시기 바랍니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인을-운영할-인센티브는-무엇이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-운영할-인센티브는-무엇이-있나요"}},[v._v("#")]),v._v(" 검증인을 운영할 인센티브는 무엇이 있나요?")]),v._v(" "),t("p",[v._v("검증인은 커미션을 통해서 위임인들 보다 많은 보상을 받을 수 있습니다.")]),v._v(" "),t("p",[v._v("또한, 검증인들은 거버넌스 절차에서 더 큰 권한을 보유합니다. 예를 들어, 거버넌스 투표를 하지 않는 위임인은 본인이 스테이킹 한 검증인들의 표를 따르게 됩니다. 이런 이유로 검증인들은 생태계 내에서 중대한 책임감을 지게 됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인-커미션은-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-커미션은-무엇인가요"}},[v._v("#")]),v._v(" 검증인 커미션은 무엇인가요?")]),v._v(" "),t("p",[v._v("검증인 풀에게 지급되는 수익은 검증인과 위임인들 사이에서 나눠어집니다. 각 검증인은 위임인들에게 지급하는 수익에서 일정의 수수료를 '커미션'의 형태로 차감할 수 있습니다. 커미션은 퍼센트 값으로 설정됩니다. 각 검증인은 본인 정책에 따라 최초 커미션을 설정할 수 있으며, 일일 최대 변경값 또한 정할 수 있습니다. 코스모스 허브는 해당 검증인이 설정한 파라미터를 따릅니다. 이런 값은 검증인이 초기에 검증인 참여 의사를 밝힐때 설정할 수만 있으며, 검증인으로 선택된 이후 변경될 수 없습니다.")]),v._v(" "),t("h3",{attrs:{id:"블록-생성-보상은-어떻게-나누어지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#블록-생성-보상은-어떻게-나누어지나요"}},[v._v("#")]),v._v(" 블록 생성 보상은 어떻게 나누어지나요?")]),v._v(" "),t("p",[v._v("블록 생성 보상은 검증인의 총 위임 물량에 비례하여 분배됩니다. 코스모스 허브는 블록을 생성한 검증인만 보상을 받지만 확률적으로 특정 기간 안에서 검증인들의 전체적인 블록 보상률은 스테이킹 수량에 비례하게 설계되었습니다.")]),v._v(" "),t("p",[v._v("10명의 검증인이 동일한 스테이킹 물량과 동일한 1%의 커미션을 가진 경우를 예시롤 들겠습니다. 만약 블록 생성에 대한 보상이 1,000 아톰이며 검증인들은 각자 20%의 스테이킹 물량을 자체 위임(셀프본딩) 했다고 보겠습니다. 1,000개의 블록생성 보상은 제안자에게 바로 지급되지 않으며, 검증인들 사이에서 스테이킹 수량에 비례하여 분배됩니다. 즉, 10명의 검증인들은 각자 100 아톰의 보상을 받게되는 것입니다. 이후 이 100 아톰은 다음과 같이 위임인들과 검증인들 사이에서 분배됩니다:")]),v._v(" "),t("ul",[t("li",[v._v("커미션: "),t("code",[v._v("100*80%*1% = 0.8아톰")])]),v._v(" "),t("li",[v._v("밸리데이터가 가지는 보상: "),t("code",[v._v("100\\*20% + 커미션 = 20.8 아톰")])]),v._v(" "),t("li",[v._v("모든 위임인들이 나누는 보상: "),t("code",[v._v("100\\*80% - 커시면 = 79.2 아톰")])])]),v._v(" "),t("p",[v._v("이후 각 위임인은 79.2 아톰 중에서 각자 위임한 물량에 비례하는 보상을 수령할 수 있습니다. 포톤(photon) 또한 이와 동일한 메커니즘을 통해 분배됩니다.")]),v._v(" "),t("h3",{attrs:{id:"수수료는-어떻게-나누어지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수수료는-어떻게-나누어지나요"}},[v._v("#")]),v._v(" 수수료는 어떻게 나누어지나요?")]),v._v(" "),t("p",[v._v("수수료는 위와 비슷하게 분배되지만, 제안자가 최소 프리커밋(precommit) 보다 많은 프리커밋을 받을 경우 수수료에 대한 보너스를 지급 받습니다.")]),v._v(" "),t("p",[v._v("블록 제안자로 선택된 검증인은 다른 검증인 2/3 이상의 서명을 통해 프리커밋을 받아야 블록을 생성할 수 있습니다. 추가적으로, 제안자는 특정 블록에서 검증인 2/3 이상의 서명을 받는 것에 대한 인센티브가 존재합니다. 보너스는 선형적으로 증가합니다: 2/3의 프리커밋을 받은 경우 1% 보너스로 시작하여 100% 프리커밋을 받은 경우 5% 보너스로 증가합니다. 하지만 제안자는 프리커밋을 과도하게 기다릴 경우 블록 제안 시간을 초과하여 제안자 순서가 다른 검증인으로 넘어갈 수 있다는 점을 유의해야 합니다. 이런 이유로 검증인들은 시간을 초과하지 않되 최대한 많은 프리커밋을 받을 수 있는 기간의 균형을 찾아야 합니다. 이 메커니즘은 검증인이 빈 블록을 생성하는 것을 방지하고 검증인 간 네트워킹 향상하며 검증인 검열을 방지하기 위해 도입되었습니다.")]),v._v(" "),t("p",[v._v("이 개념에 대한 예시를 들겠습니다. 10명의 동일한 스테이킹 물량을 가진 검증인들이 각자 1% 커미션과 20% 자체 본딩을 하고 있는 상황을 가정합니다. 새로운 총 1025.51020408 아톰의 보상이 있는 새로운 블록이 생성됩니다.")]),v._v(" "),t("p",[v._v("우선 2% 수수료가 삭감되고 예비 풀(reserve pool)로 이동합니다. 이 예비 풀은 거버넌스를 통해 업그레이드와 버그 바운티를 지급하는데 이용됩니다.")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("2% \\* 1025.51020408 = 20.51020408")]),v._v(" 아톰이 예비 풀로 이동합니다.")])]),v._v(" "),t("p",[v._v("이제 1005 아톰이 남아있습니다. 만약 블록 제안자가 해당 블록에 100% 프리커밋 서명을 포함했다면 최대 보너스인 5%를 지급받습니다.")]),v._v(" "),t("p",[v._v("각 검증인들에 대한 보상인 R을 찾기 위해서는 다음의 공식을 적용합니다:")]),v._v(" "),t("p",[t("code",[v._v("9*R + R R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),v._v(" "),t("ul",[t("li",[t("p",[v._v("제안자 검증인:")]),v._v(" "),t("ul",[t("li",[v._v("풀(pool)이 "),t("code",[v._v("R + R * 5%")]),v._v("를 얻음: 105 아톰")]),v._v(" "),t("li",[v._v("커미션: "),t("code",[v._v("105 * 80% * 1%")]),v._v(" = 0.84 아톰")]),v._v(" "),t("li",[v._v("검증인 보상: "),t("code",[v._v("105 * 20% + 커미션")]),v._v(" = 21.84 아톰")]),v._v(" "),t("li",[v._v("위임인 보상: "),t("code",[v._v("105 * 80% - 커미션")]),v._v(" = 83.16 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)")])])]),v._v(" "),t("li",[t("p",[v._v("제안을 하지 않은 검증인:")]),v._v(" "),t("ul",[t("li",[v._v("풀이 R 아톰을 얻음: 100 아톰")]),v._v(" "),t("li",[v._v("커미션: "),t("code",[v._v("100 * 80% * 1%")]),v._v(" = 0.8 아톰")]),v._v(" "),t("li",[v._v("검증인 보상: "),t("code",[v._v("105 * 20% + 커미션")]),v._v(" = 20.8 아톰")]),v._v(" "),t("li",[v._v("위임인 보상: "),t("code",[v._v("100 * 80% - 커미션")]),v._v(" = 79.2 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)")])])])]),v._v(" "),t("h3",{attrs:{id:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-페널티를-발생하는-경우는-무엇이-있나요"}},[v._v("#")]),v._v(" 슬래싱 페널티를 발생하는 경우는 무엇이 있나요?")]),v._v(" "),t("p",[v._v("특정 검증인이 악의적으로 행동할 경우, 검증인에게 본딩된 아톰(위임인들의 아톰 포함)은 슬래싱이 됩니다. 슬래싱 페널티는 악의적인 행동에 비례한 가중치가 적용됩니다. 검증인과 위임인들의 스테이크가 슬래싱 되는 경우는 3개가 있습니다:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("이중 서명(더블 사이닝):")]),v._v(" 누군가 체인A에서 특정 검증인이 동일한 높이의 두개의 블록을 체인A와 체인B에서 서명한 경우 (체인A 와 체인B 가 동일한 ancestor에서 유례한 경우) 해당 검증인은 체인A에서 슬래싱될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("오프라인(unavailability):")]),v._v(" 특정 검증인의 서명이 X 블록동안 포함되지 않았을 경우, 해당 검증인은 X 에 비례한 소량의 아톰이 슬래싱됩니다. 만약 X가 사전에 설정된 Y 한도보다 높을 경우, 해당 검증인은 언본딩 됩니다.")]),v._v(" "),t("li",[t("strong",[v._v("미투표(non-voting):")]),v._v(" 특정 검증인이 거버넌스 프로포절에 투표를 하지 않는 경우 소량의 스테이크가 슬래싱될 수 있습니다.")])]),v._v(" "),t("p",[v._v("검증인의 행동의 의도적으로 악의적이지 않아도(예시: 노드 에러, 인터넷 연결 문제, DDoS, 프라이빗 탈취) 검증인은 슬래싱될 수 있다는 점을 참고하시기 바랍니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"}},[v._v("#")]),v._v(" 검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?")]),v._v(" "),t("p",[v._v("검증인은 자체 위임을 하지 않아도 검증인을 할 수 있습니다. 검증인의 총 스테이킹 수량은 셀프본딩 수량과 위임 수량의 합입니다. 셀프본딩이 낮은 검증인은 많은 위임인들의 스테이크를 통해 총 스테이킹 수량을 늘릴수 있습니다. 이런 이유로 검증인의 평판은 중요한 요소로 적용합니다.")]),v._v(" "),t("p",[v._v("검증인이 셀프본딩 할 의무는 없을 수 있지만, 위임인들의 대다수는 검증인들이 셀프본딩을 하는 것을 선호할 수 있습니다. 본인에 행동에 대한 책임감을 보여줄 수 있기 때문입니다.")]),v._v(" "),t("p",[v._v("검증인들은 본인의 책임감을 표기하기 위해서 자체적인 최소 셀프본딩 수량을 설정할 수 있습니다. 만약 해당 검증인의 셀프본딩률이 해당 수치보다 낮아질 경우, 해당 검증인들과 모든 위임인들의 아톰은 언본딩 됩니다.")]),v._v(" "),t("h3",{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("strong",[v._v("무-페널티 재위임(penalty-free re-delegation):")]),v._v(" 특정 검증인에 과도하게 묶여있는 현상을 줄이기 위해서 한 검증인에서 다른 검증인으로 위임을 쉽게 바꿀 수 있는 방식.")]),v._v(" "),t("li",[t("strong",[v._v("해킹 바운티:")]),v._v(" 커뮤니티가 검증인을 해킹하는 것을 장려하는 정책. 바운티 보상은 검증인이 스테이킹 하고 있는 물량의 크기에 비례.")]),v._v(" "),t("li",[t("strong",[v._v("UI 경고:")]),v._v(" 코스모스 보이저(Cosmos Voyager) 지갑을 이용하는 유저는 이미 과도한 스테이킹 물량을 보유하고 있는 검증인에게 위임을 하려고 할때 경고를 받는다.")])]),v._v(" "),t("h2",{attrs:{id:"기술적-요건"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#기술적-요건"}},[v._v("#")]),v._v(" 기술적 요건")]),v._v(" "),t("h3",{attrs:{id:"필요한-하드웨어-장비는-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-하드웨어-장비는-무엇인가요"}},[v._v("#")]),v._v(" 필요한 하드웨어 장비는 무엇인가요?")]),v._v(" "),t("p",[v._v("검증인은 전력, 네트워킹, 방화벽, 하드웨어 보안 모듈과 서버 백업이 있는 하나 이상의 데이터 센터를 제공할 것을 추천합니다.")]),v._v(" "),t("p",[v._v("네트워크 초기의 하드웨어 요건은 그리 고성능이 아닐 것으로 예상하고 있지만, 네트워크 사용량이 증가하면서 하드웨어 스펙 또한 증가할 것을 예상하고 있습니다. 테스트넷에 참가해서 하드웨어 세팅을 실험해보는 것을 추천드립니다.")]),v._v(" "),t("h3",{attrs:{id:"필요한-소프트웨어는-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-소프트웨어는-무엇인가요"}},[v._v("#")]),v._v(" 필요한 소프트웨어는 무엇인가요?")]),v._v(" "),t("p",[v._v("코스모스 허브 노드 외에도 모니터링, 알림, 관리 솔루션을 준비해야할 것으로 예상하고 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"필요한-대역폭은-어느-정도-인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-대역폭은-어느-정도-인가요"}},[v._v("#")]),v._v(" 필요한 대역폭은 어느 정도 인가요?")]),v._v(" "),t("p",[v._v("코스모스 네트워크는 이더리움과 비트코인에 비교해서 많은 대역폭과 쓰루풋(throughput)을 필요로 합니다.")]),v._v(" "),t("p",[v._v("데이터 센터 노드는 신뢰할 수 있는 클라우드 풀노드와 사회적으로 신뢰할 수 있는 다른 검증인들에게만 연결하는 것을 추천드립니다. 이는 데이터 센터의 노드과 DDoS 공격의 피해를 입는 것을 방지할 수 있습니다.")]),v._v(" "),t("p",[v._v("네트워크가 성장하면서 매일 몇 기가바이트 이상의 대역폭을 사용하는 것은 현실적인 것으로 판단됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인을-하는-것은-운영-측면에서-어떤가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-하는-것은-운영-측면에서-어떤가요"}},[v._v("#")]),v._v(" 검증인을 하는 것은 운영 측면에서 어떤가요?")]),v._v(" "),t("p",[v._v("성공적인 검증인은 다수의 실력있는 운영 인력이 확보되어야 할 것으로 예측됩니다. 코스모스 검증인 운영은 비트코인 채굴에 비해서 높은 난이도에 속합니다.")]),v._v(" "),t("h3",{attrs:{id:"키-관리는-어떻게-하는-것이-바람직한가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-관리는-어떻게-하는-것이-바람직한가요"}},[v._v("#")]),v._v(" 키 관리는 어떻게 하는 것이 바람직한가요?")]),v._v(" "),t("p",[v._v("검증인은 ed25519 키를 지원하는 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것을 추천드립니다. 다음은 추천이 가능한 HSM들의 일부입니다:")]),v._v(" "),t("ul",[t("li",[v._v("YubiHSM 2")]),v._v(" "),t("li",[v._v("Ledger Nano S")]),v._v(" "),t("li",[v._v("Ledger BOLOS SGX enclave")]),v._v(" "),t("li",[v._v("Thales nShield support")])]),v._v(" "),t("p",[v._v("텐더민트 팀은 특정 회사의 솔루션을 지목하여 추천하지 않습니다. 검증인 커뮤니티는 자체적으로 HSM을 이용한 보안 솔루션을 연구하여 향상시킬 것을 권장합니다.")]),v._v(" "),t("h3",{attrs:{id:"운영-측면에서-어떤-요소들이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#운영-측면에서-어떤-요소들이-있나요"}},[v._v("#")]),v._v(" 운영 측면에서 어떤 요소들이 있나요?")]),v._v(" "),t("p",[v._v("효율적으로 검증인을 운영하는 것은 예측 할 수 없는 언본딩과 슬래싱을 막는 것입니다. 이는 공격에 대한 대응, 전력 단절, 네트워크 단절, 보안 등에 대한 모든 위험 요소를 차단하고 준비하는 것입니다.")]),v._v(" "),t("h3",{attrs:{id:"보수-측면에서-어떤-것들이-요구되나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보수-측면에서-어떤-것들이-요구되나요"}},[v._v("#")]),v._v(" 보수 측면에서 어떤 것들이 요구되나요?")]),v._v(" "),t("p",[v._v("검증인은 정기적으로 소프트웨어 업그레이드와 버그 패치를 적용해야합니다. 네트워크 초기에는 다수의 문제들이 발생할 수 있을 것으로 예상되기 때문에 검증인들은 유심히 네트워크 상태를 모니터링 해야 합니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}},[v._v("#")]),v._v(" 검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?")]),v._v(" "),t("p",[v._v("DDoS 공격은 공격자가 특정 IP의 서버에게 인터넷 트래픽을 과도하게 발생시켜 인터넷에 연결되는 것을 막는 공격입니다.")]),v._v(" "),t("p",[v._v("공격자는 네트워크를 스캔하여 특정 IP 주소를 지목하고 엄청난 트래픽을 발생시켜 공격을 하여 해당 노드의 정상적인 운영을 막습니다.")]),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("센트리노드에 대한 추가적인 정보는 "),t("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v("에서 확인 가능합니다.")])])}),[],!1,null,null,null);_.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{483:function(v,_,t){"use strict";t.r(_);var a=t(1),r=Object(a.a)({},(function(){var v=this,_=v.$createElement,t=v._self._c||_;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"검증인-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-faq"}},[v._v("#")]),v._v(" 검증인 FAQ")]),v._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[v._v("경고")]),v._v(" "),t("p",[v._v("코스모스 프로젝트는 현재 진행형입니다. 메커니즘과 값은 추후 변경될 수 있다는 점을 확인하십시오.")])]),v._v(" "),t("h2",{attrs:{id:"기본-개념"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#기본-개념"}},[v._v("#")]),v._v(" 기본 개념")]),v._v(" "),t("h3",{attrs:{id:"검증인이란-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인이란-무엇인가"}},[v._v("#")]),v._v(" 검증인이란 무엇인가?")]),v._v(" "),t("p",[t("RouterLink",{attrs:{to:"/introduction/cosmos-hub.html"}},[v._v("코스모스 허브")]),v._v("는 "),t("RouterLink",{attrs:{to:"/introduction/tendermint.html"}},[v._v("텐더민트")]),v._v(" 기반으로 특정 "),t("RouterLink",{attrs:{to:"/validators/overview.html"}},[v._v("검증인")]),v._v(" 들이 네트워크의 보안을 지키는 허브입니다. 검증인들은 풀노드를 운영하며 본인의 프라이빗키로 서명된 암호화된 서명으로 투표를 하며, 이 표를 네트워크에 전파하여 합의 절차에 참여하게 됩니다. 검증인들은 새로운 블록은 블록체인에 기록하고, 이런 역할에 대한 보상을 받게됩니다. 또한 검증인은 프로포절에 대한 투표를 하며 거버넌스 절차에 참여합니다. 검증인들의 순위는 위임 받은 코인 수량에 따라서 정해집니다.")],1),v._v(" "),t("h3",{attrs:{id:"스테이킹-은-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-은-무엇인가"}},[v._v("#")]),v._v(" '스테이킹'은 무엇인가?")]),v._v(" "),t("p",[v._v("코스모스 허브는 퍼블릭 지분증명 블록체인입니다. 이는 각 검증인들의 순위가 각자가 위임받아 본딩된 스테이킹 토큰(아톰)의 수량에 따라 순위가 정해진다는 것입니다. 검증인은 스테이킹은 검증인 자체 물량 또는 위임자가 위임한 토큰이 될 수 있습니다.")]),v._v(" "),t("p",[v._v("검증인이 될 의사가 있는 유저는 누구나 "),t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 발생시켜 의사를 표시하고 검증인이 될 수 있습니다.")]),v._v(" "),t("p",[v._v("(스테이킹 수량으로 결정되는) 검증인의 가중치(weight)는 해당 검증인이 실제 블록 생성에 참여할 수 있는지를 결정하며, 얼마나 자주 블록은 제안할 수 있는지와 얼마나 많은 보상을 가저가는지에 영향을 끼칩니다. 초기에는 가중치가 높은 125개의 검증인들이 실제 블록생성에 참여합니다. 만약 검증인이 이중서명을 하거나, 자주 오프라인 상태로 전환되거나, 거버넌스 절차에 참여하지 않을경우 위임된 모든 아톰(자체물량과 위임 받은 물량 포함)은 '슬래싱'되어 사라지게 됩니다.")]),v._v(" "),t("h3",{attrs:{id:"풀노드는-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#풀노드는-무엇인가"}},[v._v("#")]),v._v(" 풀노드는 무엇인가?")]),v._v(" "),t("p",[v._v("풀노드는 블록의 블록과 트랜잭션을 검증하는 프로그램입니다. 라이트노드와의 차이점은 라이트노드의 경우 블록헤더와 일부 소량의 트랜잭션을 처리하지만, 풀노드는 모든 거래와 모든 기록을 저장하고 검증합니다. 풀노드를 운영하기 위해서는 라이트노드보다 많은 리소스가 필요하지만, 검증인을 운영하기 위해서는 필수적입니다. 실질적으로 풀노드를 운영한다는 것은 최신 버전과 안전성이 확보된 소프트웨어를 다운타임과 네트워크 지연없이 운영하는 것입니다.")]),v._v(" "),t("p",[v._v("검증인을 운영할 의사가 없는 유저들도 풀노드를 운영할 수 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"위임인은-무엇인가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#위임인은-무엇인가"}},[v._v("#")]),v._v(" 위임인은 무엇인가?")]),v._v(" "),t("p",[v._v("위임자/위임인은 아톰을 보유하고 있지만 검증인을 운영할 수 없거나, 운영할 의사가 없는 유저입니다. 위임인은 [코스모스 보이저]"),t("RouterLink",{attrs:{to:"/getting-started/voyager.html"}},[v._v("Cosmos Voyager")]),v._v(" 또는 다른 지갑을 통해 본인의 아톰을 검증인에게 위임하여 검증인 보상의 일부를 돌려받을 수 있습니다(보상 분배에 대한 자세한 정보는 "),t("strong",[v._v("스테이킹의 인센티브")]),v._v("와 "),t("strong",[v._v("검증인 커미션은 무엇인가?")]),v._v(" 항목을 확인하십시오).")],1),v._v(" "),t("p",[v._v("위임인은 검증인들과 보상을 나누기 때문에, 위임인에게도 책임이 주어집니다. 만약 검증인이 악의적인 행동을 한다면 위임인들의 토큰 또한 함께 슬래싱될 수 있습니다. 그렇기 때문에 위임인들은 위임을 하기 전 충분한 검토와 조사를 실시한 후 위임을 해야하며, 다수의 검증인에게 분산위임하는 방법을 추천합니다.")]),v._v(" "),t("p",[v._v("위임인들은 코스모스 네트워크를 운영하는 검증인들을 선택하는 역할을 하기 때문에네 네트워크의 핵심적인 역할을 하는 유저입니다. 위임인은 수동적인 역할을 하는 유저가 아닙니다. 활발하게 검증인들의 활동과 행동을 모니터링하고 그들의 거버넌스 참여 투표 등을 자주 확인해야할 필요가 있습니다.")]),v._v(" "),t("h2",{attrs:{id:"검증인-되기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-되기"}},[v._v("#")]),v._v(" 검증인 되기")]),v._v(" "),t("h3",{attrs:{id:"어떻게-검증인이-되는가"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#어떻게-검증인이-되는가"}},[v._v("#")]),v._v(" 어떻게 검증인이 되는가?")]),v._v(" "),t("p",[v._v("네트워크에 참여하는 모든 유저는 "),t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 통해 본인이 검증인이 될 의사를 표시할 수 있습니다. 해당 트랜잭션에는 다음과 같은 값이 포함되어야 합니다:")]),v._v(" "),t("ul",[t("li",[v._v("검증인의 PubKey: PubKey와 연관된 프라이빗키는 "),t("em",[v._v("prevote")]),v._v(" 와 "),t("em",[v._v("precommit")]),v._v(" 을 서명하는데 사용됩니다. 이런 방식을 통해서 검증인은 유동적 자금이 있는 계정과 검증용 계정을 따로 관리할 수 있습니다.")]),v._v(" "),t("li",[v._v("검증인 주소: 애플리케이션 단 주소입니다. 이 주소는 공개적으로 검증인의 신원을 확인할때 이용됩니다. 해당 주소와 연관되어있는 프라이빗키는 본딩, 언본딩, 보상 수령, 거버넌스 참여 등에서 이용됩니다.")]),v._v(" "),t("li",[v._v("검증인 이름(moniker)")]),v._v(" "),t("li",[v._v("검증인 웹사이트(선택 사항)")]),v._v(" "),t("li",[v._v("검증인 설명(선택 사항)")]),v._v(" "),t("li",[v._v("최초 커미션: 블록 검증으로 받는 보상에서 위임인들 지불되기 전 삭감되는 수수료")]),v._v(" "),t("li",[v._v("최대 커미션: 해당 검증인이 설정한 최대 수수료")]),v._v(" "),t("li",[v._v("최소 셀프본딩 수량: 검증인이 최소로 본딩해야 하는 아톰의 수량. 만약 해당 검증인의 총 위임 수량이 이 값보다 떨어지는 경우, 스테이킹 풀 전체는 언본딩 됩니다.")]),v._v(" "),t("li",[v._v("최초 셀프본딩 수량: 최초로 검증인이 자체 스테이킹 하는 수량.")])]),v._v(" "),t("p",[v._v("이제 검증인이 만들어지면, 위임인들은 해당 검증인에게 아톰을 위임하며 해당 스테이킹 풀의 수량을 늘려갈 수 있습니다. 특정 주소의 총 스테이크는 자체 스테이킹 물량 + 위임 받은 스테이킹 물량입니다.")]),v._v(" "),t("p",[v._v("검증인으로 참가할 의사를 밝힌 모든 검증인 중 스테이킹 수량이 가장 많은 상위 125개의 검증인은 '활성화된 검증인'으로 블록생성에 참여할 수 있게 됩니다. 상위 125 순위 밖으로 나가게 되는 검증인은 "),t("strong",[v._v("bonded 검증인")]),v._v("이 되며 검증인 권한을 일게됩니다. 이때 해당 검증인의 물량은 "),t("strong",[v._v("언본딩 모드")]),v._v("로 들어가면서 서서히 "),t("strong",[v._v("언본딩")]),v._v(" 됩니다.")]),v._v(" "),t("p",[v._v("코스모스 허브의 검증인 수는 시간이 지날수록 다음과 같이 인상될 예정입니다:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("0년차:")]),v._v(" 100")]),v._v(" "),t("li",[t("strong",[v._v("1년차:")]),v._v(" 125")]),v._v(" "),t("li",[t("strong",[v._v("2년차:")]),v._v(" 130")]),v._v(" "),t("li",[t("strong",[v._v("3년차:")]),v._v(" 144")]),v._v(" "),t("li",[t("strong",[v._v("4년차:")]),v._v(" 163")]),v._v(" "),t("li",[t("strong",[v._v("5년차:")]),v._v(" 184")]),v._v(" "),t("li",[t("strong",[v._v("6년차:")]),v._v(" 208")]),v._v(" "),t("li",[t("strong",[v._v("7년차:")]),v._v(" 235")]),v._v(" "),t("li",[t("strong",[v._v("8년차:")]),v._v(" 265")]),v._v(" "),t("li",[t("strong",[v._v("9년차:")]),v._v(" 300")]),v._v(" "),t("li",[t("strong",[v._v("10년차:")]),v._v(" 300")])]),v._v(" "),t("h2",{attrs:{id:"테스트넷"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트넷"}},[v._v("#")]),v._v(" 테스트넷")]),v._v(" "),t("h3",{attrs:{id:"어떻게-테스트넷에-참여할-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#어떻게-테스트넷에-참여할-수-있나요"}},[v._v("#")]),v._v(" 어떻게 테스트넷에 참여할 수 있나요?")]),v._v(" "),t("p",[v._v("테스트넷은 로치 전에 검증인 세팅을 확인할 수 있는 좋은 환경입니다. 테스트넷에 참가함으로 본인이 검증인 운영을 위해 준비해왔다는 것을 보여주는 기회가 될 수도 있습니다. 테스트넷에 관련된 정보는 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v(" 와 "),t("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v("에서 확인하실 수 있습니다.")]),v._v(" "),t("h3",{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("p",[t("strong",[v._v("텐더민트 키")]),v._v(": 이 키는 블록 해시를 서명할때 이용되는 고유 키입니다. 해당 키는 "),t("code",[v._v("cosmosvalconspub")]),v._v(" 퍼블릭키와 연관되어 있습니다.")]),v._v(" "),t("ul",[t("li",[v._v("gaiad init으로 노드가 생성될때 키가 생성되며")]),v._v(" "),t("li",[v._v("해당 키 정보는 "),t("code",[v._v("gaiad tendermint show-validator")]),v._v(" 명령어로 확인하실 수 있습니다. 예) "),t("code",[v._v("cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c")])])])]),v._v(" "),t("li",[t("p",[t("strong",[v._v("애플리케이션 키")]),v._v(": 이 키는 애플리케이션에 의하여 생성되고 트랜잭션을 서명할때 이용됩니다. 검증인으로써는 이 키를 스테이킹 관련 트랜잭션과 거버넌스 관련 트랜잭션을 서명할때 이용하시게 됩니다. 애플리케이션 키는 "),t("code",[v._v("cosmospub")]),v._v(" 퍼블릭키와 "),t("code",[v._v("cosmos")]),v._v(" 주소와 연관되어있습니다. 두 키 모두 "),t("code",[v._v("gaiad keys add")]),v._v(" 명령으로 생성됩니다.")]),v._v(" "),t("ul",[t("li",[v._v("참고: 특정 검증인의 운영키는 애플리케이션키와 연관이 있으나 "),t("code",[v._v("cosmosvaloper")]),v._v("와 "),t("code",[v._v("cosmosvaloperpub")]),v._v("같은 특정 용도에만 맞는 사전 정의된 prefix를 이용합니다.")])])])]),v._v(" "),t("h3",{attrs:{id:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터들의-상태-state-에는-어떤-것들이-있나요"}},[v._v("#")]),v._v(" 밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?")]),v._v(" "),t("p",[t("code",[v._v("create-validator")]),v._v(" 트랜잭션을 통해 만들어진 검증인은 총 3개의 상태가 있을 수 있습니다:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("bonded")]),v._v(": 검증인은 현재 합의에 참가하고 있는 활성화된 검증인입니다. 이 검증인은 블록 보상을 받을 수 있으며, 악의적인 행동에 대한 슬래싱 페널티를 받을 수도 있습니다.")]),v._v(" "),t("li",[t("code",[v._v("unbonding")]),v._v(": 검증인은 현재 합의에 참가하고 있지 않으면 활성화된 검증인 세트에 포함되어있지 않습니다. 검증인은 블록 생성을 받지 않지만 악의적인 행동에 대한 슬래싱 페널티는 적용될 수 있습니다. 이 상태는 "),t("code",[v._v("bonded")]),v._v(" 상태인 검증인이 "),t("code",[v._v("unbonded")]),v._v("으로 전환되는 중간 상태이며, 만약 "),t("code",[v._v("unbonding")]),v._v(" 상태에서 "),t("code",[v._v("rebond")]),v._v(" 트랜잭션을 발생하지 않으면 최대 3주간 중간 단계에 머무를 수 있습니다.")]),v._v(" "),t("li",[t("code",[v._v("unbonded")]),v._v(": 검증인은 합의에 참가하고 있지 않은 검증인이며, 활성화된 검증인 세트에 포함되어있지 않습니다. 이 검증인은 블록 생성 보상을 받지 않으며 슬래싱 페널티도 적용되지도 않습니다. 이 검증인에게 아톰을 위임하는 것은 가능합니다. "),t("code",[v._v("unbonded")]),v._v(" 상태인 검증인으로 부터의 언본딩은 바로 처리 됩니다.")])]),v._v(" "),t("p",[v._v("위임인들은 관련 검증인들과 동일한 상태를 가지게 됩니다.")]),v._v(" "),t("p",[t("em",[v._v("Note that delegation are not necessarily bonded. Atoms can be delegated and bonded, delegated and unbonding, delegated and unbonded, or liquid")])]),v._v(" "),t("h3",{attrs:{id:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"}},[v._v("#")]),v._v(" 셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?")]),v._v(" "),t("h3",{attrs:{id:"테스트넷-토큰은-어떻게-받을-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#테스트넷-토큰은-어떻게-받을-수-있나요"}},[v._v("#")]),v._v(" 테스트넷 토큰은 어떻게 받을 수 있나요?")]),v._v(" "),t("p",[v._v("테스트넷 토큰을 받고 싶으시다면 "),t("a",{attrs:{href:"https://gaia.faucetcosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[v._v("faucet"),t("OutboundLink")],1),v._v("을 통해서 받으실 수 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"}},[v._v("#")]),v._v(" 활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?")]),v._v(" "),t("p",[v._v("합의 프로세스에 참여하며 블록을 생성하는 검증인이 되기 위해서 특정 수량의 아톰이 필요하지는 않습니다. 다만, 셀프본딩 수량과 위임 받은 수량의 합이 사우이 100위에 들어야 활성화된 검증인이 되실 수 있습니다.")]),v._v(" "),t("h3",{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("strong",[v._v("셀프본딩 수랑:")]),v._v(" 특정 검증인이 자체 본딩한 아톰의 수량입니다. 셀프본딩 수량이 높은 검증인은 본인의 행동에 따라 잃을 수 있는 것이 많기 때문에 더 많은 책임감이 부여될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("위임된 아톰 수량:")]),v._v(" 해당 검증인이 위임받은 아톰의 총 수량. 높은 위임 수량은 해당 검증인에 대한 신뢰도가 높다는 것을 뜻할 수 있습니다. 다만, 대형 검증인은 책임지고 있는 물량이 많기 때문에 해커들의 타겟이 될 수 있다는 위험이 존재할 수 있습니다. 해커들은 특정 검증인이 위임하고 있는 물량의 일정 %를 보상으로 받기 때문에 해커는 대형 검증인을 타겟할 확률이 높습니다. 검증인이 위임받고 있는 아톰이 과도할 경우, 높은 위임 수량은 단점으로 적용될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("커미션:")]),v._v(" 해당 검증인이 생성하는 보상에 대하여 위임인들에게 청구하는 수수료입니다.")]),v._v(" "),t("li",[t("strong",[v._v("검증인 활동 기록:")]),v._v(" 위임인들은 본인들의 아톰을 위임하기 전 검증인들의 활동 기록을 먼저 살펴볼 수 있습니다. 이 항목에는 활동 기간, 과거 투표 현황, 업타임 기록, 노드 공격 기록 등이 포함될 수 있습니다.")])]),v._v(" "),t("p",[v._v("위에 표기된 항목 외에도 검증인 정보에 포함되어있는 웹사이트를 통해서 검증인에 대한 정보를 받을 수 있습니다. 검증인 세팅에 대해 외부 감사를 받은 경우 이를 표기하는 것도 좋은 기록이 될 수 있습니다. 참고로 텐더민트 팀은 특정 검증인에 대한 감사를 진행하지 않습니다. 검증인 선택 기준에 대한 더 많은 정보는 "),t("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[v._v("이 블로그 글"),t("OutboundLink")],1),v._v("에서 확인하실 수 있습니다.")]),v._v(" "),t("h2",{attrs:{id:"검증인들의-책임"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인들의-책임"}},[v._v("#")]),v._v(" 검증인들의 책임")]),v._v(" "),t("h3",{attrs:{id:"검증인을-하기-위해서는-신원을-밝혀야-하나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-하기-위해서는-신원을-밝혀야-하나요"}},[v._v("#")]),v._v(" 검증인을 하기 위해서는 신원을 밝혀야 하나요?")]),v._v(" "),t("p",[v._v("아닙니다. 각 위임인들은 본인들이 설정한 기준으로 각자 투표를 합니다. 검증인들은 홍보 용도를 위해서 본인들에 대한 정보가 표기된 웹사이트를 공개하는 것을 추천합니다. 해당 웹사이트에서 본인들의 정보를 공개할 것인지 또는 익명으로 본인들의 활동 기록만을 공개할 것인지는 검증인의 선택입니다. 코스모스 허브에는 익명의 팀과 팀 정보를 공개하는 팀이 공존할 확률이 높습니다.")]),v._v(" "),t("h3",{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("strong",[v._v("언제나 올바른 소프트웨어로 노드를 운영하기:")]),v._v(" 검증인들은 본인들의 서버가 언제나 온라인 상태며 프라이빗키가 탈취당하지 않게 관리를 해야합니다.")]),v._v(" "),t("li",[t("strong",[v._v("활발하게 거버넌스에 참가하기:")]),v._v(" 검증인들은 모든 프로포절에 투표를 해야 합니다.")])]),v._v(" "),t("p",[v._v("추가적으로 검증인들은 코스모스 커뮤니티에서 활동을 해야합니다. 검증인들은 생태계의 현재 상황에 대해 언제나 인지하며 혹시 있을 변화에 유연하게 대처할 수 있어야 합니다.")]),v._v(" "),t("h3",{attrs:{id:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스에-참여-한다는-것은-무슨-뜻인가요"}},[v._v("#")]),v._v(" '거버넌스에 참여'한다는 것은 무슨 뜻인가요?")]),v._v(" "),t("p",[v._v("코스모스 허브의 검증인들과 위임인들은 블록 가스 제한 같은 운영적 파라미터(operational parameters) 변경을 요청하거나, 소프트웨어 업그레이드를 조율하거나, 코스모스 허브에 대한 헌법을 제안할 수 있습니다.")]),v._v(" "),t("p",[v._v("검증인들은 거버넌스 시스템에서 특별한 역할을 합니다. 검증인들은 코스모스 허브의 기둥으로써 모든 프로포절에 투표를 해야합니다. 이는 투표에 참가하지 않는 위임인들이 검증인들의 투표를 따르기 때문에 특히 중요합니다. 프로포절에 투표를 하지 않는 검증인에게는 슬래싱 페널티가 부여됩니다.")]),v._v(" "),t("h3",{attrs:{id:"스테이킹은-어떤-의미를-가지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹은-어떤-의미를-가지나요"}},[v._v("#")]),v._v(" 스테이킹은 어떤 의미를 가지나요?")]),v._v(" "),t("p",[v._v("아톰을 스테이킹하는 것은 검증 활동에 대한 보증금이라고 생각하시면 됩니다. 만약 특정 검증인 또는 위임인이 본인의 아톰의 전체(또는 일부)를 언본딩 하기 위해서는 언본딩 트랜잭션을 발생해야 합니다. 이후, 해당 아톰은 "),t("em",[v._v("3주 간의")]),v._v(" 언본딩 기간을 두며 검증인들의 악의적인 행동에 대해 함께 책임을 지게 됩니다.")]),v._v(" "),t("p",[v._v("검증인과 해당 검증인에 위임을 한 위임인들은 블록 생성에 대한 보상, 수수료 보상, 그리고 거버넌스에 참여할 권한을 부여받습니다. 만약 특정 검증인이 악의적인 행동을 한다면 해당 검증인의 검증 권한에 있는 아톰은 슬래싱 페널티를 받을 수 있습니다. 그렇기 때문에, 위임인들은 검증인이 안정적이고 안전성을 보장할 수 있는 여부를 확인할 필요가 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"}},[v._v("#")]),v._v(" 검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?")]),v._v(" "),t("p",[v._v("검증인에게 위임을 하는 위임인은 '스테이킹 파워(staking power)'를 위임하는 것입니다. 검증인의 스테이킹 파워가 많을수록 해당 검증인은 합의 절차와 거버넌스 절차에서 가지는 힘이 커집니다. 하지만 검증인은 위임인의 아톰의 소유권을 가지지는 앖습니다. 코스모스 허브의 설계는 검증인이 위임인들의 아톰을 탈취할 수 없게 설계되었습니다.")]),v._v(" "),t("p",[v._v("검증인들은 위임인들의 자산을 직접적으로 탈취할 수 없지만, 검증인들의 악의적인 행동으로 발생하는 페널티에 대한 슬래싱은 검증인과 위임인들에게 동일하게 적용됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"}},[v._v("#")]),v._v(" 검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?")]),v._v(" "),t("p",[v._v("블록체인의 다음 블록을 제안하는 검증인은 '제안자(proposer)'라고 불립니다. 각 제안자는 결정론적이게 선택되며, 제안자로 선택될 확률은 총 스테이킹 물량(셀프 본딩 스테이크 + 위임받은 스테이크)에 비례합니다. 예를들어, 모든 검증인들의 시스템상의 모든 스테이킹 수량이 100 아톰이고, 특정 검증인의 스테이킹 수량이 10아톰일 경우, 해당 검증인이 제안자로 선택될 확률은 10% 입니다.")]),v._v(" "),t("h3",{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:"인센티브"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#인센티브"}},[v._v("#")]),v._v(" 인센티브")]),v._v(" "),t("h3",{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("strong",[v._v("블록 생성 보상:")]),v._v(" 검증인들이 운영하는 특정 블록체인 애플리케이션의 고유 스테이킹 토큰(예, 코스모스 허브의 아톰)은 블록 생성을 통한 인플레이션이 있습니다. 인플레이션은 아톰 부유자들이 스테이킹을 할 인센티브를 부여하기 위한 목적이 있으며, 스테이킹을 하지 않는 아톰의 가치는 시간이 지날수록 희석됩니다.")]),v._v(" "),t("li",[t("strong",[v._v("블록 리워드:")]),v._v(": 이더민트 존의 경우, 블록 생성 보상은 포톤(photon) 토큰으로 지급됩니다. 포톤은 초기에 이더리움에서 '하드 스푼(hard spoon)'을 통해 분배되며 이더리움 수량의 1:1 비율로 지급될 예정입니다(거버넌스에 따라 해당 사항은 변경될 수 있습니다).")]),v._v(" "),t("li",[t("strong",[v._v("트랜잭션 수수료:")]),v._v(" 코스모스 허브는 트랜잭션 수수료로 지불이 가능한 토큰들의 화이트리스트를 관리합니다.")])]),v._v(" "),t("p",[v._v("위에 나열된 보상과 수수료로 발생하는 수익은 각 검증인의 총 스테이킹 물량에 비례하여 지급되며, 각 검증인 풀에 위임한 위임인들은 이 수익을 분배받습니다. 보상 수익은 각 검증인의 커미션을 차감한 후 지급된다는 점을 참고하시기 바랍니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인을-운영할-인센티브는-무엇이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-운영할-인센티브는-무엇이-있나요"}},[v._v("#")]),v._v(" 검증인을 운영할 인센티브는 무엇이 있나요?")]),v._v(" "),t("p",[v._v("검증인은 커미션을 통해서 위임인들 보다 많은 보상을 받을 수 있습니다.")]),v._v(" "),t("p",[v._v("또한, 검증인들은 거버넌스 절차에서 더 큰 권한을 보유합니다. 예를 들어, 거버넌스 투표를 하지 않는 위임인은 본인이 스테이킹 한 검증인들의 표를 따르게 됩니다. 이런 이유로 검증인들은 생태계 내에서 중대한 책임감을 지게 됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인-커미션은-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인-커미션은-무엇인가요"}},[v._v("#")]),v._v(" 검증인 커미션은 무엇인가요?")]),v._v(" "),t("p",[v._v("검증인 풀에게 지급되는 수익은 검증인과 위임인들 사이에서 나눠어집니다. 각 검증인은 위임인들에게 지급하는 수익에서 일정의 수수료를 '커미션'의 형태로 차감할 수 있습니다. 커미션은 퍼센트 값으로 설정됩니다. 각 검증인은 본인 정책에 따라 최초 커미션을 설정할 수 있으며, 일일 최대 변경값 또한 정할 수 있습니다. 코스모스 허브는 해당 검증인이 설정한 파라미터를 따릅니다. 이런 값은 검증인이 초기에 검증인 참여 의사를 밝힐때 설정할 수만 있으며, 검증인으로 선택된 이후 변경될 수 없습니다.")]),v._v(" "),t("h3",{attrs:{id:"블록-생성-보상은-어떻게-나누어지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#블록-생성-보상은-어떻게-나누어지나요"}},[v._v("#")]),v._v(" 블록 생성 보상은 어떻게 나누어지나요?")]),v._v(" "),t("p",[v._v("블록 생성 보상은 검증인의 총 위임 물량에 비례하여 분배됩니다. 코스모스 허브는 블록을 생성한 검증인만 보상을 받지만 확률적으로 특정 기간 안에서 검증인들의 전체적인 블록 보상률은 스테이킹 수량에 비례하게 설계되었습니다.")]),v._v(" "),t("p",[v._v("10명의 검증인이 동일한 스테이킹 물량과 동일한 1%의 커미션을 가진 경우를 예시롤 들겠습니다. 만약 블록 생성에 대한 보상이 1,000 아톰이며 검증인들은 각자 20%의 스테이킹 물량을 자체 위임(셀프본딩) 했다고 보겠습니다. 1,000개의 블록생성 보상은 제안자에게 바로 지급되지 않으며, 검증인들 사이에서 스테이킹 수량에 비례하여 분배됩니다. 즉, 10명의 검증인들은 각자 100 아톰의 보상을 받게되는 것입니다. 이후 이 100 아톰은 다음과 같이 위임인들과 검증인들 사이에서 분배됩니다:")]),v._v(" "),t("ul",[t("li",[v._v("커미션: "),t("code",[v._v("100*80%*1% = 0.8아톰")])]),v._v(" "),t("li",[v._v("밸리데이터가 가지는 보상: "),t("code",[v._v("100\\*20% + 커미션 = 20.8 아톰")])]),v._v(" "),t("li",[v._v("모든 위임인들이 나누는 보상: "),t("code",[v._v("100\\*80% - 커시면 = 79.2 아톰")])])]),v._v(" "),t("p",[v._v("이후 각 위임인은 79.2 아톰 중에서 각자 위임한 물량에 비례하는 보상을 수령할 수 있습니다. 포톤(photon) 또한 이와 동일한 메커니즘을 통해 분배됩니다.")]),v._v(" "),t("h3",{attrs:{id:"수수료는-어떻게-나누어지나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#수수료는-어떻게-나누어지나요"}},[v._v("#")]),v._v(" 수수료는 어떻게 나누어지나요?")]),v._v(" "),t("p",[v._v("수수료는 위와 비슷하게 분배되지만, 제안자가 최소 프리커밋(precommit) 보다 많은 프리커밋을 받을 경우 수수료에 대한 보너스를 지급 받습니다.")]),v._v(" "),t("p",[v._v("블록 제안자로 선택된 검증인은 다른 검증인 2/3 이상의 서명을 통해 프리커밋을 받아야 블록을 생성할 수 있습니다. 추가적으로, 제안자는 특정 블록에서 검증인 2/3 이상의 서명을 받는 것에 대한 인센티브가 존재합니다. 보너스는 선형적으로 증가합니다: 2/3의 프리커밋을 받은 경우 1% 보너스로 시작하여 100% 프리커밋을 받은 경우 5% 보너스로 증가합니다. 하지만 제안자는 프리커밋을 과도하게 기다릴 경우 블록 제안 시간을 초과하여 제안자 순서가 다른 검증인으로 넘어갈 수 있다는 점을 유의해야 합니다. 이런 이유로 검증인들은 시간을 초과하지 않되 최대한 많은 프리커밋을 받을 수 있는 기간의 균형을 찾아야 합니다. 이 메커니즘은 검증인이 빈 블록을 생성하는 것을 방지하고 검증인 간 네트워킹 향상하며 검증인 검열을 방지하기 위해 도입되었습니다.")]),v._v(" "),t("p",[v._v("이 개념에 대한 예시를 들겠습니다. 10명의 동일한 스테이킹 물량을 가진 검증인들이 각자 1% 커미션과 20% 자체 본딩을 하고 있는 상황을 가정합니다. 새로운 총 1025.51020408 아톰의 보상이 있는 새로운 블록이 생성됩니다.")]),v._v(" "),t("p",[v._v("우선 2% 수수료가 삭감되고 예비 풀(reserve pool)로 이동합니다. 이 예비 풀은 거버넌스를 통해 업그레이드와 버그 바운티를 지급하는데 이용됩니다.")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("2% \\* 1025.51020408 = 20.51020408")]),v._v(" 아톰이 예비 풀로 이동합니다.")])]),v._v(" "),t("p",[v._v("이제 1005 아톰이 남아있습니다. 만약 블록 제안자가 해당 블록에 100% 프리커밋 서명을 포함했다면 최대 보너스인 5%를 지급받습니다.")]),v._v(" "),t("p",[v._v("각 검증인들에 대한 보상인 R을 찾기 위해서는 다음의 공식을 적용합니다:")]),v._v(" "),t("p",[t("code",[v._v("9*R + R R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),v._v(" "),t("ul",[t("li",[t("p",[v._v("제안자 검증인:")]),v._v(" "),t("ul",[t("li",[v._v("풀(pool)이 "),t("code",[v._v("R + R * 5%")]),v._v("를 얻음: 105 아톰")]),v._v(" "),t("li",[v._v("커미션: "),t("code",[v._v("105 * 80% * 1%")]),v._v(" = 0.84 아톰")]),v._v(" "),t("li",[v._v("검증인 보상: "),t("code",[v._v("105 * 20% + 커미션")]),v._v(" = 21.84 아톰")]),v._v(" "),t("li",[v._v("위임인 보상: "),t("code",[v._v("105 * 80% - 커미션")]),v._v(" = 83.16 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)")])])]),v._v(" "),t("li",[t("p",[v._v("제안을 하지 않은 검증인:")]),v._v(" "),t("ul",[t("li",[v._v("풀이 R 아톰을 얻음: 100 아톰")]),v._v(" "),t("li",[v._v("커미션: "),t("code",[v._v("100 * 80% * 1%")]),v._v(" = 0.8 아톰")]),v._v(" "),t("li",[v._v("검증인 보상: "),t("code",[v._v("105 * 20% + 커미션")]),v._v(" = 20.8 아톰")]),v._v(" "),t("li",[v._v("위임인 보상: "),t("code",[v._v("100 * 80% - 커미션")]),v._v(" = 79.2 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)")])])])]),v._v(" "),t("h3",{attrs:{id:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-페널티를-발생하는-경우는-무엇이-있나요"}},[v._v("#")]),v._v(" 슬래싱 페널티를 발생하는 경우는 무엇이 있나요?")]),v._v(" "),t("p",[v._v("특정 검증인이 악의적으로 행동할 경우, 검증인에게 본딩된 아톰(위임인들의 아톰 포함)은 슬래싱이 됩니다. 슬래싱 페널티는 악의적인 행동에 비례한 가중치가 적용됩니다. 검증인과 위임인들의 스테이크가 슬래싱 되는 경우는 3개가 있습니다:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("이중 서명(더블 사이닝):")]),v._v(" 누군가 체인A에서 특정 검증인이 동일한 높이의 두개의 블록을 체인A와 체인B에서 서명한 경우 (체인A 와 체인B 가 동일한 ancestor에서 유례한 경우) 해당 검증인은 체인A에서 슬래싱될 수 있습니다.")]),v._v(" "),t("li",[t("strong",[v._v("오프라인(unavailability):")]),v._v(" 특정 검증인의 서명이 X 블록동안 포함되지 않았을 경우, 해당 검증인은 X 에 비례한 소량의 아톰이 슬래싱됩니다. 만약 X가 사전에 설정된 Y 한도보다 높을 경우, 해당 검증인은 언본딩 됩니다.")]),v._v(" "),t("li",[t("strong",[v._v("미투표(non-voting):")]),v._v(" 특정 검증인이 거버넌스 프로포절에 투표를 하지 않는 경우 소량의 스테이크가 슬래싱될 수 있습니다.")])]),v._v(" "),t("p",[v._v("검증인의 행동의 의도적으로 악의적이지 않아도(예시: 노드 에러, 인터넷 연결 문제, DDoS, 프라이빗 탈취) 검증인은 슬래싱될 수 있다는 점을 참고하시기 바랍니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"}},[v._v("#")]),v._v(" 검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?")]),v._v(" "),t("p",[v._v("검증인은 자체 위임을 하지 않아도 검증인을 할 수 있습니다. 검증인의 총 스테이킹 수량은 셀프본딩 수량과 위임 수량의 합입니다. 셀프본딩이 낮은 검증인은 많은 위임인들의 스테이크를 통해 총 스테이킹 수량을 늘릴수 있습니다. 이런 이유로 검증인의 평판은 중요한 요소로 적용합니다.")]),v._v(" "),t("p",[v._v("검증인이 셀프본딩 할 의무는 없을 수 있지만, 위임인들의 대다수는 검증인들이 셀프본딩을 하는 것을 선호할 수 있습니다. 본인에 행동에 대한 책임감을 보여줄 수 있기 때문입니다.")]),v._v(" "),t("p",[v._v("검증인들은 본인의 책임감을 표기하기 위해서 자체적인 최소 셀프본딩 수량을 설정할 수 있습니다. 만약 해당 검증인의 셀프본딩률이 해당 수치보다 낮아질 경우, 해당 검증인들과 모든 위임인들의 아톰은 언본딩 됩니다.")]),v._v(" "),t("h3",{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("strong",[v._v("무-페널티 재위임(penalty-free re-delegation):")]),v._v(" 특정 검증인에 과도하게 묶여있는 현상을 줄이기 위해서 한 검증인에서 다른 검증인으로 위임을 쉽게 바꿀 수 있는 방식.")]),v._v(" "),t("li",[t("strong",[v._v("해킹 바운티:")]),v._v(" 커뮤니티가 검증인을 해킹하는 것을 장려하는 정책. 바운티 보상은 검증인이 스테이킹 하고 있는 물량의 크기에 비례.")]),v._v(" "),t("li",[t("strong",[v._v("UI 경고:")]),v._v(" 코스모스 보이저(Cosmos Voyager) 지갑을 이용하는 유저는 이미 과도한 스테이킹 물량을 보유하고 있는 검증인에게 위임을 하려고 할때 경고를 받는다.")])]),v._v(" "),t("h2",{attrs:{id:"기술적-요건"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#기술적-요건"}},[v._v("#")]),v._v(" 기술적 요건")]),v._v(" "),t("h3",{attrs:{id:"필요한-하드웨어-장비는-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-하드웨어-장비는-무엇인가요"}},[v._v("#")]),v._v(" 필요한 하드웨어 장비는 무엇인가요?")]),v._v(" "),t("p",[v._v("검증인은 전력, 네트워킹, 방화벽, 하드웨어 보안 모듈과 서버 백업이 있는 하나 이상의 데이터 센터를 제공할 것을 추천합니다.")]),v._v(" "),t("p",[v._v("네트워크 초기의 하드웨어 요건은 그리 고성능이 아닐 것으로 예상하고 있지만, 네트워크 사용량이 증가하면서 하드웨어 스펙 또한 증가할 것을 예상하고 있습니다. 테스트넷에 참가해서 하드웨어 세팅을 실험해보는 것을 추천드립니다.")]),v._v(" "),t("h3",{attrs:{id:"필요한-소프트웨어는-무엇인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-소프트웨어는-무엇인가요"}},[v._v("#")]),v._v(" 필요한 소프트웨어는 무엇인가요?")]),v._v(" "),t("p",[v._v("코스모스 허브 노드 외에도 모니터링, 알림, 관리 솔루션을 준비해야할 것으로 예상하고 있습니다.")]),v._v(" "),t("h3",{attrs:{id:"필요한-대역폭은-어느-정도-인가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#필요한-대역폭은-어느-정도-인가요"}},[v._v("#")]),v._v(" 필요한 대역폭은 어느 정도 인가요?")]),v._v(" "),t("p",[v._v("코스모스 네트워크는 이더리움과 비트코인에 비교해서 많은 대역폭과 쓰루풋(throughput)을 필요로 합니다.")]),v._v(" "),t("p",[v._v("데이터 센터 노드는 신뢰할 수 있는 클라우드 풀노드와 사회적으로 신뢰할 수 있는 다른 검증인들에게만 연결하는 것을 추천드립니다. 이는 데이터 센터의 노드과 DDoS 공격의 피해를 입는 것을 방지할 수 있습니다.")]),v._v(" "),t("p",[v._v("네트워크가 성장하면서 매일 몇 기가바이트 이상의 대역폭을 사용하는 것은 현실적인 것으로 판단됩니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인을-하는-것은-운영-측면에서-어떤가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인을-하는-것은-운영-측면에서-어떤가요"}},[v._v("#")]),v._v(" 검증인을 하는 것은 운영 측면에서 어떤가요?")]),v._v(" "),t("p",[v._v("성공적인 검증인은 다수의 실력있는 운영 인력이 확보되어야 할 것으로 예측됩니다. 코스모스 검증인 운영은 비트코인 채굴에 비해서 높은 난이도에 속합니다.")]),v._v(" "),t("h3",{attrs:{id:"키-관리는-어떻게-하는-것이-바람직한가요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#키-관리는-어떻게-하는-것이-바람직한가요"}},[v._v("#")]),v._v(" 키 관리는 어떻게 하는 것이 바람직한가요?")]),v._v(" "),t("p",[v._v("검증인은 ed25519 키를 지원하는 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것을 추천드립니다. 다음은 추천이 가능한 HSM들의 일부입니다:")]),v._v(" "),t("ul",[t("li",[v._v("YubiHSM 2")]),v._v(" "),t("li",[v._v("Ledger Nano S")]),v._v(" "),t("li",[v._v("Ledger BOLOS SGX enclave")]),v._v(" "),t("li",[v._v("Thales nShield support")])]),v._v(" "),t("p",[v._v("텐더민트 팀은 특정 회사의 솔루션을 지목하여 추천하지 않습니다. 검증인 커뮤니티는 자체적으로 HSM을 이용한 보안 솔루션을 연구하여 향상시킬 것을 권장합니다.")]),v._v(" "),t("h3",{attrs:{id:"운영-측면에서-어떤-요소들이-있나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#운영-측면에서-어떤-요소들이-있나요"}},[v._v("#")]),v._v(" 운영 측면에서 어떤 요소들이 있나요?")]),v._v(" "),t("p",[v._v("효율적으로 검증인을 운영하는 것은 예측 할 수 없는 언본딩과 슬래싱을 막는 것입니다. 이는 공격에 대한 대응, 전력 단절, 네트워크 단절, 보안 등에 대한 모든 위험 요소를 차단하고 준비하는 것입니다.")]),v._v(" "),t("h3",{attrs:{id:"보수-측면에서-어떤-것들이-요구되나요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#보수-측면에서-어떤-것들이-요구되나요"}},[v._v("#")]),v._v(" 보수 측면에서 어떤 것들이 요구되나요?")]),v._v(" "),t("p",[v._v("검증인은 정기적으로 소프트웨어 업그레이드와 버그 패치를 적용해야합니다. 네트워크 초기에는 다수의 문제들이 발생할 수 있을 것으로 예상되기 때문에 검증인들은 유심히 네트워크 상태를 모니터링 해야 합니다.")]),v._v(" "),t("h3",{attrs:{id:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}},[v._v("#")]),v._v(" 검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?")]),v._v(" "),t("p",[v._v("DDoS 공격은 공격자가 특정 IP의 서버에게 인터넷 트래픽을 과도하게 발생시켜 인터넷에 연결되는 것을 막는 공격입니다.")]),v._v(" "),t("p",[v._v("공격자는 네트워크를 스캔하여 특정 IP 주소를 지목하고 엄청난 트래픽을 발생시켜 공격을 하여 해당 노드의 정상적인 운영을 막습니다.")]),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("센트리노드에 대한 추가적인 정보는 "),t("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[v._v("여기"),t("OutboundLink")],1),v._v("에서 확인 가능합니다.")])])}),[],!1,null,null,null);_.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/143.c8a82d17.js b/main/assets/js/143.633bc773.js similarity index 99% rename from main/assets/js/143.c8a82d17.js rename to main/assets/js/143.633bc773.js index 3da63126d43..9a870e4c9c6 100644 --- a/main/assets/js/143.c8a82d17.js +++ b/main/assets/js/143.633bc773.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{560:function(t,a,s){"use strict";s.r(a);var v=s(1),e=Object(v.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[t._v("#")]),t._v(" 퍼블릭 테스트넷에서 밸리데이터 운영하기")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("현재 테스트넷을 참가하는 방법은 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[s("code",[t._v("testnet")]),t._v(" repo"),s("OutboundLink")],1),t._v("에 있습니다. 최신 테스트넷에 대한 정보를 확인하시려면 해당 링크를 확인해주세요.")])]),t._v(" "),s("p",[s("strong",[t._v("Note")]),t._v(": 이 문서는 "),s("strong",[t._v("퍼블릭 테스트넷")]),t._v(" 검증인들을 위해서만 작성되었습니다.")]),t._v(" "),s("p",[t._v("밸리데이터 노드를 세팅하기 전, "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드 세팅")]),t._v(" 가이드를 먼저 확인해주세요.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터란-무엇인가"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터란-무엇인가"}},[t._v("#")]),t._v(" 밸리데이터란 무엇인가?")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/ko/validators/overview.html"}},[t._v("밸리데이터")]),t._v("는 블록체인의 투표를 통해서 새로운 블록은 생성하는 역할을 합니다. 만약 특정 밸리데이터가 오프라인이 되거나, 같은 블록높이에서 중복 사이닝을 한 경우 해당 밸리데이터의 지분은 삭감(슬래싱, slashing) 됩니다. 노드를 DDOS 공격에서 보호하고 높은 접근성을 유지하기 위해서는 "),s("RouterLink",{attrs:{to:"/ko/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("센트리노드 아키텍쳐")]),t._v("에 대해서 읽어보세요.")],1),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[t._v("코스모스 허브의 검증인이 되는 것을 검토하신다면, "),s("RouterLink",{attrs:{to:"/ko/validators/security.html"}},[t._v("보안에 대한 분석")]),t._v("을 사전에 하시기를 바랍니다.")],1)]),t._v(" "),s("p",[t._v("만약 "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드")]),t._v("를 이미 운영중이시다면, 다음 항목을 건너뛰셔도 좋습니다.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터-생성하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-생성하기"}},[t._v("#")]),t._v(" 밸리데이터 생성하기")]),t._v(" "),s("p",[t._v("토큰 스테이킹을 통해 "),s("code",[t._v("cosmosvalconspub")]),t._v("로 새로운 밸리데이터를 생성할 수 있습니다. 본인의 밸리데이터 pubkey를 확인하기 위해서는 다음 명령어를 입력하세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),s("p",[t._v("다음은 "),s("code",[t._v("gaiad gentx")]),t._v(" 명령을 입력하세요:")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("보유하고 있는 "),s("code",[t._v("STAKE")]),t._v("이상을 이용하지 마십시오. 언제나 "),s("a",{attrs:{href:"https://faucet.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Faucet"),s("OutboundLink")],1),t._v("을 통해서 추가 "),s("code",[t._v("STAKE")]),t._v("를 받으실 수 있습니다.")])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD01MDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tcmF0ZT0mcXVvdDswLjEwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGU9JnF1b3Q7MC4yMCZxdW90OyBcCiAgLS1jb21taXNzaW9uLW1heC1jaGFuZ2UtcmF0ZT0mcXVvdDswLjAxJnF1b3Q7IAo="}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 커미션 값을 설정하실 때, "),s("code",[t._v("commission-max-change-rate")]),t._v("는 기존 "),s("code",[t._v("commission-rate")]),t._v("에서의 "),s("em",[t._v("퍼센트 포인트")]),t._v(" 변경을 기준으로 측정됩니다. 예) 커미션이 1%에서 2%로 변경되는 것은 100% 상승되는 것이지만, 1%p 변경.")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("consensus_pubkey")]),t._v(" 값이 지정되지 않은 경우, 기본적으로 "),s("code",[t._v("gaiad tendermint show-validator")]),t._v(" 의 값으로 설정됩니다. "),s("code",[t._v("key_name")]),t._v("은 트랙잭션을 서명할때 이용되는 프라이빗키의 명칭입니다.")]),t._v(" "),s("h2",{attrs:{id:"밸리데이터로써-제네시스-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터로써-제네시스-참가하기"}},[t._v("#")]),t._v(" 밸리데이터로써 제네시스 참가하기")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 문항은 제네시스 파일에 참가하려는 밸리데이터에게만 해당됩니다. 만약 검증을 하려는 체인이 이미 작동되고 있는 상태라면 이 항목을 건너뛰셔도 좋습니다.")]),t._v(" "),s("p",[t._v("밸리데이터로써 제네시스에 참가하고 싶으시다면 우선 본인(또는 위임자)가 stake를 보유하고 있다는 것을 증명해야 합니다. 스테이크를 검증인에게 본딩하는 하나 이상의 트랜잭션을 발생하신 후, 해당 트랜잭션을 제네시스 파일에 추가하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이런 경우에는 "),s("code",[t._v("gentx")]),t._v("를 생성하셔야 합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbiZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 명령어는 제네시스에서의 처리를 위해 "),s("code",[t._v("gentx")]),t._v("를 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장합니다.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("명령어 플래그에 대한 정보는 "),s("code",[t._v("gaiad gentx --help")]),t._v("를 사용에 확인하십시오.")])]),t._v(" "),s("p",[s("code",[t._v("gentx")]),t._v("는 자체위임 정보가 포함된 JSON 파일입니다. 모든 제네시스 트랜잭셕은 "),s("code",[t._v("genesis coordinator")]),t._v("에 의하여 모아진 후 최초 "),s("code",[t._v("genesis.json")]),t._v("파일과 대치하여 검증합니다. 최초 "),s("code",[t._v("genesis.json")]),t._v("에는 계정 리스트와 각 계정이 보유하고 있는 코인 정보가 포함되어있습니다. 트랜잭션이 처리되었다면 해당 정보는 "),s("code",[t._v("genesis.json")]),t._v("의 "),s("code",[t._v("gentx")]),t._v(" 항목에 머지(merge)됩니다.")]),t._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[t._v("#")]),t._v(" 제네시스 파일 복사, 제네시스 트랜잭션 처리하기")]),t._v(" "),s("p",[t._v("우선 "),s("code",[t._v("genesis.json")]),t._v("파일을 "),s("code",[t._v("gaiad")]),t._v("의 config 디렉토리로 가져옵니다.")]),t._v(" "),s("p",[t._v("Fetch the "),s("code",[t._v("genesis.json")]),t._v(" file into "),s("code",[t._v("gaiad")]),t._v("'s config directory.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy90ZXN0bmV0cy9tYXN0ZXIvbGF0ZXN0L2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" 이 항목에서는 최신 테스트넷 관련 정보가 있는 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 repo"),s("OutboundLink")],1),t._v("의 "),s("code",[t._v("latest")]),t._v(" 디렉토리를 사용합니다. 만약 다른 테스트넷에 연결하신다면 이용하시는 파일을 확인하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이제 다른 제네시스 밸리데이터들의 제네시스 트랜잭션을 가져옵니다. 현재 밸리데이터들이 본인들의 제네시스 트랜잭션을 제공할 수 있는 리포지토리가 없는 상태이나, 추후 테스트넷에서 검증 후 추가될 예정입니다.")]),t._v(" "),s("p",[t._v("모든 제네시스 트랜잭션을 받으시고 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장하셨다면 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" "),s("code",[t._v("gentx")]),t._v("에서 위임을 하는 계정에 스테이크(stake) 토큰이 있는 것을 확인하세요. 만약 해당 계정에 토큰이 없다면 "),s("code",[t._v("collect-gentx")]),t._v("가 실패하게 됩니다.")]),t._v(" "),s("p",[t._v("이전에 실행하신 명령어는 모든 제네시스 트랜잭션을 모으고 "),s("code",[t._v("genesis.json")]),t._v("을 파이널라이즈(finalize)합니다. 설정이 올바르게 되었는지 확인하기 위해서는 노드를 시작하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("h2",{attrs:{id:"검증인-설명-수정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-설명-수정하기"}},[t._v("#")]),t._v(" 검증인 설명 수정하기")]),t._v(" "),s("p",[t._v("검증인의 공개 설명 문구와 정보는 수정이 가능합니다. 이 정보는 위임자들이 어떤 검증인에게 위임을 할지 결정할때 이용될 수 있습니다. 각 플래그에 대해서 정보를 꼭 입력하시기 바랍니다. 만약 비어있는 항목이 있다면 해당 값은 빈 상태로 유지됩니다 ("),s("code",[t._v("--moniker")]),t._v("의 경우 머신 이름 값이 사용됩니다).")]),t._v(" "),s("p",[s("code",[t._v("--identity")]),t._v(" 값은 Keybase 또는 UPort 같은 시스템을 이용해서 신분(identity)를 검증하는데 이용될 수 있습니다. Keybase를 사용하시는 경우 "),s("code",[t._v("--identity")]),t._v("는 "),s("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),s("OutboundLink")],1),t._v(" 계정으로 생성하신 16자리 string 값이 입력되어야 합니다. 이런 절차는 다수의 온라인 네트워크에서 본인의 신분을 증명하는데 이용될 수 있습니다. 또한 Keybase API를 이용해서 Keybase 아바타를 가져와 밸리데이터 프로파일에 이용하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("commission-rate")]),t._v(" 값은 다음의 규칙을 따라야 합니다:")]),t._v(" "),s("ul",[s("li",[t._v("0 과 "),s("code",[t._v("commission-max-rate")]),t._v(" 값의 사이")]),t._v(" "),s("li",[t._v("검증인의 "),s("code",[t._v("commission-max-change-rate")]),t._v(" 값을 초과할 수 없습니다. "),s("code",[t._v("commission-max-change-rate")]),t._v("는 하루에 최대 커미션 값을 변경할 수 있는 한도입니다. 밸리데이터는 하루에 한번 "),s("code",[t._v("commission-max-change-rate")]),t._v("의 한도 안에서만 커미션을 변경할 수 있습니다.")])]),t._v(" "),s("h2",{attrs:{id:"밸리데이터-설명-확인하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-설명-확인하기"}},[t._v("#")]),t._v(" 밸리데이터 설명 확인하기")]),t._v(" "),s("p",[t._v("검증인의 정보는 다음 명령어로 확인이 가능합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-서명-정보-추적하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-서명-정보-추적하기"}},[t._v("#")]),t._v(" 밸리데이터 서명 정보 추적하기")]),t._v(" "),s("p",[t._v("특정 검증인의 과거 서명 정보를 확인하기 위해서는 "),s("code",[t._v("signing-info")]),t._v(" 명령어를 이용하실 수 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-석방-unjail-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-석방-unjail-하기"}},[t._v("#")]),t._v(" 밸리데이터 석방(Unjail)하기")]),t._v(" "),s("p",[t._v("특정 검증인이 과도한 다운타임으로 '구속(jailed)' 상태로 전환되면 운영자의 계정에서 '석방(unjail)' 요청 트랜잭션을 전송해야만 다시 블록 생성 리워드를 받을 수 있습니다(각 존의 리워드 분배 정책에 따라 다를 수 있음).")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-작동상태-확인"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-작동상태-확인"}},[t._v("#")]),t._v(" 밸리데이터 작동상태 확인")]),t._v(" "),s("p",[t._v("다음 명령어가 반응을 준다면 당신의 밸리데이터는 작동하고 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),s("p",[t._v("코스모스 테스트넷의 경우 코스모스 "),s("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("익스플로러"),s("OutboundLink")],1),t._v("를 통해서 밸리데이터가 운영되고 있는지 확인하실 수 있습니다. "),s("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" 파일의 "),s("code",[t._v("bech32")]),t._v(" 인코딩이된 "),s("code",[t._v("address")]),t._v(" 항목을 참고하세요.")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("검증인 세트에 포함되시기 원하신다면 125등 밸리데이터보다 보팅 파워(voting power)가 높아야 합니다.")])]),t._v(" "),s("h2",{attrs:{id:"흔히-발생하는-문제들"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#흔히-발생하는-문제들"}},[t._v("#")]),t._v(" 흔히 발생하는 문제들")]),t._v(" "),s("h3",{attrs:{id:"문제-1-내-검증인의-보팅-파워가-0-입니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-1-내-검증인의-보팅-파워가-0-입니다"}},[t._v("#")]),t._v(" 문제 #1: 내 검증인의 보팅 파워가 0 입니다")]),t._v(" "),s("p",[t._v("밸리데이터가 자동 언본딩 되었습니다. "),s("code",[t._v("gaia-8000")]),t._v("의 경우, 100개 블록 중 50개의 블록에 투표하지 않을 경우 언본딩 됩니다. 블록은 대략 ~2초 마다 생성되기 때문에 ~100초 이상 비활성화 상태를 유지하는 밸리데이터는 언본딩 될 수 있습니다. 가장 흔한 이유는 "),s("code",[t._v("gaiad")]),t._v(" 프로세스가 멈춘 경우입니다.")]),t._v(" "),s("p",[t._v("보팅 파워를 다시 밸리데이터에게 되돌리기 위해서, 우선 "),s("code",[t._v("gaiad")]),t._v("가 실행되고 있는지 확인하십시오. 만약 실행되고 있지 않은 경우 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("p",[t._v("당신의 풀노드가 최신 블록높이에 싱크될때까지 기다리십시오. 이후, 다음 명령어를 실행하십시오. 참고로 "),s("code",[t._v("")]),t._v(" 항목은 밸리데이터 계정의 주소이며, "),s("code",[t._v("")]),t._v("은 밸리데이터 계정의 이름입니다. 해당 정보는 "),s("code",[t._v("gaiad keys list")]),t._v(" 명령어를 통해 확인하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsICZsdDtjb3Ntb3MmZ3Q7IC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyAtLWZyb209Jmx0O2Zyb20mZ3Q7Cg=="}}),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("가 싱크되지 않은 상태에서 "),s("code",[t._v("unjail")]),t._v(" 명령을 실행하실 경우, 검증인이 아직 '구속' 상태라는 메시지를 받게 됩니다.")])]),t._v(" "),s("p",[t._v("마지막으로 밸리데이터의 보팅파워가 복구 되었는지 확인하십시오.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),s("p",[t._v("만약 보팅 파워가 예전보다 감소되었다면 다운타임에 대한 슬래싱이 이유일 수 있습니다.")]),t._v(" "),s("h3",{attrs:{id:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[t._v("#")]),t._v(" 문제 #2: "),s("code",[t._v("too many open files")]),t._v("때문에 "),s("code",[t._v("gaiad")]),t._v("가 강제 종료됩니다")]),t._v(" "),s("p",[t._v("리눅스가 각 프로세스당 열 수 있는는 파일 수는 최대 "),s("code",[t._v("1024")]),t._v("개입니다. "),s("code",[t._v("gaiad")]),t._v("는 1024개 이상의 열게될 수 있음으로 프로세스가 중단될 수 있습니다. 가장 간편한 해결책은 "),s("code",[t._v("ulimit -n 4096")]),t._v(" (열 수 있는 최대 파일 수)명령어를 입력하고 프로세스를 "),s("code",[t._v("gaiad start")]),t._v("로 재시작하는 것입니다. 만약 "),s("code",[t._v("systemd")]),t._v(" 또는 다른 프로세스 매니저로 "),s("code",[t._v("gaiad")]),t._v("를 실행하신다면 해당 레벨에서 몇가지 설정을 해야합니다. 문제 해결 샘플 "),s("code",[t._v("systemd")]),t._v(" 파일은 다음과 같습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{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.41d5bb95.js b/main/assets/js/144.9481644a.js similarity index 79% rename from main/assets/js/144.41d5bb95.js rename to main/assets/js/144.9481644a.js index efb6dbcdbae..0df4b37665f 100644 --- a/main/assets/js/144.41d5bb95.js +++ b/main/assets/js/144.9481644a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{603: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.18209fca.js b/main/assets/js/145.23b11bf4.js similarity index 99% rename from main/assets/js/145.18209fca.js rename to main/assets/js/145.23b11bf4.js index edbda134ee6..d3b3edacf80 100644 --- a/main/assets/js/145.18209fca.js +++ b/main/assets/js/145.23b11bf4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{557:function(e,t,o){"use strict";o.r(t);var n=o(1),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-to-launch-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-to-launch-mainnet"}},[e._v("#")]),e._v(" Cosmos Hub to Launch Mainnet")]),e._v(" "),o("h2",{attrs:{id:"pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[e._v("#")]),e._v(" Pre-launch Dependencies & How to Safely Claim Your Atoms")]),e._v(" "),o("p",[e._v("In the summer of 2016, the "),o("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos whitepaper"),o("OutboundLink")],1),e._v(" was released. In the\nspring of 2017, the "),o("a",{attrs:{href:"https://github.com/cosmos/fundraiser",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos fundraiser"),o("OutboundLink")],1),e._v(" was completed. In the first\nmonths of 2019, the software is "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("feature complete"),o("OutboundLink")],1),e._v(". The launch of the\nCosmos Hub draws near. What does this mean for Atom holders?")]),e._v(" "),o("p",[e._v("If you are an Atom holder, you will be able to delegate Atoms to validators on\nthe main network and vote on governance proposals. In fact, the future success\nof the network depends on you responsibly doing so! However, you will not be\nable to transfer Atoms yet. Transfers will be disabled at the protocol level\nuntil a hard-fork is executed to enable them.")]),e._v(" "),o("p",[e._v("Atom holders should carefully follow the guidelines in order to safely delegate\nAtoms. Please read through the entire guide first to familiarize yourself\nbefore you actually do anything: "),o("a",{attrs:{href:"https://hub.cosmos.network/main/delegators/delegator-guide-cli.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("CLI guide"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("The process outlined in the guide is currently the only verified and secure way\nto delegate Atoms at launch. This is because the gaiad tool used in the guide\nis the only wallet software undergoing third-party security audits right now.\nNo other wallet providers have begun security audits yet.")]),e._v(" "),o("p",[e._v("Remember that delegating Atoms involves significant risk. Once delegated to a\nvalidator, Atoms are bonded for a period of time during which they cannot be\nrecovered. If the validator misbehaves during this time, some or all of the\ndelegated Atoms may be burned. It is your responsibility to perform due\ndiligence on validators before delegating!")]),e._v(" "),o("p",[e._v("The Cosmos Hub is highly experimental software. In these early days, we can\nexpect to have issues, updates, and bugs. The existing tools require advanced\ntechnical skills and involve risks which are outside of the control of the\nInterchain Foundation and/or the Tendermint team (see also the risk section in\nthe "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Cosmos Contribution Terms"),o("OutboundLink")],1),e._v("). Any use of this open source\n"),o("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache 2.0 licensed"),o("OutboundLink")],1),e._v(" software is done at your own risk and on a “AS\nIS” basis without warranties or conditions of any kind, and any and all\nliability of the Interchain Foundation and/or the Tendermint team for damages\narising in connection to the software is excluded. Please exercise extreme\ncaution!")]),e._v(" "),o("p",[e._v("If you are looking for more information about delegation and want to talk to\nthe folks developing Cosmos, join the virtual meetup on February 14 where you\nwill be walked through the step-by-step instructions for delegating Atoms at\nlaunch.")]),e._v(" "),o("p",[e._v("Register here: "),o("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[e._v("gotowebinar.com/register/"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"remaining-milestones-for-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#remaining-milestones-for-launch"}},[e._v("#")]),e._v(" Remaining Milestones for Launch")]),e._v(" "),o("p",[e._v("To follow mainnet launch progress, please bookmark:\n"),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network/launch"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_5-cosmos-sdk-security-audits-✔"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_5-cosmos-sdk-security-audits-✔"}},[e._v("#")]),e._v(" 5 Cosmos-SDK Security Audits ✔")]),e._v(" "),o("p",[e._v("In early January, the Cosmos-SDK underwent the first in a series of third-party\nsecurity assessments scheduled for Q1 2019. This audit took place over a two\nand a half week period. To date, two different security auditing firms have\nassessed various parts of the Cosmos-SDK and a third audit is under way.")]),e._v(" "),o("h3",{attrs:{id:"_4-cosmos-sdk-feature-freeze"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_4-cosmos-sdk-feature-freeze"}},[e._v("#")]),e._v(" 4 Cosmos SDK Feature Freeze")]),e._v(" "),o("p",[e._v("The final breaking changes to the Cosmos-SDK are included in the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.0\nlaunch RC"),o("OutboundLink")],1),e._v(". Once this RC is completed, the Cosmos-SDK team will engage in a\nround of internal bug hunting to further ensure sufficient pre-launch security\ndue diligence.")]),e._v(" "),o("p",[e._v("Right after Cosmos-SDK v0.31.0 is released, a Gaia testnet will be released in\nan effort to flush out any hard to find bugs.")]),e._v(" "),o("h3",{attrs:{id:"_3-game-of-stakes-completed"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_3-game-of-stakes-completed"}},[e._v("#")]),e._v(" 3 Game of Stakes Completed")]),e._v(" "),o("p",[e._v("Game of Stakes (GoS), "),o("a",{attrs:{href:"https://blog.cosmos.network/announcing-incentivized-testnet-game-efe64e0956f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("the first adversarial testnet competition of its\nkind"),o("OutboundLink")],1),e._v(", was launched in December 2018 to stress test the economic incentive\nand social layers of a blockchain network secured purely by Proof-of-Stake. The\nGoS blockchain was successfully hard-forked three times to date. As soon as the\nGoS concludes, the "),o("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[e._v("scoring criteria"),o("OutboundLink")],1),e._v(" will be used to determine\nwinners. Those will be announced following the completion of the game.")]),e._v(" "),o("h3",{attrs:{id:"_2-genesis-transactions-collected"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-genesis-transactions-collected"}},[e._v("#")]),e._v(" 2 Genesis Transactions Collected")]),e._v(" "),o("p",[e._v("The Interchain Foundation will publish a recommendation for the allocation of\nAtoms at genesis. This will include allocations for Cosmos fundraiser\nparticipants, early contributors, and Game of Stakes winners. Any one with a\nrecommended allocation will have the opportunity to submit a gentx, which is\nrequired to become a validator at genesis. The ultimate result of the\nrecommended allocation and the collection of gentxs is a final "),o("a",{attrs:{href:"https://forum.cosmos.network/t/genesis-files-network-starts-vs-upgrades/1464",target:"_blank",rel:"noopener noreferrer"}},[e._v("genesis\nfile"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_1-cosmos-hub-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-cosmos-hub-mainnet-launch"}},[e._v("#")]),e._v(" 1 Cosmos Hub Mainnet Launch")]),e._v(" "),o("p",[e._v("Once a genesis file is adopted by the community, and +⅔ of the voting power\ncomes online, the Cosmos mainnet will be live.")]),e._v(" "),o("h2",{attrs:{id:"official-cosmos-communication-channels"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#official-cosmos-communication-channels"}},[e._v("#")]),e._v(" Official Cosmos Communication Channels")]),e._v(" "),o("p",[e._v("These are the official accounts that will communicate launch details:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://twitter.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Network"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos GitHub"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://blog.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Blog"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Please be aware that the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos forum"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Riot chat groups"),o("OutboundLink")],1),e._v(", and\n"),o("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram group"),o("OutboundLink")],1),e._v(" should not be treated as official news from Cosmos.")]),e._v(" "),o("p",[e._v("If you have doubt or confusion about what next steps to take and are unsure\nabout trustworthy sources of information, do nothing for the initial period and\nwait for an update via the three communication channels listed above. Do not\never provide your 12 words to any admin, websites or unofficial software.")]),e._v(" "),o("p",[o("strong",[e._v("We will never ask you for your private key or your seed phrase.")])]),e._v(" "),o("h2",{attrs:{id:"staying-safe-and-secure-for-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staying-safe-and-secure-for-mainnet-launch"}},[e._v("#")]),e._v(" Staying Safe (and Secure!) for Mainnet Launch")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it’s\ndefinitely one that malicious actors may try to take advantage of for their own\npersonal gain. "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_%28security%29",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1),e._v(" has existed for about as long as\nhuman beings have been on the planet, and in the technical era, it usually\ntakes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(". Both of these attacks are\nwildly successful forms of trickery that are responsible for over 95% of\naccount security breaches, and they don’t just happen via email: these days,\nopportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have\nan inbox"),o("OutboundLink")],1),e._v(". It doesn’t matter if you’re using Signal, Telegram, SMS,\nTwitter, or just checking your DMs on forums or social networks, attackers have\na "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital\nlife in effort to separate you from valuable information and assets that you\nmost definitely don’t want to lose.")]),e._v(" "),o("p",[e._v("While the prospect of having to deal with a malicious actor plotting against\nyou may seem daunting, there are many things that you can do to protect\nyourself from all kinds of social engineering schemes. In terms of preparing\nfor mainnet launch, this should require training your instincts to successfully\ndetect and avoid security risks, curating resources to serve as a source of\ntruth for verifying information, and going through a few technical steps to\nreduce or eliminate the risk of key or credential theft.")]),e._v(" "),o("p",[o("strong",[e._v("Here are few rules of engagement to keep in mind when you’re preparing for\nCosmos mainnet launch:")])]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Download software directly from official sources, and make sure that you’re\nalways using the latest, most secure version of gaiad when you’re doing\nanything that involves your 12 words. The latest versions of Tendermint, the\nCosmos-SDK, and gaiad will always be available from our official GitHub\nrepositories, and downloading them from there ensures that you will not be\ntricked into using a maliciously modified version of software.")])]),e._v(" "),o("li",[o("p",[e._v("Do not share your 12 words with anyone. The only person who should ever need\nto know them is you. This is especially important if you’re ever approached\nby someone attempting to offer custodial services for your Atom: to avoid\nlosing control of your tokens, you should store them offline to minimize the\nrisk of theft and have a strong backup strategy in place. And never, ever\nshare them with anyone else.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of unexpected attachments or emails that ask you to visit a\nsuspicious or unfamiliar website in the context of blockchains or\ncryptocurrency. An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v("\ndesigned to steal sensitive information from your computer. If you’re a Gmail\nuser, test your resilience against the latest email-based phishing tactics\n"),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Do your due diligence before purchasing Atoms. Atoms will not be transferable\nat launch, so they "),o("em",[e._v("cannot")]),e._v(" be bought or sold until a hard fork enables them\nto be. If and when they become transferable, make sure that you’ve researched\nthe seller or exchange to confirm that the Atoms are coming from a\ntrustworthy source.")])]),e._v(" "),o("li",[o("p",[e._v("Neither the Tendermint team nor the Interchain Foundation will be selling\nAtoms, so if you see social media posts or emails advertising a token sale\nfrom us, they’re not real and should be avoided. Enable 2-factor\nauthentication, and be mindful of recovery methods used to regain access to\nyour most important accounts. Unprotected accounts like email, social media,\nyour GitHub account, the Cosmos Forum and anything in between could give an\nattacker opportunities to gain foothold in your online life. If you haven’t\ndone so yet, start using an authenticator app or a hardware key immediately\nwherever you manage your tokens. This is a simple, effective, and proven way\nto reduce the risk of account theft.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people\nyou do not know in forums and on group chat channels. Familiarize yourself\nwith important commands, especially those that will help you carry out\nhigh-risk actions, and consult our official documentation to make sure that\nyou’re not being tricked into doing something that will harm you or your\nvalidator. And remember that the Cosmos forum, Riot channels, and Telegram\nare not sources of official information or news about Cosmos.")])]),e._v(" "),o("li",[o("p",[e._v("Verify transactions before hitting send. Yes, those address strings are long,\nbut visually comparing them in blocks of 4 characters at a time may be the\ndifference between sending them to the right place or sending them into\noblivion.")])])]),e._v(" "),o("p",[o("em",[e._v("If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(", or a message shows\nup asking for information that should never, ever be shared with someone else,\nyou can always work to verify it before engaging with it by navigating to a\nwebsite or official Cosmos communication channel on your own. No one from\nCosmos, the Tendermint team or the Interchain Foundation will ever send an\nemail that asks for you to share any kind of account credentials or your 12\nwords with us, and we will always use our official blog, Twitter and GitHub\naccounts to communicate important news directly to the Cosmos community.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{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/146.2dd38d96.js b/main/assets/js/146.4f65824a.js similarity index 99% rename from main/assets/js/146.2dd38d96.js rename to main/assets/js/146.4f65824a.js index 6a7b38644a3..3e631b2c315 100644 --- a/main/assets/js/146.2dd38d96.js +++ b/main/assets/js/146.4f65824a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{604:function(e,t,o){"use strict";o.r(t);var a=o(1),s=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:"the-3-phases-of-the-cosmos-hub-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-3-phases-of-the-cosmos-hub-mainnet"}},[e._v("#")]),e._v(" The 3 Phases of the Cosmos Hub Mainnet")]),e._v(" "),o("h2",{attrs:{id:"post-mainnet-development-roadmap-expectations-for-users"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#post-mainnet-development-roadmap-expectations-for-users"}},[e._v("#")]),e._v(" Post-Mainnet Development Roadmap & Expectations for Users")]),e._v(" "),o("p",[e._v("The launch of the Cosmos Hub mainnet is expected to happen in phases. Here we outline what to expect in each phase.")]),e._v(" "),o("h1",{attrs:{id:"🚨phase-i-network-gains-stability-🚨"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#🚨phase-i-network-gains-stability-🚨"}},[e._v("#")]),e._v(" 🚨Phase I: Network Gains Stability 🚨")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"state-reversions-and-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#state-reversions-and-mainnet-launch"}},[e._v("#")]),e._v(" State Reversions and Mainnet launch")]),e._v(" "),o("p",[e._v("One of the core ideologies around blockchains is immutability. This is the idea that we don't go\nback 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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once governance chooses to enable transfers, the importance of economic finality must be respected by the network.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once transfers are enabled, state rollbacks will be much more difficult to justify.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for developers:")]),e._v(" 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 "),o("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos-SDK framework"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://tendermint.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tendermint Core"),o("OutboundLink")],1),e._v(". 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 "),o("a",{attrs:{href:"%5Bhttps://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe%5D"}},[e._v("Inter-Blockchain Communication")]),e._v(", you must wait until Phase III, or participate in the IBC testnets that will begin shortly.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for users:")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("gaiad")]),e._v(" 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.")]),e._v(" "),o("p",[o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("CLI Guide")]),e._v(" 🔗")],1),e._v(" "),o("p",[o("strong",[e._v("Watch CLI delegation tutorial:")]),e._v(" "),o("a",{attrs:{href:"https://www.youtube.com/watch?v=ydZw6o6Mzy0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos YouTube"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"phase-ii-transfers-enabled"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#phase-ii-transfers-enabled"}},[e._v("#")]),e._v(" Phase II: Transfers Enabled")]),e._v(" "),o("p",[o("strong",[e._v("Summary:")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("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: "),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("p",[o("strong",[e._v("What this means for users:")]),e._v(" If the proposal is accepted and transfers are enabled, then it becomes possible to transfer Atoms.")]),e._v(" "),o("h1",{attrs:{id:"phase-iii-ibc-enabled"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#phase-iii-ibc-enabled"}},[e._v("#")]),e._v(" Phase III: IBC Enabled")]),e._v(" "),o("p",[o("strong",[e._v("Summary:")]),e._v(" In Phase III, the "),o("a",{attrs:{href:"%5Bhttps://docs.cosmos.network/main/ibc/overview.html%5D"}},[e._v("IBC protocol")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for developers:")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for users:")]),e._v(" 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\nthird-party platform.")]),e._v(" "),o("h1",{attrs:{id:"housekeeping-for-validators-submitting-a-gentx-for-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#housekeeping-for-validators-submitting-a-gentx-for-mainnet"}},[e._v("#")]),e._v(" Housekeeping for Validators: Submitting a "),o("code",[e._v("gentx")]),e._v(" for mainnet")]),e._v(" "),o("ol",[o("li",[e._v("You should have generated and secured the validator consensus key you are going to be validating under during mainnet.")]),e._v(" "),o("li",[e._v("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.")]),e._v(" "),o("li",[e._v("We will begin collecting Gentxs for mainnet once the recommended genesis allocations are published.")])]),e._v(" "),o("h1",{attrs:{id:"in-closing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#in-closing"}},[e._v("#")]),e._v(" In Closing")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("p",[o("em",[e._v("“We choose to go to the moon...not because they are easy, but because they are hard….”")])]),e._v(" "),o("p",[e._v("To the Moon 🚀")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{567:function(e,t,o){"use strict";o.r(t);var a=o(1),s=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:"the-3-phases-of-the-cosmos-hub-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-3-phases-of-the-cosmos-hub-mainnet"}},[e._v("#")]),e._v(" The 3 Phases of the Cosmos Hub Mainnet")]),e._v(" "),o("h2",{attrs:{id:"post-mainnet-development-roadmap-expectations-for-users"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#post-mainnet-development-roadmap-expectations-for-users"}},[e._v("#")]),e._v(" Post-Mainnet Development Roadmap & Expectations for Users")]),e._v(" "),o("p",[e._v("The launch of the Cosmos Hub mainnet is expected to happen in phases. Here we outline what to expect in each phase.")]),e._v(" "),o("h1",{attrs:{id:"🚨phase-i-network-gains-stability-🚨"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#🚨phase-i-network-gains-stability-🚨"}},[e._v("#")]),e._v(" 🚨Phase I: Network Gains Stability 🚨")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"state-reversions-and-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#state-reversions-and-mainnet-launch"}},[e._v("#")]),e._v(" State Reversions and Mainnet launch")]),e._v(" "),o("p",[e._v("One of the core ideologies around blockchains is immutability. This is the idea that we don't go\nback 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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once governance chooses to enable transfers, the importance of economic finality must be respected by the network.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once transfers are enabled, state rollbacks will be much more difficult to justify.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for developers:")]),e._v(" 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 "),o("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos-SDK framework"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://tendermint.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tendermint Core"),o("OutboundLink")],1),e._v(". 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 "),o("a",{attrs:{href:"%5Bhttps://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe%5D"}},[e._v("Inter-Blockchain Communication")]),e._v(", you must wait until Phase III, or participate in the IBC testnets that will begin shortly.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for users:")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("gaiad")]),e._v(" 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.")]),e._v(" "),o("p",[o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("CLI Guide")]),e._v(" 🔗")],1),e._v(" "),o("p",[o("strong",[e._v("Watch CLI delegation tutorial:")]),e._v(" "),o("a",{attrs:{href:"https://www.youtube.com/watch?v=ydZw6o6Mzy0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos YouTube"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"phase-ii-transfers-enabled"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#phase-ii-transfers-enabled"}},[e._v("#")]),e._v(" Phase II: Transfers Enabled")]),e._v(" "),o("p",[o("strong",[e._v("Summary:")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("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: "),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("p",[o("strong",[e._v("What this means for users:")]),e._v(" If the proposal is accepted and transfers are enabled, then it becomes possible to transfer Atoms.")]),e._v(" "),o("h1",{attrs:{id:"phase-iii-ibc-enabled"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#phase-iii-ibc-enabled"}},[e._v("#")]),e._v(" Phase III: IBC Enabled")]),e._v(" "),o("p",[o("strong",[e._v("Summary:")]),e._v(" In Phase III, the "),o("a",{attrs:{href:"%5Bhttps://docs.cosmos.network/main/ibc/overview.html%5D"}},[e._v("IBC protocol")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for developers:")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("What this means for users:")]),e._v(" 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\nthird-party platform.")]),e._v(" "),o("h1",{attrs:{id:"housekeeping-for-validators-submitting-a-gentx-for-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#housekeeping-for-validators-submitting-a-gentx-for-mainnet"}},[e._v("#")]),e._v(" Housekeeping for Validators: Submitting a "),o("code",[e._v("gentx")]),e._v(" for mainnet")]),e._v(" "),o("ol",[o("li",[e._v("You should have generated and secured the validator consensus key you are going to be validating under during mainnet.")]),e._v(" "),o("li",[e._v("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.")]),e._v(" "),o("li",[e._v("We will begin collecting Gentxs for mainnet once the recommended genesis allocations are published.")])]),e._v(" "),o("h1",{attrs:{id:"in-closing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#in-closing"}},[e._v("#")]),e._v(" In Closing")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("p",[o("em",[e._v("“We choose to go to the moon...not because they are easy, but because they are hard….”")])]),e._v(" "),o("p",[e._v("To the Moon 🚀")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/147.9cf621ac.js b/main/assets/js/147.b952018d.js similarity index 93% rename from main/assets/js/147.9cf621ac.js rename to main/assets/js/147.b952018d.js index 35b5a1fa56e..22b7e9867af 100644 --- a/main/assets/js/147.9cf621ac.js +++ b/main/assets/js/147.b952018d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{606:function(t,o,s){"use strict";s.r(o);var r=s(1),i=Object(r.a)({},(function(){var t=this,o=t.$createElement,s=t._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"migration-instructions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#migration-instructions"}},[t._v("#")]),t._v(" Migration Instructions")]),t._v(" "),s("p",[t._v("This directory houses Cosmos Hub major upgrade migration instructions.")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/migration/cosmoshub-2.html"}},[t._v("Upgrading from "),s("code",[t._v("cosmoshub-2")]),t._v(" to "),s("code",[t._v("cosmoshub-3")])])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/migration/cosmoshub-3.html"}},[t._v("Upgrading from "),s("code",[t._v("cosmoshub-3")]),t._v(" to "),s("code",[t._v("cosmoshub-4")])])],1)])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{566:function(t,o,s){"use strict";s.r(o);var r=s(1),i=Object(r.a)({},(function(){var t=this,o=t.$createElement,s=t._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"migration-instructions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#migration-instructions"}},[t._v("#")]),t._v(" Migration Instructions")]),t._v(" "),s("p",[t._v("This directory houses Cosmos Hub major upgrade migration instructions.")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/migration/cosmoshub-2.html"}},[t._v("Upgrading from "),s("code",[t._v("cosmoshub-2")]),t._v(" to "),s("code",[t._v("cosmoshub-3")])])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/migration/cosmoshub-3.html"}},[t._v("Upgrading from "),s("code",[t._v("cosmoshub-3")]),t._v(" to "),s("code",[t._v("cosmoshub-4")])])],1)])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/148.224a794a.js b/main/assets/js/148.c3d0b67b.js similarity index 99% rename from main/assets/js/148.224a794a.js rename to main/assets/js/148.c3d0b67b.js index cb5aa2ebc42..1ed48da5d98 100644 --- a/main/assets/js/148.224a794a.js +++ b/main/assets/js/148.c3d0b67b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{554:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-2-upgrade-instructions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("p",[e._v("The following document describes the necessary steps involved that full-node operators\nmust take in order to upgrade from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(". The Tendermint team\nwill post an official updated genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),o("p",[e._v("There is a strong social consensus around proposal "),o("code",[e._v("Cosmos Hub 3 Upgrade Proposal E")]),e._v("\non "),o("code",[e._v("cosmoshub-2")]),e._v(". This indicates that the upgrade procedure should be performed\non "),o("code",[e._v("December 11, 2019 at or around 14:27 UTC")]),e._v(" on block "),o("code",[e._v("2,902,000")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])])])]),e._v(" "),o("h2",{attrs:{id:"preliminary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),o("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),o("code",[e._v("cosmoshub-2")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),o("p",[e._v("First and foremost, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" and the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application have been split into separate\nrepositories. This allows for both the Cosmos SDK and Gaia to evolve naturally\nand independently. Thus, any future "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("releases"),o("OutboundLink")],1),e._v("\nof Gaia going forward, including this one, will be built and tagged from this\nrepository not the Cosmos SDK.")]),e._v(" "),o("p",[e._v("Since the Cosmos SDK and Gaia have now been split into separate repositories, their\nversioning will also naturally diverge. In an attempt to decrease community confusion and strive for\nsemantic versioning, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" will continue\non its current versioning path (i.e. v0.36.x ) and the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v("\napplication will become v2.0.x.")]),e._v(" "),o("p",[o("strong",[o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application v2.0.3 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"major-updates"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),o("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level in July's Cosmos development update found\n"),o("a",{attrs:{href:"https://blog.cosmos.network/cosmos-development-update-july-2019-8df2ade5ba0a",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Tagging/Events")]),e._v(": The entire system of what we used to call tags has been replaced by a more\nrobust and flexible system called events. Any client that depended on querying or subscribing to\ntags should take note on the new format as old queries will not work and must be updated. More in\ndepth docs on the events system can be found "),o("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/master/rpc/core/events.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".\nIn addition, each module documents its own events in the specs (e.g. "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.36.0/docs/spec/slashing/06_events.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("slashing"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("li",[o("strong",[e._v("Height Queries")]),e._v(": Both the CLI and REST clients now (re-)enable height queries via the\n"),o("code",[e._v("--height")]),e._v(" and "),o("code",[e._v("?height")]),e._v(" arguments respectively. An important note to keep in mind are that height\nqueries against pruning nodes will return errors when a pruned height is queried against. When no\nheight is provided, the latest height will be used by default keeping current behavior intact. In\naddition, many REST responses now wrap the query results in a new structure "),o("code",[e._v('{"height": ..., "result": ...}')]),e._v(".\nThat is, the height is now returned to the client for which the resource was queried at.")])]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),o("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),o("h2",{attrs:{id:"recovery"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),o("p",[e._v("Prior to exporting "),o("code",[e._v("cosmoshub-2")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),o("code",[e._v(".gaia")]),e._v(" directories.")]),e._v(" "),o("p",[e._v("It is critically important to back-up the "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),o("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\nv0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),o("h2",{attrs:{id:"upgrade-procedure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running v0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("ul",[o("li",[e._v("The version/commit hash of Gaia v2.0.3: "),o("code",[e._v("2f6783e298f25ff4e12cb84549777053ab88749a")])]),e._v(" "),o("li",[e._v("The upgrade height as agreed upon by governance: "),o("strong",[e._v("2,902,000")])]),e._v(" "),o("li",[e._v("You may obtain the canonical UTC timestamp of the exported block by any of the following methods:\n"),o("ul",[o("li",[e._v("Block explorer")]),e._v(" "),o("li",[e._v("Through manually querying an RPC node (e.g. "),o("code",[e._v("/block?height=2902000")]),e._v(")")]),e._v(" "),o("li",[e._v("Through manually querying a Gaia REST client (e.g. "),o("code",[e._v("/blocks/2902000")]),e._v(")")])])])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Verify you are currently running the correct version (v0.34.6+) of the "),o("em",[e._v("Cosmos SDK")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpjb3Ntb3Mtc2RrOiAwLjM0LjYKZ2l0IGNvbW1pdDogODAyMzRiYWY5MWExNWRkOWE3ZGY4ZGNhMzg2NzdiNjZiOGQxNDhjMQp2ZW5kb3IgaGFzaDogZjYwMTc2NjcyMjcwYzA5NDU1YzAxZTlkODgwMDc5YmEzNjEzMGRmNGY1Y2Q4OWRmNThiNjcwMWY1MGIxM2FhZApidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTIuMiBsaW51eC9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Export existing state from "),o("code",[e._v("cosmoshub-2")]),e._v(":")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),o("code",[e._v("cosmoshub-2")]),e._v(". See "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("p",[e._v("Before exporting state via the following command, the "),o("code",[e._v("gaiad")]),e._v(" binary must be stopped!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PTI5MDIwMDAgJmd0OyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbUExBQ0VIT0xERVJdICBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv2.0.3 of "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.13+"),o("OutboundLink")],1),e._v(" is required!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHYyLjAuMzsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify you are currently running the correct version (v2.0.3) of the "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMwpjb21taXQ6IDJmNjc4M2UyOThmMjVmZjRlMTJjYjg0NTQ5Nzc3MDUzYWI4ODc0OWEKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xMy4zIGRhcndpbi9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Migrate exported state from the current v0.34.6+ version to the new v2.0.3 version:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSB2MC4zNiBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTMgLS1nZW5lc2lzLXRpbWU9W1BMQUNFSE9MREVSXSZndDsgZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": The "),o("code",[e._v("migrate")]),e._v(" command takes an input genesis state and migrates it to a targeted version.\nBoth v0.36 and v0.37 are compatible as far as state structure is concerned.")]),e._v(" "),o("p",[e._v("Genesis time should be computed relative to the blocktime of "),o("code",[e._v("2,902,000")]),e._v(". The genesis time\nshall be the blocktime of "),o("code",[e._v("2,902,000")]),e._v(" + "),o("code",[e._v("60")]),e._v(" minutes with the subseconds truncated.")]),e._v(" "),o("p",[e._v("An example shell command(tested on OS X Mojave) to compute this values is:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3N0YXJnYXRlLmNvc21vcy5uZXR3b3JrOjI2NjU3L2Jsb2NrXD9oZWlnaHRcPTI5MDIwMDAgfCBqcSAtciAnLnJlc3VsdFsmcXVvdDtibG9ja19tZXRhJnF1b3Q7XVsmcXVvdDtoZWFkZXImcXVvdDtdWyZxdW90O3RpbWUmcXVvdDtdJ3x4YXJncyAtMCBkYXRlIC12ICs2ME0gIC1qICAtZiAmcXVvdDslWS0lbS0lZFQlSDolTTolUyZxdW90OyArJnF1b3Q7JVktJW0tJWRUJUg6JU06JVNaJnF1b3Q7Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Now we must update all parameters that have been agreed upon through governance. There is only a\nsingle parameter, "),o("code",[e._v("max_validators")]),e._v(", that we're upgrading based on "),o("a",{attrs:{href:"https://www.mintscan.io/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 10"),o("OutboundLink")],1)]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IGdlbmVzaXMuanNvbiB8IGpxICcuYXBwX3N0YXRlWyZxdW90O3N0YWtpbmcmcXVvdDtdWyZxdW90O3BhcmFtcyZxdW90O11bJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDtdPTEyNScgJmd0OyB0bXBfZ2VuZXNpcy5qc29uICZhbXA7JmFtcDsgbXYgdG1wX2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltQTEFDRUhPTERFUl0gIGdlbmVzaXMuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("Reset state:")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Move the new "),o("code",[e._v("genesis.json")]),e._v(" to your "),o("code",[e._v(".gaia/config/")]),e._v(" directory")])]),e._v(" "),o("li",[o("p",[e._v("Replace the "),o("code",[e._v("db_backend")]),e._v(" on "),o("code",[e._v(".gaia/config/config.toml")]),e._v(" to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"ZGJfYmFja2VuZCA9ICZxdW90O2dvbGV2ZWxkYiZxdW90Owo="}})],1),e._v(" "),o("li",[o("p",[e._v("Note, if you have any application configuration in "),o("code",[e._v("gaiad.toml")]),e._v(", that file has now been renamed to "),o("code",[e._v("app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgLmdhaWEvY29uZmlnL2dhaWFkLnRvbWwgLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1)]),e._v(" "),o("h2",{attrs:{id:"notes-for-service-providers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),o("ol",[o("li",[e._v("The transition from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(" contains an unusual amount of API breakage.\nAfter this upgrade will maintain the CosmosSDK API stability guarantee to avoid breaking APIs for at\nleast 6 months and hopefully long.")]),e._v(" "),o("li",[e._v("Anyone running signing infrastructure(wallets and exchanges) should be conscious that the "),o("code",[e._v("type:")]),e._v("\nfield on "),o("code",[e._v("StdTx")]),e._v(" will have changed from "),o("code",[e._v('"type":"auth/StdTx","value":...')]),e._v(" to "),o("code",[e._v('"type":"cosmos-sdk/StdTx","value":...')])]),e._v(" "),o("li",[e._v("As mentioned in the notes and SDK CHANGELOG, many queries to cosmos cli are wrapped with "),o("code",[e._v("height")]),e._v(" fields now.")]),e._v(" "),o("li",[e._v("We highly recommend standing up a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/master/docs/deploy-testnet.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet"),o("OutboundLink")],1),e._v("\nwith the "),o("code",[e._v("gaia-2.0")]),e._v(" release or joining the gaia-13006 testnet. More info for joining the testnet can be\nfound in the "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("riot validator room"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("We expect that developers with iOS or Android based apps may have to notify their users of downtime\nand ship an upgrade for cosmoshub-3 compatibility unless they have some kind of switch they can throw\nfor the new tx formats. Server side applications should experience briefer service interruptions and\nbe able to just spin up new nodes and migrate to the new apis.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{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/149.10e71a6f.js b/main/assets/js/149.10e71a6f.js new file mode 100644 index 00000000000..5948e7a9c54 --- /dev/null +++ b/main/assets/js/149.10e71a6f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{498:function(e,a,t){"use strict";t.r(a);var o=t(1),s=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-3-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 3 Upgrade Instructions")]),e._v(" "),t("p",[e._v("The following document describes the necessary steps involved that validators and full node operators\nmust take in order to upgrade from "),t("code",[e._v("cosmoshub-3")]),e._v(" to "),t("code",[e._v("cosmoshub-4")]),e._v(". The Cosmos teams\nwill post an official "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),t("p",[e._v("There is a strong social consensus around proposal "),t("code",[e._v("Cosmos Hub 4 Upgrade Proposal")]),e._v("\non "),t("code",[e._v("cosmoshub-3")]),e._v(". Following proposals #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),t("OutboundLink")],1),e._v(", #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),t("OutboundLink")],1),e._v(" and #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),t("OutboundLink")],1),e._v(".\nThis indicates that the upgrade procedure should be performed on "),t("code",[e._v("February 18, 2021 at 06:00 UTC")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#summary"}},[e._v("Summary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#migrations"}},[e._v("Migrations")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])]),e._v(" "),t("h1",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("The Cosmoshub-3 will undergo a scheduled upgrade to Cosmoshub-4 on Feb 18, 2021 at 6 UTC.")]),e._v(" "),t("p",[e._v("The following is a short summary of the upgrade steps:\n1. Stopping the running Gaia v2.0.x instance\n1. Backing up configs, data, and keys used for running Cosmoshub-3\n1. Resetting state to clear the local Cosmoshub-3 state\n1. Copying the cosmoshub-4 genesis file to the Gaia config folder (either after migrating an existing cosmoshub-3 genesis export, or downloading the cosmoshub-4 genesis from the mainnet github)\n1. Installing the Gaia v4.0.x release\n1. Starting the Gaia v4.0.x instance to resume the Cosmos hub chain at a height of "),t("cosmoshub3",{attrs:{height:""}},[e._v(" + 1.")])],1),e._v(" "),t("p",[e._v("Specific instructions for validators are available in "),t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")]),e._v(",\nand specific instructions for full node operators are available in "),t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")]),e._v(".")]),e._v(" "),t("p",[e._v("Upgrade coordination and support for validators will be available on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The network upgrade can take the following potential pathways:")]),e._v(" "),t("ol",[t("li",[e._v("Happy path: Validator successfully migrates the cosmoshub-3 genesis file to a cosmoshub-4 genesis file, and the validator can successfully start Gaia v4 with the cosmoshub-4 genesis within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Not-so-happy path: Validators have trouble migrating the cosmoshub-3 genesis to a cosmoshub-4 genesis, but can obtain the genesis file from the Cosmos mainnet github repo and can successfully start Gaia v4 within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Abort path: In the rare event that the team becomes aware of critical issues, which result in an unsuccessful migration within a few hours, the upgrade will be announced as aborted\non the #validators-verified channel of "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(", and validators will need to resume running cosmoshub-3 network without any updates or changes.\nA new governance proposal for the upgrade will need to be issued and voted on by the community.")])]),e._v(" "),t("h1",{attrs:{id:"migrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migrations"}},[e._v("#")]),e._v(" Migrations")]),e._v(" "),t("p",[e._v("These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.")]),e._v(" "),t("p",[e._v("If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.")]),e._v(" "),t("ol",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("App and Modules Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Guide to v0.40"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Endpoints Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/migration/cosmoshub-3/breaking_changes.html"}},[e._v("Collection of breaking changes from changelogs")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Inter-Blockchain Communication (IBC)– cross-chain transactions"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Protobuf Migration – blockchain performance & dev acceleration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("State Sync – minutes to sync new nodes"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Full-Featured Light Clients"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Module – upgrade automation"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/569#issuecomment-767910963"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"preliminary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),t("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),t("code",[e._v("cosmoshub-3")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),t("p",[e._v("First and foremost, "),t("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" following\nthe "),t("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Standads"),t("OutboundLink")],1),e._v(" will be enabled.\nThis upgrade comes with several improvements in efficiency, node synchronization and following blockchain upgrades.\nMore details on the "),t("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Website"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(" application v4.0.2 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".\nFollowing Cosmos SDK version v0.41.2 and Tendermint v0.34.7.")]),e._v(" "),t("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),t("h2",{attrs:{id:"major-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),t("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level\n"),t("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Protocol Buffers")]),e._v(": Initially the Cosmos SDK used Amino codecs for nearly all encoding and decoding.\nIn this version a major upgrade to Protocol Buffers have been integrated. It is expected that with Protocol Buffers\napplications gain in speed, readability, convenience and interoperability with many programming languages.\n"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("Read more"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("CLI")]),e._v(": The CLI and the daemon for a blockchain were separated in previous versions of the Cosmos SDK. This\nled to a "),t("code",[e._v("gaiad")]),e._v(" and "),t("code",[e._v("gaiacli")]),e._v(" binary which were separated and could be used for different interactions with the\nblockchain. Both of these have been merged into one "),t("code",[e._v("gaiad")]),e._v(" which now supports the commands the "),t("code",[e._v("gaiacli")]),e._v(" previously\nsupported.")]),e._v(" "),t("li",[t("strong",[e._v("Node Configuration")]),e._v(": Previously blockchain data and node configuration was stored in "),t("code",[e._v("~/.gaia/")]),e._v(", these will\nnow reside in "),t("code",[e._v("~/.gaia/")]),e._v(", if you use scripts that make use of the configuration or blockchain data, make sure to update the path.")])]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),t("h2",{attrs:{id:"recovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),t("p",[e._v("Prior to exporting "),t("code",[e._v("cosmoshub-3")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.")]),e._v(" "),t("p",[e._v("It is critically important to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\ngaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-procedure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running gaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v2.0.15: "),t("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Make sure your chain halts at the right time and date:\nFebruary 18, 2021 at 06:00 UTC is in UNIX seconds: "),t("code",[e._v("1613628000")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Export existing state from "),t("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),t("p",[e._v("Before exporting state via the following command, the "),t("code",[e._v("gaiad")]),e._v(" binary must be stopped!\nAs a validator, you can see the last block height created in the\n"),t("code",[e._v("~/.gaia/data/priv_validator_state.json")]),e._v(" - or now residing in "),t("code",[e._v("gaiad_backup")]),e._v(" when you made\na backup as in the last step - and obtain it with")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHwganEgJy5oZWlnaHQnCg=="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),t("p",[t("em",[e._v("this might take a while, you can expect an hour for this step")])])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nGoing forward it will be important that all parties can create the same genesis file export.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),t("li",[t("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".\nCross check your genesis hash with other peers (other validators) in the chat rooms.")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Migrate exported state from the current v2.0.15 version to the new v4.0.2 version:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),t("p",[e._v("This will migrate our exported state into the required "),t("code",[e._v("genesis.json")]),e._v(" file to start the cosmoshub-4.")])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nIt is important that each party can reproduce the same genesis.json file from the steps accordingly.")])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h1",{attrs:{id:"guidance-for-full-node-operators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#guidance-for-full-node-operators"}},[e._v("#")]),e._v(" Guidance for Full Node Operators")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Stop your Gaia v2.0.15 instance.")])]),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. That means the backup of "),t("code",[e._v(".gaia")]),e._v(" should\nonly take place once the chain has halted at UNIX time "),t("code",[e._v("1613628000")]),e._v(".\nIn such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Download the cosmoshub-4 genesis file from the "),t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Mainnet Github"),t("OutboundLink")],1),e._v(".\nThis file will be generated by a validator that is migrating from cosmoshub-3 to cosmoshub-4.\nThe cosmoshub-4 genesis file will be validated by community participants, and\nthe hash of the file will be shared on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Install v4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h2",{attrs:{id:"notes-for-service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),t("h1",{attrs:{id:"rest-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-server"}},[e._v("#")]),e._v(" REST server")]),e._v(" "),t("p",[e._v("In case you have been running REST server with the command "),t("code",[e._v("gaiacli rest-server")]),e._v(" previously, running this command will not be necessary anymore.\nAPI server is now in-process with daemon and can be enabled/disabled by API configuration in your "),t("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),e._v(" "),t("p",[t("code",[e._v("swagger")]),e._v(" setting refers to enabling/disabling swagger docs API, i.e, /swagger/ API endpoint.")]),e._v(" "),t("h1",{attrs:{id:"grpc-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#grpc-configuration"}},[e._v("#")]),e._v(" gRPC Configuration")]),e._v(" "),t("p",[e._v("gRPC configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),t("h1",{attrs:{id:"state-sync"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),t("p",[e._v("State Sync Configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/149.6bc3ef41.js b/main/assets/js/149.6bc3ef41.js deleted file mode 100644 index 03c97086339..00000000000 --- a/main/assets/js/149.6bc3ef41.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{497:function(e,a,t){"use strict";t.r(a);var o=t(1),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-3-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 3 Upgrade Instructions")]),e._v(" "),t("p",[e._v("The following document describes the necessary steps involved that validators and full node operators\nmust take in order to upgrade from "),t("code",[e._v("cosmoshub-3")]),e._v(" to "),t("code",[e._v("cosmoshub-4")]),e._v(". The Cosmos teams\nwill post an official "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),t("p",[e._v("There is a strong social consensus around proposal "),t("code",[e._v("Cosmos Hub 4 Upgrade Proposal")]),e._v("\non "),t("code",[e._v("cosmoshub-3")]),e._v(". Following proposals #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),t("OutboundLink")],1),e._v(", #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),t("OutboundLink")],1),e._v(" and #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),t("OutboundLink")],1),e._v(".\nThis indicates that the upgrade procedure should be performed on "),t("code",[e._v("February 18, 2021 at 06:00 UTC")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#summary"}},[e._v("Summary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#migrations"}},[e._v("Migrations")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])]),e._v(" "),t("h1",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("The Cosmoshub-3 will undergo a scheduled upgrade to Cosmoshub-4 on Feb 18, 2021 at 6 UTC.")]),e._v(" "),t("p",[e._v("The following is a short summary of the upgrade steps:\n1. Stopping the running Gaia v2.0.x instance\n1. Backing up configs, data, and keys used for running Cosmoshub-3\n1. Resetting state to clear the local Cosmoshub-3 state\n1. Copying the cosmoshub-4 genesis file to the Gaia config folder (either after migrating an existing cosmoshub-3 genesis export, or downloading the cosmoshub-4 genesis from the mainnet github)\n1. Installing the Gaia v4.0.x release\n1. Starting the Gaia v4.0.x instance to resume the Cosmos hub chain at a height of "),t("cosmoshub3",{attrs:{height:""}},[e._v(" + 1.")])],1),e._v(" "),t("p",[e._v("Specific instructions for validators are available in "),t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")]),e._v(",\nand specific instructions for full node operators are available in "),t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")]),e._v(".")]),e._v(" "),t("p",[e._v("Upgrade coordination and support for validators will be available on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The network upgrade can take the following potential pathways:")]),e._v(" "),t("ol",[t("li",[e._v("Happy path: Validator successfully migrates the cosmoshub-3 genesis file to a cosmoshub-4 genesis file, and the validator can successfully start Gaia v4 with the cosmoshub-4 genesis within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Not-so-happy path: Validators have trouble migrating the cosmoshub-3 genesis to a cosmoshub-4 genesis, but can obtain the genesis file from the Cosmos mainnet github repo and can successfully start Gaia v4 within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Abort path: In the rare event that the team becomes aware of critical issues, which result in an unsuccessful migration within a few hours, the upgrade will be announced as aborted\non the #validators-verified channel of "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(", and validators will need to resume running cosmoshub-3 network without any updates or changes.\nA new governance proposal for the upgrade will need to be issued and voted on by the community.")])]),e._v(" "),t("h1",{attrs:{id:"migrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migrations"}},[e._v("#")]),e._v(" Migrations")]),e._v(" "),t("p",[e._v("These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.")]),e._v(" "),t("p",[e._v("If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.")]),e._v(" "),t("ol",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("App and Modules Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Guide to v0.40"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Endpoints Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[e._v("Collection of breaking changes from changelogs")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Inter-Blockchain Communication (IBC)– cross-chain transactions"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Protobuf Migration – blockchain performance & dev acceleration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("State Sync – minutes to sync new nodes"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Full-Featured Light Clients"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Module – upgrade automation"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/569#issuecomment-767910963"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"preliminary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),t("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),t("code",[e._v("cosmoshub-3")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),t("p",[e._v("First and foremost, "),t("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" following\nthe "),t("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Standads"),t("OutboundLink")],1),e._v(" will be enabled.\nThis upgrade comes with several improvements in efficiency, node synchronization and following blockchain upgrades.\nMore details on the "),t("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Website"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(" application v4.0.2 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".\nFollowing Cosmos SDK version v0.41.2 and Tendermint v0.34.7.")]),e._v(" "),t("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),t("h2",{attrs:{id:"major-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),t("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level\n"),t("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Protocol Buffers")]),e._v(": Initially the Cosmos SDK used Amino codecs for nearly all encoding and decoding.\nIn this version a major upgrade to Protocol Buffers have been integrated. It is expected that with Protocol Buffers\napplications gain in speed, readability, convenience and interoperability with many programming languages.\n"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("Read more"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("CLI")]),e._v(": The CLI and the daemon for a blockchain were separated in previous versions of the Cosmos SDK. This\nled to a "),t("code",[e._v("gaiad")]),e._v(" and "),t("code",[e._v("gaiacli")]),e._v(" binary which were separated and could be used for different interactions with the\nblockchain. Both of these have been merged into one "),t("code",[e._v("gaiad")]),e._v(" which now supports the commands the "),t("code",[e._v("gaiacli")]),e._v(" previously\nsupported.")]),e._v(" "),t("li",[t("strong",[e._v("Node Configuration")]),e._v(": Previously blockchain data and node configuration was stored in "),t("code",[e._v("~/.gaia/")]),e._v(", these will\nnow reside in "),t("code",[e._v("~/.gaia/")]),e._v(", if you use scripts that make use of the configuration or blockchain data, make sure to update the path.")])]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),t("h2",{attrs:{id:"recovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),t("p",[e._v("Prior to exporting "),t("code",[e._v("cosmoshub-3")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.")]),e._v(" "),t("p",[e._v("It is critically important to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\ngaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-procedure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running gaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v2.0.15: "),t("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Make sure your chain halts at the right time and date:\nFebruary 18, 2021 at 06:00 UTC is in UNIX seconds: "),t("code",[e._v("1613628000")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Export existing state from "),t("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),t("p",[e._v("Before exporting state via the following command, the "),t("code",[e._v("gaiad")]),e._v(" binary must be stopped!\nAs a validator, you can see the last block height created in the\n"),t("code",[e._v("~/.gaia/data/priv_validator_state.json")]),e._v(" - or now residing in "),t("code",[e._v("gaiad_backup")]),e._v(" when you made\na backup as in the last step - and obtain it with")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHwganEgJy5oZWlnaHQnCg=="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),t("p",[t("em",[e._v("this might take a while, you can expect an hour for this step")])])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nGoing forward it will be important that all parties can create the same genesis file export.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),t("li",[t("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".\nCross check your genesis hash with other peers (other validators) in the chat rooms.")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Migrate exported state from the current v2.0.15 version to the new v4.0.2 version:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),t("p",[e._v("This will migrate our exported state into the required "),t("code",[e._v("genesis.json")]),e._v(" file to start the cosmoshub-4.")])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nIt is important that each party can reproduce the same genesis.json file from the steps accordingly.")])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h1",{attrs:{id:"guidance-for-full-node-operators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#guidance-for-full-node-operators"}},[e._v("#")]),e._v(" Guidance for Full Node Operators")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Stop your Gaia v2.0.15 instance.")])]),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. That means the backup of "),t("code",[e._v(".gaia")]),e._v(" should\nonly take place once the chain has halted at UNIX time "),t("code",[e._v("1613628000")]),e._v(".\nIn such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Download the cosmoshub-4 genesis file from the "),t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Mainnet Github"),t("OutboundLink")],1),e._v(".\nThis file will be generated by a validator that is migrating from cosmoshub-3 to cosmoshub-4.\nThe cosmoshub-4 genesis file will be validated by community participants, and\nthe hash of the file will be shared on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Install v4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h2",{attrs:{id:"notes-for-service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),t("h1",{attrs:{id:"rest-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-server"}},[e._v("#")]),e._v(" REST server")]),e._v(" "),t("p",[e._v("In case you have been running REST server with the command "),t("code",[e._v("gaiacli rest-server")]),e._v(" previously, running this command will not be necessary anymore.\nAPI server is now in-process with daemon and can be enabled/disabled by API configuration in your "),t("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),e._v(" "),t("p",[t("code",[e._v("swagger")]),e._v(" setting refers to enabling/disabling swagger docs API, i.e, /swagger/ API endpoint.")]),e._v(" "),t("h1",{attrs:{id:"grpc-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#grpc-configuration"}},[e._v("#")]),e._v(" gRPC Configuration")]),e._v(" "),t("p",[e._v("gRPC configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),t("h1",{attrs:{id:"state-sync"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),t("p",[e._v("State Sync Configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/15.f4461b1c.js b/main/assets/js/15.621001a3.js similarity index 96% rename from main/assets/js/15.f4461b1c.js rename to main/assets/js/15.621001a3.js index c308b2929bd..121400c543e 100644 --- a/main/assets/js/15.f4461b1c.js +++ b/main/assets/js/15.621001a3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{408:function(t,s,i){},437:function(t,s,i){"use strict";i(408)},518:function(t,s,i){"use strict";i.r(s);i(437);var a=i(1),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[s("mask",{attrs:{id:"mask0","mask-type":"alpha",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16"}},[s("mask",{attrs:{id:"path-1-inside-1","mask-type":"luminance",fill:"white"}},[s("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.657 0H0V16H16V3.72805L11.5355 8.19256L7.99995 4.65703L12.657 0Z"}})]),this._v(" "),s("path",{staticClass:"fill",attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.657 0H0V16H16V3.72805L11.5355 8.19256L7.99995 4.65703L12.657 0Z"}}),this._v(" "),s("path",{staticClass:"fill",attrs:{d:"M0 0V-1H-1V0H0ZM12.657 0L13.3641 0.707107L15.0712 -1H12.657V0ZM0 16H-1V17H0V16ZM16 16V17H17V16H16ZM16 3.72805H17V1.31384L15.2929 3.02094L16 3.72805ZM11.5355 8.19256L10.8284 8.89967L11.5355 9.60678L12.2426 8.89967L11.5355 8.19256ZM7.99995 4.65703L7.29285 3.94992L6.58574 4.65703L7.29285 5.36414L7.99995 4.65703ZM0 1H12.657V-1H0V1ZM1 16V0H-1V16H1ZM16 15H0V17H16V15ZM15 3.72805V16H17V3.72805H15ZM15.2929 3.02094L10.8284 7.48546L12.2426 8.89967L16.7071 4.43516L15.2929 3.02094ZM12.2426 7.48546L8.70706 3.94992L7.29285 5.36414L10.8284 8.89967L12.2426 7.48546ZM8.70706 5.36414L13.3641 0.707107L11.9499 -0.707107L7.29285 3.94992L8.70706 5.36414Z",mask:"url(#path-1-inside-1)"}})]),this._v(" "),s("g",{attrs:{mask:"url(#mask0)"}},[s("rect",{staticClass:"fill",attrs:{x:"0.5",y:"0.5",width:"15",height:"15",rx:"1.5"}})]),this._v(" "),s("path",{staticClass:"fill",attrs:{d:"M13.9595 2.04046C14.0805 2.16137 14.217 2.25712 14.3627 2.32772L6.50034 10.19L5.63738 10.3626L5.80997 9.49966L13.6723 1.63735C13.7429 1.78301 13.8386 1.91955 13.9595 2.04046Z",fill:"black"}})])}),[],!1,null,"09fc938e",null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{408:function(t,s,i){},437:function(t,s,i){"use strict";i(408)},473:function(t,s,i){"use strict";i.r(s);i(437);var a=i(1),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[s("mask",{attrs:{id:"mask0","mask-type":"alpha",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16"}},[s("mask",{attrs:{id:"path-1-inside-1","mask-type":"luminance",fill:"white"}},[s("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.657 0H0V16H16V3.72805L11.5355 8.19256L7.99995 4.65703L12.657 0Z"}})]),this._v(" "),s("path",{staticClass:"fill",attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.657 0H0V16H16V3.72805L11.5355 8.19256L7.99995 4.65703L12.657 0Z"}}),this._v(" "),s("path",{staticClass:"fill",attrs:{d:"M0 0V-1H-1V0H0ZM12.657 0L13.3641 0.707107L15.0712 -1H12.657V0ZM0 16H-1V17H0V16ZM16 16V17H17V16H16ZM16 3.72805H17V1.31384L15.2929 3.02094L16 3.72805ZM11.5355 8.19256L10.8284 8.89967L11.5355 9.60678L12.2426 8.89967L11.5355 8.19256ZM7.99995 4.65703L7.29285 3.94992L6.58574 4.65703L7.29285 5.36414L7.99995 4.65703ZM0 1H12.657V-1H0V1ZM1 16V0H-1V16H1ZM16 15H0V17H16V15ZM15 3.72805V16H17V3.72805H15ZM15.2929 3.02094L10.8284 7.48546L12.2426 8.89967L16.7071 4.43516L15.2929 3.02094ZM12.2426 7.48546L8.70706 3.94992L7.29285 5.36414L10.8284 8.89967L12.2426 7.48546ZM8.70706 5.36414L13.3641 0.707107L11.9499 -0.707107L7.29285 3.94992L8.70706 5.36414Z",mask:"url(#path-1-inside-1)"}})]),this._v(" "),s("g",{attrs:{mask:"url(#mask0)"}},[s("rect",{staticClass:"fill",attrs:{x:"0.5",y:"0.5",width:"15",height:"15",rx:"1.5"}})]),this._v(" "),s("path",{staticClass:"fill",attrs:{d:"M13.9595 2.04046C14.0805 2.16137 14.217 2.25712 14.3627 2.32772L6.50034 10.19L5.63738 10.3626L5.80997 9.49966L13.6723 1.63735C13.7429 1.78301 13.8386 1.91955 13.9595 2.04046Z",fill:"black"}})])}),[],!1,null,"09fc938e",null);s.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/150.50311e0c.js b/main/assets/js/150.9719ec09.js similarity index 99% rename from main/assets/js/150.50311e0c.js rename to main/assets/js/150.9719ec09.js index c25ae11622d..e4bd6392904 100644 --- a/main/assets/js/150.50311e0c.js +++ b/main/assets/js/150.9719ec09.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{551:function(e,a,o){"use strict";o.r(a);var s=o(1),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"instrucciones-de-actualizacion-del-cosmos-hub-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#instrucciones-de-actualizacion-del-cosmos-hub-3"}},[e._v("#")]),e._v(" Instrucciones de actualización del Cosmos Hub 3")]),e._v(" "),o("p",[e._v("El siguiente documento describe los pasos necesarios que deben seguir los operadores de un full node para actualizar de "),o("code",[e._v("cosmoshub-3")]),e._v(" a "),o("code",[e._v("cosmoshub-4")]),e._v(". El equipo de Tendermint publicará un archivo génesis oficial actualizado, pero se recomienda que los validadores ejecuten las siguientes instrucciones para verificar el archivo génesis resultante.")]),e._v(" "),o("p",[e._v("Existe un amplio consenso social en torno a la "),o("code",[e._v("propuesta de actualización del Cosmos Hub 4")]),e._v(" sobre el "),o("code",[e._v("cosmoshub-3")]),e._v(". Siguiendo las propuestas #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),o("OutboundLink")],1),e._v(", #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),o("OutboundLink")],1),e._v(" y #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),o("OutboundLink")],1),e._v(". Se indica que el procedimiento de actualización debe realizarse el "),o("code",[e._v("18 de febrero de 2021 a las 06:00 UTC")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#migraciones"}},[e._v("Migraciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#preliminares"}},[e._v("Preliminares")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#principales-actualizaciones"}},[e._v("Principales actualizaciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#riesgos"}},[e._v("Riesgos")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#procedimiento-de-actualizaci%C3%B3n"}},[e._v("Procedimiento de actualización")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("Notas para los proveedores de servicios")])])]),e._v(" "),o("h1",{attrs:{id:"migraciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#migraciones"}},[e._v("#")]),e._v(" Migraciones")]),e._v(" "),o("p",[e._v("Estos capítulos contienen todas las guías de migración para actualizar tu aplicación y módulos a Cosmos v0.40 Stargate.")]),e._v(" "),o("p",[e._v("Si tienes un explorador de bloques, un monedero, un exchange, un validador o cualquier otro servicio (por ejemplo, un proveedor de custodia) que dependa del Cosmos Hub o del ecosistema Cosmos, deberás prestar atención, porque esta actualización implicará cambios sustanciales.")]),e._v(" "),o("ol",[o("li",[o("RouterLink",{attrs:{to:"ttps://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.html"}},[e._v("Migración de aplicaciones y módulos")])],1),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Guía de actualización de la cadena a v0.41"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de endpoints REST"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/breaking_changes.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Recopilación de modificaciones de ruptura de los registros de cambios"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Comunicación entre cadenas de bloques (IBC) - transacciones entre cadenas"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de Protobuf - rendimiento de la cadena de bloques y aceleración del desarrollo"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sincronización de estados - minutos para sincronizar nuevos nodos"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Clientes ligeros con todas las funciones"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Módulo de actualización de la cadena - automatización de la actualización"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Si quieres probar el procedimiento antes de que se produzca la actualización el 18 de febrero, consulta este "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),o("OutboundLink")],1),e._v(" en relación a ello.")]),e._v(" "),o("h2",{attrs:{id:"preliminares"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminares"}},[e._v("#")]),e._v(" Preliminares")]),e._v(" "),o("p",[e._v("Se han producido muchos cambios en el SDK de Cosmos y en la aplicación Gaia desde la última gran actualización ("),o("code",[e._v("cosmoshub-3")]),e._v("). Estos cambios consisten principalmente en muchas nuevas características, cambios de protocolo y cambios estructurales de la aplicación que favorecen la ergonomía del desarrollador y el desarrollo de la aplicación.")]),e._v(" "),o("p",[e._v("En primer lugar, se habilitará "),o("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),o("OutboundLink")],1),e._v(" siguiendo los "),o("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("estándares de Interchain"),o("OutboundLink")],1),e._v(". Esta actualización viene con varias mejoras en la eficiencia, la sincronización de nodos y las siguientes actualizaciones de la cadena de bloques. Más detalles en el "),o("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("sitio web de Stargate"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("La aplicación "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" v4.0.0 es lo que los operadores de nodos actualizarán y ejecutarán en esta próxima gran actualización")]),e._v(". Tras la versión v0.41.0 del SDK de Cosmos y la v0.34.3 de Tendermint.")]),e._v(" "),o("h2",{attrs:{id:"principales-actualizaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#principales-actualizaciones"}},[e._v("#")]),e._v(" Principales actualizaciones")]),e._v(" "),o("p",[e._v("Hay muchas características y cambios notables en la próxima versión del SDK. Muchos de ellos se discuten a de forma general "),o("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Algunos de los principales cambios que hay que tener en cuenta a la hora de actualizar como desarrollador o cliente son los siguientes:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Protocol Buffers")]),e._v(": Inicialmente el SDK de Cosmos utilizaba "),o("em",[e._v("codecs")]),e._v(" de Amino para casi toda la codificación y decodificación. En esta versión se ha integrado una importante actualización de los Protocol Buffers. Se espera que con los Protocol Buffers las aplicaciones ganen en velocidad, legibilidad, conveniencia e interoperabilidad con muchos lenguajes de programación. Para más información consulta "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("CLI")]),e._v(": El CLI y el commando de full node para la cadena de bloques estaban separados en las versiones anteriores del SDK de Cosmos. Esto dio lugar a dos binarios, "),o("code",[e._v("gaiad")]),e._v(" y "),o("code",[e._v("gaiacli")]),e._v(", que estaban separados y podían utilizarse para diferentes interacciones con la cadena de bloques. Ambos se han fusionado en un solo comando "),o("code",[e._v("gaiad")]),e._v(" que ahora soporta los comandos que antes soportaba el "),o("code",[e._v("gaiacli")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Configuración del nodo")]),e._v(": Anteriormente los datos de la cadena de bloques y la configuración de los nodos se almacenaban en "),o("code",[e._v("~/.gaia/")]),e._v(", ahora residirán en "),o("code",[e._v("~/.gaia/")]),e._v(", si utilizas scripts que hacen uso de la configuración o de los datos de la cadena de bloques, asegúrate de actualizar la ruta.")])]),e._v(" "),o("h2",{attrs:{id:"riesgos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#riesgos"}},[e._v("#")]),e._v(" Riesgos")]),e._v(" "),o("p",[e._v("Como validador, realizar el procedimiento de actualización en sus nodos de consenso conlleva un mayor riesgo de de doble firma y de ser penalizado. La parte más importante de este procedimiento es verificar su versión del software y el hash del archivo génesis antes de iniciar el validador y firmar.")]),e._v(" "),o("p",[e._v("Lo más arriesgado que puede hacer un validador es descubrir que ha cometido un error y volver a repetir el procedimiento de actualización durante el arranque de la red. Si descubre un error en el proceso, lo mejor es esperar a que la red se inicie antes de corregirlo. Si la red se detiene y ha comenzado con un archivo de génesis diferente al esperado, busque el asesoramiento de un desarrollador de Tendermint antes de reiniciar su validador.")]),e._v(" "),o("h2",{attrs:{id:"recuperacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recuperacion"}},[e._v("#")]),e._v(" Recuperación")]),e._v(" "),o("p",[e._v("Antes de exportar el estado de "),o("code",[e._v("cosmoshub-3")]),e._v(", se recomienda a los validadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder. La toma de snapshots depende en gran medida de la infraestructura, pero en general se puede hacer una copia de seguridad del directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("p",[e._v("Es muy importante hacer una copia de seguridad del archivo "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" después de detener el proceso de gaiad. Este archivo se actualiza en cada bloque cuando tu validador participa en las rondas de consenso. Es un archivo crítico necesario para evitar la doble firma, en caso de que la actualización falle y sea necesario reiniciar la cadena anterior.")]),e._v(" "),o("p",[e._v("En el caso de que la actualización no tenga éxito, los validadores y operadores deben volver a actualizar a\ngaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(" y restaurar a su último snapshot antes de reiniciar sus nodos.")]),e._v(" "),o("h2",{attrs:{id:"procedimiento-de-actualizacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#procedimiento-de-actualizacion"}},[e._v("#")]),e._v(" Procedimiento de actualización")]),e._v(" "),o("p",[o("strong",[e._v("Nota")]),e._v(": Se asume que actualmente está operando un nodo completo ejecutando gaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("p",[e._v("El hash de la versión/commit de Gaia v2.0.15: "),o("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Compruebe que está ejecutando la versión correcta (v2.0.15) de "),o("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMTUKY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCmJ1aWxkX3RhZ3M6IG5ldGdvLGxlZGdlcgpnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Asegúrese de que su cadena se detiene en la fecha y hora correctas:\n18 de febrero de 2021 a las 06:00 UTC es en segundos UNIX: "),o("code",[e._v("1613628000")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Después de que la cadena se haya detenido, haz una copia de seguridad de tu directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Se recomienda a los validadores y operadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder en caso de que la actualización no vaya según lo previsto o si no se pone en línea suficiente poder de voto en un tiempo determinado y acordado. En tal caso, la cadena volverá a funcionar con "),o("code",[e._v("cosmoshub-3")]),e._v(". Consulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para saber cómo proceder.")])],1),e._v(" "),o("li",[o("p",[e._v("Exportar el estado existente de "),o("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),o("p",[e._v("Antes de exportar el estado a través del siguiente comando, el binario "),o("code",[e._v("gaiad")]),e._v(" debe estar detenido. Como validador, puedes ver la última altura del bloque creado en el "),o("code",[e._v("~/.gaia/config/data/priv_validator_state.json")]),e._v(" -o que ahora reside en "),o("code",[e._v("gaiad_backup")]),e._v(" cuando hiciste una copia de seguridad como en el último paso- y obtenerla con")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),o("p",[o("em",[e._v("esto puede llevar un tiempo, puede esperar una hora para este paso")])])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del archivo génesis exportado (ordenado):")]),e._v(" "),o("p",[e._v("Compara este valor con otros validadores / operadores de nodos completos de la red.\nEn el futuro será importante que todas las partes puedan crear la misma exportación de archivos génesis.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("En este punto, ya tiene un estado de génesis exportado válido. Todos los pasos posteriores requieren ahora v4.0.0 de "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".\nCompruebe el hash de su génesis con otros compañeros (otros validadores) en las salas de chat.")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),o("OutboundLink")],1),e._v(" es necesario!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verifique que está ejecutando la versión correcta (v4.0.0) de "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZAp2ZXJzaW9uOiA0LjAuMApjb21taXQ6IDJiYjA0MjY2MjY2NTg2NDY4MjcxYzRhYjMyMjM2N2FjYmY0MTE4OGYKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQKYnVpbGRfZGVwczoKLi4uCg=="}}),e._v(" "),o("p",[e._v("El hash y versión/commit de Gaia v4.0.0: "),o("code",[e._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),e._v(" "),o("li",[o("p",[e._v("Migrar el estado exportado de la versión actual v2.0.15 a la nueva versión v4.0.0:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),o("p",[e._v("Esto migrará nuestro estado exportado del archivo "),o("code",[e._v("genesis.json")]),e._v(" requerido para iniciar el cosmoshub-4.")])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del JSON final del génesis:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Compare este valor con otros validadores / operadores de nodos de la red.\nEs importante que cada parte pueda reproducir el mismo archivo genesis.json de los pasos correspondientes.")])],1),e._v(" "),o("li",[o("p",[e._v("Reinicio del estado:")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Asegúrese de tener una copia de seguridad completa de su nodo antes de proceder con este paso.\nConsulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para obtener detalles sobre cómo proceder.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Mueve el nuevo "),o("code",[e._v("genesis.json")]),e._v(" a tu directorio "),o("code",[e._v(".gaia/config/")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Inicie su blockchain")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Las auditorías automatizadas del estado de génesis pueden durar entre 30 y 120 minutos utilizando el módulo de crisis. Esto se puede desactivar mediante\n"),o("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),o("h2",{attrs:{id:"notas-para-los-proveedores-de-servicios"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("#")]),e._v(" Notas para los proveedores de servicios")]),e._v(" "),o("h1",{attrs:{id:"servidor-rest"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#servidor-rest"}},[e._v("#")]),e._v(" Servidor REST")]),e._v(" "),o("p",[e._v("En caso de que hayas estado ejecutando el servidor REST con el comando "),o("code",[e._v("gaiacli rest-server")]),e._v(" previamente, ejecutar este comando ya no será necesario. El servidor API está ahora en proceso con el demonio y puede ser activado/desactivado por la configuración de la API en su "),o("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lIHNpIGxhIEFQSSBkZWwgc2Vydmlkb3IgZGViZSBlc3RhciBoYWJpbGl0YWRhLgplbmFibGUgPSBmYWxzZQojIFN3YWdnZXIgZGVmaW5lIHNpIGxhIGRvY3VtZW50YWNpw7NuIHN3YWdnZXIgZGViZSByZWdpc3RyYXJzZSBhdXRvbcOhdGljYW1lbnRlLgpzd2FnZ2VyID0gZmFsc2UK"}}),e._v(" "),o("p",[e._v("El ajuste "),o("code",[e._v("swagger")]),e._v(" se refiere a la activación/desactivación de la API de documentos swagger, es decir, el punto final de la API /swagger/.")]),e._v(" "),o("h1",{attrs:{id:"configuracion-grpc"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configuracion-grpc"}},[e._v("#")]),e._v(" Configuración gRPC")]),e._v(" "),o("p",[e._v("Configuración gRPC en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZSBzaSBlbCBzZXJ2aWRvciBnUlBDIGRlYmUgZXN0YXIgaGFiaWxpdGFkby4KZW5hYmxlID0gdHJ1ZQojIEFkZHJlc3MgZGVmaW5lIGxhIGRpcmVjY2nDs24gZGVsIHNlcnZpZG9yIGdSUEMgYSBsYSBxdWUgc2UgdmluY3VsYS4KYWRkcmVzcyA9ICZxdW90OzAuMC4wLjA6OTA5MCZxdW90Owo="}}),e._v(" "),o("h1",{attrs:{id:"state-sync"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),o("p",[e._v("Configuración de State Sync en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIG8gbGFzIGluc3RhbnTDoW5lYXMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBwZXJtaXRlbiBxdWUgb3Ryb3Mgbm9kb3MgCiMgc2UgdW5hbiByw6FwaWRhbWVudGUgYSBsYSByZWQgc2luIHJlcHJvZHVjaXIgbG9zIGJsb3F1ZXMgaGlzdMOzcmljb3MsIGRlc2NhcmdhbmRvIHkgCiMgYXBsaWNhbmRvIGVuIHN1IGx1Z2FyIHVuYSBpbnN0YW50w6FuZWEgZGVsIGVzdGFkbyBkZSBsYSBhcGxpY2FjacOzbiBhIHVuYSBhbHR1cmEgZGV0ZXJtaW5hZGEuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIGVzcGVjaWZpY2EgZWwgaW50ZXJ2YWxvIGRlIGJsb3F1ZXMgZW4gZWwgcXVlIHNlIHRvbWFuIGluc3RhbnTDoW5lYXMgCiMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBsb2NhbCAoMCBwYXJhIGRlc2hhYmlsaXRhcikuIERlYmUgc2VyIHVuIG3Dumx0aXBsbyBkZSAKIyBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IGVzcGVjaWZpY2EgZWwgbsO6bWVybyBkZSBpbnN0YW50w6FuZWFzIHJlY2llbnRlcyBhIGNvbnNlcnZhciB5IHNlcnZpciAKIyAoMCBwYXJhIGNvbnNlcnZhciB0b2RhcykuCnNuYXBzaG90LWtlZXAtcmVjZW50ID0gMgo="}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{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.1927e4a2.js b/main/assets/js/151.1927e4a2.js deleted file mode 100644 index 228411b9cc1..00000000000 --- a/main/assets/js/151.1927e4a2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{548:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-3-업그레이드-매뉴얼"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-3-업그레이드-매뉴얼"}},[a._v("#")]),a._v(" 코스모스 허브 3 업그레이드 매뉴얼")]),a._v(" "),e("p",[a._v("이 문서는 풀노드 운영자가 "),e("code",[a._v("cosmoshub-3")]),a._v("에서 "),e("code",[a._v("cosmoshub-4")]),a._v(" 업그레이드를 진행하기 위한 과정을 설명합니다.\n텐더민트 팀이 공식적인 업데이트된 제네시스 파일을 업로드할 예정이나, 각 검증인이 해당 제네시스 파일을 각자 검증할 것을 권장합니다.")]),a._v(" "),e("p",[a._v("현재 "),e("code",[a._v("cosmoshub-3")]),a._v("에서는 "),e("code",[a._v("Cosmos Hub 4 Upgrade Proposal")]),a._v("에 대한 사회적 합의가 도달된 것으로 판단됩니다.\n프로포절 #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[a._v("27"),e("OutboundLink")],1),a._v(", #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[a._v("35"),e("OutboundLink")],1),a._v(" and #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[a._v("36"),e("OutboundLink")],1),a._v("의 내용에 따라 업그레이드 과정은 "),e("code",[a._v("2021년 2월 18일, 06:00 UTC")]),a._v("에 진행될 예정입니다.")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98"}},[a._v("마이그레이션")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%82%AC%EC%A0%84-%EC%A0%95%EB%B3%B4"}},[a._v("사전 정보")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%A3%BC%EC%9A%94-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8"}},[a._v("주요 업데이트")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%9C%84%ED%97%98-%EA%B3%A0%EC%A7%80"}},[a._v("위험 고지")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C-%EC%A0%88%EC%B0%A8"}},[a._v("업그레이드 절차")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%9C%EA%B3%B5%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%B5%EC%A7%80"}},[a._v("서비스 제공자에 대한 공지")])])]),a._v(" "),e("h1",{attrs:{id:"마이그레이션"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#마이그레이션"}},[a._v("#")]),a._v(" 마이그레이션")]),a._v(" "),e("p",[a._v("다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.")]),a._v(" "),e("p",[a._v("만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("앱 및 모듈 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 v0.40 체인 업그레이드 가이드"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST 엔드포인트 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[a._v("각 버전 체인지로그의 breaking change 모음")])],1),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[a._v("Inter-Blockchain Communication (IBC)– 체인간 트랜잭션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[a._v("Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[a._v("State Sync – 몇 분 내에 완료되는 노드 동기화"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[a._v("강력한 기능을 포함한 라이트 클라이언트"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[a._v("체인 업그레이드 모듈 – 업그레이드 자동화"),e("OutboundLink")],1)])]),a._v(" "),e("p",[a._v("만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[a._v("이 글"),e("OutboundLink")],1),a._v("을 참고하세요")]),a._v(" "),e("h2",{attrs:{id:"사전-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#사전-정보"}},[a._v("#")]),a._v(" 사전 정보")]),a._v(" "),e("p",[a._v("지난 코스모스 허브 업그레이드("),e("code",[a._v("cosmoshub-3")]),a._v(") 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다.\n변경사항에는 신규 기능, 프로토콜 변경사항, 애플리케이션 구조 변경 등이 포함되었으며, 애플리케이션 개발 과정의 개선이 기대됩니다.")]),a._v(" "),e("p",[a._v("우선, "),e("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[a._v("인터체인 표준"),e("OutboundLink")],1),a._v("를 따른 "),e("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[a._v("IBC"),e("OutboundLink")],1),a._v("이 활성화될 예정입니다. 또한 효율성, 노드 동기화, 추후 블록체인 업데이트 과정이 개선됩니다. 자세한 내용은 "),e("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[a._v("스타게이트 웹사이트"),e("OutboundLink")],1),a._v("를 참고하세요.")]),a._v(" "),e("p",[a._v("__이번 업그레이드에서 풀 노드 운영자 업그레이드를 진행하는 것은 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" 애플리케이션 v4.0.0입니다. 이번 버전의 Gaia 애플리케이션은 코스모스 SDK v0.41.0 그리고 텐더민트 v0.34.3 기반으로 빌드되었습니다.")]),a._v(" "),e("h2",{attrs:{id:"주요-업데이트"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#주요-업데이트"}},[a._v("#")]),a._v(" 주요 업데이트")]),a._v(" "),e("p",[a._v("이번 SDK의 릴리즈에서는 다수의 기능 및 변경사항이 적용되어 있습니다. 이에 대한 설명은 "),e("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),e("OutboundLink")],1),a._v("에서 확인하실 수 있습니다.")]),a._v(" "),e("p",[a._v("개발자 또는 클라이언트로서 참고해야할 점은 다음과 같습니다:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("프로토콜 버퍼(Protocol BufferS)")]),a._v(": 이전 버전의 코스모스 SDK에서는 인코딩 및 디코딩 과정에서 아미노 코덱을 사용했습니다.\n이번 코스모스 SDK 버전에서는 프로토콜 버퍼가 내장되어있습니다. 프로토콜 버퍼를 통해 애플리케이션은 속도, 가독성, 편의성, 프로그래밍 언어 간 상호호환성 등의 부분에서 상당한 개선이 있을 것으로 기대됩니다. "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[a._v("더 읽기"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("strong",[a._v("CLI")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인의 CLI와 데몬은 별도의 바이너리로 구성되었으며, 실행하는 블록체인 인터랙션에 따라 "),e("code",[a._v("gaiad")]),a._v("와 "),e("code",[a._v("gaiacli")]),a._v(" 바이너리가 구분되었습니다. 이번 버전의 코스모스 SDK에서는 두 바이너리가 하나의 "),e("code",[a._v("gaiad")]),a._v(" 바이너리로 통합되었으며 해당 바이너리 내에서 기존에 "),e("code",[a._v("gaiacli")]),a._v("에서 사용했던 명령어를 지원합니다.")]),a._v(" "),e("li",[e("strong",[a._v("노드 구성")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인 데이터와 노드 설정이 "),e("code",[a._v("~/.gaia/")]),a._v("에 저장되었지만, 이번 버전에서는 해당 정보다 "),e("code",[a._v("~/.gaia/")]),a._v(" 디렉토리에 보관됩니다. 만약 블록체인 데이터 또는 노드 설정을 관리하는 스크립트를 사용하시는 경우 해당 스크립트에서 패스를 변경해야합니다.")])]),a._v(" "),e("h2",{attrs:{id:"위험-고지"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#위험-고지"}},[a._v("#")]),a._v(" 위험 고지")]),a._v(" "),e("p",[a._v("검증인이 컨센서스 노드 업그레이드를 진행하는 절차에서 이중서명에 따른 슬래싱의 위험이 존재합니다. 이 과정에서 가장 중요한 것은 검증인을 가동하고 서명을 시작하기 전 소프트웨어 버전을 확인하고 제네시스 파일의 해시를 확인하시기를 바랍니다.")]),a._v(" "),e("p",[a._v("블록체인 검증인이 할 수 있는 가장 위험한 행동은 네트워크 시작 과정에서 존재했던 실수를 인지하고 업그레이드 과정을 처음부터 다시 시작하는 것입니다. 만약 업그레이드 과정에서 실수가 발생했다면 네트워크가 시작되는 것을 기다린 후에 실수를 고치는 것을 권장합니다. 만약 네트워크가 중단되었고 본인의 검증인을 실제 시작된 네트워크가 아닌 다른 제네시스 파일로 가동한 경우, 검증인을 리셋하는 과정에 대해 텐더민트 검증인으로 부터 조언을 구할 것을 권장합니다.")]),a._v(" "),e("h2",{attrs:{id:"복구"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#복구"}},[a._v("#")]),a._v(" 복구")]),a._v(" "),e("p",[a._v("각 검증인은 "),e("code",[a._v("cosmoshub-3")]),a._v(" 상태를 내보내기(export) 전에 내보내는 블록 하이트의 풀 데이터 스냅샷을 진행할 것을 권장합니다. 스냅샷 과정은 각 검증인의 인프라에 따라 다를 수 있지만, 통상 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하는 것으로 진행합니다.")]),a._v(" "),e("p",[e("code",[a._v("gaiad")]),a._v(" 프로세스를 멈춘 후 "),e("code",[a._v(".gaia/data/priv_validator_state.json")]),a._v(" 파일을 백업하는 것은 매우 중요합니다. 이 파일은 검증인이 컨센서스 라운드에 참여할 때마다 업데이트됩니다. 만약 업그레이드 과정이 실패하여 이전 체인을 다시 시작해야되는 경우 검증인의 이중서명을 방지하기 위해서 이 파일은 필수입니다.")]),a._v(" "),e("p",[a._v("만약 업그레이드 과정이 실패하는 경우, 검증인과 노드 운영자는 gaia v2.0.15(코스모스 SDK v0.37.15 기반)으로 다운그레이드를 진행하고 가장 최근 진행했던 스냅샷을 복구한 이후에 노드를 시작해야합니다.")]),a._v(" "),e("h2",{attrs:{id:"업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#업그레이드"}},[a._v("#")]),a._v(" 업그레이드")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 가이드는 코스모스 SDK의 v0.37.15 기반의 gaia v2.0.15를 운영한다는 가정에 작성된 가이드입니다.")]),a._v(" "),e("p",[a._v("Gaia v2.0.15의 버전/커밋 해시값: "),e("code",[a._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),a._v(" "),e("ol",[e("li",[e("p",[a._v("올바른 "),e("em",[a._v("gaiad")]),a._v(" 버전 (v2.0.15)를 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 올바른 날짜와 시간에 멈추도록 설정하세요:")]),a._v(" "),e("p",[a._v("2021년 2월 18일 06:00 UTC의 UNIX seconds 시간 값: "),e("code",[a._v("1613628000")])]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 멈춘 후 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 업그레이드 과정이 예상 외로 실패하거나 합의된 시간 내에 새로운 체인에 충분한 보팅 파워가 참여하지 않는 경우를 대비해 검증인과 노드 운영자는 export height의 풀 데이터 스냅샷을 진행하는 것을 권장합니다. 이 경우에는 체인 업그레이드 과정은 보류되고 "),e("code",[a._v("cosmoshub-3")]),a._v("의 운영이 재개됩니다. 해당 과정에 대해서는 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항목을 참고하세요.")])],1),a._v(" "),e("li",[e("p",[a._v("기존 "),e("code",[a._v("cosmoshub-3")]),a._v("의 상태를 내보내기:")]),a._v(" "),e("p",[a._v("다음 명령어를 사용하여 상태를 내보내기 전 "),e("code",[a._v("gaiad")]),a._v(" 바이너리가 꼭 멈춰있어야 합니다!\n검증인으로서 가장 최근 생성된 블록은 "),e("code",[a._v("~/.gaia/config/data/priv_validator_state.json")]),a._v("에서 확인하실 수 있습니다 (또는 이전 과정에서 백업을 진행한 경우 "),e("code",[a._v("gaiad_backup")]),a._v("). 블록 높이는 다음과 같이 확인하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),a._v(" "),e("p",[e("em",[a._v("이 과정은 상당한 시간이 (약 1시간) 소요될 수 있습니다")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 제네시스 파일의 SHA256 값을 검증하세요:")]),a._v(" "),e("p",[a._v("본인의 제네시스 파일의 값을 네트워크 내 다른 검증인 / 풀 노드 운영자와 비교하세요.\n이 후 과정에서는 모든 인원이 동일한 제네시스 파일을 생성하는 것이 상당이 중요합니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),a._v(" "),e("li",[e("p",[a._v("이 단계 까지 오셨다면 올바른 제네시스 상태를 내보내셨습니다! 이후 과정부터는 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" v4.0.0을 필요로 합니다. 그룹 채팅 방의 다른 검증인들/피어와 새로운 제네시스 파일의 해시를 비교/검증하세요.")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": Go "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("1.15+"),e("OutboundLink")],1),a._v(" 버전이 설치되어야 합니다!")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("_Gaia_의 올바른 버전(v4.0.0)을 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjAKIGNvbW1pdDogMmJiMDQyNjYyNjY1ODY0NjgyNzFjNGFiMzIyMzY3YWNiZjQxMTg4ZgogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiBnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0CiBidWlsZF9kZXBzOgogLi4uCg=="}}),a._v(" "),e("p",[a._v("Gaia v4.0.0 버전/커밋 해시 : "),e("code",[a._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 상태를 기존 v2.0.15 버전에서 v4.0.0 버전으로 마이그레이션 하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),a._v(" "),e("p",[a._v("이 과정은 이전 체인에서 내보낸 상태를 기반으로 "),e("code",[a._v("cosmoshub-4")]),a._v("로 시작하기 위한 "),e("code",[a._v("genesis.json")]),a._v(" 파일을 생성합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("최종 제네시스 JSON의 SHA256 해시 값을 검증하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("해당 값을 네트워크의 다른 검증인 / 풀 노드 운영자와 비교하세요.\n과정에서 모든 참여자가 같은 genesis.json 파일을 생성하는 것이 중요합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("상태 리셋:")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 과정을 진행하기 전에 꼭 노드의 상태를 백업하세요. 백업 과정은 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항복을 참고하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),a._v(" "),e("li",[e("p",[a._v("새로운 "),e("code",[a._v("genesis.json")]),a._v("을 "),e("code",[a._v(".gaia/config/")]),a._v(" 디렉토리로 옮기세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),a._v(" "),e("li",[e("p",[a._v("블록체인을 가동하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("Crisis 모듈의 제네시스 상태 자동 검증은 30-120분 소요될 수 있습니다. 해당 기능은 "),e("code",[a._v("gaiad start --x-crisis-skip-assert-invariants")]),a._v("로 비활성화할 수 있습니다.")])],1)]),a._v(" "),e("h2",{attrs:{id:"서비스-제공자를-위한-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#서비스-제공자를-위한-정보"}},[a._v("#")]),a._v(" 서비스 제공자를 위한 정보")]),a._v(" "),e("h1",{attrs:{id:"rest-서버"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rest-서버"}},[a._v("#")]),a._v(" REST 서버")]),a._v(" "),e("p",[a._v("만약 이전까지 "),e("code",[a._v("gaiacli rest-server")]),a._v(" 명령어로 REST 서버를 구동하신 경우, 해당 명령어는 이번 버전부터 비활성화 됩니다. API 서버는 데몬 내에서 활성화되며, "),e("code",[a._v(".gaia/config/app.toml")]),a._v(" 설정 내에서 활성화됩니다:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),a._v(" "),e("p",[e("code",[a._v("swagger")]),a._v(" 설정은 Swagger 문서 API를 활성화/비활성화 하는 여부를 관리합니다 (예, /swagger/ API 엔드포인트)")]),a._v(" "),e("h1",{attrs:{id:"grpc-설정"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#grpc-설정"}},[a._v("#")]),a._v(" gRPC 설정")]),a._v(" "),e("p",[a._v("gRPC 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),a._v(" "),e("h1",{attrs:{id:"스테이트-싱크"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#스테이트-싱크"}},[a._v("#")]),a._v(" 스테이트 싱크")]),a._v(" "),e("p",[a._v("스테이트 싱크 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/151.b6e386d4.js b/main/assets/js/151.b6e386d4.js new file mode 100644 index 00000000000..715097c33eb --- /dev/null +++ b/main/assets/js/151.b6e386d4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{516: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.43bb70e4.js b/main/assets/js/152.5c14655f.js similarity index 99% rename from main/assets/js/152.43bb70e4.js rename to main/assets/js/152.5c14655f.js index 2f4fb4bfc37..d715e4bb4b4 100644 --- a/main/assets/js/152.43bb70e4.js +++ b/main/assets/js/152.5c14655f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{545: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],{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 diff --git a/main/assets/js/153.aba6c640.js b/main/assets/js/153.8ead3773.js similarity index 99% rename from main/assets/js/153.aba6c640.js rename to main/assets/js/153.8ead3773.js index c24599bf724..4600fa9167c 100644 --- a/main/assets/js/153.aba6c640.js +++ b/main/assets/js/153.8ead3773.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{509: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-v10-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v10-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v10 Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validators and full node operators, to upgrade successfully to the v10 release. The v10 upgrade is a mandatory maintenence release which updates the following core libraries:")]),e._v(" "),t("ul",[t("li",[e._v("Upgrading Comet BFT to "),t("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.28",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.28"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading Cosmos SDK to "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.16-ics"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading IBC Go to "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.0"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading Golang to "),t("a",{attrs:{href:"https://go.dev/blog/go1.20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Golang 1.20.x"),t("OutboundLink")],1),e._v(", making it mandatory to build Gaia with "),t("strong",[e._v("Golang v1.20.x")])])]),e._v(" "),t("p",[e._v("❗The "),t("strong",[e._v("preferred binary")]),e._v(" for "),t("strong",[e._v("Mainnet release")]),e._v(" is "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10.0.1"),t("OutboundLink")],1),e._v(", as that version includes a fix for the "),t("a",{attrs:{href:"https://forum.cosmos.network/t/ibc-security-advisory-huckleberry/10731",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Huckleberry fix"),t("OutboundLink")],1),e._v(". v10.0.0 does "),t("strong",[e._v("NOT")]),e._v(" include this fix.")]),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:"#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-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v911"}},[e._v("Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v1000"}},[e._v("Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1")])])])]),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("ul",[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/798",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #798"),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("15816200")]),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/15816200",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("v10 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-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.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/v9.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v9.1.1"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v9.1.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.20")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1")]),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/v10.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10.0.1"),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:"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 v10.0.1 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.1",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 v9.1.1 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djEwJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE1ODE2MjAwOiB1cGdyYWRlIHRvIHYxMCBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTAmcXVvdDsgYXQgaGVpZ2h0OjE1ODE2MjAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v10.0.1 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("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.2")]),e._v(" "),t("td",[e._v("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.1")]),e._v(" "),t("td",[e._v("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.0")]),e._v(" "),t("td",[e._v("v10")])])])]),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.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 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 v10.0.1, and move gaiad v10.0.1 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v10/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTAvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTAvYmluCg=="}}),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:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4xLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjEwCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC4xCg=="}}),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.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 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("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4xLjEK"}}),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:"RVJSIFVQR1JBREUgJnF1b3Q7djEwJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE1ODE2MjAwOiB1cGdyYWRlIHRvIHYxMCBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTAmcXVvdDsgYXQgaGVpZ2h0OjE1ODE2MjAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v10/bin")]),e._v(" and download the Gaia v10.0.1 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 v9.1.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) v9.1.1 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 15816200")])]),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([[153],{514: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-v10-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v10-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v10 Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validators and full node operators, to upgrade successfully to the v10 release. The v10 upgrade is a mandatory maintenence release which updates the following core libraries:")]),e._v(" "),t("ul",[t("li",[e._v("Upgrading Comet BFT to "),t("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.28",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.28"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading Cosmos SDK to "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.16-ics"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading IBC Go to "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.0"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Upgrading Golang to "),t("a",{attrs:{href:"https://go.dev/blog/go1.20",target:"_blank",rel:"noopener noreferrer"}},[e._v("Golang 1.20.x"),t("OutboundLink")],1),e._v(", making it mandatory to build Gaia with "),t("strong",[e._v("Golang v1.20.x")])])]),e._v(" "),t("p",[e._v("❗The "),t("strong",[e._v("preferred binary")]),e._v(" for "),t("strong",[e._v("Mainnet release")]),e._v(" is "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10.0.1"),t("OutboundLink")],1),e._v(", as that version includes a fix for the "),t("a",{attrs:{href:"https://forum.cosmos.network/t/ibc-security-advisory-huckleberry/10731",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Huckleberry fix"),t("OutboundLink")],1),e._v(". v10.0.0 does "),t("strong",[e._v("NOT")]),e._v(" include this fix.")]),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:"#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-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v911"}},[e._v("Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v1000"}},[e._v("Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1")])])])]),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("ul",[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/798",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #798"),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("15816200")]),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/15816200",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("v10 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-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.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/v9.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v9.1.1"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v9.1.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.20")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1")]),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/v10.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10.0.1"),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:"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 v10.0.1 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.1",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 v9.1.1 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djEwJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE1ODE2MjAwOiB1cGdyYWRlIHRvIHYxMCBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTAmcXVvdDsgYXQgaGVpZ2h0OjE1ODE2MjAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v10.0.1 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("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.2")]),e._v(" "),t("td",[e._v("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.1")]),e._v(" "),t("td",[e._v("v10")])]),e._v(" "),t("tr",[t("td",[e._v("1.0")]),e._v(" "),t("td",[e._v("v10")])])])]),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.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 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 v10.0.1, and move gaiad v10.0.1 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v10/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTAvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTAvYmluCg=="}}),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:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4xLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjEwCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC4xCg=="}}),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.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 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("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4xLjEK"}}),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:"RVJSIFVQR1JBREUgJnF1b3Q7djEwJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE1ODE2MjAwOiB1cGdyYWRlIHRvIHYxMCBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTAmcXVvdDsgYXQgaGVpZ2h0OjE1ODE2MjAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v10/bin")]),e._v(" and download the Gaia v10.0.1 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 v9.1.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) v9.1.1 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 15816200")])]),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/154.290efe93.js b/main/assets/js/154.aa0a518c.js similarity index 99% rename from main/assets/js/154.290efe93.js rename to main/assets/js/154.aa0a518c.js index 164e5769c8e..4f575d8c8b6 100644 --- a/main/assets/js/154.290efe93.js +++ b/main/assets/js/154.aa0a518c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{539: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],{512:function(e,a,t){"use strict";t.r(a);var r=t(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-gaia-v11-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v11 release.\nFor more details on the release, please see the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("release notes"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instructions"}},[e._v("#")]),e._v(" Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#instructions"}},[e._v("Instructions")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-date"}},[e._v("Upgrade date")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime"}},[e._v("Current runtime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime"}},[e._v("Target runtime")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-steps"}},[e._v("Upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#manually-preparing-the-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("Auto-Downloading the Gaia binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/804",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 804"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-date"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-date"}},[e._v("#")]),e._v(" Upgrade date")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("16596000")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/16596000",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("upgrade using cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11 Local Testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Public Testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime"}},[e._v("#")]),e._v(" Current runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v10.0.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10.0.2"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v10.0.x, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.20")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime"}},[e._v("#")]),e._v(" Target runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v11.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[t("strong",[e._v("MUST")])]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-steps"}},[e._v("#")]),e._v(" Upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v11.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires "),t("strong",[e._v("Golang 1.20")]),e._v(".")]),e._v(" "),t("p",[e._v("Run Gaia v10.0.x till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v11.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-binary"}},[e._v("#")]),e._v(" Manually preparing the binary")]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuNS4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v9.1.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v11.0.0, and move gaiad v11.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54CuKUlOKUgOKUgCB1cGdyYWRlcwogICAg4pSU4pSA4pSAIHYxMQogICAgICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkICAjdjExLjAuMAo="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("#")]),e._v(" Auto-Downloading the Gaia binary")]),e._v(" "),t("p",[t("strong",[e._v("This method is not recommended!")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v10.0.x into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54Cg=="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")]),e._v(" and download the Gaia v11.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should run their node on v10.0.x if they use the cosmovisor v1.5.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v10.0.2 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 16596000")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/155.c561c7e0.js b/main/assets/js/155.c561c7e0.js new file mode 100644 index 00000000000..704e48ae59c --- /dev/null +++ b/main/assets/js/155.c561c7e0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{513: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-v12-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-gaia-v12-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Gaia v12 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 v12 release.\nFor more details on the release, please see the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.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-v12-upgrade-instructions"}},[e._v("Cosmos Hub 4, Gaia v12 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:"#liquid-staking"}},[e._v("Liquid Staking")])]),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/821",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 821"),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:"liquid-staking"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),t("p",[e._v("Validators please be aware that this release will include a new liquid staking module which has been included via the Cosmos SDK. Please see the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("release notes"),t("OutboundLink")],1),e._v(" for v12 for more information about this module.")]),e._v(" "),t("p",[t("strong",[e._v("IMPORTANT:")]),e._v(" Inclusion of this module requires validators to set a validation-bond to be eligiable for Liquid Staked delegations. Please see the "),t("RouterLink",{attrs:{to:"/validators/validator-faq.html#liquid-staking-module"}},[e._v("Validator FAQ")]),e._v(" for more information.")],1),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("16985500")]),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/16985500",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("v12 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/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v11.0.0"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v11.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/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v12.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://pkg.go.dev/cosmossdk.io/tools/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 v12.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.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 v11.0.0 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djEyJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2OTg1NTAwOiB1cGdyYWRlIHRvIHYxMiBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTImcXVvdDsgYXQgaGVpZ2h0OjE2OTg1NTAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v12.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:"Z28gaW5zdGFsbCBjb3Ntb3NzZGsuaW8vdG9vbHMvY29zbW92aXNvci9jbWQvY29zbW92aXNvckBsYXRlc3QK"}}),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 v11.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 v12.0.0, and move gaiad v12.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v12/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTIvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTIvYmluCg=="}}),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:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTEuMC54CuKUlOKUgOKUgCB1cGdyYWRlcwogICAg4pSU4pSA4pSAIHYxMgogICAgICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkICAjdjEyLjAuMAo="}}),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:"Z28gaW5zdGFsbCBjb3Ntb3NzZGsuaW8vdG9vbHMvY29zbW92aXNvci9jbWQvY29zbW92aXNvckBsYXRlc3QK"}}),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 v11.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:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTEuMC54Cg=="}}),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:"RVJSIFVQR1JBREUgJnF1b3Q7djEyJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2OTg1NTAwOiB1cGdyYWRlIHRvIHYxMiBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTImcXVvdDsgYXQgaGVpZ2h0OjE2OTg1NTAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v12/bin")]),e._v(" and download the Gaia v12.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 v11.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) v11.0.0 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 16985500")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/155.d1dbf798.js b/main/assets/js/156.bd3eda60.js similarity index 99% rename from main/assets/js/155.d1dbf798.js rename to main/assets/js/156.bd3eda60.js index 069b004e5ee..b542064679b 100644 --- a/main/assets/js/155.d1dbf798.js +++ b/main/assets/js/156.bd3eda60.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{536:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v7-theta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v7-theta-upgrade-expected-q1-2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.1"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/CHANGELOG.md#v0451---2022-02-03",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.0.0/CHANGELOG.md#v300---2022-03-15",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/tree/main/modules/apps/27-interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("interchain account"),a("OutboundLink")],1),e._v(" module (interchain-account module is part of ibc-go module).")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/gravity-devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/v1.5.0/CHANGELOG.md#v150---20220223",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v2.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Migration logs for upgrade process.")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("Upgrade will take place April 12, 2022")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v700"}},[e._v("Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("v7-Theta upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v700-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/65",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #65"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-april-12-2022"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("#")]),e._v(" Upgrade will take place April 12, 2022")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("10085397")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Tuesday, 12-April-21 16:14:40 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta public-testnet"),a("OutboundLink")],1),e._v(" or run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v6.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v7-theta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("#")]),e._v(" v7-Theta upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v6.0.x till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcKCnBhbmljOiBVUEdSQURFICZxdW90O3Y3LVRoZXRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v7.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take 7 minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("h4",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v7.0.0, and move gaiad v7.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92Ny1UaGV0YS9iaW4KY3AgJCh3aGljaCBnYWlhZCkgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3Y3LVRoZXRhL2Jpbgo="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjctVGhldGEKICAgICAgICDilJTilIDilIAgYmluCiAgICAgICAgICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y3LjAuMAo="}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Lgo="}}),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install Cosmovisor v1.1.0")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")]),e._v(" and download Gaia v7.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 65.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v6.0.4 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v6.0.x binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 10085397")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/v7-Theta-test"),a("OutboundLink")],1),e._v(" "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{511:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v7-theta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v7-theta-upgrade-expected-q1-2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.1"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/CHANGELOG.md#v0451---2022-02-03",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.0.0/CHANGELOG.md#v300---2022-03-15",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/tree/main/modules/apps/27-interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("interchain account"),a("OutboundLink")],1),e._v(" module (interchain-account module is part of ibc-go module).")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/gravity-devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/v1.5.0/CHANGELOG.md#v150---20220223",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v2.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Migration logs for upgrade process.")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("Upgrade will take place April 12, 2022")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v700"}},[e._v("Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("v7-Theta upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v700-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/65",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #65"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-april-12-2022"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("#")]),e._v(" Upgrade will take place April 12, 2022")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("10085397")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Tuesday, 12-April-21 16:14:40 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta public-testnet"),a("OutboundLink")],1),e._v(" or run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v6.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v7-theta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("#")]),e._v(" v7-Theta upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v6.0.x till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcKCnBhbmljOiBVUEdSQURFICZxdW90O3Y3LVRoZXRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v7.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take 7 minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("h4",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v7.0.0, and move gaiad v7.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92Ny1UaGV0YS9iaW4KY3AgJCh3aGljaCBnYWlhZCkgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3Y3LVRoZXRhL2Jpbgo="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjctVGhldGEKICAgICAgICDilJTilIDilIAgYmluCiAgICAgICAgICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y3LjAuMAo="}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Lgo="}}),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install Cosmovisor v1.1.0")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")]),e._v(" and download Gaia v7.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 65.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v6.0.4 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v6.0.x binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 10085397")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/v7-Theta-test"),a("OutboundLink")],1),e._v(" "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/156.979bd2e4.js b/main/assets/js/157.22825acb.js similarity index 99% rename from main/assets/js/156.979bd2e4.js rename to main/assets/js/157.22825acb.js index f0b4a2aa060..610a5b0ca6d 100644 --- a/main/assets/js/156.979bd2e4.js +++ b/main/assets/js/157.22825acb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{524: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([[157],{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/157.0e608933.js b/main/assets/js/158.3deb58c4.js similarity index 99% rename from main/assets/js/157.0e608933.js rename to main/assets/js/158.3deb58c4.js index ac1303ae035..7a7f5ce84bf 100644 --- a/main/assets/js/157.0e608933.js +++ b/main/assets/js/158.3deb58c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{533: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([[158],{509:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-v9-lambda-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v9-lambda-upgrade-expected-q1-2023",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda Upgrade"),t("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/interchain-security",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain-Security"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/cosmos/interchain-security/releases/tag/v1.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.0.0"),t("OutboundLink")],1),e._v(" provider module. See the "),t("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS Spec"),t("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.13-ics"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/release/v4.2.x/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.0"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2 Release Notes"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/informalsystems/tendermint",target:"_blank",rel:"noopener noreferrer"}},[e._v("tendermint"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/tree/v0.34.26",target:"_blank",rel:"noopener noreferrer"}},[e._v("0.34.26"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/blob/v0.34.26/CHANGELOG.md#v03426",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v4.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.0.4"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/e2e/e2e_gov_test.go#L138",target:"_blank",rel:"noopener noreferrer"}},[e._v("E2E ccv tests"),t("OutboundLink")],1),e._v(". Tests covering new functionality introduced by the provider module to add and remove a consumer chain via governance proposal.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/ics/interchain_security_test.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("integration ccv tests"),t("OutboundLink")],1),e._v(". Imports Interchain-Security's "),t("code",[e._v("TestCCVTestSuite")]),e._v(" and implements Gaia as the provider chain.")])]),e._v(" "),t("p",[e._v("TOC:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-will-take-place-march-15-2023"}},[e._v("Upgrade will take place March 15, 203")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801"}},[e._v("Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900"}},[e._v("Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#v9-Lambda-upgrade-steps"}},[e._v("v9-Lambda upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#manually-preparing-the-gaia-v900-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-v900-binary-not-recommended"}},[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/187",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #187"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-will-take-place-march-14-16-2023"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-march-14-16-2023"}},[e._v("#")]),e._v(" Upgrade will take place March 14-16, 2023")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("14470501")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/14470501",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho local testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda public-testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v8.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v8.0.1"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v8.0.1, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.18")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v9.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"v9-lambda-upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#v9-lambda-upgrade-steps"}},[e._v("#")]),e._v(" v9-Lambda upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v9.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatable binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires go 1.18.")]),e._v(" "),t("p",[e._v("Run Gaia v8.0.1 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v9.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",[t("span",{staticStyle:{color:"red"}},[t("strong",[e._v("Please Read Before Proceeding")])]),t("br"),e._v("\nUsing Cosmovisor 1.2.0 and higher requires a lowercase naming convention for upgrade version directory. For Cosmovisor 1.1.0 and earlier, the upgrade version is not lowercased.")])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("For Example:")]),e._v(" "),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor =< "),t("code",[e._v("1.1.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-Lambda/bin/gaiad")])]),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor >= "),t("code",[e._v("1.2.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-lambda/bin/gaiad")])]),t("br")])]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Cosmovisor Version")]),e._v(" "),t("th",[e._v("Binary Name in Path")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("1.3")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.2")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.1")]),e._v(" "),t("td",[e._v("v9-Lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.0")]),e._v(" "),t("td",[e._v("v9-Lambda")])])])]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-gaia-v9-0-0-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-gaia-v9-0-0-binary"}},[e._v("#")]),e._v(" "),t("em",[e._v("Manually preparing the Gaia v9.0.0 binary")])]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuMy4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v9.0.0, and move gaiad v9.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjktbGFtYmRhCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4wLjAK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" "),t("em",[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")]),e._v(" and download the Gaia v9.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal 97.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v8.0.1 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 14470501")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/158.e0ee912e.js b/main/assets/js/159.751c852a.js similarity index 99% rename from main/assets/js/158.e0ee912e.js rename to main/assets/js/159.751c852a.js index 26686848c5d..d094dcf88bb 100644 --- a/main/assets/js/158.e0ee912e.js +++ b/main/assets/js/159.751c852a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{530:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-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([[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-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/16.d8b516cf.js b/main/assets/js/16.faf4e88c.js similarity index 95% rename from main/assets/js/16.d8b516cf.js rename to main/assets/js/16.faf4e88c.js index dcbce86a6f4..94d8a4d2747 100644 --- a/main/assets/js/16.d8b516cf.js +++ b/main/assets/js/16.faf4e88c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{409:function(t,e,s){},438:function(t,e,s){"use strict";s(409)},516: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)},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 diff --git a/main/assets/js/159.5d3ab240.js b/main/assets/js/160.864eda26.js similarity index 92% rename from main/assets/js/159.5d3ab240.js rename to main/assets/js/160.864eda26.js index 4cda23711ba..76c7db84c7d 100644 --- a/main/assets/js/159.5d3ab240.js +++ b/main/assets/js/160.864eda26.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[159],{607: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([[160],{565: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/160.02050088.js b/main/assets/js/161.49512805.js similarity index 99% rename from main/assets/js/160.02050088.js rename to main/assets/js/161.49512805.js index 67d23f00fd4..873b1bcd54c 100644 --- a/main/assets/js/160.02050088.js +++ b/main/assets/js/161.49512805.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{527:function(e,a,s){"use strict";s.r(a);var t=s(1),i=Object(t.a)({},(function(){var e=this,a=e.$createElement,s=e._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"gaia-fee-and-fees-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-fee-and-fees-checks"}},[e._v("#")]),e._v(" Gaia Fee and Fees Checks")]),e._v(" "),s("h2",{attrs:{id:"fee-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-parameters"}},[e._v("#")]),e._v(" Fee Parameters")]),e._v(" "),s("p",[e._v("The CosmosHub allows managing fees using 4 parameters. At the network level, there are three parameters from globalfee modules ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(", and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(") that can be set by gov proposal. Additionally, a fourth parameter which enables individual nodes to impose supplementary fee amount.")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("global fees ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(")."),s("br"),e._v("\nglobal fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is established at the network level through globalfee params set via Governance Proposal, it sets a fee requirements that the entire network must adhere to.")]),e._v(" "),s("p",[s("em",[e._v('Please note: in this context, "globalfee" or "Globalfee" are used to refer to the globalfee module, while "global fees" is referring to the '),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module's params.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),s("br"),e._v("\nBy adjusting the "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter in "),s("code",[e._v("app.toml")]),e._v(", nodes can enforce a fee that is higher than the globally defined "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". However, it's importantht to note that this configuration solely determines whether transactions are eligible to enter this specific node's mempool.")]),e._v(" "),s("p",[s("em",[e._v("Please note: in this context, "),s("code",[e._v("minimum-gas-prices")]),e._v(" are used to refer to the local fee requirement that nodes can set in their "),s("code",[e._v("app.toml")]),e._v(", while "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is a parameter in the globalfee module, which is the fee requirement at network level.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v("."),s("br"),e._v("\nThese two parameters are also part of the globalfee params from gaiad v11.0.0. They can be changed through Gov Proposals. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" represents a list of message types that will be excluded from paying any fees for inclusion in a block, "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is the limit placed on gas usage for "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")])])]),e._v(" "),s("h2",{attrs:{id:"globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-module"}},[e._v("#")]),e._v(" Globalfee module")]),e._v(" "),s("p",[e._v("The globalfee module has three parameters that can be set by governance proposal type "),s("code",[e._v("param-change")]),e._v(":")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("li",[s("code",[e._v("BypassMinFeeMsgTypes")])]),e._v(" "),s("li",[s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-minimumgaspricesparam"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("p",[e._v("Network level, global fees consist of a list of "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/82ce891aa67f635f3b324b7a52386d5405c5abd0/types/dec_coin.go#L158",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("sdk.DecCoins")]),s("OutboundLink")],1),e._v(".\nEvery transaction must pay per unit of gas, "),s("strong",[e._v("at least")]),e._v(", in one of the denominations (denoms) amounts in the list. This allows the globalfee module to impose a minimum transaction fee for all transactions for a network.")]),e._v(" "),s("p",[e._v("Requirements for the fees include:")]),e._v(" "),s("ul",[s("li",[e._v("fees have to be alphabetically sorted by denom")]),e._v(" "),s("li",[e._v("fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed)")])]),e._v(" "),s("p",[e._v("There are "),s("strong",[e._v("two exceptions")]),e._v(" from the global fees rules that allow zero fee transactions:")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("Transactions that contain only message types that can bypass the minimum fee requirement and for which the total gas usage of these bypass messages does not exceed "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" may have zero fees. We refer to this as "),s("em",[e._v("bypass transactions")]),e._v(".")])]),e._v(" "),s("li",[s("p",[e._v("One of the entries in the global fees list has a zero amount, e.g., "),s("code",[e._v("0uatom")]),e._v(", and the corresponding denom, e.g., "),s("code",[e._v("uatom")]),e._v(", is not present in "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(", or node operators may set additional "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" also zero coins.")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])]),e._v(" "),s("p",[e._v("Bypass minimum fee messages are messages that are exempt from paying fees. The above global fees and the below local "),s("code",[e._v("minimum-gas-prices")]),e._v(" checks do not apply for transactions that satisfy the following conditions:")]),e._v(" "),s("ul",[s("li",[e._v("Transaction contains only bypass message types defined in "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")]),e._v(" "),s("li",[e._v("The total gas used is less than or equal to "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(".")]),e._v(" "),s("li",[e._v("In case of non-zero transaction fees, the denom has to be a subset of denoms defined in the global fees list.")])]),e._v(" "),s("p",[e._v("Starting from gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" are part of global fee params and can be proposed at network level. The default values are: "),s("code",[e._v('bypass-min-fee-msg-types=[ "/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement", "/ibc.core.client.v1.MsgUpdateClient", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose" ]')]),e._v(" and default "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage=1,000,000")])]),e._v(" "),s("p",[e._v("From gaiad v11.0.0, nodes that have the "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in their "),s("code",[e._v("app.toml")]),e._v(" configuration are "),s("strong",[e._v("not utilized")]),e._v(". Therefore, node operators have the option to either leave the field in their configurations or remove it. Node inited by gaiad v11.0.0 or later does not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in the "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("p",[e._v("Before gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" can be set by each node in "),s("code",[e._v("app.toml")]),e._v(", and "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/682770f2410ab0d33ac7f0c7203519d7a99fa2b6/x/globalfee/ante/fee.go#L69",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bypass messages gas usage on average should not exceed "),s("code",[e._v("maxBypassMinFeeMsgGasUsage")]),e._v("=200,000"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("ul",[s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v7.0.2")]),e._v(" - "),s("code",[e._v("v10.0.x")]),e._v(" use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v11.0.x")]),e._v(" or later use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Node Nodes with "),s("code",[e._v("bypass-min-fee-msg-types = []")]),e._v(" or missing this field in "),s("code",[e._v("app.toml")]),e._v(" also use default bypass message types.")]),e._v(" "),s("li",[e._v("Nodes created using gaiad "),s("code",[e._v("v7.0.1")]),e._v(" and "),s("code",[e._v("v7.0.0")]),e._v(" do not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" configured in "),s("code",[e._v("config/app.toml")]),e._v(" - they are also using same default values as in "),s("code",[e._v("v7.0.2")]),e._v(". The "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" config option can be added to "),s("code",[e._v("config/app.toml")]),e._v(" before the "),s("code",[e._v("[telemetry]")]),e._v(" field.")])]),e._v(" "),s("p",[e._v("An example of "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" "),s("strong",[e._v("before")]),e._v(" gaiad v11.0.0:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIEdhaWEgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnlwYXNzLW1pbi1mZWUtbXNnLXR5cGVzIGRlZmluZXMgY3VzdG9tIG1lc3NhZ2UgdHlwZXMgdGhlIG9wZXJhdG9yIG1heSBzZXQgdGhhdAojIHdpbGwgYnlwYXNzIG1pbmltdW0gZmVlIGNoZWNrcyBkdXJpbmcgQ2hlY2tUeC4KIwojIEV4YW1wbGU6CiMgWyZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1JlY3ZQYWNrZXQmcXVvdDssICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywgLi4uXQpieXBhc3MtbWluLWZlZS1tc2ctdHlwZXMgPSBbJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50JnF1b3Q7LCZxdW90Oy9pYmMuYXBwbGljYXRpb25zLnRyYW5zZmVyLnYxLk1zZ1RyYW5zZmVyJnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0JnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0T25DbG9zZSZxdW90O10K"}}),e._v(" "),s("h2",{attrs:{id:"minimum-gas-prices-local-fee-requirement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#minimum-gas-prices-local-fee-requirement"}},[e._v("#")]),e._v(" "),s("code",[e._v("Minimum-gas-prices")]),e._v(" (local fee requirement)")]),e._v(" "),s("p",[e._v("The "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter enables node operators to set its minimum fee requirements, and it can be set in the "),s("code",[e._v("config/app.toml")]),e._v(" file. Please note: if "),s("code",[e._v("minimum-gas-prices")]),e._v(" is set to include zero coins, the zero coins are sanitized when "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/76dea00bd6d11bfef043f6062f41e858225820ab/cmd/gaiad/cmd/root.go#L221",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("SetMinGasPrices")]),s("OutboundLink")],1),e._v(".\nWhen setting "),s("code",[e._v("minimum-gas-prices")]),e._v(", it's important to keep the following rules in mind:")]),e._v(" "),s("ul",[s("li",[e._v("The denoms in "),s("code",[e._v("min-gas-prices")]),e._v(" that are not present in the global fees list are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" that are lower than global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" are considered as fee requirement only if they are greater than the amounts for the corresponding denoms in the global fees list.")])]),e._v(" "),s("h2",{attrs:{id:"fee-antehandler-behaviour"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-antehandler-behaviour"}},[e._v("#")]),e._v(" Fee AnteHandler Behaviour")]),e._v(" "),s("p",[e._v("The denoms in the global fees list and the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are merged and de-duplicated while keeping the higher amounts. Denoms that are only in the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are discarded.")]),e._v(" "),s("p",[e._v("If the denoms of the transaction fees are a subset of the merged fees and at least one of the amounts of the transaction fees is greater than or equal to the corresponding required fees amount, the transaction can pass the fee check, otherwise an error will occur.")]),e._v(" "),s("h2",{attrs:{id:"queries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queries"}},[e._v("#")]),e._v(" Queries")]),e._v(" "),s("p",[e._v("CLI queries can be used to retrieve the globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z2FpYWQgcSBnbG9iYWxmZWUgcGFyYW1zCgp7CiAgJnF1b3Q7bWluaW11bV9nYXNfcHJpY2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMjAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgfSwKICBdLAogICZxdW90O2J5cGFzc19taW5fZmVlX21zZ190eXBlcyZxdW90OzogWwogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jbGllbnQudjEuTXNnVXBkYXRlQ2xpZW50JnF1b3Q7LAogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnVGltZW91dCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1RpbWVvdXRPbkNsb3NlJnF1b3Q7CiAgXSwKICAmcXVvdDttYXhfdG90YWxfYnlwYXNzX21pbl9mZWVfbXNnX2dhc191c2FnZSZxdW90OzogJnF1b3Q7MjAwMDAwMCZxdW90Owp9Cg=="}}),e._v(" "),s("p",[e._v("If the global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is not set, the query returns an empty global fees list: "),s("code",[e._v("minimum_gas_prices: []")]),e._v(". In this case the Cosmos Hub will use "),s("code",[e._v("0uatom")]),e._v(" as global fee in this case (the default fee denom).")]),e._v(" "),s("h2",{attrs:{id:"setting-up-globalfee-params-via-gov-proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-globalfee-params-via-gov-proposals"}},[e._v("#")]),e._v(" Setting Up Globalfee Params via Gov Proposals")]),e._v(" "),s("p",[e._v("An example of setting up a global fee by a gov proposals is shown below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgcHJvcG9zYWwuanNvbgo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWwgZmVlIFBhcmFtIENoYW5nZSZxdW90OywKICAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzogJnF1b3Q7VXBkYXRlIGdsb2JhbCBmZWUmcXVvdDssCiAgJnF1b3Q7Y2hhbmdlcyZxdW90OzogWwogICAgewogICAgICAmcXVvdDtzdWJzcGFjZSZxdW90OzogJnF1b3Q7Z2xvYmFsZmVlJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01pbmltdW1HYXNQcmljZXNQYXJhbSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IFt7JnF1b3Q7ZGVub20mcXVvdDs6JnF1b3Q7c3Rha2UmcXVvdDssICZxdW90O2Ftb3VudCZxdW90OzomcXVvdDswLjAwMiZxdW90O30sIHsmcXVvdDtkZW5vbSZxdW90OzomcXVvdDt1YXRvbSZxdW90OywgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMSZxdW90O31dCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwc3Rha2UmcXVvdDsKfQo="}}),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(' in the above "value" field, coins must sorted alphabetically by denom.')]),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("bypassMinFeeMsgTypes")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7QnlwYXNzTWluRmVlTXNnVHlwZXMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiBbJnF1b3Q7L2Nvc21vcy5kaXN0cmlidXRpb24udjFiZXRhMS5Nc2dXaXRoZHJhd0RlbGVnYXRvclJld2FyZCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNsaWVudC52MS5Nc2dVcGRhdGVDbGllbnQmcXVvdDtdCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwMDAwdWF0b20mcXVvdDsKfQo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtnbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VG90YWxCeXBhc3NNaW5GZWVNc2dHYXNVc2FnZSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDUwMDAKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMDB1YXRvbSZxdW90Owp9Cg=="}}),e._v(" "),s("h2",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[e._v("#")]),e._v(" Examples")]),e._v(" "),s("p",[e._v("Here are a few examples to clarify the relationship between global fees, minimum-gas-prices and transaction fees.")]),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(" Transactions can include zero-coin fees. However, these fees are removed from the transaction fees during the fee "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/client/tx/factory.go#L144",target:"_blank",rel:"noopener noreferrer"}},[e._v("parsing"),s("OutboundLink")],1),e._v(" / "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/types/dec_coin.go#L172",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitizing"),s("OutboundLink")],1),e._v(" before reaching the fee AnteHandler.\nThis means "),s("code",[e._v('paidfee = "1uatom, 0stake"')]),e._v(" and "),s("code",[e._v('paidfee = "1uatom"')]),e._v(" are equivalent, and similarly, "),s("code",[e._v('paidfee = "0uatom"')]),e._v(" is equivalent to "),s("code",[e._v('paidfee = ""')]),e._v(".\nIn the following examples, zero-coin fees are removed from the transaction fees, globalfee refers to "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params, minimum-gas-prices refers to the local "),s("code",[e._v("minimum-gas-prices")]),e._v(" setup in "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"case-1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-1"}},[e._v("#")]),e._v(" Case 1")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[], minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("p",[e._v("Note that this is the same case as globalfee=0uatom, minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-2"}},[e._v("#")]),e._v(" Case 2")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[], minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-3"}},[e._v("#")]),e._v(" Case 3")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.2uatom], minimum-gas-prices=0.1uatom, gas=2000000 (global fee is higher than min_as_price).")]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0.2uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-4"}},[e._v("#")]),e._v(" Case 4")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=0.2uatom, gas=2000000 (global fee is lower than min_as_price).")]),e._v(" "),s("p",[e._v("Note that the required amount in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v("paidfee = 0uatom, "),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-5"}},[e._v("#")]),e._v(" Case 5")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[0uatom, 1stake], minimum-gas-prices="", gas=200000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee ="2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee ="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1uatom, 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1stake", '),s("code",[e._v("pass")])])]),e._v(" "),s("h3",{attrs:{id:"case-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-6"}},[e._v("#")]),e._v(" Case 6")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom, 1stake], minimum-gas-prices=0.2uatom, gas=200000.")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2atom, 2000000 * 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-7"}},[e._v("#")]),e._v(" Case 7")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=[0.2uatom, 1stake], gas=600,000,"),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.\nAlso, the "),s("code",[e._v("1stake")]),e._v(" in minimum-gas-prices is ignored.")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with with paidfee="600000 * 0.05uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs= ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] with paidfee="", '),s("code",[e._v("fail")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="", '),s("code",[e._v("fail")]),e._v(" (transaction contains non-bypass messages)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="600000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="600000 * 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-8"}},[e._v("#")]),e._v(" Case 8")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[1uatom], minimum-gas-prices="0uatom", gas=1,100,000 or 200,'),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="" and gas=1,100,000, '),s("code",[e._v("fail")]),e._v(" (gas limit exceeded for bypass transactions)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="200 * 1uatom" and gas=200, '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="1,100,000 * 1uatom", '),s("code",[e._v("pass")])])]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://docs.cosmos.network/main/basics/gas-fees.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gas and Fees in Cosmos SDK"),s("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{507:function(e,a,s){"use strict";s.r(a);var t=s(1),i=Object(t.a)({},(function(){var e=this,a=e.$createElement,s=e._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"gaia-fee-and-fees-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-fee-and-fees-checks"}},[e._v("#")]),e._v(" Gaia Fee and Fees Checks")]),e._v(" "),s("h2",{attrs:{id:"fee-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-parameters"}},[e._v("#")]),e._v(" Fee Parameters")]),e._v(" "),s("p",[e._v("The CosmosHub allows managing fees using 4 parameters. At the network level, there are three parameters from globalfee modules ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(", and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(") that can be set by gov proposal. Additionally, a fourth parameter which enables individual nodes to impose supplementary fee amount.")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("global fees ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(")."),s("br"),e._v("\nglobal fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is established at the network level through globalfee params set via Governance Proposal, it sets a fee requirements that the entire network must adhere to.")]),e._v(" "),s("p",[s("em",[e._v('Please note: in this context, "globalfee" or "Globalfee" are used to refer to the globalfee module, while "global fees" is referring to the '),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module's params.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),s("br"),e._v("\nBy adjusting the "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter in "),s("code",[e._v("app.toml")]),e._v(", nodes can enforce a fee that is higher than the globally defined "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". However, it's importantht to note that this configuration solely determines whether transactions are eligible to enter this specific node's mempool.")]),e._v(" "),s("p",[s("em",[e._v("Please note: in this context, "),s("code",[e._v("minimum-gas-prices")]),e._v(" are used to refer to the local fee requirement that nodes can set in their "),s("code",[e._v("app.toml")]),e._v(", while "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is a parameter in the globalfee module, which is the fee requirement at network level.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v("."),s("br"),e._v("\nThese two parameters are also part of the globalfee params from gaiad v11.0.0. They can be changed through Gov Proposals. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" represents a list of message types that will be excluded from paying any fees for inclusion in a block, "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is the limit placed on gas usage for "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")])])]),e._v(" "),s("h2",{attrs:{id:"globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-module"}},[e._v("#")]),e._v(" Globalfee module")]),e._v(" "),s("p",[e._v("The globalfee module has three parameters that can be set by governance proposal type "),s("code",[e._v("param-change")]),e._v(":")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("li",[s("code",[e._v("BypassMinFeeMsgTypes")])]),e._v(" "),s("li",[s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-minimumgaspricesparam"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("p",[e._v("Network level, global fees consist of a list of "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/82ce891aa67f635f3b324b7a52386d5405c5abd0/types/dec_coin.go#L158",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("sdk.DecCoins")]),s("OutboundLink")],1),e._v(".\nEvery transaction must pay per unit of gas, "),s("strong",[e._v("at least")]),e._v(", in one of the denominations (denoms) amounts in the list. This allows the globalfee module to impose a minimum transaction fee for all transactions for a network.")]),e._v(" "),s("p",[e._v("Requirements for the fees include:")]),e._v(" "),s("ul",[s("li",[e._v("fees have to be alphabetically sorted by denom")]),e._v(" "),s("li",[e._v("fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed)")])]),e._v(" "),s("p",[e._v("There are "),s("strong",[e._v("two exceptions")]),e._v(" from the global fees rules that allow zero fee transactions:")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("Transactions that contain only message types that can bypass the minimum fee requirement and for which the total gas usage of these bypass messages does not exceed "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" may have zero fees. We refer to this as "),s("em",[e._v("bypass transactions")]),e._v(".")])]),e._v(" "),s("li",[s("p",[e._v("One of the entries in the global fees list has a zero amount, e.g., "),s("code",[e._v("0uatom")]),e._v(", and the corresponding denom, e.g., "),s("code",[e._v("uatom")]),e._v(", is not present in "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(", or node operators may set additional "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" also zero coins.")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])]),e._v(" "),s("p",[e._v("Bypass minimum fee messages are messages that are exempt from paying fees. The above global fees and the below local "),s("code",[e._v("minimum-gas-prices")]),e._v(" checks do not apply for transactions that satisfy the following conditions:")]),e._v(" "),s("ul",[s("li",[e._v("Transaction contains only bypass message types defined in "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")]),e._v(" "),s("li",[e._v("The total gas used is less than or equal to "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(".")]),e._v(" "),s("li",[e._v("In case of non-zero transaction fees, the denom has to be a subset of denoms defined in the global fees list.")])]),e._v(" "),s("p",[e._v("Starting from gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" are part of global fee params and can be proposed at network level. The default values are: "),s("code",[e._v('bypass-min-fee-msg-types=[ "/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement", "/ibc.core.client.v1.MsgUpdateClient", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose" ]')]),e._v(" and default "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage=1,000,000")])]),e._v(" "),s("p",[e._v("From gaiad v11.0.0, nodes that have the "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in their "),s("code",[e._v("app.toml")]),e._v(" configuration are "),s("strong",[e._v("not utilized")]),e._v(". Therefore, node operators have the option to either leave the field in their configurations or remove it. Node inited by gaiad v11.0.0 or later does not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in the "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("p",[e._v("Before gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" can be set by each node in "),s("code",[e._v("app.toml")]),e._v(", and "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/682770f2410ab0d33ac7f0c7203519d7a99fa2b6/x/globalfee/ante/fee.go#L69",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bypass messages gas usage on average should not exceed "),s("code",[e._v("maxBypassMinFeeMsgGasUsage")]),e._v("=200,000"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("ul",[s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v7.0.2")]),e._v(" - "),s("code",[e._v("v10.0.x")]),e._v(" use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v11.0.x")]),e._v(" or later use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Node Nodes with "),s("code",[e._v("bypass-min-fee-msg-types = []")]),e._v(" or missing this field in "),s("code",[e._v("app.toml")]),e._v(" also use default bypass message types.")]),e._v(" "),s("li",[e._v("Nodes created using gaiad "),s("code",[e._v("v7.0.1")]),e._v(" and "),s("code",[e._v("v7.0.0")]),e._v(" do not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" configured in "),s("code",[e._v("config/app.toml")]),e._v(" - they are also using same default values as in "),s("code",[e._v("v7.0.2")]),e._v(". The "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" config option can be added to "),s("code",[e._v("config/app.toml")]),e._v(" before the "),s("code",[e._v("[telemetry]")]),e._v(" field.")])]),e._v(" "),s("p",[e._v("An example of "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" "),s("strong",[e._v("before")]),e._v(" gaiad v11.0.0:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIEdhaWEgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnlwYXNzLW1pbi1mZWUtbXNnLXR5cGVzIGRlZmluZXMgY3VzdG9tIG1lc3NhZ2UgdHlwZXMgdGhlIG9wZXJhdG9yIG1heSBzZXQgdGhhdAojIHdpbGwgYnlwYXNzIG1pbmltdW0gZmVlIGNoZWNrcyBkdXJpbmcgQ2hlY2tUeC4KIwojIEV4YW1wbGU6CiMgWyZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1JlY3ZQYWNrZXQmcXVvdDssICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywgLi4uXQpieXBhc3MtbWluLWZlZS1tc2ctdHlwZXMgPSBbJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50JnF1b3Q7LCZxdW90Oy9pYmMuYXBwbGljYXRpb25zLnRyYW5zZmVyLnYxLk1zZ1RyYW5zZmVyJnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0JnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0T25DbG9zZSZxdW90O10K"}}),e._v(" "),s("h2",{attrs:{id:"minimum-gas-prices-local-fee-requirement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#minimum-gas-prices-local-fee-requirement"}},[e._v("#")]),e._v(" "),s("code",[e._v("Minimum-gas-prices")]),e._v(" (local fee requirement)")]),e._v(" "),s("p",[e._v("The "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter enables node operators to set its minimum fee requirements, and it can be set in the "),s("code",[e._v("config/app.toml")]),e._v(" file. Please note: if "),s("code",[e._v("minimum-gas-prices")]),e._v(" is set to include zero coins, the zero coins are sanitized when "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/76dea00bd6d11bfef043f6062f41e858225820ab/cmd/gaiad/cmd/root.go#L221",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("SetMinGasPrices")]),s("OutboundLink")],1),e._v(".\nWhen setting "),s("code",[e._v("minimum-gas-prices")]),e._v(", it's important to keep the following rules in mind:")]),e._v(" "),s("ul",[s("li",[e._v("The denoms in "),s("code",[e._v("min-gas-prices")]),e._v(" that are not present in the global fees list are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" that are lower than global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" are considered as fee requirement only if they are greater than the amounts for the corresponding denoms in the global fees list.")])]),e._v(" "),s("h2",{attrs:{id:"fee-antehandler-behaviour"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-antehandler-behaviour"}},[e._v("#")]),e._v(" Fee AnteHandler Behaviour")]),e._v(" "),s("p",[e._v("The denoms in the global fees list and the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are merged and de-duplicated while keeping the higher amounts. Denoms that are only in the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are discarded.")]),e._v(" "),s("p",[e._v("If the denoms of the transaction fees are a subset of the merged fees and at least one of the amounts of the transaction fees is greater than or equal to the corresponding required fees amount, the transaction can pass the fee check, otherwise an error will occur.")]),e._v(" "),s("h2",{attrs:{id:"queries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queries"}},[e._v("#")]),e._v(" Queries")]),e._v(" "),s("p",[e._v("CLI queries can be used to retrieve the globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z2FpYWQgcSBnbG9iYWxmZWUgcGFyYW1zCgp7CiAgJnF1b3Q7bWluaW11bV9nYXNfcHJpY2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMjAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgfSwKICBdLAogICZxdW90O2J5cGFzc19taW5fZmVlX21zZ190eXBlcyZxdW90OzogWwogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jbGllbnQudjEuTXNnVXBkYXRlQ2xpZW50JnF1b3Q7LAogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnVGltZW91dCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1RpbWVvdXRPbkNsb3NlJnF1b3Q7CiAgXSwKICAmcXVvdDttYXhfdG90YWxfYnlwYXNzX21pbl9mZWVfbXNnX2dhc191c2FnZSZxdW90OzogJnF1b3Q7MjAwMDAwMCZxdW90Owp9Cg=="}}),e._v(" "),s("p",[e._v("If the global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is not set, the query returns an empty global fees list: "),s("code",[e._v("minimum_gas_prices: []")]),e._v(". In this case the Cosmos Hub will use "),s("code",[e._v("0uatom")]),e._v(" as global fee in this case (the default fee denom).")]),e._v(" "),s("h2",{attrs:{id:"setting-up-globalfee-params-via-gov-proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-globalfee-params-via-gov-proposals"}},[e._v("#")]),e._v(" Setting Up Globalfee Params via Gov Proposals")]),e._v(" "),s("p",[e._v("An example of setting up a global fee by a gov proposals is shown below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgcHJvcG9zYWwuanNvbgo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWwgZmVlIFBhcmFtIENoYW5nZSZxdW90OywKICAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzogJnF1b3Q7VXBkYXRlIGdsb2JhbCBmZWUmcXVvdDssCiAgJnF1b3Q7Y2hhbmdlcyZxdW90OzogWwogICAgewogICAgICAmcXVvdDtzdWJzcGFjZSZxdW90OzogJnF1b3Q7Z2xvYmFsZmVlJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01pbmltdW1HYXNQcmljZXNQYXJhbSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IFt7JnF1b3Q7ZGVub20mcXVvdDs6JnF1b3Q7c3Rha2UmcXVvdDssICZxdW90O2Ftb3VudCZxdW90OzomcXVvdDswLjAwMiZxdW90O30sIHsmcXVvdDtkZW5vbSZxdW90OzomcXVvdDt1YXRvbSZxdW90OywgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMSZxdW90O31dCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwc3Rha2UmcXVvdDsKfQo="}}),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(' in the above "value" field, coins must sorted alphabetically by denom.')]),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("bypassMinFeeMsgTypes")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7QnlwYXNzTWluRmVlTXNnVHlwZXMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiBbJnF1b3Q7L2Nvc21vcy5kaXN0cmlidXRpb24udjFiZXRhMS5Nc2dXaXRoZHJhd0RlbGVnYXRvclJld2FyZCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNsaWVudC52MS5Nc2dVcGRhdGVDbGllbnQmcXVvdDtdCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwMDAwdWF0b20mcXVvdDsKfQo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtnbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VG90YWxCeXBhc3NNaW5GZWVNc2dHYXNVc2FnZSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDUwMDAKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMDB1YXRvbSZxdW90Owp9Cg=="}}),e._v(" "),s("h2",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[e._v("#")]),e._v(" Examples")]),e._v(" "),s("p",[e._v("Here are a few examples to clarify the relationship between global fees, minimum-gas-prices and transaction fees.")]),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(" Transactions can include zero-coin fees. However, these fees are removed from the transaction fees during the fee "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/client/tx/factory.go#L144",target:"_blank",rel:"noopener noreferrer"}},[e._v("parsing"),s("OutboundLink")],1),e._v(" / "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/types/dec_coin.go#L172",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitizing"),s("OutboundLink")],1),e._v(" before reaching the fee AnteHandler.\nThis means "),s("code",[e._v('paidfee = "1uatom, 0stake"')]),e._v(" and "),s("code",[e._v('paidfee = "1uatom"')]),e._v(" are equivalent, and similarly, "),s("code",[e._v('paidfee = "0uatom"')]),e._v(" is equivalent to "),s("code",[e._v('paidfee = ""')]),e._v(".\nIn the following examples, zero-coin fees are removed from the transaction fees, globalfee refers to "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params, minimum-gas-prices refers to the local "),s("code",[e._v("minimum-gas-prices")]),e._v(" setup in "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"case-1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-1"}},[e._v("#")]),e._v(" Case 1")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[], minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("p",[e._v("Note that this is the same case as globalfee=0uatom, minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-2"}},[e._v("#")]),e._v(" Case 2")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[], minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-3"}},[e._v("#")]),e._v(" Case 3")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.2uatom], minimum-gas-prices=0.1uatom, gas=2000000 (global fee is higher than min_as_price).")]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0.2uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-4"}},[e._v("#")]),e._v(" Case 4")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=0.2uatom, gas=2000000 (global fee is lower than min_as_price).")]),e._v(" "),s("p",[e._v("Note that the required amount in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v("paidfee = 0uatom, "),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-5"}},[e._v("#")]),e._v(" Case 5")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[0uatom, 1stake], minimum-gas-prices="", gas=200000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee ="2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee ="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1uatom, 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1stake", '),s("code",[e._v("pass")])])]),e._v(" "),s("h3",{attrs:{id:"case-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-6"}},[e._v("#")]),e._v(" Case 6")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom, 1stake], minimum-gas-prices=0.2uatom, gas=200000.")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2atom, 2000000 * 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-7"}},[e._v("#")]),e._v(" Case 7")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=[0.2uatom, 1stake], gas=600,000,"),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.\nAlso, the "),s("code",[e._v("1stake")]),e._v(" in minimum-gas-prices is ignored.")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with with paidfee="600000 * 0.05uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs= ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] with paidfee="", '),s("code",[e._v("fail")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="", '),s("code",[e._v("fail")]),e._v(" (transaction contains non-bypass messages)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="600000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="600000 * 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-8"}},[e._v("#")]),e._v(" Case 8")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[1uatom], minimum-gas-prices="0uatom", gas=1,100,000 or 200,'),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="" and gas=1,100,000, '),s("code",[e._v("fail")]),e._v(" (gas limit exceeded for bypass transactions)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="200 * 1uatom" and gas=200, '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="1,100,000 * 1uatom", '),s("code",[e._v("pass")])])]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://docs.cosmos.network/main/basics/gas-fees.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gas and Fees in Cosmos SDK"),s("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/161.d588d8f6.js b/main/assets/js/162.bd774969.js similarity index 99% rename from main/assets/js/161.d588d8f6.js rename to main/assets/js/162.bd774969.js index 9c479c8021e..6fe7d903b0d 100644 --- a/main/assets/js/161.d588d8f6.js +++ b/main/assets/js/162.bd774969.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{609:function(t,e,a){"use strict";a.r(e);var v=a(1),_=Object(v.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:"protobuf-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protobuf-documentation"}},[t._v("#")]),t._v(" Protobuf Documentation")]),t._v(" "),a("p",[a("a",{attrs:{name:"top"}})]),t._v(" "),a("h2",{attrs:{id:"table-of-contents"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-of-contents"}},[t._v("#")]),t._v(" Table of Contents")]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#gaia/globalfee/v1beta1/query.proto"}},[t._v("gaia/globalfee/v1beta1/query.proto")])]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsRequest"}},[t._v("QueryParamsRequest")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsResponse"}},[t._v("QueryParamsResponse")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Query"}},[t._v("Query")])])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia/globalfee/v1beta1/genesis.proto"}},[t._v("gaia/globalfee/v1beta1/genesis.proto")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.GenesisState"}},[t._v("GenesisState")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#scalar-value-types"}},[t._v("Scalar Value Types")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia/globalfee/v1beta1/query.proto"}})]),a("p",{attrs:{align:"right"}},[a("a",{attrs:{href:"#top"}},[t._v("Top")])]),a("p"),t._v(" "),a("h2",{attrs:{id:"gaia-globalfee-v1beta1-query-proto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-globalfee-v1beta1-query-proto"}},[t._v("#")]),t._v(" gaia/globalfee/v1beta1/query.proto")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.QueryParamsRequest"}})]),t._v(" "),a("h3",{attrs:{id:"queryparamsrequest"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queryparamsrequest"}},[t._v("#")]),t._v(" QueryParamsRequest")]),t._v(" "),a("p",[t._v("QueryMinimumGasPricesRequest is the request type for the\nQuery/MinimumGasPrices RPC method.")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.QueryParamsResponse"}})]),t._v(" "),a("h3",{attrs:{id:"queryparamsresponse"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queryparamsresponse"}},[t._v("#")]),t._v(" QueryParamsResponse")]),t._v(" "),a("p",[t._v("QueryMinimumGasPricesResponse is the response type for the\nQuery/MinimumGasPrices RPC method.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])]),t._v(" "),a("td"),t._v(" "),a("td")])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.Query"}})]),t._v(" "),a("h3",{attrs:{id:"query"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query"}},[t._v("#")]),t._v(" Query")]),t._v(" "),a("p",[t._v("Query defines the gRPC querier service.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Method Name")]),t._v(" "),a("th",[t._v("Request Type")]),t._v(" "),a("th",[t._v("Response Type")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("HTTP Verb")]),t._v(" "),a("th",[t._v("Endpoint")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("Params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsRequest"}},[t._v("QueryParamsRequest")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsResponse"}},[t._v("QueryParamsResponse")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("GET")]),t._v(" "),a("td",[t._v("/gaia/globalfee/v1beta1/params")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia/globalfee/v1beta1/genesis.proto"}})]),a("p",{attrs:{align:"right"}},[a("a",{attrs:{href:"#top"}},[t._v("Top")])]),a("p"),t._v(" "),a("h2",{attrs:{id:"gaia-globalfee-v1beta1-genesis-proto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-globalfee-v1beta1-genesis-proto"}},[t._v("#")]),t._v(" gaia/globalfee/v1beta1/genesis.proto")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.GenesisState"}})]),t._v(" "),a("h3",{attrs:{id:"genesisstate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genesisstate"}},[t._v("#")]),t._v(" GenesisState")]),t._v(" "),a("p",[t._v("GenesisState - initial state of module")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("Params of this module")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.Params"}})]),t._v(" "),a("h3",{attrs:{id:"params"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#params"}},[t._v("#")]),t._v(" Params")]),t._v(" "),a("p",[t._v("Params defines the set of module parameters.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("minimum_gas_prices")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#cosmos.base.v1beta1.DecCoin"}},[t._v("cosmos.base.v1beta1.DecCoin")])]),t._v(" "),a("td",[t._v("repeated")]),t._v(" "),a("td",[t._v("minimum_gas_prices stores the minimum gas price(s) for all TX on the chain. When multiple coins are defined then they are accepted alternatively. The list must be sorted by denoms asc. No duplicate denoms or zero amount values allowed. For more information see https://docs.cosmos.network/main/modules/auth#concepts")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bypass_min_fee_msg_types")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#string"}},[t._v("string")])]),t._v(" "),a("td",[t._v("repeated")]),t._v(" "),a("td",[t._v("bypass_min_fee_msg_types defines a list of message type urls that are free of fee charge.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("max_total_bypass_min_fee_msg_gas_usage")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#uint64"}},[t._v("uint64")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("max_total_bypass_min_fee_msg_gas_usage defines the total maximum gas usage allowed for a transaction containing only messages of types in bypass_min_fee_msg_types to bypass fee charge.")])])])]),t._v(" "),a("h2",{attrs:{id:"scalar-value-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scalar-value-types"}},[t._v("#")]),t._v(" Scalar Value Types")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v(".proto Type")]),t._v(" "),a("th",[t._v("Notes")]),t._v(" "),a("th",[t._v("C++")]),t._v(" "),a("th",[t._v("Java")]),t._v(" "),a("th",[t._v("Python")]),t._v(" "),a("th",[t._v("Go")]),t._v(" "),a("th",[t._v("C#")]),t._v(" "),a("th",[t._v("PHP")]),t._v(" "),a("th",[t._v("Ruby")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("a",{attrs:{name:"double"}}),t._v(" double")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float64")]),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("Float")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"float"}}),t._v(" float")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float32")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("Float")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"int32"}}),t._v(" int32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"int64"}}),t._v(" int64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"uint32"}}),t._v(" uint32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding.")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("uint")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"uint64"}}),t._v(" uint64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding.")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("ulong")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sint32"}}),t._v(" sint32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sint64"}}),t._v(" sint64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"fixed32"}}),t._v(" fixed32")]),t._v(" "),a("td",[t._v("Always four bytes. More efficient than uint32 if values are often greater than 2^28.")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("uint")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"fixed64"}}),t._v(" fixed64")]),t._v(" "),a("td",[t._v("Always eight bytes. More efficient than uint64 if values are often greater than 2^56.")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("ulong")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sfixed32"}}),t._v(" sfixed32")]),t._v(" "),a("td",[t._v("Always four bytes.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sfixed64"}}),t._v(" sfixed64")]),t._v(" "),a("td",[t._v("Always eight bytes.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"bool"}}),t._v(" bool")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("TrueClass/FalseClass")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"string"}}),t._v(" string")]),t._v(" "),a("td",[t._v("A string must always contain UTF-8 encoded or 7-bit ASCII text.")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String")]),t._v(" "),a("td",[t._v("str/unicode")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String (UTF-8)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"bytes"}}),t._v(" bytes")]),t._v(" "),a("td",[t._v("May contain any arbitrary sequence of bytes.")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("ByteString")]),t._v(" "),a("td",[t._v("str")]),t._v(" "),a("td",[t._v("[]byte")]),t._v(" "),a("td",[t._v("ByteString")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String (ASCII-8BIT)")])])])])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{564:function(t,e,a){"use strict";a.r(e);var v=a(1),_=Object(v.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:"protobuf-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protobuf-documentation"}},[t._v("#")]),t._v(" Protobuf Documentation")]),t._v(" "),a("p",[a("a",{attrs:{name:"top"}})]),t._v(" "),a("h2",{attrs:{id:"table-of-contents"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-of-contents"}},[t._v("#")]),t._v(" Table of Contents")]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#gaia/globalfee/v1beta1/query.proto"}},[t._v("gaia/globalfee/v1beta1/query.proto")])]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsRequest"}},[t._v("QueryParamsRequest")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsResponse"}},[t._v("QueryParamsResponse")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Query"}},[t._v("Query")])])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#gaia/globalfee/v1beta1/genesis.proto"}},[t._v("gaia/globalfee/v1beta1/genesis.proto")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.GenesisState"}},[t._v("GenesisState")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#scalar-value-types"}},[t._v("Scalar Value Types")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia/globalfee/v1beta1/query.proto"}})]),a("p",{attrs:{align:"right"}},[a("a",{attrs:{href:"#top"}},[t._v("Top")])]),a("p"),t._v(" "),a("h2",{attrs:{id:"gaia-globalfee-v1beta1-query-proto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-globalfee-v1beta1-query-proto"}},[t._v("#")]),t._v(" gaia/globalfee/v1beta1/query.proto")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.QueryParamsRequest"}})]),t._v(" "),a("h3",{attrs:{id:"queryparamsrequest"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queryparamsrequest"}},[t._v("#")]),t._v(" QueryParamsRequest")]),t._v(" "),a("p",[t._v("QueryMinimumGasPricesRequest is the request type for the\nQuery/MinimumGasPrices RPC method.")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.QueryParamsResponse"}})]),t._v(" "),a("h3",{attrs:{id:"queryparamsresponse"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queryparamsresponse"}},[t._v("#")]),t._v(" QueryParamsResponse")]),t._v(" "),a("p",[t._v("QueryMinimumGasPricesResponse is the response type for the\nQuery/MinimumGasPrices RPC method.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])]),t._v(" "),a("td"),t._v(" "),a("td")])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.Query"}})]),t._v(" "),a("h3",{attrs:{id:"query"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query"}},[t._v("#")]),t._v(" Query")]),t._v(" "),a("p",[t._v("Query defines the gRPC querier service.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Method Name")]),t._v(" "),a("th",[t._v("Request Type")]),t._v(" "),a("th",[t._v("Response Type")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("HTTP Verb")]),t._v(" "),a("th",[t._v("Endpoint")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("Params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsRequest"}},[t._v("QueryParamsRequest")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.QueryParamsResponse"}},[t._v("QueryParamsResponse")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("GET")]),t._v(" "),a("td",[t._v("/gaia/globalfee/v1beta1/params")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia/globalfee/v1beta1/genesis.proto"}})]),a("p",{attrs:{align:"right"}},[a("a",{attrs:{href:"#top"}},[t._v("Top")])]),a("p"),t._v(" "),a("h2",{attrs:{id:"gaia-globalfee-v1beta1-genesis-proto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-globalfee-v1beta1-genesis-proto"}},[t._v("#")]),t._v(" gaia/globalfee/v1beta1/genesis.proto")]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.GenesisState"}})]),t._v(" "),a("h3",{attrs:{id:"genesisstate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genesisstate"}},[t._v("#")]),t._v(" GenesisState")]),t._v(" "),a("p",[t._v("GenesisState - initial state of module")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("params")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#gaia.globalfee.v1beta1.Params"}},[t._v("Params")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("Params of this module")])])])]),t._v(" "),a("p",[a("a",{attrs:{name:"gaia.globalfee.v1beta1.Params"}})]),t._v(" "),a("h3",{attrs:{id:"params"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#params"}},[t._v("#")]),t._v(" Params")]),t._v(" "),a("p",[t._v("Params defines the set of module parameters.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Label")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("minimum_gas_prices")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#cosmos.base.v1beta1.DecCoin"}},[t._v("cosmos.base.v1beta1.DecCoin")])]),t._v(" "),a("td",[t._v("repeated")]),t._v(" "),a("td",[t._v("minimum_gas_prices stores the minimum gas price(s) for all TX on the chain. When multiple coins are defined then they are accepted alternatively. The list must be sorted by denoms asc. No duplicate denoms or zero amount values allowed. For more information see https://docs.cosmos.network/main/modules/auth#concepts")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bypass_min_fee_msg_types")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#string"}},[t._v("string")])]),t._v(" "),a("td",[t._v("repeated")]),t._v(" "),a("td",[t._v("bypass_min_fee_msg_types defines a list of message type urls that are free of fee charge.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("max_total_bypass_min_fee_msg_gas_usage")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#uint64"}},[t._v("uint64")])]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("max_total_bypass_min_fee_msg_gas_usage defines the total maximum gas usage allowed for a transaction containing only messages of types in bypass_min_fee_msg_types to bypass fee charge.")])])])]),t._v(" "),a("h2",{attrs:{id:"scalar-value-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scalar-value-types"}},[t._v("#")]),t._v(" Scalar Value Types")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v(".proto Type")]),t._v(" "),a("th",[t._v("Notes")]),t._v(" "),a("th",[t._v("C++")]),t._v(" "),a("th",[t._v("Java")]),t._v(" "),a("th",[t._v("Python")]),t._v(" "),a("th",[t._v("Go")]),t._v(" "),a("th",[t._v("C#")]),t._v(" "),a("th",[t._v("PHP")]),t._v(" "),a("th",[t._v("Ruby")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("a",{attrs:{name:"double"}}),t._v(" double")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float64")]),t._v(" "),a("td",[t._v("double")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("Float")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"float"}}),t._v(" float")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float32")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("float")]),t._v(" "),a("td",[t._v("Float")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"int32"}}),t._v(" int32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"int64"}}),t._v(" int64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"uint32"}}),t._v(" uint32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding.")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("uint")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"uint64"}}),t._v(" uint64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding.")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("ulong")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sint32"}}),t._v(" sint32")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sint64"}}),t._v(" sint64")]),t._v(" "),a("td",[t._v("Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"fixed32"}}),t._v(" fixed32")]),t._v(" "),a("td",[t._v("Always four bytes. More efficient than uint32 if values are often greater than 2^28.")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("uint32")]),t._v(" "),a("td",[t._v("uint")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"fixed64"}}),t._v(" fixed64")]),t._v(" "),a("td",[t._v("Always eight bytes. More efficient than uint64 if values are often greater than 2^56.")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("uint64")]),t._v(" "),a("td",[t._v("ulong")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sfixed32"}}),t._v(" sfixed32")]),t._v(" "),a("td",[t._v("Always four bytes.")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("int32")]),t._v(" "),a("td",[t._v("int")]),t._v(" "),a("td",[t._v("integer")]),t._v(" "),a("td",[t._v("Bignum or Fixnum (as required)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"sfixed64"}}),t._v(" sfixed64")]),t._v(" "),a("td",[t._v("Always eight bytes.")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("int/long")]),t._v(" "),a("td",[t._v("int64")]),t._v(" "),a("td",[t._v("long")]),t._v(" "),a("td",[t._v("integer/string")]),t._v(" "),a("td",[t._v("Bignum")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"bool"}}),t._v(" bool")]),t._v(" "),a("td"),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("bool")]),t._v(" "),a("td",[t._v("boolean")]),t._v(" "),a("td",[t._v("TrueClass/FalseClass")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"string"}}),t._v(" string")]),t._v(" "),a("td",[t._v("A string must always contain UTF-8 encoded or 7-bit ASCII text.")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String")]),t._v(" "),a("td",[t._v("str/unicode")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String (UTF-8)")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{name:"bytes"}}),t._v(" bytes")]),t._v(" "),a("td",[t._v("May contain any arbitrary sequence of bytes.")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("ByteString")]),t._v(" "),a("td",[t._v("str")]),t._v(" "),a("td",[t._v("[]byte")]),t._v(" "),a("td",[t._v("ByteString")]),t._v(" "),a("td",[t._v("string")]),t._v(" "),a("td",[t._v("String (ASCII-8BIT)")])])])])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file diff --git a/main/assets/js/162.4cfa5f8d.js b/main/assets/js/163.da0f2a65.js similarity index 94% rename from main/assets/js/162.4cfa5f8d.js rename to main/assets/js/163.da0f2a65.js index 403e2de20c3..0ab76ad9bd2 100644 --- a/main/assets/js/162.4cfa5f8d.js +++ b/main/assets/js/163.da0f2a65.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{610: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],{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 diff --git a/main/assets/js/163.103718af.js b/main/assets/js/164.cae65005.js similarity index 97% rename from main/assets/js/163.103718af.js rename to main/assets/js/164.cae65005.js index d7cab8ba032..9ddf1a5b4bb 100644 --- a/main/assets/js/163.103718af.js +++ b/main/assets/js/164.cae65005.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{612: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],{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 diff --git a/main/assets/js/164.5324bb20.js b/main/assets/js/165.e030d039.js similarity index 99% rename from main/assets/js/164.5324bb20.js rename to main/assets/js/165.e030d039.js index 49ec657ca1b..b6f50052132 100644 --- a/main/assets/js/164.5324bb20.js +++ b/main/assets/js/165.e030d039.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{496:function(e,t,o){"use strict";o.r(t);var s=o(1),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),o("p",[e._v("This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own "),o("code",[e._v("gaia")]),e._v(" testnet.")]),e._v(" "),o("p",[e._v("Note that you can generate a default genesis file for your own testnet by running the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("The genesis file is stored in "),o("code",[e._v("~/.gaia/config/genesis.toml")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"what-is-a-genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-genesis-file"}},[e._v("#")]),e._v(" What is a Genesis File")]),e._v(" "),o("p",[e._v("A genesis file is a JSON file which defines the initial state of your blockchain. It can be seen as height "),o("code",[e._v("0")]),e._v(" of your blockchain. The first block, at height "),o("code",[e._v("1")]),e._v(", will reference the genesis file as its parent.")]),e._v(" "),o("p",[e._v("The state defined in the genesis file contains all the necessary information, like initial token allocation, genesis time, default parameters, and more. Let us break down these information.")]),e._v(" "),o("h2",{attrs:{id:"genesis-time-and-chain-id"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-time-and-chain-id"}},[e._v("#")]),e._v(" Genesis Time and Chain_id")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("genesis_time")]),e._v(" is defined at the top of the genesis file. It is a "),o("code",[e._v("UTC")]),e._v(" timestamps which specifies when the blockchain is due to start. At this time, genesis validators are supposed to come online and start participating in the consensus process. The blockchain starts when more than 2/3rd of the genesis validators (weighted by voting power) are online.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("chain_id")]),e._v(" is a unique identifier for your chain. It helps differentiate between different chains using the same version of the software.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),e._v(" "),o("h2",{attrs:{id:"consensus-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consensus-parameters"}},[e._v("#")]),e._v(" Consensus Parameters")]),e._v(" "),o("p",[e._v("Next, the genesis file defines consensus parameters. Consensus parameters regroup all the parameters that are related to the consensus layer, which is "),o("code",[e._v("Tendermint")]),e._v(" in the case of "),o("code",[e._v("gaia")]),e._v(". Let us look at these parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("block")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_bytes")]),e._v(": Maximum number of bytes per block.")]),e._v(" "),o("li",[o("code",[e._v("max_gas")]),e._v(": Gas limit per block. Each transaction included in the block will consume some gas. The total gas used by transactions included in a block cannot exceed this limit.")])])]),e._v(" "),o("li",[o("code",[e._v("evidence")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_age")]),e._v(": An evidence is a proof that a validator signed two different blocks at the same height (and round). This is an explicitly malicious behaviour that is punished at the state-machine level. The "),o("code",[e._v("max_age")]),e._v(" defines the maximum number of "),o("strong",[e._v("blocks")]),e._v(" after which an evidence is not valid anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("validator")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pub_key_types")]),e._v(": The types of pubkey ("),o("code",[e._v("ed25519")]),e._v(", "),o("code",[e._v("secp256k1")]),e._v(", ...) that are accepted for validators. Currently only "),o("code",[e._v("ed25519")]),e._v(" is accepted.")])])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),e._v(" "),o("h2",{attrs:{id:"application-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#application-state"}},[e._v("#")]),e._v(" Application State")]),e._v(" "),o("p",[e._v("The application state defines the initial state of the state-machine.")]),e._v(" "),o("h3",{attrs:{id:"genesis-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-accounts"}},[e._v("#")]),e._v(" Genesis Accounts")]),e._v(" "),o("p",[e._v("In this section, initial allocation of tokens is defined. It is possible to add accounts manually by directly editing the genesis file, but it is also possible to use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),e._v(" "),o("p",[e._v("This command creates an item in the "),o("code",[e._v("accounts")]),e._v(" list, under the "),o("code",[e._v("app_state")]),e._v(" section.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sequence_number")]),e._v(": This number is used to count the number of transactions sent by this account. It is incremented each time a transaction is included in a block, and used to prevent replay attacks. Initial value is "),o("code",[e._v("0")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("account_number")]),e._v(": Unique identifier for the account. It is generated the first time a transaction including this account is included in a block.")]),e._v(" "),o("li",[o("code",[e._v("original_vesting")]),e._v(": Vesting is natively supported by "),o("code",[e._v("gaia")]),e._v(". You can define an amount of token owned by the account that needs to be vested for a period of time before they can be transferred. Vested tokens can be delegated. Default value is "),o("code",[e._v("null")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("delegated_free")]),e._v(": Amount of delegated tokens that can be transferred after they've been vested. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("delegated_vesting")]),e._v(": Amount of delegated tokens that are still vesting. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("start_time")]),e._v(": Block at which the vesting period starts. "),o("code",[e._v("0")]),e._v(" most of the time in genesis.")]),e._v(" "),o("li",[o("code",[e._v("end_time")]),e._v(": Block at which the vesting period ends. "),o("code",[e._v("0")]),e._v(" if no vesting for this account.")])]),e._v(" "),o("h3",{attrs:{id:"bank"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bank"}},[e._v("#")]),e._v(" Bank")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("bank")]),e._v(" module handles tokens. The only parameter that needs to be defined in this section is whether "),o("code",[e._v("transfers")]),e._v(" are enabled at genesis or not.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),e._v(" "),o("h3",{attrs:{id:"staking"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("staking")]),e._v(" module handles the bulk of the Proof-of-Stake logic of the state-machine. This section should look like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("not_bonded_tokens")]),e._v(": Defines the amount of tokens not bonded (i.e. delegated) in genesis. Generally, it equals the total supply of the staking token ("),o("code",[e._v("uatom")]),e._v(" in this example).")]),e._v(" "),o("li",[o("code",[e._v("bonded_tokens")]),e._v(": Amount of bonded tokens in genesis. Generally "),o("code",[e._v("0")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("unbonding_time")]),e._v(": Time in "),o("strong",[e._v("nanosecond")]),e._v(" it takes for tokens to complete unbonding.")]),e._v(" "),o("li",[o("code",[e._v("max_validators")]),e._v(": Maximum number of active validators.")]),e._v(" "),o("li",[o("code",[e._v("max_entries")]),e._v(": Maximum unbonding delegations and redelegations between a particular pair of delegator / validator.")]),e._v(" "),o("li",[o("code",[e._v("bond_denom")]),e._v(": Denomination of the staking token.")])])]),e._v(" "),o("li",[o("code",[e._v("last_total_power")]),e._v(": Total amount of voting power. Generally "),o("code",[e._v("0")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("last_validator_powers")]),e._v(": Power of each validator in last known state. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("validators")]),e._v(": List of last known validators. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("bonds")]),e._v(": List of last known delegation. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("unbonding_delegations")]),e._v(": List of last known unbonding delegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("redelegations")]),e._v(": List of last known redelegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("exported")]),e._v(": Whether this genesis was generated using the export of a previous state.")])]),e._v(" "),o("h3",{attrs:{id:"mint"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mint"}},[e._v("#")]),e._v(" Mint")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("mint")]),e._v(" module governs the logic of inflating the supply of token. The "),o("code",[e._v("mint")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("minter")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("inflation")]),e._v(": Initial yearly percentage of increase in the total supply of staking token, compounded weekly. A "),o("code",[e._v("0.070000000000000000")]),e._v(" value means the target is "),o("code",[e._v("7%")]),e._v(" yearly inflation, compounded weekly.")]),e._v(" "),o("li",[o("code",[e._v("annual_provisions")]),e._v(": Calculated each block. Initialize at "),o("code",[e._v("0.000000000000000000")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mint_denom")]),e._v(": Denom of the staking token that is inflated.")]),e._v(" "),o("li",[o("code",[e._v("inflation_rate_change")]),e._v(": Max yearly change in inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_max")]),e._v(": Maximum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_min")]),e._v(": Minimum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("goal_bonded")]),e._v(": Percentage of the total supply that is targeted to be bonded. If the percentage of bonded staking tokens is below this target, the inflation increases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_max")]),e._v(". If the percentage of bonded staking tokens is above this target, the inflation decreases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_min")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("blocks_per_year")]),e._v(": Estimation of the amount of blocks per year. Used to compute the block reward coming from inflated staking token (called block provisions).")])])])]),e._v(" "),o("h3",{attrs:{id:"distribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[e._v("#")]),e._v(" Distribution")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("distribution")]),e._v(" module handles the logic of distribution block provisions and fees to validators and delegators. The "),o("code",[e._v("distribution")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("fee_pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("community_pool")]),e._v(": The community pool is a pool of tokens that can be used to pay for bounties. It is allocated via governance proposals. Generally "),o("code",[e._v("null")]),e._v(" in genesis.")])])]),e._v(" "),o("li",[o("code",[e._v("community_tax")]),e._v(": The tax percentage on fees and block rewards that goes to the community pool.")]),e._v(" "),o("li",[o("code",[e._v("base_proposer_reward")]),e._v(": Base bonus on transaction fees collected in a valid block that goes to the proposer of block. If value is "),o("code",[e._v("0.010000000000000000")]),e._v(", 1% of the fees go to the proposer.")]),e._v(" "),o("li",[o("code",[e._v("bonus_proposer_reward")]),e._v(": Max bonus on transaction fees collected in a valid block that goes to the proposer of block. The bonus depends on the number of "),o("code",[e._v("precommits")]),e._v(" the proposer includes. If the proposer includes 2/3rd "),o("code",[e._v("precommits")]),e._v(" weighted by voting power (minimum for the block to be valid), they get a bonus of "),o("code",[e._v("base_proposer_reward")]),e._v(". This bonus increases linearly up to "),o("code",[e._v("bonus_proposer_reward")]),e._v(" if the proposer includes 100% of "),o("code",[e._v("precommits")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("withdraw_addr_enabled")]),e._v(": If "),o("code",[e._v("true")]),e._v(", delegators can set a different address to withdraw their rewards. Set to "),o("code",[e._v("false")]),e._v(" if you want to disable transfers at genesis, as it can be used as a way to get around the restriction.")]),e._v(" "),o("li",[o("code",[e._v("delegator_withdraw_infos")]),e._v(": List of delegators withdraw address. Generally "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("previous_proposer")]),e._v(": Proposer of the previous block. Set to "),o("code",[e._v('""')]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("outstanding_rewards")]),e._v(": Outstanding (un-withdrawn) rewards. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_accumulated_commission")]),e._v(": Outstanding (un-withdrawn) commission of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_historical_rewards")]),e._v(": Set of information related to the historical rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validators_current_rewards")]),e._v(": Set of information related to the current rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("delegator_starting_infos")]),e._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_slash_events")]),e._v(": Set of information related to the past slashing of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gov")]),e._v(" module handles all governance-related transactions. The initial state of the "),o("code",[e._v("gov")]),e._v(" section looks like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("starting_proposal_id")]),e._v(": This parameter defines the ID of the first proposal. Each proposal is identified by a unique ID.")]),e._v(" "),o("li",[o("code",[e._v("deposits")]),e._v(": List of deposits for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("votes")]),e._v(": List of votes for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("proposals")]),e._v(": List of proposals for each proposal ID: Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("deposit_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("min_deposit")]),e._v(": The minimum deposit required for the proposal to enter "),o("code",[e._v("Voting Period")]),e._v(". If multiple denoms are provided, the "),o("code",[e._v("OR")]),e._v(" operator applies.")]),e._v(" "),o("li",[o("code",[e._v("max_deposit_period")]),e._v(": The maximum period (in "),o("strong",[e._v("nanoseconds")]),e._v(") after which it is not possible to deposit on the proposal anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("voting_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("voting_period")]),e._v(": Length of the voting period in "),o("strong",[e._v("nanoseconds")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("tally_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("quorum")]),e._v(": Minimum percentage of bonded staking tokens that needs to vote for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("threshold")]),e._v(": Minimum percentage of votes that need to be "),o("code",[e._v("YES")]),e._v(" for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("veto")]),e._v(": Maximum percentage "),o("code",[e._v("NO_WITH_VETO")]),e._v(" votes for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("governance_penalty")]),e._v(": Penalty for validators that do not vote on a given proposal.")])])])]),e._v(" "),o("h3",{attrs:{id:"slashing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("slashing")]),e._v(" module handles the logic to slash delegators if their validator misbehave. The "),o("code",[e._v("slashing")]),e._v(" section in genesis looks as follows:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_evidence_age")]),e._v(": Maximum age of the evidence in "),o("strong",[e._v("nanoseconds")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("signed_blocks_window")]),e._v(": Moving window of blocks to figure out offline validators.")]),e._v(" "),o("li",[o("code",[e._v("min_signed_per_window")]),e._v(": Minimum percentage of "),o("code",[e._v("precommits")]),e._v("that must be present in the "),o("code",[e._v("block window")]),e._v(" for the validator to be considered online.")]),e._v(" "),o("li",[o("code",[e._v("downtime_jail_duration")]),e._v(": Duration in "),o("strong",[e._v("nanoseconds")]),e._v(" for which a validator is jailed after they get slashed for downtime.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_double_sign")]),e._v(": Percentage of delegators bonded stake slashed when their validator double signs.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_downtime")]),e._v(": Percentage of delegators bonded stake slashed when their validator is down.")])])]),e._v(" "),o("li",[o("code",[e._v("signing_infos")]),e._v(": Various infos per validator needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("missed_blocks")]),e._v(": Various infos related to missed blocks needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"genesis-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-transactions"}},[e._v("#")]),e._v(" Genesis Transactions")]),e._v(" "),o("p",[e._v("By default, the genesis file do not contain any "),o("code",[e._v("gentxs")]),e._v(". A "),o("code",[e._v("gentx")]),e._v(" is a transaction that bonds staking token present in the genesis file under "),o("code",[e._v("accounts")]),e._v(" to a validator, essentially creating a validator at genesis. The chain will start as soon as more than 2/3rds of the validators (weighted by voting power) that are the recipient of a valid "),o("code",[e._v("gentx")]),e._v(" come online after "),o("code",[e._v("genesis_time")]),e._v(".")]),e._v(" "),o("p",[e._v("A "),o("code",[e._v("gentx")]),e._v(" can be added manually to the genesis file, or via the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),e._v(" "),o("p",[e._v("This command will add all the "),o("code",[e._v("gentxs")]),e._v(" stored in "),o("code",[e._v("~/.gaia/config/gentx")]),e._v(" to the genesis file. In order to create a genesis transaction, click "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[e._v("here")]),e._v(".")],1)],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{497:function(e,t,o){"use strict";o.r(t);var s=o(1),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),o("p",[e._v("This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own "),o("code",[e._v("gaia")]),e._v(" testnet.")]),e._v(" "),o("p",[e._v("Note that you can generate a default genesis file for your own testnet by running the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("The genesis file is stored in "),o("code",[e._v("~/.gaia/config/genesis.toml")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"what-is-a-genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-genesis-file"}},[e._v("#")]),e._v(" What is a Genesis File")]),e._v(" "),o("p",[e._v("A genesis file is a JSON file which defines the initial state of your blockchain. It can be seen as height "),o("code",[e._v("0")]),e._v(" of your blockchain. The first block, at height "),o("code",[e._v("1")]),e._v(", will reference the genesis file as its parent.")]),e._v(" "),o("p",[e._v("The state defined in the genesis file contains all the necessary information, like initial token allocation, genesis time, default parameters, and more. Let us break down these information.")]),e._v(" "),o("h2",{attrs:{id:"genesis-time-and-chain-id"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-time-and-chain-id"}},[e._v("#")]),e._v(" Genesis Time and Chain_id")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("genesis_time")]),e._v(" is defined at the top of the genesis file. It is a "),o("code",[e._v("UTC")]),e._v(" timestamps which specifies when the blockchain is due to start. At this time, genesis validators are supposed to come online and start participating in the consensus process. The blockchain starts when more than 2/3rd of the genesis validators (weighted by voting power) are online.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("chain_id")]),e._v(" is a unique identifier for your chain. It helps differentiate between different chains using the same version of the software.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),e._v(" "),o("h2",{attrs:{id:"consensus-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consensus-parameters"}},[e._v("#")]),e._v(" Consensus Parameters")]),e._v(" "),o("p",[e._v("Next, the genesis file defines consensus parameters. Consensus parameters regroup all the parameters that are related to the consensus layer, which is "),o("code",[e._v("Tendermint")]),e._v(" in the case of "),o("code",[e._v("gaia")]),e._v(". Let us look at these parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("block")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_bytes")]),e._v(": Maximum number of bytes per block.")]),e._v(" "),o("li",[o("code",[e._v("max_gas")]),e._v(": Gas limit per block. Each transaction included in the block will consume some gas. The total gas used by transactions included in a block cannot exceed this limit.")])])]),e._v(" "),o("li",[o("code",[e._v("evidence")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_age")]),e._v(": An evidence is a proof that a validator signed two different blocks at the same height (and round). This is an explicitly malicious behaviour that is punished at the state-machine level. The "),o("code",[e._v("max_age")]),e._v(" defines the maximum number of "),o("strong",[e._v("blocks")]),e._v(" after which an evidence is not valid anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("validator")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pub_key_types")]),e._v(": The types of pubkey ("),o("code",[e._v("ed25519")]),e._v(", "),o("code",[e._v("secp256k1")]),e._v(", ...) that are accepted for validators. Currently only "),o("code",[e._v("ed25519")]),e._v(" is accepted.")])])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),e._v(" "),o("h2",{attrs:{id:"application-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#application-state"}},[e._v("#")]),e._v(" Application State")]),e._v(" "),o("p",[e._v("The application state defines the initial state of the state-machine.")]),e._v(" "),o("h3",{attrs:{id:"genesis-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-accounts"}},[e._v("#")]),e._v(" Genesis Accounts")]),e._v(" "),o("p",[e._v("In this section, initial allocation of tokens is defined. It is possible to add accounts manually by directly editing the genesis file, but it is also possible to use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),e._v(" "),o("p",[e._v("This command creates an item in the "),o("code",[e._v("accounts")]),e._v(" list, under the "),o("code",[e._v("app_state")]),e._v(" section.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sequence_number")]),e._v(": This number is used to count the number of transactions sent by this account. It is incremented each time a transaction is included in a block, and used to prevent replay attacks. Initial value is "),o("code",[e._v("0")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("account_number")]),e._v(": Unique identifier for the account. It is generated the first time a transaction including this account is included in a block.")]),e._v(" "),o("li",[o("code",[e._v("original_vesting")]),e._v(": Vesting is natively supported by "),o("code",[e._v("gaia")]),e._v(". You can define an amount of token owned by the account that needs to be vested for a period of time before they can be transferred. Vested tokens can be delegated. Default value is "),o("code",[e._v("null")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("delegated_free")]),e._v(": Amount of delegated tokens that can be transferred after they've been vested. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("delegated_vesting")]),e._v(": Amount of delegated tokens that are still vesting. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("start_time")]),e._v(": Block at which the vesting period starts. "),o("code",[e._v("0")]),e._v(" most of the time in genesis.")]),e._v(" "),o("li",[o("code",[e._v("end_time")]),e._v(": Block at which the vesting period ends. "),o("code",[e._v("0")]),e._v(" if no vesting for this account.")])]),e._v(" "),o("h3",{attrs:{id:"bank"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bank"}},[e._v("#")]),e._v(" Bank")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("bank")]),e._v(" module handles tokens. The only parameter that needs to be defined in this section is whether "),o("code",[e._v("transfers")]),e._v(" are enabled at genesis or not.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),e._v(" "),o("h3",{attrs:{id:"staking"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("staking")]),e._v(" module handles the bulk of the Proof-of-Stake logic of the state-machine. This section should look like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("not_bonded_tokens")]),e._v(": Defines the amount of tokens not bonded (i.e. delegated) in genesis. Generally, it equals the total supply of the staking token ("),o("code",[e._v("uatom")]),e._v(" in this example).")]),e._v(" "),o("li",[o("code",[e._v("bonded_tokens")]),e._v(": Amount of bonded tokens in genesis. Generally "),o("code",[e._v("0")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("unbonding_time")]),e._v(": Time in "),o("strong",[e._v("nanosecond")]),e._v(" it takes for tokens to complete unbonding.")]),e._v(" "),o("li",[o("code",[e._v("max_validators")]),e._v(": Maximum number of active validators.")]),e._v(" "),o("li",[o("code",[e._v("max_entries")]),e._v(": Maximum unbonding delegations and redelegations between a particular pair of delegator / validator.")]),e._v(" "),o("li",[o("code",[e._v("bond_denom")]),e._v(": Denomination of the staking token.")])])]),e._v(" "),o("li",[o("code",[e._v("last_total_power")]),e._v(": Total amount of voting power. Generally "),o("code",[e._v("0")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("last_validator_powers")]),e._v(": Power of each validator in last known state. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("validators")]),e._v(": List of last known validators. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("bonds")]),e._v(": List of last known delegation. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("unbonding_delegations")]),e._v(": List of last known unbonding delegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("redelegations")]),e._v(": List of last known redelegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("exported")]),e._v(": Whether this genesis was generated using the export of a previous state.")])]),e._v(" "),o("h3",{attrs:{id:"mint"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mint"}},[e._v("#")]),e._v(" Mint")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("mint")]),e._v(" module governs the logic of inflating the supply of token. The "),o("code",[e._v("mint")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("minter")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("inflation")]),e._v(": Initial yearly percentage of increase in the total supply of staking token, compounded weekly. A "),o("code",[e._v("0.070000000000000000")]),e._v(" value means the target is "),o("code",[e._v("7%")]),e._v(" yearly inflation, compounded weekly.")]),e._v(" "),o("li",[o("code",[e._v("annual_provisions")]),e._v(": Calculated each block. Initialize at "),o("code",[e._v("0.000000000000000000")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mint_denom")]),e._v(": Denom of the staking token that is inflated.")]),e._v(" "),o("li",[o("code",[e._v("inflation_rate_change")]),e._v(": Max yearly change in inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_max")]),e._v(": Maximum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_min")]),e._v(": Minimum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("goal_bonded")]),e._v(": Percentage of the total supply that is targeted to be bonded. If the percentage of bonded staking tokens is below this target, the inflation increases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_max")]),e._v(". If the percentage of bonded staking tokens is above this target, the inflation decreases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_min")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("blocks_per_year")]),e._v(": Estimation of the amount of blocks per year. Used to compute the block reward coming from inflated staking token (called block provisions).")])])])]),e._v(" "),o("h3",{attrs:{id:"distribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[e._v("#")]),e._v(" Distribution")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("distribution")]),e._v(" module handles the logic of distribution block provisions and fees to validators and delegators. The "),o("code",[e._v("distribution")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("fee_pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("community_pool")]),e._v(": The community pool is a pool of tokens that can be used to pay for bounties. It is allocated via governance proposals. Generally "),o("code",[e._v("null")]),e._v(" in genesis.")])])]),e._v(" "),o("li",[o("code",[e._v("community_tax")]),e._v(": The tax percentage on fees and block rewards that goes to the community pool.")]),e._v(" "),o("li",[o("code",[e._v("base_proposer_reward")]),e._v(": Base bonus on transaction fees collected in a valid block that goes to the proposer of block. If value is "),o("code",[e._v("0.010000000000000000")]),e._v(", 1% of the fees go to the proposer.")]),e._v(" "),o("li",[o("code",[e._v("bonus_proposer_reward")]),e._v(": Max bonus on transaction fees collected in a valid block that goes to the proposer of block. The bonus depends on the number of "),o("code",[e._v("precommits")]),e._v(" the proposer includes. If the proposer includes 2/3rd "),o("code",[e._v("precommits")]),e._v(" weighted by voting power (minimum for the block to be valid), they get a bonus of "),o("code",[e._v("base_proposer_reward")]),e._v(". This bonus increases linearly up to "),o("code",[e._v("bonus_proposer_reward")]),e._v(" if the proposer includes 100% of "),o("code",[e._v("precommits")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("withdraw_addr_enabled")]),e._v(": If "),o("code",[e._v("true")]),e._v(", delegators can set a different address to withdraw their rewards. Set to "),o("code",[e._v("false")]),e._v(" if you want to disable transfers at genesis, as it can be used as a way to get around the restriction.")]),e._v(" "),o("li",[o("code",[e._v("delegator_withdraw_infos")]),e._v(": List of delegators withdraw address. Generally "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("previous_proposer")]),e._v(": Proposer of the previous block. Set to "),o("code",[e._v('""')]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("outstanding_rewards")]),e._v(": Outstanding (un-withdrawn) rewards. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_accumulated_commission")]),e._v(": Outstanding (un-withdrawn) commission of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_historical_rewards")]),e._v(": Set of information related to the historical rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validators_current_rewards")]),e._v(": Set of information related to the current rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("delegator_starting_infos")]),e._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_slash_events")]),e._v(": Set of information related to the past slashing of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gov")]),e._v(" module handles all governance-related transactions. The initial state of the "),o("code",[e._v("gov")]),e._v(" section looks like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("starting_proposal_id")]),e._v(": This parameter defines the ID of the first proposal. Each proposal is identified by a unique ID.")]),e._v(" "),o("li",[o("code",[e._v("deposits")]),e._v(": List of deposits for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("votes")]),e._v(": List of votes for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("proposals")]),e._v(": List of proposals for each proposal ID: Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("deposit_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("min_deposit")]),e._v(": The minimum deposit required for the proposal to enter "),o("code",[e._v("Voting Period")]),e._v(". If multiple denoms are provided, the "),o("code",[e._v("OR")]),e._v(" operator applies.")]),e._v(" "),o("li",[o("code",[e._v("max_deposit_period")]),e._v(": The maximum period (in "),o("strong",[e._v("nanoseconds")]),e._v(") after which it is not possible to deposit on the proposal anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("voting_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("voting_period")]),e._v(": Length of the voting period in "),o("strong",[e._v("nanoseconds")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("tally_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("quorum")]),e._v(": Minimum percentage of bonded staking tokens that needs to vote for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("threshold")]),e._v(": Minimum percentage of votes that need to be "),o("code",[e._v("YES")]),e._v(" for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("veto")]),e._v(": Maximum percentage "),o("code",[e._v("NO_WITH_VETO")]),e._v(" votes for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("governance_penalty")]),e._v(": Penalty for validators that do not vote on a given proposal.")])])])]),e._v(" "),o("h3",{attrs:{id:"slashing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("slashing")]),e._v(" module handles the logic to slash delegators if their validator misbehave. The "),o("code",[e._v("slashing")]),e._v(" section in genesis looks as follows:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_evidence_age")]),e._v(": Maximum age of the evidence in "),o("strong",[e._v("nanoseconds")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("signed_blocks_window")]),e._v(": Moving window of blocks to figure out offline validators.")]),e._v(" "),o("li",[o("code",[e._v("min_signed_per_window")]),e._v(": Minimum percentage of "),o("code",[e._v("precommits")]),e._v("that must be present in the "),o("code",[e._v("block window")]),e._v(" for the validator to be considered online.")]),e._v(" "),o("li",[o("code",[e._v("downtime_jail_duration")]),e._v(": Duration in "),o("strong",[e._v("nanoseconds")]),e._v(" for which a validator is jailed after they get slashed for downtime.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_double_sign")]),e._v(": Percentage of delegators bonded stake slashed when their validator double signs.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_downtime")]),e._v(": Percentage of delegators bonded stake slashed when their validator is down.")])])]),e._v(" "),o("li",[o("code",[e._v("signing_infos")]),e._v(": Various infos per validator needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("missed_blocks")]),e._v(": Various infos related to missed blocks needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"genesis-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-transactions"}},[e._v("#")]),e._v(" Genesis Transactions")]),e._v(" "),o("p",[e._v("By default, the genesis file do not contain any "),o("code",[e._v("gentxs")]),e._v(". A "),o("code",[e._v("gentx")]),e._v(" is a transaction that bonds staking token present in the genesis file under "),o("code",[e._v("accounts")]),e._v(" to a validator, essentially creating a validator at genesis. The chain will start as soon as more than 2/3rds of the validators (weighted by voting power) that are the recipient of a valid "),o("code",[e._v("gentx")]),e._v(" come online after "),o("code",[e._v("genesis_time")]),e._v(".")]),e._v(" "),o("p",[e._v("A "),o("code",[e._v("gentx")]),e._v(" can be added manually to the genesis file, or via the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),e._v(" "),o("p",[e._v("This command will add all the "),o("code",[e._v("gentxs")]),e._v(" stored in "),o("code",[e._v("~/.gaia/config/gentx")]),e._v(" to the genesis file. In order to create a genesis transaction, click "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[e._v("here")]),e._v(".")],1)],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/165.b97dc464.js b/main/assets/js/166.549b0367.js similarity index 99% rename from main/assets/js/165.b97dc464.js rename to main/assets/js/166.549b0367.js index 45b38fa4844..f3097180403 100644 --- a/main/assets/js/165.b97dc464.js +++ b/main/assets/js/166.549b0367.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{613:function(g,I,A){"use strict";A.r(I);var C=A(1),e=Object(C.a)({},(function(){var g=this,I=g.$createElement,A=g._self._c||I;return A("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[A("h1",{attrs:{id:"hd-wallets"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#hd-wallets"}},[g._v("#")]),g._v(" HD Wallets")]),g._v(" "),A("p",[g._v("Accounts in Cosmos are Hierarchical Deterministic (HD) Wallets. Originally specified in Bitcoin's "),A("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),A("OutboundLink")],1),g._v(", HD wallets are a special kind of wallet that let users derive any number of accounts from a single seed. To understand what that means, let us first define some terminology:")]),g._v(" "),A("ul",[A("li",[A("strong",[g._v("Wallet")]),g._v(": Set of accounts obtained from a given seed.")]),g._v(" "),A("li",[A("strong",[g._v("Account")]),g._v(": A pair of public key/private key.")]),g._v(" "),A("li",[A("strong",[g._v("Private Key")]),g._v(": A private key is a secret piece of information used to sign messages. In the blockchain context, a private key identifies the owner of an account. The private key of a user should never be revealed to others.")]),g._v(" "),A("li",[A("strong",[g._v("Public Key")]),g._v(": A public key is a piece of information obtained by applying a one-way mathematical function on a private key. From it, an address can be derived. A private key cannot be found from a public key.")]),g._v(" "),A("li",[A("strong",[g._v("Address")]),g._v(": An address is a public string with a human-readable prefix that identifies an account. It is obtained by applying mathematical transformations to a public key.")]),g._v(" "),A("li",[A("strong",[g._v("Digital Signature")]),g._v(": A digital signature is a piece of cryptographic information that proves the owner of a given private key approved of a given message without revealing the private key.")]),g._v(" "),A("li",[A("strong",[g._v("Seed")]),g._v(": Same as Mnemonic.")]),g._v(" "),A("li",[A("strong",[g._v("Mnemonic")]),g._v(": A mnemonic is a sequence of words that is used as seed to derive private keys. The mnemonic is at the core of each wallet. NEVER LOSE YOUR MNEMONIC. WRITE IT DOWN ON A PIECE OF PAPER AND STORE IT SOMEWHERE SAFE. IF YOU LOSE IT, THERE IS NO WAY TO RETRIEVE IT. IF SOMEONE GAINS ACCESS TO IT, THEY GAIN ACCESS TO ALL THE ASSOCIATED ACCOUNTS.")])]),g._v(" "),A("p",[g._v("At the core of a HD wallet, there is a seed. From this seed, users can deterministically generate accounts. To generate an account from a seed, one-way mathematical transformations are applied. To decide which account to generate, the user specifies a "),A("code",[g._v("path")]),g._v(", generally an "),A("code",[g._v("integer")]),g._v(" ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...).")]),g._v(" "),A("p",[g._v("By specifying "),A("code",[g._v("path")]),g._v(" to be "),A("code",[g._v("0")]),g._v(" for example, the Wallet will generate "),A("code",[g._v("Private Key 0")]),g._v(" from the seed. Then, "),A("code",[g._v("Public Key 0")]),g._v(" can be generated from "),A("code",[g._v("Private Key 0")]),g._v(". Finally, "),A("code",[g._v("Address 0")]),g._v(" can be generated from "),A("code",[g._v("Public Key 0")]),g._v(". All these steps are one way only, meaning the "),A("code",[g._v("Public Key")]),g._v(" cannot be found from the "),A("code",[g._v("Address")]),g._v(", the "),A("code",[g._v("Private Key")]),g._v(" cannot be found from the "),A("code",[g._v("Public Key")]),g._v(", ...")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),A("p",[g._v("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.")]),g._v(" "),A("p",[g._v("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.")]),g._v(" "),A("div",{staticClass:"custom-block danger"},[A("p",[A("strong",[g._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])])])],1)}),[],!1,null,null,null);I.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{561:function(g,I,A){"use strict";A.r(I);var C=A(1),e=Object(C.a)({},(function(){var g=this,I=g.$createElement,A=g._self._c||I;return A("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[A("h1",{attrs:{id:"hd-wallets"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#hd-wallets"}},[g._v("#")]),g._v(" HD Wallets")]),g._v(" "),A("p",[g._v("Accounts in Cosmos are Hierarchical Deterministic (HD) Wallets. Originally specified in Bitcoin's "),A("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),A("OutboundLink")],1),g._v(", HD wallets are a special kind of wallet that let users derive any number of accounts from a single seed. To understand what that means, let us first define some terminology:")]),g._v(" "),A("ul",[A("li",[A("strong",[g._v("Wallet")]),g._v(": Set of accounts obtained from a given seed.")]),g._v(" "),A("li",[A("strong",[g._v("Account")]),g._v(": A pair of public key/private key.")]),g._v(" "),A("li",[A("strong",[g._v("Private Key")]),g._v(": A private key is a secret piece of information used to sign messages. In the blockchain context, a private key identifies the owner of an account. The private key of a user should never be revealed to others.")]),g._v(" "),A("li",[A("strong",[g._v("Public Key")]),g._v(": A public key is a piece of information obtained by applying a one-way mathematical function on a private key. From it, an address can be derived. A private key cannot be found from a public key.")]),g._v(" "),A("li",[A("strong",[g._v("Address")]),g._v(": An address is a public string with a human-readable prefix that identifies an account. It is obtained by applying mathematical transformations to a public key.")]),g._v(" "),A("li",[A("strong",[g._v("Digital Signature")]),g._v(": A digital signature is a piece of cryptographic information that proves the owner of a given private key approved of a given message without revealing the private key.")]),g._v(" "),A("li",[A("strong",[g._v("Seed")]),g._v(": Same as Mnemonic.")]),g._v(" "),A("li",[A("strong",[g._v("Mnemonic")]),g._v(": A mnemonic is a sequence of words that is used as seed to derive private keys. The mnemonic is at the core of each wallet. NEVER LOSE YOUR MNEMONIC. WRITE IT DOWN ON A PIECE OF PAPER AND STORE IT SOMEWHERE SAFE. IF YOU LOSE IT, THERE IS NO WAY TO RETRIEVE IT. IF SOMEONE GAINS ACCESS TO IT, THEY GAIN ACCESS TO ALL THE ASSOCIATED ACCOUNTS.")])]),g._v(" "),A("p",[g._v("At the core of a HD wallet, there is a seed. From this seed, users can deterministically generate accounts. To generate an account from a seed, one-way mathematical transformations are applied. To decide which account to generate, the user specifies a "),A("code",[g._v("path")]),g._v(", generally an "),A("code",[g._v("integer")]),g._v(" ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...).")]),g._v(" "),A("p",[g._v("By specifying "),A("code",[g._v("path")]),g._v(" to be "),A("code",[g._v("0")]),g._v(" for example, the Wallet will generate "),A("code",[g._v("Private Key 0")]),g._v(" from the seed. Then, "),A("code",[g._v("Public Key 0")]),g._v(" can be generated from "),A("code",[g._v("Private Key 0")]),g._v(". Finally, "),A("code",[g._v("Address 0")]),g._v(" can be generated from "),A("code",[g._v("Public Key 0")]),g._v(". All these steps are one way only, meaning the "),A("code",[g._v("Public Key")]),g._v(" cannot be found from the "),A("code",[g._v("Address")]),g._v(", the "),A("code",[g._v("Private Key")]),g._v(" cannot be found from the "),A("code",[g._v("Public Key")]),g._v(", ...")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),A("p",[g._v("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.")]),g._v(" "),A("p",[g._v("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.")]),g._v(" "),A("div",{staticClass:"custom-block danger"},[A("p",[A("strong",[g._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])])])],1)}),[],!1,null,null,null);I.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/166.69693f84.js b/main/assets/js/167.855950cd.js similarity index 98% rename from main/assets/js/166.69693f84.js rename to main/assets/js/167.855950cd.js index 8da62aa38f3..518777d772f 100644 --- a/main/assets/js/166.69693f84.js +++ b/main/assets/js/167.855950cd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{615: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],{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 diff --git a/main/assets/js/167.5ff076b6.js b/main/assets/js/168.a27818a8.js similarity index 99% rename from main/assets/js/167.5ff076b6.js rename to main/assets/js/168.a27818a8.js index ff9d2e75446..34bb92f610f 100644 --- a/main/assets/js/167.5ff076b6.js +++ b/main/assets/js/168.a27818a8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{504:function(a,e,t){"use strict";t.r(e);var o=t(1),s=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#service-providers"}},[a._v("#")]),a._v(" Service Providers")]),a._v(" "),t("p",[a._v("'Service Providers' are defined as entities that provide services for end-users that involve some form of interaction with the Cosmos Hub. More specifically, this document is focused on interactions with tokens.")]),a._v(" "),t("p",[a._v("Service Providers are expected to act as trusted points of contact to the blockchain for their end-users. This Service Providers section does not apply to wallet builders that want to provide Light Client functionalities.")]),a._v(" "),t("p",[a._v("This document describes:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#connection-options"}},[a._v("Connection Options")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#running-a-full-node"}},[a._v("Running a Full Node")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#what-is-a-full-node"}},[a._v("What is a Full Node?")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#installation-and-configuration"}},[a._v("Installation and Configuration")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#command-line-interface"}},[a._v("Command-Line Interface")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#available-commands"}},[a._v("Available Commands")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#remote-access-to-gaiad"}},[a._v("Remote Access to gaiad")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#create-a-key-pair"}},[a._v("Create a Key pair")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-account"}},[a._v("Check your Account")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-balance"}},[a._v("Check your Balance")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#send-coins-using-the-cli"}},[a._v("Send coins using the CLI")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#rest-api"}},[a._v("REST API")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#listen-for-incoming-transaction"}},[a._v("Listen for incoming transactions")])])])])]),a._v(" "),t("h2",{attrs:{id:"connection-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connection-options"}},[a._v("#")]),a._v(" Connection Options")]),a._v(" "),t("p",[a._v("There are four main technologies to consider to connect to the Cosmos Hub:")]),a._v(" "),t("ul",[t("li",[a._v("Full Nodes: Interact with the blockchain.")]),a._v(" "),t("li",[a._v("REST Server: Serves for HTTP calls.")]),a._v(" "),t("li",[a._v("REST API: Use available endpoints for the REST Server.")]),a._v(" "),t("li",[a._v("GRPC: Connect to the Cosmos Hub using gRPC.")])]),a._v(" "),t("h2",{attrs:{id:"running-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node"}},[a._v("#")]),a._v(" Running a Full Node")]),a._v(" "),t("h3",{attrs:{id:"what-is-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[a._v("#")]),a._v(" What is a Full Node?")]),a._v(" "),t("p",[a._v("A Full Node is a network node that syncs up with the state of the blockchain. It provides blockchain data to others by using RESTful APIs, a replica of the database by exposing data with interfaces. A Full Node keeps in syncs with the rest of the blockchain nodes and stores the state on disk. If the full node does not have the queried block on disk the full node can go find the blockchain where the queried data lives.")]),a._v(" "),t("h3",{attrs:{id:"installation-and-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-and-configuration"}},[a._v("#")]),a._v(" Installation and Configuration")]),a._v(" "),t("p",[a._v("This section describes the steps to run and interact with a full node for the Cosmos Hub.")]),a._v(" "),t("p",[a._v("First, you need to "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[a._v("install the software")]),a._v(".")],1),a._v(" "),t("p",[a._v("Consider running your own "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[a._v("Cosmos Hub Full Node")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"command-line-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interface"}},[a._v("#")]),a._v(" Command-Line Interface")]),a._v(" "),t("p",[a._v("The command-line interface (CLI) is the most powerful tool to access the Cosmos Hub and use gaia.\nTo use the CLI, you must install the latest version of "),t("code",[a._v("gaia")]),a._v(" on your machine.")]),a._v(" "),t("p",[a._v("Compare your version with the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("latest release version"),t("OutboundLink")],1)]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("h3",{attrs:{id:"available-commands"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-commands"}},[a._v("#")]),a._v(" Available Commands")]),a._v(" "),t("p",[a._v("All available CLI commands are shown when you run the "),t("code",[a._v("gaiad")]),a._v(" command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQK"}}),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"U3RhcmdhdGUgQ29zbW9zIEh1YiBBcHAKClVzYWdlOgogIGdhaWFkIFtjb21tYW5kXQoKQXZhaWxhYmxlIENvbW1hbmRzOgoKCiAgYWRkLWdlbmVzaXMtYWNjb3VudCBBZGQgYSBnZW5lc2lzIGFjY291bnQgdG8gZ2VuZXNpcy5qc29uCiAgY29sbGVjdC1nZW50eHMgICAgICBDb2xsZWN0IGdlbmVzaXMgdHhzIGFuZCBvdXRwdXQgYSBnZW5lc2lzLmpzb24gZmlsZQogIGRlYnVnICAgICAgICAgICAgICAgVG9vbCBmb3IgaGVscGluZyB3aXRoIGRlYnVnZ2luZyB5b3VyIGFwcGxpY2F0aW9uCiAgZXhwb3J0ICAgICAgICAgICAgICBFeHBvcnQgc3RhdGUgdG8gSlNPTgogIGdlbnR4ICAgICAgICAgICAgICAgR2VuZXJhdGUgYSBnZW5lc2lzIHR4IGNhcnJ5aW5nIGEgc2VsZiBkZWxlZ2F0aW9uCiAgaGVscCAgICAgICAgICAgICAgICBIZWxwIGFib3V0IGFueSBjb21tYW5kCiAgaW5pdCAgICAgICAgICAgICAgICBJbml0aWFsaXplIHByaXZhdGUgdmFsaWRhdG9yLCBwMnAsIGdlbmVzaXMsIGFuZCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZpbGVzCiAga2V5cyAgICAgICAgICAgICAgICBNYW5hZ2UgeW91ciBhcHBsaWNhdGlvbidzIGtleXMKICBtaWdyYXRlICAgICAgICAgICAgIE1pZ3JhdGUgZ2VuZXNpcyB0byBhIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbgogIHF1ZXJ5ICAgICAgICAgICAgICAgUXVlcnlpbmcgc3ViY29tbWFuZHMKICBzdGFydCAgICAgICAgICAgICAgIFJ1biB0aGUgZnVsbCBub2RlCiAgc3RhdHVzICAgICAgICAgICAgICBRdWVyeSByZW1vdGUgbm9kZSBmb3Igc3RhdHVzCiAgdGVuZGVybWludCAgICAgICAgICBUZW5kZXJtaW50IHN1YmNvbW1hbmRzCiAgdGVzdG5ldCAgICAgICAgICAgICBJbml0aWFsaXplIGZpbGVzIGZvciBhIHNpbWFwcCB0ZXN0bmV0CiAgdHggICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbnMgc3ViY29tbWFuZHMKICB1bnNhZmUtcmVzZXQtYWxsICAgIFJlc2V0cyB0aGUgYmxvY2tjaGFpbiBkYXRhYmFzZSwgcmVtb3ZlcyBhZGRyZXNzIGJvb2sgZmlsZXMsIGFuZCByZXNldHMgZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHRvIHRoZSBnZW5lc2lzIHN0YXRlCiAgdmFsaWRhdGUtZ2VuZXNpcyAgICB2YWxpZGF0ZXMgdGhlIGdlbmVzaXMgZmlsZSBhdCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvciBhdCB0aGUgbG9jYXRpb24gcGFzc2VkIGFzIGFuIGFyZwogIHZlcnNpb24gICAgICAgICAgICAgUHJpbnQgdGhlIGFwcGxpY2F0aW9uIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uCgpGbGFnczoKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgIGhlbHAgZm9yIGdhaWFkCiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("p",[a._v("For each displayed command, you can use the "),t("code",[a._v("--help")]),a._v(" flag to get further information.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwClVzYWdlOgogIGdhaWFkIHF1ZXJ5IFtmbGFnc10KICBnYWlhZCBxdWVyeSBbY29tbWFuZF0KCkFsaWFzZXM6CiAgcXVlcnksIHEKCkF2YWlsYWJsZSBDb21tYW5kczoKICBhY2NvdW50ICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGFjY291bnQgYnkgYWRkcmVzcwogIGF1dGggICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGF1dGggbW9kdWxlCiAgYmFuayAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgYmFuayBtb2R1bGUKICBibG9jayAgICAgICAgICAgICAgICAgICAgR2V0IHZlcmlmaWVkIGRhdGEgZm9yIGEgdGhlIGJsb2NrIGF0IGdpdmVuIGhlaWdodAogIGRpc3RyaWJ1dGlvbiAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBtb2R1bGUKICBldmlkZW5jZSAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGV2aWRlbmNlIGJ5IGhhc2ggb3IgZm9yIGFsbCAocGFnaW5hdGVkKSBzdWJtaXR0ZWQgZXZpZGVuY2UKICBnb3YgICAgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBnb3Zlcm5hbmNlIG1vZHVsZQogIGliYyAgICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIElCQyBtb2R1bGUKICBpYmMtdHJhbnNmZXIgICAgICAgICAgICAgSUJDIGZ1bmdpYmxlIHRva2VuIHRyYW5zZmVyIHF1ZXJ5IHN1YmNvbW1hbmRzCiAgbWludCAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgbWludGluZyBtb2R1bGUKICBwYXJhbXMgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBwYXJhbXMgbW9kdWxlCiAgc2xhc2hpbmcgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc2xhc2hpbmcgbW9kdWxlCiAgc3Rha2luZyAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc3Rha2luZyBtb2R1bGUKICB0ZW5kZXJtaW50LXZhbGlkYXRvci1zZXQgR2V0IHRoZSBmdWxsIHRlbmRlcm1pbnQgdmFsaWRhdG9yIHNldCBhdCBnaXZlbiBoZWlnaHQKICB0eCAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGEgdHJhbnNhY3Rpb24gYnkgaGFzaCBpbiBhIGNvbW1pdHRlZCBibG9jawogIHR4cyAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBmb3IgcGFnaW5hdGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1hdGNoIGEgc2V0IG9mIGV2ZW50cwogIHVwZ3JhZGUgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIHVwZ3JhZGUgbW9kdWxlCgpGbGFnczoKICAgICAgLS1jaGFpbi1pZCBzdHJpbmcgICBUaGUgbmV0d29yayBjaGFpbiBJRAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGhlbHAgZm9yIHF1ZXJ5CgpHbG9iYWwgRmxhZ3M6CiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBxdWVyeSBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("h3",{attrs:{id:"remote-access-to-gaiad"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-access-to-gaiad"}},[a._v("#")]),a._v(" Remote Access to gaiad")]),a._v(" "),t("p",[a._v("When choosing to remote access a Full Node and gaiad, you need a Full Node running and gaia installed on your local machine.")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not.")]),a._v(" "),t("p",[a._v("To set up "),t("code",[a._v("gaiad")]),a._v(" on a local machine and connect to an existing full node, use the following command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("First, set up the address of the full node you want to connect to:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),a._v(" "),t("p",[a._v("If you run your own full node locally, use "),t("code",[a._v("tcp://localhost:26657")]),a._v(" as the address.")]),a._v(" "),t("p",[a._v("Finally, set the "),t("code",[a._v("chain-id")]),a._v(" of the blockchain you want to interact with:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi00Cg=="}}),a._v(" "),t("p",[a._v("Next, learn to use CLI commands to interact with the full node.\nYou can run these commands as remote control or when you are running it on your local machine.")]),a._v(" "),t("h3",{attrs:{id:"create-a-key-pair"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-key-pair"}},[a._v("#")]),a._v(" Create a Key Pair")]),a._v(" "),t("p",[a._v("The default key is "),t("code",[a._v("secp256k1 elliptic curve")]),a._v(". Use the "),t("code",[a._v("gaiad keys")]),a._v(" command to list the keys and generate a new key.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("You will be asked to create a password (at least 8 characters) for this key-pair. This will return the information listed below:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("NAME")]),a._v(": Name of your key")]),a._v(" "),t("li",[t("code",[a._v("TYPE")]),a._v(": Type of your key, always "),t("code",[a._v("local")]),a._v(".")]),a._v(" "),t("li",[t("code",[a._v("ADDRESS")]),a._v(": Your address. Used to receive funds.")]),a._v(" "),t("li",[t("code",[a._v("PUBKEY")]),a._v(": Your public key. Useful for validators.")]),a._v(" "),t("li",[t("code",[a._v("MNEMONIC")]),a._v(": 24-word phrase. "),t("strong",[a._v("Save this mnemonic somewhere safe")]),a._v(". This phrase is required to recover your private key in case you forget the password. The mnemonic is displayed at the end of the output.")])]),a._v(" "),t("p",[a._v("You can see all available keys by typing:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("Use the "),t("code",[a._v("--recover")]),a._v(" flag to add a key that imports a mnemonic to your keyring.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7IC0tcmVjb3Zlcgo="}}),a._v(" "),t("h4",{attrs:{id:"check-your-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-account"}},[a._v("#")]),a._v(" Check your Account")]),a._v(" "),t("p",[a._v("You can view your account by using the "),t("code",[a._v("query account")]),a._v(" command.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("It will display your account type, account number, public key and current account sequence.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"J0B0eXBlJzogL2Nvc21vcy5hdXRoLnYxYmV0YTEuQmFzZUFjY291bnQKYWNjb3VudF9udW1iZXI6ICZxdW90O3h4eHgmcXVvdDsKYWRkcmVzczogY29zbW9zeHh4eApwdWJfa2V5OgogICdAdHlwZSc6IC9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkKICBrZXk6IHh4eApzZXF1ZW5jZTogJnF1b3Q7eCZxdW90Owo="}}),a._v(" "),t("h3",{attrs:{id:"check-your-balance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-balance"}},[a._v("#")]),a._v(" Check your Balance")]),a._v(" "),t("p",[a._v("Query the account balance with the command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYmFuayBiYWxhbmNlcyAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("The response contains keys "),t("code",[a._v("balances")]),a._v(" and "),t("code",[a._v("pagination")]),a._v(".\nEach "),t("code",[a._v("balances")]),a._v(" entry contains an "),t("code",[a._v("amount")]),a._v(" held, connected to a "),t("code",[a._v("denom")]),a._v(" identifier.\nThe typical $ATOM token is identified by the denom "),t("code",[a._v("uatom")]),a._v(". Where 1 "),t("code",[a._v("uatom")]),a._v(" is 0.000001 ATOM.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6Ci0gYW1vdW50OiAmcXVvdDsxMjM0NTY3OCZxdW90OwogIGRlbm9tOiB1YXRvbQpwYWdpbmF0aW9uOgogIG5leHRfa2V5OiBudWxsCiAgdG90YWw6ICZxdW90OzAmcXVvdDsK"}}),a._v(" "),t("p",[a._v("When you query an account that has not received any token yet, the "),t("code",[a._v("balances")]),a._v(" entry is shown as an empty array.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6IFtdCnBhZ2luYXRpb246CiAgbmV4dF9rZXk6IG51bGwKICB0b3RhbDogJnF1b3Q7MCZxdW90Owo="}}),a._v(" "),t("h4",{attrs:{id:"send-coins-using-the-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-coins-using-the-cli"}},[a._v("#")]),a._v(" Send Coins Using the CLI")]),a._v(" "),t("p",[a._v("To send coins using the CLI:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),t("p",[a._v("Parameters:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("")]),a._v(": Key name or address of sending account.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": Address of the recipient.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": This parameter accepts the format "),t("code",[a._v("")]),a._v(", such as "),t("code",[a._v("1000000uatom")]),a._v(".")])]),a._v(" "),t("p",[a._v("Flags:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("--chain-id")]),a._v(": This flag allows you to specify the id of the chain. There are different ids for different testnet chains and mainnet chains.")]),a._v(" "),t("li",[t("code",[a._v("--gas-prices")]),a._v(": This flag allows you to specify the gas prices you pay for the transaction. The format is used as "),t("code",[a._v("0.0025uatom")])])]),a._v(" "),t("h2",{attrs:{id:"rest-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[a._v("#")]),a._v(" REST API")]),a._v(" "),t("p",[a._v("The "),t("a",{attrs:{href:"https://v1.cosmos.network/rpc/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST API documents"),t("OutboundLink")],1),a._v(" list all the available endpoints that you can use to interact\nwith your full node. Learn "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#enable-the-rest-api"}},[a._v("how to enable the REST API")]),a._v(" on your full node.")],1),a._v(" "),t("h3",{attrs:{id:"listen-for-incoming-transactions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listen-for-incoming-transactions"}},[a._v("#")]),a._v(" Listen for Incoming Transactions")]),a._v(" "),t("p",[a._v("The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:")]),a._v(" "),t("p",[t("a",{attrs:{href:"https://cosmos.network/rpc/",target:"_blank",rel:"noopener noreferrer"}},[t("code",[a._v("/cosmos/bank/v1beta1/balances/{address}")]),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{505:function(a,e,t){"use strict";t.r(e);var o=t(1),s=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#service-providers"}},[a._v("#")]),a._v(" Service Providers")]),a._v(" "),t("p",[a._v("'Service Providers' are defined as entities that provide services for end-users that involve some form of interaction with the Cosmos Hub. More specifically, this document is focused on interactions with tokens.")]),a._v(" "),t("p",[a._v("Service Providers are expected to act as trusted points of contact to the blockchain for their end-users. This Service Providers section does not apply to wallet builders that want to provide Light Client functionalities.")]),a._v(" "),t("p",[a._v("This document describes:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#connection-options"}},[a._v("Connection Options")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#running-a-full-node"}},[a._v("Running a Full Node")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#what-is-a-full-node"}},[a._v("What is a Full Node?")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#installation-and-configuration"}},[a._v("Installation and Configuration")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#command-line-interface"}},[a._v("Command-Line Interface")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#available-commands"}},[a._v("Available Commands")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#remote-access-to-gaiad"}},[a._v("Remote Access to gaiad")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#create-a-key-pair"}},[a._v("Create a Key pair")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-account"}},[a._v("Check your Account")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-balance"}},[a._v("Check your Balance")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#send-coins-using-the-cli"}},[a._v("Send coins using the CLI")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#rest-api"}},[a._v("REST API")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#listen-for-incoming-transaction"}},[a._v("Listen for incoming transactions")])])])])]),a._v(" "),t("h2",{attrs:{id:"connection-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connection-options"}},[a._v("#")]),a._v(" Connection Options")]),a._v(" "),t("p",[a._v("There are four main technologies to consider to connect to the Cosmos Hub:")]),a._v(" "),t("ul",[t("li",[a._v("Full Nodes: Interact with the blockchain.")]),a._v(" "),t("li",[a._v("REST Server: Serves for HTTP calls.")]),a._v(" "),t("li",[a._v("REST API: Use available endpoints for the REST Server.")]),a._v(" "),t("li",[a._v("GRPC: Connect to the Cosmos Hub using gRPC.")])]),a._v(" "),t("h2",{attrs:{id:"running-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node"}},[a._v("#")]),a._v(" Running a Full Node")]),a._v(" "),t("h3",{attrs:{id:"what-is-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[a._v("#")]),a._v(" What is a Full Node?")]),a._v(" "),t("p",[a._v("A Full Node is a network node that syncs up with the state of the blockchain. It provides blockchain data to others by using RESTful APIs, a replica of the database by exposing data with interfaces. A Full Node keeps in syncs with the rest of the blockchain nodes and stores the state on disk. If the full node does not have the queried block on disk the full node can go find the blockchain where the queried data lives.")]),a._v(" "),t("h3",{attrs:{id:"installation-and-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-and-configuration"}},[a._v("#")]),a._v(" Installation and Configuration")]),a._v(" "),t("p",[a._v("This section describes the steps to run and interact with a full node for the Cosmos Hub.")]),a._v(" "),t("p",[a._v("First, you need to "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[a._v("install the software")]),a._v(".")],1),a._v(" "),t("p",[a._v("Consider running your own "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[a._v("Cosmos Hub Full Node")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"command-line-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interface"}},[a._v("#")]),a._v(" Command-Line Interface")]),a._v(" "),t("p",[a._v("The command-line interface (CLI) is the most powerful tool to access the Cosmos Hub and use gaia.\nTo use the CLI, you must install the latest version of "),t("code",[a._v("gaia")]),a._v(" on your machine.")]),a._v(" "),t("p",[a._v("Compare your version with the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("latest release version"),t("OutboundLink")],1)]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("h3",{attrs:{id:"available-commands"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-commands"}},[a._v("#")]),a._v(" Available Commands")]),a._v(" "),t("p",[a._v("All available CLI commands are shown when you run the "),t("code",[a._v("gaiad")]),a._v(" command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQK"}}),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"U3RhcmdhdGUgQ29zbW9zIEh1YiBBcHAKClVzYWdlOgogIGdhaWFkIFtjb21tYW5kXQoKQXZhaWxhYmxlIENvbW1hbmRzOgoKCiAgYWRkLWdlbmVzaXMtYWNjb3VudCBBZGQgYSBnZW5lc2lzIGFjY291bnQgdG8gZ2VuZXNpcy5qc29uCiAgY29sbGVjdC1nZW50eHMgICAgICBDb2xsZWN0IGdlbmVzaXMgdHhzIGFuZCBvdXRwdXQgYSBnZW5lc2lzLmpzb24gZmlsZQogIGRlYnVnICAgICAgICAgICAgICAgVG9vbCBmb3IgaGVscGluZyB3aXRoIGRlYnVnZ2luZyB5b3VyIGFwcGxpY2F0aW9uCiAgZXhwb3J0ICAgICAgICAgICAgICBFeHBvcnQgc3RhdGUgdG8gSlNPTgogIGdlbnR4ICAgICAgICAgICAgICAgR2VuZXJhdGUgYSBnZW5lc2lzIHR4IGNhcnJ5aW5nIGEgc2VsZiBkZWxlZ2F0aW9uCiAgaGVscCAgICAgICAgICAgICAgICBIZWxwIGFib3V0IGFueSBjb21tYW5kCiAgaW5pdCAgICAgICAgICAgICAgICBJbml0aWFsaXplIHByaXZhdGUgdmFsaWRhdG9yLCBwMnAsIGdlbmVzaXMsIGFuZCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZpbGVzCiAga2V5cyAgICAgICAgICAgICAgICBNYW5hZ2UgeW91ciBhcHBsaWNhdGlvbidzIGtleXMKICBtaWdyYXRlICAgICAgICAgICAgIE1pZ3JhdGUgZ2VuZXNpcyB0byBhIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbgogIHF1ZXJ5ICAgICAgICAgICAgICAgUXVlcnlpbmcgc3ViY29tbWFuZHMKICBzdGFydCAgICAgICAgICAgICAgIFJ1biB0aGUgZnVsbCBub2RlCiAgc3RhdHVzICAgICAgICAgICAgICBRdWVyeSByZW1vdGUgbm9kZSBmb3Igc3RhdHVzCiAgdGVuZGVybWludCAgICAgICAgICBUZW5kZXJtaW50IHN1YmNvbW1hbmRzCiAgdGVzdG5ldCAgICAgICAgICAgICBJbml0aWFsaXplIGZpbGVzIGZvciBhIHNpbWFwcCB0ZXN0bmV0CiAgdHggICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbnMgc3ViY29tbWFuZHMKICB1bnNhZmUtcmVzZXQtYWxsICAgIFJlc2V0cyB0aGUgYmxvY2tjaGFpbiBkYXRhYmFzZSwgcmVtb3ZlcyBhZGRyZXNzIGJvb2sgZmlsZXMsIGFuZCByZXNldHMgZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHRvIHRoZSBnZW5lc2lzIHN0YXRlCiAgdmFsaWRhdGUtZ2VuZXNpcyAgICB2YWxpZGF0ZXMgdGhlIGdlbmVzaXMgZmlsZSBhdCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvciBhdCB0aGUgbG9jYXRpb24gcGFzc2VkIGFzIGFuIGFyZwogIHZlcnNpb24gICAgICAgICAgICAgUHJpbnQgdGhlIGFwcGxpY2F0aW9uIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uCgpGbGFnczoKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgIGhlbHAgZm9yIGdhaWFkCiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("p",[a._v("For each displayed command, you can use the "),t("code",[a._v("--help")]),a._v(" flag to get further information.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwClVzYWdlOgogIGdhaWFkIHF1ZXJ5IFtmbGFnc10KICBnYWlhZCBxdWVyeSBbY29tbWFuZF0KCkFsaWFzZXM6CiAgcXVlcnksIHEKCkF2YWlsYWJsZSBDb21tYW5kczoKICBhY2NvdW50ICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGFjY291bnQgYnkgYWRkcmVzcwogIGF1dGggICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGF1dGggbW9kdWxlCiAgYmFuayAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgYmFuayBtb2R1bGUKICBibG9jayAgICAgICAgICAgICAgICAgICAgR2V0IHZlcmlmaWVkIGRhdGEgZm9yIGEgdGhlIGJsb2NrIGF0IGdpdmVuIGhlaWdodAogIGRpc3RyaWJ1dGlvbiAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBtb2R1bGUKICBldmlkZW5jZSAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGV2aWRlbmNlIGJ5IGhhc2ggb3IgZm9yIGFsbCAocGFnaW5hdGVkKSBzdWJtaXR0ZWQgZXZpZGVuY2UKICBnb3YgICAgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBnb3Zlcm5hbmNlIG1vZHVsZQogIGliYyAgICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIElCQyBtb2R1bGUKICBpYmMtdHJhbnNmZXIgICAgICAgICAgICAgSUJDIGZ1bmdpYmxlIHRva2VuIHRyYW5zZmVyIHF1ZXJ5IHN1YmNvbW1hbmRzCiAgbWludCAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgbWludGluZyBtb2R1bGUKICBwYXJhbXMgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBwYXJhbXMgbW9kdWxlCiAgc2xhc2hpbmcgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc2xhc2hpbmcgbW9kdWxlCiAgc3Rha2luZyAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc3Rha2luZyBtb2R1bGUKICB0ZW5kZXJtaW50LXZhbGlkYXRvci1zZXQgR2V0IHRoZSBmdWxsIHRlbmRlcm1pbnQgdmFsaWRhdG9yIHNldCBhdCBnaXZlbiBoZWlnaHQKICB0eCAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGEgdHJhbnNhY3Rpb24gYnkgaGFzaCBpbiBhIGNvbW1pdHRlZCBibG9jawogIHR4cyAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBmb3IgcGFnaW5hdGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1hdGNoIGEgc2V0IG9mIGV2ZW50cwogIHVwZ3JhZGUgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIHVwZ3JhZGUgbW9kdWxlCgpGbGFnczoKICAgICAgLS1jaGFpbi1pZCBzdHJpbmcgICBUaGUgbmV0d29yayBjaGFpbiBJRAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGhlbHAgZm9yIHF1ZXJ5CgpHbG9iYWwgRmxhZ3M6CiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBxdWVyeSBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("h3",{attrs:{id:"remote-access-to-gaiad"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-access-to-gaiad"}},[a._v("#")]),a._v(" Remote Access to gaiad")]),a._v(" "),t("p",[a._v("When choosing to remote access a Full Node and gaiad, you need a Full Node running and gaia installed on your local machine.")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not.")]),a._v(" "),t("p",[a._v("To set up "),t("code",[a._v("gaiad")]),a._v(" on a local machine and connect to an existing full node, use the following command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("First, set up the address of the full node you want to connect to:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),a._v(" "),t("p",[a._v("If you run your own full node locally, use "),t("code",[a._v("tcp://localhost:26657")]),a._v(" as the address.")]),a._v(" "),t("p",[a._v("Finally, set the "),t("code",[a._v("chain-id")]),a._v(" of the blockchain you want to interact with:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi00Cg=="}}),a._v(" "),t("p",[a._v("Next, learn to use CLI commands to interact with the full node.\nYou can run these commands as remote control or when you are running it on your local machine.")]),a._v(" "),t("h3",{attrs:{id:"create-a-key-pair"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-key-pair"}},[a._v("#")]),a._v(" Create a Key Pair")]),a._v(" "),t("p",[a._v("The default key is "),t("code",[a._v("secp256k1 elliptic curve")]),a._v(". Use the "),t("code",[a._v("gaiad keys")]),a._v(" command to list the keys and generate a new key.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("You will be asked to create a password (at least 8 characters) for this key-pair. This will return the information listed below:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("NAME")]),a._v(": Name of your key")]),a._v(" "),t("li",[t("code",[a._v("TYPE")]),a._v(": Type of your key, always "),t("code",[a._v("local")]),a._v(".")]),a._v(" "),t("li",[t("code",[a._v("ADDRESS")]),a._v(": Your address. Used to receive funds.")]),a._v(" "),t("li",[t("code",[a._v("PUBKEY")]),a._v(": Your public key. Useful for validators.")]),a._v(" "),t("li",[t("code",[a._v("MNEMONIC")]),a._v(": 24-word phrase. "),t("strong",[a._v("Save this mnemonic somewhere safe")]),a._v(". This phrase is required to recover your private key in case you forget the password. The mnemonic is displayed at the end of the output.")])]),a._v(" "),t("p",[a._v("You can see all available keys by typing:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("Use the "),t("code",[a._v("--recover")]),a._v(" flag to add a key that imports a mnemonic to your keyring.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7IC0tcmVjb3Zlcgo="}}),a._v(" "),t("h4",{attrs:{id:"check-your-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-account"}},[a._v("#")]),a._v(" Check your Account")]),a._v(" "),t("p",[a._v("You can view your account by using the "),t("code",[a._v("query account")]),a._v(" command.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("It will display your account type, account number, public key and current account sequence.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"J0B0eXBlJzogL2Nvc21vcy5hdXRoLnYxYmV0YTEuQmFzZUFjY291bnQKYWNjb3VudF9udW1iZXI6ICZxdW90O3h4eHgmcXVvdDsKYWRkcmVzczogY29zbW9zeHh4eApwdWJfa2V5OgogICdAdHlwZSc6IC9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkKICBrZXk6IHh4eApzZXF1ZW5jZTogJnF1b3Q7eCZxdW90Owo="}}),a._v(" "),t("h3",{attrs:{id:"check-your-balance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-balance"}},[a._v("#")]),a._v(" Check your Balance")]),a._v(" "),t("p",[a._v("Query the account balance with the command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYmFuayBiYWxhbmNlcyAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("The response contains keys "),t("code",[a._v("balances")]),a._v(" and "),t("code",[a._v("pagination")]),a._v(".\nEach "),t("code",[a._v("balances")]),a._v(" entry contains an "),t("code",[a._v("amount")]),a._v(" held, connected to a "),t("code",[a._v("denom")]),a._v(" identifier.\nThe typical $ATOM token is identified by the denom "),t("code",[a._v("uatom")]),a._v(". Where 1 "),t("code",[a._v("uatom")]),a._v(" is 0.000001 ATOM.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6Ci0gYW1vdW50OiAmcXVvdDsxMjM0NTY3OCZxdW90OwogIGRlbm9tOiB1YXRvbQpwYWdpbmF0aW9uOgogIG5leHRfa2V5OiBudWxsCiAgdG90YWw6ICZxdW90OzAmcXVvdDsK"}}),a._v(" "),t("p",[a._v("When you query an account that has not received any token yet, the "),t("code",[a._v("balances")]),a._v(" entry is shown as an empty array.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6IFtdCnBhZ2luYXRpb246CiAgbmV4dF9rZXk6IG51bGwKICB0b3RhbDogJnF1b3Q7MCZxdW90Owo="}}),a._v(" "),t("h4",{attrs:{id:"send-coins-using-the-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-coins-using-the-cli"}},[a._v("#")]),a._v(" Send Coins Using the CLI")]),a._v(" "),t("p",[a._v("To send coins using the CLI:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),t("p",[a._v("Parameters:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("")]),a._v(": Key name or address of sending account.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": Address of the recipient.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": This parameter accepts the format "),t("code",[a._v("")]),a._v(", such as "),t("code",[a._v("1000000uatom")]),a._v(".")])]),a._v(" "),t("p",[a._v("Flags:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("--chain-id")]),a._v(": This flag allows you to specify the id of the chain. There are different ids for different testnet chains and mainnet chains.")]),a._v(" "),t("li",[t("code",[a._v("--gas-prices")]),a._v(": This flag allows you to specify the gas prices you pay for the transaction. The format is used as "),t("code",[a._v("0.0025uatom")])])]),a._v(" "),t("h2",{attrs:{id:"rest-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[a._v("#")]),a._v(" REST API")]),a._v(" "),t("p",[a._v("The "),t("a",{attrs:{href:"https://v1.cosmos.network/rpc/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST API documents"),t("OutboundLink")],1),a._v(" list all the available endpoints that you can use to interact\nwith your full node. Learn "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#enable-the-rest-api"}},[a._v("how to enable the REST API")]),a._v(" on your full node.")],1),a._v(" "),t("h3",{attrs:{id:"listen-for-incoming-transactions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listen-for-incoming-transactions"}},[a._v("#")]),a._v(" Listen for Incoming Transactions")]),a._v(" "),t("p",[a._v("The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:")]),a._v(" "),t("p",[t("a",{attrs:{href:"https://cosmos.network/rpc/",target:"_blank",rel:"noopener noreferrer"}},[t("code",[a._v("/cosmos/bank/v1beta1/balances/{address}")]),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/168.0013da7c.js b/main/assets/js/169.d96d9ea9.js similarity index 99% rename from main/assets/js/168.0013da7c.js rename to main/assets/js/169.d96d9ea9.js index 393c2b49181..db383acebc9 100644 --- a/main/assets/js/168.0013da7c.js +++ b/main/assets/js/169.d96d9ea9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{616:function(e,t,r){"use strict";r.r(t);var o=r(1),a=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:"previous-releases"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#previous-releases"}},[e._v("#")]),e._v(" Previous Releases")]),e._v(" "),r("p",[e._v("Please see the table below for library versions and other dependencies.")]),e._v(" "),r("h2",{attrs:{id:"cosmos-hub-release-details"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-release-details"}},[e._v("#")]),e._v(" Cosmos Hub Release Details")]),e._v(" "),r("h3",{attrs:{id:"delta-upgrade-completed-july-12-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#delta-upgrade-completed-july-12-2021"}},[e._v("#")]),e._v(" Delta Upgrade (Completed July 12, 2021)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v5.0.x")]),e._v(" "),r("li",[e._v("Gravity DEX:\n"),r("ul",[r("li",[e._v("A scalable AMM model for token swaps")]),e._v(" "),r("li",[e._v("Drives liquidity for tokens on the Cosmos Hub")]),e._v(" "),r("li",[e._v("Delivers price consistency and order execution")])])])]),e._v(" "),r("h3",{attrs:{id:"vega-upgrade-completed-december-14-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vega-upgrade-completed-december-14-2021"}},[e._v("#")]),e._v(" Vega Upgrade (Completed December 14, 2021)")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Gaia v6.0.x")])]),e._v(" "),r("li",[r("p",[e._v("Cosmos SDK v0.44")]),e._v(" "),r("ul",[r("li",[e._v("Fee grant module:\n"),r("ul",[r("li",[e._v("Allows paying fees on behalf of another account")])])]),e._v(" "),r("li",[e._v("Authz module:\n"),r("ul",[r("li",[e._v("Provide governance functions to execute transactions on behalf of another account")])])])])]),e._v(" "),r("li",[r("p",[e._v("Liquidity Module v1.4.2")]),e._v(" "),r("ul",[r("li",[e._v("The Gravity DEX with updates for dependencies")])])]),e._v(" "),r("li",[r("p",[e._v("IBC v2.0.0")])]),e._v(" "),r("li",[r("p",[e._v("Tendermint v0.34.14")])]),e._v(" "),r("li",[r("p",[e._v("Cosmosvisor v0.1.0")])]),e._v(" "),r("li",[r("p",[e._v("IBC packet forward middleware v1.0.1")]),e._v(" "),r("ul",[r("li",[e._v("Cosmos Hub as a router")])])]),e._v(" "),r("li",[r("p",[e._v("External chain launch: Gravity Bridge")]),e._v(" "),r("ul",[r("li",[e._v("Transfer ATOM, ETH, ERC-20, and other Cosmos tokens between Ethereum and the Gravity Bridge Chain and by extension all IBC connected chains.")]),e._v(" "),r("li",[e._v("Fee and reward model hosted across Cosmos and Ethereum")])])])]),e._v(" "),r("h3",{attrs:{id:"v7-theta-upgrade-completed-march-25-2022"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-completed-march-25-2022"}},[e._v("#")]),e._v(" v7-Theta Upgrade (Completed March 25, 2022)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v7.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45\n"),r("ul",[r("li",[e._v("Minimal update with small fixes")])])]),e._v(" "),r("li",[e._v("Gravity DEX: Liquidity v1.4.5\n"),r("ul",[r("li",[e._v("Adds a circuit breaker governance proposal type to disable adding new liquidity in order to make a migration possible.")])])]),e._v(" "),r("li",[e._v("IBC 3.0.0\n"),r("ul",[r("li",[e._v("Interchain Account Module\n"),r("ul",[r("li",[e._v('Allows the creation of accounts on a "Host" blockchain which are controlled by an authentication module on a "Controller" blockchain.')]),e._v(" "),r("li",[e._v('Arbitrary messages are able to be submitted from the "Controller" blockchain to the "Host" blockchain to be executed on behalf of the Interchain Account.')]),e._v(" "),r("li",[e._v("Uses ordered IBC channels, one per account.")])])])])])]),e._v(" "),r("h3",{attrs:{id:"v8-rho-upgrade-expected-q1-2023"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v8-rho-upgrade-expected-q1-2023"}},[e._v("#")]),e._v(" v8-Rho Upgrade (expected Q1 2023)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v8.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45.12\n"),r("ul",[r("li",[e._v("Version bump with a number of fixes")]),e._v(" "),r("li",[e._v("See "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.12/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("changelog"),r("OutboundLink")],1),e._v(" for details")])])]),e._v(" "),r("li",[e._v("IBC v3.4\n"),r("ul",[r("li",[e._v("See "),r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("changelog"),r("OutboundLink")],1),e._v(" for details")])])]),e._v(" "),r("li",[e._v("IBC Packet Forward Middleware v3.1.1")]),e._v(" "),r("li",[e._v("IBC Msg Whitelist to skip MinFee in CheckTX")]),e._v(" "),r("li",[e._v("Global Fee Module\n"),r("ul",[r("li",[e._v("Allows denoms and min-fees to be governance parameters so gas can be paid in various denoms.")]),e._v(" "),r("li",[e._v("Visible on "),r("a",{attrs:{href:"https://github.com/confio/tgrade/tree/main/x/globalfee",target:"_blank",rel:"noopener noreferrer"}},[e._v("tgrade"),r("OutboundLink")],1),e._v(" already and enabled in "),r("a",{attrs:{href:"https://github.com/confio/tgrade/blob/main/app/ante.go#L72-L92",target:"_blank",rel:"noopener noreferrer"}},[e._v("ante.go"),r("OutboundLink")],1)])])])]),e._v(" "),r("h3",{attrs:{id:"v9-lambda-upgrade-expected-q1-2023"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v9-lambda-upgrade-expected-q1-2023"}},[e._v("#")]),e._v(" v9-Lambda Upgrade (expected Q1 2023)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v9.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45-ics")]),e._v(" "),r("li",[e._v("IBC 4.2")]),e._v(" "),r("li",[e._v("Interchain Security - Replicated Security\n"),r("ul",[r("li",[e._v("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).")])])])]),e._v(" "),r("h2",{attrs:{id:"cosmos-hub-summary"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-summary"}},[e._v("#")]),e._v(" Cosmos Hub Summary")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Upgrade Name")]),e._v(" "),r("th",[e._v("Date")]),e._v(" "),r("th",[e._v("Height")]),e._v(" "),r("th",[e._v("Chain Identifier")]),e._v(" "),r("th",[e._v("Tm")]),e._v(" "),r("th",[e._v("Cosmos SDK")]),e._v(" "),r("th",[e._v("Gaia")]),e._v(" "),r("th",[e._v("IBC")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("Mainnet Launch")]),e._v(" "),r("td",[e._v("13/03/19")]),e._v(" "),r("td",[e._v("0")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-1")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.33.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.33.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://forum.cosmos.network/t/critical-cosmossdk-security-advisory-updated/2211",target:"_blank",rel:"noopener noreferrer"}},[e._v("Security Hard Fork"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("21/04/19")]),e._v(" "),r("td",[e._v("482,100")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-1")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.34.6",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")]),e._v(")")]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Upgrade #1")]),e._v(" "),r("td",[e._v("21/01/20")]),e._v(" "),r("td",[e._v("500043")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-2")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.34.10",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")]),e._v(")")]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Upgrade #2")]),e._v(" "),r("td",[e._v("07/08/20")]),e._v(" "),r("td",[e._v("2902000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-3")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.32.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.32.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.37.15",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.37.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v2.0.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Stargate")]),e._v(" "),r("td",[e._v("18/02/21")]),e._v(" "),r("td",[e._v("5200791")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.40.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.40.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.0.6",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Security Hard Fork")]),e._v(" "),r("td",[e._v("?")]),e._v(" "),r("td",[e._v("?")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.8",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.41.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.41.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Delta (Gravity DEX)")]),e._v(" "),r("td",[e._v("13/07/21")]),e._v(" "),r("td",[e._v("6910000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.13",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.42.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.8",target:"_blank",rel:"noopener noreferrer"}},[e._v("v5.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Vega v6")]),e._v(" "),r("td",[e._v("13/12/21")]),e._v(" "),r("td",[e._v("8695000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.44.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v6.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v2.0.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.0.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Theta v7")]),e._v(" "),r("td",[e._v("12/04/22")]),e._v(" "),r("td",[e._v("10085397")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Rho v8")]),e._v(" "),r("td",[e._v("16/02/23")]),e._v(" "),r("td",[e._v("14099412")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/informalsystems/tendermint/releases/tag/v0.34.24",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Lambda v9")]),e._v(" "),r("td",[e._v("15/03/23")]),e._v(" "),r("td",[e._v("14470501")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/informalsystems/tendermint/releases/tag/v0.34.25",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("v10")]),e._v(" "),r("td",[e._v("21/06/23")]),e._v(" "),r("td",[e._v("15816200")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.28",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("v11")]),e._v(" "),r("td",[e._v("16/08/23")]),e._v(" "),r("td",[e._v("16596000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.29",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.x"),r("OutboundLink")],1)])])])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{559:function(e,t,r){"use strict";r.r(t);var o=r(1),a=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:"previous-releases"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#previous-releases"}},[e._v("#")]),e._v(" Previous Releases")]),e._v(" "),r("p",[e._v("Please see the table below for library versions and other dependencies.")]),e._v(" "),r("h2",{attrs:{id:"cosmos-hub-release-details"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-release-details"}},[e._v("#")]),e._v(" Cosmos Hub Release Details")]),e._v(" "),r("h3",{attrs:{id:"delta-upgrade-completed-july-12-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#delta-upgrade-completed-july-12-2021"}},[e._v("#")]),e._v(" Delta Upgrade (Completed July 12, 2021)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v5.0.x")]),e._v(" "),r("li",[e._v("Gravity DEX:\n"),r("ul",[r("li",[e._v("A scalable AMM model for token swaps")]),e._v(" "),r("li",[e._v("Drives liquidity for tokens on the Cosmos Hub")]),e._v(" "),r("li",[e._v("Delivers price consistency and order execution")])])])]),e._v(" "),r("h3",{attrs:{id:"vega-upgrade-completed-december-14-2021"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vega-upgrade-completed-december-14-2021"}},[e._v("#")]),e._v(" Vega Upgrade (Completed December 14, 2021)")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Gaia v6.0.x")])]),e._v(" "),r("li",[r("p",[e._v("Cosmos SDK v0.44")]),e._v(" "),r("ul",[r("li",[e._v("Fee grant module:\n"),r("ul",[r("li",[e._v("Allows paying fees on behalf of another account")])])]),e._v(" "),r("li",[e._v("Authz module:\n"),r("ul",[r("li",[e._v("Provide governance functions to execute transactions on behalf of another account")])])])])]),e._v(" "),r("li",[r("p",[e._v("Liquidity Module v1.4.2")]),e._v(" "),r("ul",[r("li",[e._v("The Gravity DEX with updates for dependencies")])])]),e._v(" "),r("li",[r("p",[e._v("IBC v2.0.0")])]),e._v(" "),r("li",[r("p",[e._v("Tendermint v0.34.14")])]),e._v(" "),r("li",[r("p",[e._v("Cosmosvisor v0.1.0")])]),e._v(" "),r("li",[r("p",[e._v("IBC packet forward middleware v1.0.1")]),e._v(" "),r("ul",[r("li",[e._v("Cosmos Hub as a router")])])]),e._v(" "),r("li",[r("p",[e._v("External chain launch: Gravity Bridge")]),e._v(" "),r("ul",[r("li",[e._v("Transfer ATOM, ETH, ERC-20, and other Cosmos tokens between Ethereum and the Gravity Bridge Chain and by extension all IBC connected chains.")]),e._v(" "),r("li",[e._v("Fee and reward model hosted across Cosmos and Ethereum")])])])]),e._v(" "),r("h3",{attrs:{id:"v7-theta-upgrade-completed-march-25-2022"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-completed-march-25-2022"}},[e._v("#")]),e._v(" v7-Theta Upgrade (Completed March 25, 2022)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v7.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45\n"),r("ul",[r("li",[e._v("Minimal update with small fixes")])])]),e._v(" "),r("li",[e._v("Gravity DEX: Liquidity v1.4.5\n"),r("ul",[r("li",[e._v("Adds a circuit breaker governance proposal type to disable adding new liquidity in order to make a migration possible.")])])]),e._v(" "),r("li",[e._v("IBC 3.0.0\n"),r("ul",[r("li",[e._v("Interchain Account Module\n"),r("ul",[r("li",[e._v('Allows the creation of accounts on a "Host" blockchain which are controlled by an authentication module on a "Controller" blockchain.')]),e._v(" "),r("li",[e._v('Arbitrary messages are able to be submitted from the "Controller" blockchain to the "Host" blockchain to be executed on behalf of the Interchain Account.')]),e._v(" "),r("li",[e._v("Uses ordered IBC channels, one per account.")])])])])])]),e._v(" "),r("h3",{attrs:{id:"v8-rho-upgrade-expected-q1-2023"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v8-rho-upgrade-expected-q1-2023"}},[e._v("#")]),e._v(" v8-Rho Upgrade (expected Q1 2023)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v8.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45.12\n"),r("ul",[r("li",[e._v("Version bump with a number of fixes")]),e._v(" "),r("li",[e._v("See "),r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.12/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("changelog"),r("OutboundLink")],1),e._v(" for details")])])]),e._v(" "),r("li",[e._v("IBC v3.4\n"),r("ul",[r("li",[e._v("See "),r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("changelog"),r("OutboundLink")],1),e._v(" for details")])])]),e._v(" "),r("li",[e._v("IBC Packet Forward Middleware v3.1.1")]),e._v(" "),r("li",[e._v("IBC Msg Whitelist to skip MinFee in CheckTX")]),e._v(" "),r("li",[e._v("Global Fee Module\n"),r("ul",[r("li",[e._v("Allows denoms and min-fees to be governance parameters so gas can be paid in various denoms.")]),e._v(" "),r("li",[e._v("Visible on "),r("a",{attrs:{href:"https://github.com/confio/tgrade/tree/main/x/globalfee",target:"_blank",rel:"noopener noreferrer"}},[e._v("tgrade"),r("OutboundLink")],1),e._v(" already and enabled in "),r("a",{attrs:{href:"https://github.com/confio/tgrade/blob/main/app/ante.go#L72-L92",target:"_blank",rel:"noopener noreferrer"}},[e._v("ante.go"),r("OutboundLink")],1)])])])]),e._v(" "),r("h3",{attrs:{id:"v9-lambda-upgrade-expected-q1-2023"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#v9-lambda-upgrade-expected-q1-2023"}},[e._v("#")]),e._v(" v9-Lambda Upgrade (expected Q1 2023)")]),e._v(" "),r("ul",[r("li",[e._v("Gaia v9.0.x")]),e._v(" "),r("li",[e._v("Cosmos SDK v0.45-ics")]),e._v(" "),r("li",[e._v("IBC 4.2")]),e._v(" "),r("li",[e._v("Interchain Security - Replicated Security\n"),r("ul",[r("li",[e._v("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).")])])])]),e._v(" "),r("h2",{attrs:{id:"cosmos-hub-summary"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-summary"}},[e._v("#")]),e._v(" Cosmos Hub Summary")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Upgrade Name")]),e._v(" "),r("th",[e._v("Date")]),e._v(" "),r("th",[e._v("Height")]),e._v(" "),r("th",[e._v("Chain Identifier")]),e._v(" "),r("th",[e._v("Tm")]),e._v(" "),r("th",[e._v("Cosmos SDK")]),e._v(" "),r("th",[e._v("Gaia")]),e._v(" "),r("th",[e._v("IBC")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[e._v("Mainnet Launch")]),e._v(" "),r("td",[e._v("13/03/19")]),e._v(" "),r("td",[e._v("0")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-1")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.33.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.33.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://forum.cosmos.network/t/critical-cosmossdk-security-advisory-updated/2211",target:"_blank",rel:"noopener noreferrer"}},[e._v("Security Hard Fork"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("21/04/19")]),e._v(" "),r("td",[e._v("482,100")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-1")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.34.6",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")]),e._v(")")]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Upgrade #1")]),e._v(" "),r("td",[e._v("21/01/20")]),e._v(" "),r("td",[e._v("500043")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-2")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.31.11",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.34.10",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")]),e._v(")")]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Upgrade #2")]),e._v(" "),r("td",[e._v("07/08/20")]),e._v(" "),r("td",[e._v("2902000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-3")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.32.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.32.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.37.15",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.37.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v2.0.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("n/a")])]),e._v(" "),r("tr",[r("td",[e._v("Stargate")]),e._v(" "),r("td",[e._v("18/02/21")]),e._v(" "),r("td",[e._v("5200791")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.40.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.40.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.0.6",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Security Hard Fork")]),e._v(" "),r("td",[e._v("?")]),e._v(" "),r("td",[e._v("?")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.8",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.41.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.41.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Delta (Gravity DEX)")]),e._v(" "),r("td",[e._v("13/07/21")]),e._v(" "),r("td",[e._v("6910000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.13",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.42.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.8",target:"_blank",rel:"noopener noreferrer"}},[e._v("v5.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("em",[e._v("Included in Cosmos SDK")])])]),e._v(" "),r("tr",[r("td",[e._v("Vega v6")]),e._v(" "),r("td",[e._v("13/12/21")]),e._v(" "),r("td",[e._v("8695000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.44.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v6.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v2.0.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.0.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Theta v7")]),e._v(" "),r("td",[e._v("12/04/22")]),e._v(" "),r("td",[e._v("10085397")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/tendermint/tendermint/releases/tag/v0.34.14",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Rho v8")]),e._v(" "),r("td",[e._v("16/02/23")]),e._v(" "),r("td",[e._v("14099412")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/informalsystems/tendermint/releases/tag/v0.34.24",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("Lambda v9")]),e._v(" "),r("td",[e._v("15/03/23")]),e._v(" "),r("td",[e._v("14470501")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/informalsystems/tendermint/releases/tag/v0.34.25",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("v10")]),e._v(" "),r("td",[e._v("21/06/23")]),e._v(" "),r("td",[e._v("15816200")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.28",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10.0.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.x"),r("OutboundLink")],1)])]),e._v(" "),r("tr",[r("td",[e._v("v11")]),e._v(" "),r("td",[e._v("16/08/23")]),e._v(" "),r("td",[e._v("16596000")]),e._v(" "),r("td",[r("code",[e._v("cosmoshub-4")])]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cometbft/cometbft/releases/tag/v0.34.29",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.34.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11.x"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.4.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.4.x"),r("OutboundLink")],1)])])])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/169.81f9571c.js b/main/assets/js/170.b7bb9fa0.js similarity index 94% rename from main/assets/js/169.81f9571c.js rename to main/assets/js/170.b7bb9fa0.js index 7bb038d118d..3bfe43de7b7 100644 --- a/main/assets/js/169.81f9571c.js +++ b/main/assets/js/170.b7bb9fa0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{618: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],{558: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/170.db19179e.js b/main/assets/js/171.26369e88.js similarity index 95% rename from main/assets/js/170.db19179e.js rename to main/assets/js/171.26369e88.js index 27255f10ae7..8c2cb9a1cc2 100644 --- a/main/assets/js/170.db19179e.js +++ b/main/assets/js/171.26369e88.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{619: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],{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 diff --git a/main/assets/js/171.286cf0d5.js b/main/assets/js/172.66b363b1.js similarity index 97% rename from main/assets/js/171.286cf0d5.js rename to main/assets/js/172.66b363b1.js index 2991791db08..71527fcec2f 100644 --- a/main/assets/js/171.286cf0d5.js +++ b/main/assets/js/172.66b363b1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{621:function(e,t,a){"use strict";a.r(t);var n=a(1),r=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:"kms-key-management-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#kms-key-management-system"}},[e._v("#")]),e._v(" KMS - Key Management System")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tendermint KMS"),a("OutboundLink")],1),e._v(" is a key management service that allows separating key management from Tendermint nodes. In addition it provides other advantages such as:")]),e._v(" "),a("ul",[a("li",[e._v("Improved security and risk management policies")]),e._v(" "),a("li",[e._v("Unified API and support for various HSM (hardware security modules)")]),e._v(" "),a("li",[e._v("Double signing protection (software or hardware based)")])]),e._v(" "),a("p",[e._v("It is recommended that the KMS service runs in a separate physical hosts.")]),e._v(" "),a("h2",{attrs:{id:"building"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#building"}},[e._v("#")]),e._v(" Building")]),e._v(" "),a("p",[e._v("Detailed build instructions can be found "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms#installation",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("When compiling the KMS, ensure you have enabled the applicable features:")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Backend")]),e._v(" "),a("th",[e._v("Recommended Command line")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("YubiHSM")]),e._v(" "),a("td",[a("code",[e._v("cargo build --features yubihsm")])])]),e._v(" "),a("tr",[a("td",[e._v("Ledger+Tendermint App")]),e._v(" "),a("td",[a("code",[e._v("cargo build --features ledgertm")])])])])]),e._v(" "),a("h2",{attrs:{id:"configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),a("p",[e._v("A KMS can be configured in various ways:")]),e._v(" "),a("h3",{attrs:{id:"using-a-yubihsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-a-yubihsm"}},[e._v("#")]),e._v(" Using a YubiHSM")]),e._v(" "),a("p",[e._v("Detailed information on how to setup a KMS with YubiHSM2 can be found "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms/blob/master/README.yubihsm.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("h3",{attrs:{id:"using-a-ledger-device-running-the-tendermint-app"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-a-ledger-device-running-the-tendermint-app"}},[e._v("#")]),e._v(" Using a Ledger device running the Tendermint app")]),e._v(" "),a("p",[e._v("Detailed information on how to setup a KMS with Ledger Tendermint App can be found "),a("RouterLink",{attrs:{to:"/validators/kms/kms_ledger.html"}},[e._v("here")])],1)])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{556:function(e,t,a){"use strict";a.r(t);var n=a(1),r=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:"kms-key-management-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#kms-key-management-system"}},[e._v("#")]),e._v(" KMS - Key Management System")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tendermint KMS"),a("OutboundLink")],1),e._v(" is a key management service that allows separating key management from Tendermint nodes. In addition it provides other advantages such as:")]),e._v(" "),a("ul",[a("li",[e._v("Improved security and risk management policies")]),e._v(" "),a("li",[e._v("Unified API and support for various HSM (hardware security modules)")]),e._v(" "),a("li",[e._v("Double signing protection (software or hardware based)")])]),e._v(" "),a("p",[e._v("It is recommended that the KMS service runs in a separate physical hosts.")]),e._v(" "),a("h2",{attrs:{id:"building"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#building"}},[e._v("#")]),e._v(" Building")]),e._v(" "),a("p",[e._v("Detailed build instructions can be found "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms#installation",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("When compiling the KMS, ensure you have enabled the applicable features:")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Backend")]),e._v(" "),a("th",[e._v("Recommended Command line")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("YubiHSM")]),e._v(" "),a("td",[a("code",[e._v("cargo build --features yubihsm")])])]),e._v(" "),a("tr",[a("td",[e._v("Ledger+Tendermint App")]),e._v(" "),a("td",[a("code",[e._v("cargo build --features ledgertm")])])])])]),e._v(" "),a("h2",{attrs:{id:"configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),a("p",[e._v("A KMS can be configured in various ways:")]),e._v(" "),a("h3",{attrs:{id:"using-a-yubihsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-a-yubihsm"}},[e._v("#")]),e._v(" Using a YubiHSM")]),e._v(" "),a("p",[e._v("Detailed information on how to setup a KMS with YubiHSM2 can be found "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms/blob/master/README.yubihsm.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("h3",{attrs:{id:"using-a-ledger-device-running-the-tendermint-app"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-a-ledger-device-running-the-tendermint-app"}},[e._v("#")]),e._v(" Using a Ledger device running the Tendermint app")]),e._v(" "),a("p",[e._v("Detailed information on how to setup a KMS with Ledger Tendermint App can be found "),a("RouterLink",{attrs:{to:"/validators/kms/kms_ledger.html"}},[e._v("here")])],1)])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/172.9dbf3262.js b/main/assets/js/173.819e13c2.js similarity index 99% rename from main/assets/js/172.9dbf3262.js rename to main/assets/js/173.819e13c2.js index 78b90c7470d..93aa31b2a5c 100644 --- a/main/assets/js/172.9dbf3262.js +++ b/main/assets/js/173.819e13c2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{622: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],{555: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/173.a490a9aa.js b/main/assets/js/174.3bfb54b2.js similarity index 98% rename from main/assets/js/173.a490a9aa.js rename to main/assets/js/174.3bfb54b2.js index fdea5231a14..2976a478d79 100644 --- a/main/assets/js/173.a490a9aa.js +++ b/main/assets/js/174.3bfb54b2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{625:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validators-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validators-overview"}},[e._v("#")]),e._v(" Validators Overview")]),e._v(" "),a("h2",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes that contain cryptographic signatures signed by each validator's private key.")],1),e._v(" "),a("p",[e._v("Validator candidates can bond their own ATOM and have ATOM "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v('"delegated"')]),e._v(", or staked, to them by token holders. The Cosmos Hub has "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/66",target:"_blank",rel:"noopener noreferrer"}},[e._v("180 validators"),a("OutboundLink")],1),e._v(", but over time the number of validators can be increased with governance proposals. The validators are determined by the total number of ATOM tokens delegated to them — the top 180 validator candidates with the most voting power are the current Cosmos validators.")],1),e._v(" "),a("p",[e._v("Validators and their delegators earn ATOM as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Note that validators can set a commission percentage on the fees their delegators receive as additional incentive. You can find an overview of all current validators and their voting power on "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If validators double sign or are offline for an "),a("RouterLink",{attrs:{to:"/validators/validator-faq.html#what-are-the-slashing-conditions"}},[e._v("extended period")]),e._v(", their staked ATOM (including ATOM of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.")],1),e._v(" "),a("h2",{attrs:{id:"hardware"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hardware"}},[e._v("#")]),e._v(" Hardware")]),e._v(" "),a("p",[e._v("For validator key management, validators must set up a physical operation that is secured with restricted access. A good starting place, for example, would be co-locating in secure data centers.")]),e._v(" "),a("p",[e._v("Validators are expected to equip their datacenter location with redundant power, connectivity, and storage backups. Expect to have several redundant networking boxes for fiber, firewall, and switching and then small servers with redundant hard drive and failover.")]),e._v(" "),a("p",[e._v("You can find the minimum hardware requirements on the instructions for "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("joining the Cosmos Hub mainnet")]),e._v(". As the network grows, bandwidth, CPU, and memory requirements rise. Large hard drives are recommended for storing years of blockchain history, as well as significant RAM to process the increasing amount of transactions.")],1),e._v(" "),a("h2",{attrs:{id:"create-a-validator-website"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-website"}},[e._v("#")]),e._v(" Create a Validator Website")]),e._v(" "),a("p",[e._v("To get started as a validator, create your dedicated validator website and signal your intention to become a validator in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),a("OutboundLink")],1),e._v(". Posting your validator website is essential because delegators want to have information about the entity they are delegating their ATOM to.")]),e._v(" "),a("h2",{attrs:{id:"seek-legal-advice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seek-legal-advice"}},[e._v("#")]),e._v(" Seek Legal Advice")]),e._v(" "),a("p",[e._v("As always, do your own research and seek legal advice if you intend to run a validator node.")]),e._v(" "),a("h2",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("p",[e._v("Discuss the finer details of being a validator on our community Discord and sign up for the Cosmos newsletter to get regular updates:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developers Discord"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/updates/signup/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Newsletter"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{554:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validators-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validators-overview"}},[e._v("#")]),e._v(" Validators Overview")]),e._v(" "),a("h2",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes that contain cryptographic signatures signed by each validator's private key.")],1),e._v(" "),a("p",[e._v("Validator candidates can bond their own ATOM and have ATOM "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v('"delegated"')]),e._v(", or staked, to them by token holders. The Cosmos Hub has "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/66",target:"_blank",rel:"noopener noreferrer"}},[e._v("180 validators"),a("OutboundLink")],1),e._v(", but over time the number of validators can be increased with governance proposals. The validators are determined by the total number of ATOM tokens delegated to them — the top 180 validator candidates with the most voting power are the current Cosmos validators.")],1),e._v(" "),a("p",[e._v("Validators and their delegators earn ATOM as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Note that validators can set a commission percentage on the fees their delegators receive as additional incentive. You can find an overview of all current validators and their voting power on "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If validators double sign or are offline for an "),a("RouterLink",{attrs:{to:"/validators/validator-faq.html#what-are-the-slashing-conditions"}},[e._v("extended period")]),e._v(", their staked ATOM (including ATOM of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.")],1),e._v(" "),a("h2",{attrs:{id:"hardware"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hardware"}},[e._v("#")]),e._v(" Hardware")]),e._v(" "),a("p",[e._v("For validator key management, validators must set up a physical operation that is secured with restricted access. A good starting place, for example, would be co-locating in secure data centers.")]),e._v(" "),a("p",[e._v("Validators are expected to equip their datacenter location with redundant power, connectivity, and storage backups. Expect to have several redundant networking boxes for fiber, firewall, and switching and then small servers with redundant hard drive and failover.")]),e._v(" "),a("p",[e._v("You can find the minimum hardware requirements on the instructions for "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("joining the Cosmos Hub mainnet")]),e._v(". As the network grows, bandwidth, CPU, and memory requirements rise. Large hard drives are recommended for storing years of blockchain history, as well as significant RAM to process the increasing amount of transactions.")],1),e._v(" "),a("h2",{attrs:{id:"create-a-validator-website"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-website"}},[e._v("#")]),e._v(" Create a Validator Website")]),e._v(" "),a("p",[e._v("To get started as a validator, create your dedicated validator website and signal your intention to become a validator in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),a("OutboundLink")],1),e._v(". Posting your validator website is essential because delegators want to have information about the entity they are delegating their ATOM to.")]),e._v(" "),a("h2",{attrs:{id:"seek-legal-advice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seek-legal-advice"}},[e._v("#")]),e._v(" Seek Legal Advice")]),e._v(" "),a("p",[e._v("As always, do your own research and seek legal advice if you intend to run a validator node.")]),e._v(" "),a("h2",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("p",[e._v("Discuss the finer details of being a validator on our community Discord and sign up for the Cosmos newsletter to get regular updates:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developers Discord"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/updates/signup/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Newsletter"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/174.c55965d9.js b/main/assets/js/175.69e0ebc2.js similarity index 98% rename from main/assets/js/174.c55965d9.js rename to main/assets/js/175.69e0ebc2.js index 4539752f4bb..dd8151e16ba 100644 --- a/main/assets/js/174.c55965d9.js +++ b/main/assets/js/175.69e0ebc2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{626:function(e,t,a){"use strict";a.r(t);var o=a(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-security"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-security"}},[e._v("#")]),e._v(" Validator Security")]),e._v(" "),a("p",[e._v("Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now in order to be on time for launch.")]),e._v(" "),a("h2",{attrs:{id:"key-management-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-management-hsm"}},[e._v("#")]),e._v(" Key Management - HSM")]),e._v(" "),a("p",[e._v("It is mission critical that an attacker cannot steal a validator's key. If this is possible, it puts the entire stake delegated to the compromised validator at risk. Hardware security modules are an important strategy for mitigating this risk.")]),e._v(" "),a("p",[e._v("HSM modules must support "),a("code",[e._v("ed25519")]),e._v(" signatures for the hub. The YubiHSM2 supports "),a("code",[e._v("ed25519")]),e._v(" and "),a("a",{attrs:{href:"https://github.com/iqlusioninc/yubihsm.rs",target:"_blank",rel:"noopener noreferrer"}},[e._v("this yubikey library is available"),a("OutboundLink")],1),e._v(". The YubiHSM can protect a private key but cannot ensure in a secure setting that it won't sign the same block twice.")]),e._v(" "),a("p",[e._v("The CometBFT team is also working on extending our Ledger Nano S application to support validator signing. This app can store recent blocks and mitigate double signing attacks.")]),e._v(" "),a("p",[e._v("We will update this page when more key storage solutions become available.")]),e._v(" "),a("h2",{attrs:{id:"sentry-nodes-ddos-protection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sentry-nodes-ddos-protection"}},[e._v("#")]),e._v(" Sentry Nodes (DDOS Protection)")]),e._v(" "),a("p",[e._v("Validators are responsible for ensuring that the network can sustain denial of service attacks.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology in a so-called sentry node architecture.")]),e._v(" "),a("p",[e._v("Validator nodes should only connect to full-nodes they trust because they operate them themselves or are run by other validators they know socially. A validator node will typically run in a data center. Most data centers provide direct links the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and may require new sentry nodes be spun up or activated to mitigate attacks on existing ones.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet based attacked cannot disturb them directly. This will ensure validator block proposals and votes always make it to the rest of the network.")]),e._v(" "),a("p",[e._v("To setup your sentry node architecture you can follow the instructions below:")]),e._v(" "),a("p",[e._v("Validators nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),e._v(" "),a("p",[e._v("Sentry Nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQojIEV4YW1wbGUgSUQ6IDNlMTZhZjBjZWFkMjc5NzllMWZjM2RhYzU3ZDAzZGYzYzdhNzdhY2NAMy44Ny4xNzkuMjM1OjI2NjU2Cgpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7bm9kZV9pZHNfb2ZfcHJpdmF0ZV9wZWVycyZxdW90Owo="}}),e._v(" "),a("h2",{attrs:{id:"environment-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment Variables")]),e._v(" "),a("p",[e._v("By default, uppercase environment variables with the following prefixes will replace lowercase command-line flags:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("GA")]),e._v(" (for Gaia flags)")]),e._v(" "),a("li",[a("code",[e._v("TM")]),e._v(" (for Tendermint/CometBFT flags)")]),e._v(" "),a("li",[a("code",[e._v("BC")]),e._v(" (for democli or basecli flags)")])]),e._v(" "),a("p",[e._v("For example, the environment variable "),a("code",[e._v("GA_CHAIN_ID")]),e._v(" will map to the command line flag "),a("code",[e._v("--chain-id")]),e._v(". Note that while explicit command-line flags will take precedence over environment variables, environment variables will take precedence over any of your configuration files. For this reason, it's imperative that you lock down your environment such that any critical parameters are defined as flags on the CLI or prevent modification of any environment variables.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{553:function(e,t,a){"use strict";a.r(t);var o=a(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-security"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-security"}},[e._v("#")]),e._v(" Validator Security")]),e._v(" "),a("p",[e._v("Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now in order to be on time for launch.")]),e._v(" "),a("h2",{attrs:{id:"key-management-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-management-hsm"}},[e._v("#")]),e._v(" Key Management - HSM")]),e._v(" "),a("p",[e._v("It is mission critical that an attacker cannot steal a validator's key. If this is possible, it puts the entire stake delegated to the compromised validator at risk. Hardware security modules are an important strategy for mitigating this risk.")]),e._v(" "),a("p",[e._v("HSM modules must support "),a("code",[e._v("ed25519")]),e._v(" signatures for the hub. The YubiHSM2 supports "),a("code",[e._v("ed25519")]),e._v(" and "),a("a",{attrs:{href:"https://github.com/iqlusioninc/yubihsm.rs",target:"_blank",rel:"noopener noreferrer"}},[e._v("this yubikey library is available"),a("OutboundLink")],1),e._v(". The YubiHSM can protect a private key but cannot ensure in a secure setting that it won't sign the same block twice.")]),e._v(" "),a("p",[e._v("The CometBFT team is also working on extending our Ledger Nano S application to support validator signing. This app can store recent blocks and mitigate double signing attacks.")]),e._v(" "),a("p",[e._v("We will update this page when more key storage solutions become available.")]),e._v(" "),a("h2",{attrs:{id:"sentry-nodes-ddos-protection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sentry-nodes-ddos-protection"}},[e._v("#")]),e._v(" Sentry Nodes (DDOS Protection)")]),e._v(" "),a("p",[e._v("Validators are responsible for ensuring that the network can sustain denial of service attacks.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology in a so-called sentry node architecture.")]),e._v(" "),a("p",[e._v("Validator nodes should only connect to full-nodes they trust because they operate them themselves or are run by other validators they know socially. A validator node will typically run in a data center. Most data centers provide direct links the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and may require new sentry nodes be spun up or activated to mitigate attacks on existing ones.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet based attacked cannot disturb them directly. This will ensure validator block proposals and votes always make it to the rest of the network.")]),e._v(" "),a("p",[e._v("To setup your sentry node architecture you can follow the instructions below:")]),e._v(" "),a("p",[e._v("Validators nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),e._v(" "),a("p",[e._v("Sentry Nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQojIEV4YW1wbGUgSUQ6IDNlMTZhZjBjZWFkMjc5NzllMWZjM2RhYzU3ZDAzZGYzYzdhNzdhY2NAMy44Ny4xNzkuMjM1OjI2NjU2Cgpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7bm9kZV9pZHNfb2ZfcHJpdmF0ZV9wZWVycyZxdW90Owo="}}),e._v(" "),a("h2",{attrs:{id:"environment-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment Variables")]),e._v(" "),a("p",[e._v("By default, uppercase environment variables with the following prefixes will replace lowercase command-line flags:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("GA")]),e._v(" (for Gaia flags)")]),e._v(" "),a("li",[a("code",[e._v("TM")]),e._v(" (for Tendermint/CometBFT flags)")]),e._v(" "),a("li",[a("code",[e._v("BC")]),e._v(" (for democli or basecli flags)")])]),e._v(" "),a("p",[e._v("For example, the environment variable "),a("code",[e._v("GA_CHAIN_ID")]),e._v(" will map to the command line flag "),a("code",[e._v("--chain-id")]),e._v(". Note that while explicit command-line flags will take precedence over environment variables, environment variables will take precedence over any of your configuration files. For this reason, it's imperative that you lock down your environment such that any critical parameters are defined as flags on the CLI or prevent modification of any environment variables.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/175.97c52c12.js b/main/assets/js/176.d09f79fe.js similarity index 99% rename from main/assets/js/175.97c52c12.js rename to main/assets/js/176.d09f79fe.js index 86f86f48013..5f98a58f64f 100644 --- a/main/assets/js/175.97c52c12.js +++ b/main/assets/js/176.d09f79fe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{486:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-faq"}},[e._v("#")]),e._v(" Validator FAQ")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Disclaimer")]),e._v(" "),a("p",[e._v("This is work in progress. Mechanisms and values are susceptible to change.")])]),e._v(" "),a("h2",{attrs:{id:"general-concepts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-concepts"}},[e._v("#")]),e._v(" General Concepts")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-cosmos-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-cosmos-validator"}},[e._v("#")]),e._v(" What is a Cosmos validator?")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/getting-started/what-is-gaia.html"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators to secure the network. The role of validators is to run a full node and participate in consensus by broadcasting votes that contain cryptographic signatures signed by the validator's private key. Validators commit new blocks in the blockchain and receive revenue in exchange for their work. Validators must also participate in governance by voting on proposals. Validators are weighted according to their total stake.")],1),e._v(" "),a("h3",{attrs:{id:"what-is-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-staking"}},[e._v("#")]),e._v(" What is staking?")]),e._v(" "),a("p",[e._v("The Cosmos Hub is a public Proof-Of-Stake (PoS) blockchain, meaning that the weight of validators is determined by the amount of staking tokens (ATOM) bonded as collateral. These ATOM tokens can be self-delegated directly by the validator or delegated to the validator by other ATOM holders.")]),e._v(" "),a("p",[e._v("Any user in the system can declare their intention to become a validator by sending a "),a("code",[e._v("create-validator")]),e._v(" transaction to become validator candidates.")]),e._v(" "),a("p",[e._v("The weight (i.e. voting power) of a validator determines whether they are an active validator. The active validator set is limited to "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("an amount"),a("OutboundLink")],1),e._v(" that changes over time.")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[e._v("#")]),e._v(" What is a full node?")]),e._v(" "),a("p",[e._v("A full node is a server running a chain's "),a("em",[e._v("binary")]),e._v(" (its software) that fully validates transactions and blocks of a blockchain and keeps a full record of all historic activity. A full node is distinct from a pruned node that processes only block headers and a small subset of transactions. Running a full node requires more resources than a pruned node. Validators can decide to run either a full node or a pruned node, but they need to make sure they retain enough blocks to be able to validate new blocks.")]),e._v(" "),a("p",[e._v("Of course, it is possible and encouraged for users to run full nodes even if they do not plan to be validators.")]),e._v(" "),a("p",[e._v("You can find more details about the requirements in the "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("Joining Mainnet Tutorial")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("Delegators are ATOM holders who cannot, or do not want to, run a validator themselves. ATOM holders can delegate ATOM to a validator and obtain a part of their revenue in exchange. For details on how revenue is distributed, see "),a("a",{attrs:{href:"#what-is-the-incentive-to-stake?"}},[e._v("What is the incentive to stake?")]),e._v(" and "),a("a",{attrs:{href:"#what-are-validators-commission?"}},[e._v("What are validators commission?")]),e._v(" in this document.")]),e._v(" "),a("p",[e._v("Because delegators share revenue with their validators, they also share risks. If a validator misbehaves, each of their delegators are partially slashed in proportion to their delegated stake. This penalty is one of the reasons why delegators must perform due diligence on validators before delegating. Spreading their stake over multiple validators is another layer of protection.")]),e._v(" "),a("p",[e._v("Delegators play a critical role in the system, as they are responsible for choosing validators. Being a delegator is not a passive role. Delegators must actively monitor the actions of their validators and participate in governance. For details on being a delegator, read the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/delegators/delegator-faq.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delegator FAQ"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"becoming-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#becoming-a-validator"}},[e._v("#")]),e._v(" Becoming a Validator")]),e._v(" "),a("h3",{attrs:{id:"how-to-become-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-become-a-validator"}},[e._v("#")]),e._v(" How to become a validator?")]),e._v(" "),a("p",[e._v("Any participant in the network can signal that they want to become a validator by sending a "),a("code",[e._v("create-validator")]),e._v(" transaction, where they must fill out the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's "),a("code",[e._v("PubKey")]),e._v(":")]),e._v(" The private key associated with this Tendermint/CometBFT "),a("code",[e._v("PubKey")]),e._v(" is used to sign "),a("em",[e._v("prevotes")]),e._v(" and "),a("em",[e._v("precommits")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Validator's Address:")]),e._v(" Application level address that is used to publicly identify your validator. The private key associated with this address is used to delegate, unbond, claim rewards, and participate in governance.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's name (moniker)")])]),e._v(" "),a("li",[a("strong",[e._v("Validator's website (Optional)")])]),e._v(" "),a("li",[a("strong",[e._v("Validator's description (Optional)")])]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on block rewards and fees charged to delegators.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate that this validator can charge. This parameter is fixed and cannot be changed after the "),a("code",[e._v("create-validator")]),e._v(" transaction is processed.")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator commission. This parameter is fixed cannot be changed after the "),a("code",[e._v("create-validator")]),e._v(" transaction is processed.")])]),e._v(" "),a("p",[e._v("After a validator is created, ATOM holders can delegate ATOM to them, effectively adding stake to the validator's pool. The total stake of an address is the combination of ATOM bonded by delegators and ATOM self-bonded by the validator.")]),e._v(" "),a("p",[e._v("From all validator candidates that signaled themselves, the 180 validators with the most total stake are the designated "),a("strong",[e._v("validators")]),e._v(". If a validator's total stake falls below the top 180, then that validator loses its validator privileges. The validator cannot participate in consensus or generate rewards until the stake is high enough to be in the top 180. Over time, the maximum number of validators may be increased via on-chain governance proposal.")]),e._v(" "),a("h2",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[e._v("#")]),e._v(" Testnet")]),e._v(" "),a("h3",{attrs:{id:"how-can-i-join-the-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-join-the-testnet"}},[e._v("#")]),e._v(" How can I join the testnet?")]),e._v(" "),a("p",[e._v("The testnet is a great environment to test your validator setup before launch.")]),e._v(" "),a("p",[e._v("Testnet participation is a great way to signal to the community that you are ready and able to operate a validator. For details, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[e._v("Join the Public Testnet")]),e._v(" documentation.")],1),e._v(" "),a("h2",{attrs:{id:"additional-concepts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-concepts"}},[e._v("#")]),e._v(" Additional Concepts")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-different-types-of-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-different-types-of-keys"}},[e._v("#")]),e._v(" What are the different types of keys?")]),e._v(" "),a("p",[e._v("There are two types of keys:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Tendermint/CometBFT key")]),e._v(": A unique key that is used to sign consensus votes.\n"),a("ul",[a("li",[e._v("It is associated with a public key "),a("code",[e._v("cosmosvalconspub")]),e._v(" (To get this value, run "),a("code",[e._v("gaiad tendermint show-validator")]),e._v(")")]),e._v(" "),a("li",[e._v("It is generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")])])]),e._v(" "),a("li",[a("strong",[e._v("Application key")]),e._v(": This key is created from the "),a("code",[e._v("gaiad")]),e._v(" binary and is used to sign transactions. Application keys are associated with a public key that is prefixed by "),a("code",[e._v("cosmospub")]),e._v(" and an address that is prefixed by "),a("code",[e._v("cosmos")]),e._v(".")])]),e._v(" "),a("p",[e._v("The Tendermint/CometBFT key and the application key are derived from account keys that are generated by the "),a("code",[e._v("gaiad keys add")]),e._v(" command.")]),e._v(" "),a("p",[a("strong",[e._v("Note:")]),e._v(" A validator's operator key is directly tied to an application key and uses the "),a("code",[e._v("cosmosvaloper")]),e._v(" and "),a("code",[e._v("cosmosvaloperpub")]),e._v(" prefixes that are reserved solely for this purpose.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-different-states-a-validator-can-be-in"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-different-states-a-validator-can-be-in"}},[e._v("#")]),e._v(" What are the different states a validator can be in?")]),e._v(" "),a("p",[e._v("After a validator is created with a "),a("code",[e._v("create-validator")]),e._v(" transaction, the validator is in one of three states:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("in validator set")]),e._v(": Validator is in the active set and participates in consensus. The validator is earning rewards and can be slashed for misbehavior.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("jailed")]),e._v(": Validator misbehaved and is in jail, i.e. outside of the validator set.")]),e._v(" "),a("ul",[a("li",[e._v("If the jailing is due to being offline for too long (i.e. having missed more than "),a("code",[e._v("95%")]),e._v(" out of the last "),a("code",[e._v("10,000")]),e._v(" blocks), the validator can send an "),a("code",[e._v("unjail")]),e._v(" transaction in order to re-enter the validator set.")]),e._v(" "),a("li",[e._v("If the jailing is due to double signing, the validator cannot unjail.")])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("unbonded")]),e._v(": Validator is not in the active set, and therefore not signing blocks. The validator cannot be slashed and does not earn any reward. It is still possible to delegate ATOM to an unbonded validator. Undelegating from an "),a("code",[e._v("unbonded")]),e._v(" validator is immediate, meaning that the tokens are not subject to the unbonding period.")])])]),e._v(" "),a("h3",{attrs:{id:"what-is-self-delegation-how-can-i-increase-my-self-delegation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-self-delegation-how-can-i-increase-my-self-delegation"}},[e._v("#")]),e._v(" What is self-delegation? How can I increase my self-delegation?")]),e._v(" "),a("p",[e._v("Self-delegation is a delegation of ATOM from a validator to themselves. The delegated amount can be increased by sending a "),a("code",[e._v("delegate")]),e._v(" transaction from your validator's "),a("code",[e._v("application")]),e._v(" application key.")]),e._v(" "),a("h3",{attrs:{id:"what-is-validator-bond-how-can-i-increase-my-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-validator-bond-how-can-i-increase-my-validator-bond"}},[e._v("#")]),e._v(" What is validator bond? How can I increase my validator bond?")]),e._v(" "),a("p",[e._v("Validator bond is a delegation of ATOM from a delegator to a validator. Validator operators can validator bond to themselves. The validator bond amount can be increased by sending a "),a("code",[e._v("ValidatorBond")]),e._v(" transaction from any account delegated to your validator. Validator bond is required before a validator can accept delegations from liquid staking providers. As such it forces validators to put “skin in the game” in order to be entrusted with delegations from liquid staking providers. This disincentivizes malicious behavior and enables the validator to negotiate its relationship with liquid staking providers.")]),e._v(" "),a("h3",{attrs:{id:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"}},[e._v("#")]),e._v(" Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?")]),e._v(" "),a("p",[e._v("The minimum is 1 ATOM. But the network is currently secured by much higher values. You can check the minimum required ATOM to become part of the active validator set on the "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan validator page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"how-do-delegators-choose-their-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-do-delegators-choose-their-validators"}},[e._v("#")]),e._v(" How do delegators choose their validators?")]),e._v(" "),a("p",[e._v("Delegators are free to choose validators according to their own subjective criteria. Selection criteria includes:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Amount of validator-bonded ATOM:")]),e._v(" Number of ATOM a validator validator-bonded to themselves. A validator with a higher amount of self-delegated ATOM indicates that the validator is sharing the risk and consequences for their actions, or has enough goodwill from the community so that others post validator bond on the validator's behalf.")]),e._v(" "),a("li",[a("strong",[e._v("Amount of delegated ATOM:")]),e._v(" Total number of ATOM delegated to a validator. A high voting power shows that the community trusts this validator. Larger validators also decrease the decentralization of the network, so delegators are suggested to consider delegating to smaller validators.")]),e._v(" "),a("li",[a("strong",[e._v("Commission rate:")]),e._v(" Commission applied on revenue by validators before the revenue is distributed to their delegators.")]),e._v(" "),a("li",[a("strong",[e._v("Track record:")]),e._v(" Delegators review the track record of the validators they plan to delegate to. This track record includes past votes on proposals and historical average uptime.")]),e._v(" "),a("li",[a("strong",[e._v("Community contributions:")]),e._v(" Another (more subjective) criteria is the work that validators have contributed to the community, such as educational content, participation in the community channels, contributions to open source software, etc.")])]),e._v(" "),a("p",[e._v("Apart from these criteria, validators send a "),a("code",[e._v("create-validator")]),e._v(" transaction to signal a website address to complete their resume. Validators must build reputation one way or another to attract delegators. For example, a good practice for validators is to have a third party audit their setup. Note though, that the CometBFT team does not approve or conduct any audits themselves. For more information on due diligence, see the "),a("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[e._v("A Delegator’s Guide to Staking"),a("OutboundLink")],1),e._v(" blog post.")]),e._v(" "),a("h2",{attrs:{id:"responsibilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responsibilities"}},[e._v("#")]),e._v(" Responsibilities")]),e._v(" "),a("h3",{attrs:{id:"do-validators-need-to-be-publicly-identified"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#do-validators-need-to-be-publicly-identified"}},[e._v("#")]),e._v(" Do validators need to be publicly identified?")]),e._v(" "),a("p",[e._v("No, they do not. Each delegator can value validators based on their own criteria. Validators are able to register a website address when they nominate themselves so that they can advertise their operation as they see fit. Some delegators prefer a website that clearly displays the team operating the validator and their resume, while other validators might prefer to be anonymous validators with positive track records.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-responsibilities-of-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-responsibilities-of-a-validator"}},[e._v("#")]),e._v(" What are the responsibilities of a validator?")]),e._v(" "),a("p",[e._v("Validators have two main responsibilities:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("Be able to constantly run a correct version of the software:")]),e._v(" Validators must ensure that their servers are always online and their private keys are not compromised.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("Actively participate in governance:")]),e._v(" Validators are required to vote on every proposal.")])])]),e._v(" "),a("p",[e._v("Additionally, validators are expected to be active members of the community. Validators must always be up-to-date with the current state of the ecosystem so that they can easily adapt to any change.")]),e._v(" "),a("h3",{attrs:{id:"what-does-participate-in-governance-entail"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-does-participate-in-governance-entail"}},[e._v("#")]),e._v(" What does 'participate in governance' entail?")]),e._v(" "),a("p",[e._v("Validators and delegators on the Cosmos Hub can vote on proposals to change operational parameters (such as the block gas limit), coordinate upgrades, or make a decision on any given matter.")]),e._v(" "),a("p",[e._v("Validators play a special role in the governance system. As pillars of the system, validators are required to vote on every proposal. It is especially important since delegators who do not vote inherit the vote of their validator.")]),e._v(" "),a("h3",{attrs:{id:"what-does-staking-imply"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-does-staking-imply"}},[e._v("#")]),e._v(" What does staking imply?")]),e._v(" "),a("p",[e._v("Staking ATOM can be thought of as a safety deposit on validation activities. When a validator or a delegator wants to retrieve part or all of their deposit, they send an "),a("code",[e._v("unbonding")]),e._v(" transaction. Then, ATOM undergoes a "),a("strong",[e._v("3-week unbonding period")]),e._v(" during which they are liable to being slashed for potential misbehaviors committed by the validator before the unbonding process started.")]),e._v(" "),a("p",[e._v("Validators, and by association delegators, receive block rewards, fees, and have the right to participate in governance. If a validator misbehaves, a certain portion of their total stake is slashed. This means that every delegator that bonded ATOM to this validator gets penalized in proportion to their bonded stake. Delegators are therefore incentivized to delegate to validators that they anticipate will function safely.")]),e._v(" "),a("h3",{attrs:{id:"can-a-validator-run-away-with-their-delegators-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-a-validator-run-away-with-their-delegators-atom"}},[e._v("#")]),e._v(" Can a validator run away with their delegators' ATOM?")]),e._v(" "),a("p",[e._v("By delegating to a validator, a user delegates voting power. The more voting power a validator have, the more weight they have in the consensus and governance processes. This does not mean that the validator has custody of their delegators' ATOM. "),a("strong",[e._v("A validator cannot run away with its delegator's funds")]),e._v(".")]),e._v(" "),a("p",[e._v("Even though delegated funds cannot be stolen by their validators, delegators' tokens can still be slashed by a small percentage if their validator suffers a "),a("a",{attrs:{href:"#what-are-the-slashing-conditions"}},[e._v("slashing event")]),e._v(", which is why we encourage due diligence when "),a("a",{attrs:{href:"#how-do-delegators-choose-their-validators"}},[e._v("selecting a validator")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"}},[e._v("#")]),e._v(" How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?")]),e._v(" "),a("p",[e._v("The validator that is selected to propose the next block is called the proposer. Each proposer is selected deterministically. The frequency of being chosen is proportional to the voting power (i.e. amount of bonded ATOM) of the validator. For example, if the total bonded stake across all validators is 100 ATOM and a validator's total stake is 10 ATOM, then this validator is the proposer ~10% of the blocks.")]),e._v(" "),a("h3",{attrs:{id:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"}},[e._v("#")]),e._v(" Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?")]),e._v(" "),a("p",[e._v("This depends, currently no validators are required to validate other blockchains. But when the first version of "),a("a",{attrs:{href:"https://blog.cosmos.network/interchain-security-is-coming-to-the-cosmos-hub-f144c45fb035",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Security"),a("OutboundLink")],1),e._v(" is launched on the Cosmos Hub, delegators can vote to have certain blockchains secured via Interchain Security. In those cases, validators are required to validate on these chains as well.")]),e._v(" "),a("h3",{attrs:{id:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"}},[e._v("#")]),e._v(" How can a validator safely quit validating on the Cosmos Hub?")]),e._v(" "),a("p",[e._v("If a validator simply shuts down their node, this would result in the validator and their delegators getting slashed for being offline. The only way to safely exit a validator node running on the Cosmos Hub is by unbonding the validator with the "),a("code",[e._v("UnbondValidator")]),e._v(" message. As a result, the validator gets jailed and kicked out of the active set of validators, without getting slashed. They can then proceed to shut down their node without risking their tokens.")]),e._v(" "),a("p",[e._v("It's highly advised to inform your delegators when doing this, as they will still be bonded to your validator after it got jailed. They will need to manually unbond and they might not have been made aware of this via their preferred wallet application.")]),e._v(" "),a("h2",{attrs:{id:"incentives"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incentives"}},[e._v("#")]),e._v(" Incentives")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-incentive-to-stake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-incentive-to-stake"}},[e._v("#")]),e._v(" What is the incentive to stake?")]),e._v(" "),a("p",[e._v("Each member of a validator's staking pool earns different types of revenue:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block rewards:")]),e._v(" Native tokens of applications (e.g. ATOM on the Cosmos Hub) run by validators are inflated to produce block provisions. These provisions exist to incentivize ATOM holders to bond their stake. Non-bonded ATOM are diluted over time.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees:")]),e._v(" The Cosmos Hub maintains an allow list of tokens that are accepted as fee payment. The initial fee token is the "),a("code",[e._v("atom")]),e._v(".")])]),e._v(" "),a("p",[e._v("This total revenue is divided among validators' staking pools according to each validator's weight. Then, within each validator's staking pool the revenue is divided among delegators in proportion to each delegator's stake. A commission on delegators' revenue is applied by the validator before it is distributed.")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator-commission"}},[e._v("#")]),e._v(" What is a validator commission?")]),e._v(" "),a("p",[e._v("Revenue received by a validator's pool is split between the validator and their delegators. The validator can apply a commission on the part of the revenue that goes to their delegators. This commission is set as a percentage. Each validator is free to set their initial commission, maximum daily commission change rate, and maximum commission. The Cosmos Hub enforces the parameter that each validator sets. The maximum commission rate is fixed and cannot be changed. However, the commission rate itself can be changed after the validator is created as long as it does not exceed the maximum commission.")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-incentive-to-run-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-incentive-to-run-a-validator"}},[e._v("#")]),e._v(" What is the incentive to run a validator?")]),e._v(" "),a("p",[e._v("Validators earn proportionally more revenue than their delegators because of the commission they take on the staking rewards from their delegators.")]),e._v(" "),a("p",[e._v("Validators also play a major role in governance. If a delegator does not vote, they inherit the vote from their validator. This voting inheritance gives validators a major responsibility in the ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"how-are-block-rewards-distributed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-are-block-rewards-distributed"}},[e._v("#")]),e._v(" How are block rewards distributed?")]),e._v(" "),a("p",[e._v("Block rewards are distributed proportionally to all validators relative to their voting power. This means that even though each validator gains ATOM with each reward, all validators maintain equal weight over time.")]),e._v(" "),a("p",[e._v("For example, 10 validators have equal voting power and a commission rate of 1%. For this example, the reward for a block is 1000 ATOM and each validator has 20% of self-bonded ATOM. These tokens do not go directly to the proposer. Instead, the tokens are evenly spread among validators. So now each validator's pool has 100 ATOM. These 100 ATOM are distributed according to each participant's stake:")]),e._v(" "),a("ul",[a("li",[e._v("Commission: "),a("code",[e._v("100*80%*1% = 0.8 ATOM")])]),e._v(" "),a("li",[e._v("Validator gets: "),a("code",[e._v("100\\*20% + Commission = 20.8 ATOM")])]),e._v(" "),a("li",[e._v("All delegators get: "),a("code",[e._v("100\\*80% - Commission = 79.2 ATOM")])])]),e._v(" "),a("p",[e._v("Then, each delegator can claim their part of the 79.2 ATOM in proportion to their stake in the validator's staking pool.")]),e._v(" "),a("h3",{attrs:{id:"how-are-fees-distributed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-are-fees-distributed"}},[e._v("#")]),e._v(" How are fees distributed?")]),e._v(" "),a("p",[e._v("Fees are similarly distributed with the exception that the block proposer can get a bonus on the fees of the block they propose if the proposer includes more than the strict minimum of required precommits.")]),e._v(" "),a("p",[e._v("When a validator is selected to propose the next block, the validator must include at least 2/3 precommits of the previous block. However, an incentive to include more than 2/3 precommits is a bonus. The bonus is linear: it ranges from 1% if the proposer includes 2/3rd precommits (minimum for the block to be valid) to 5% if the proposer includes 100% precommits. Of course the proposer must not wait too long or other validators may timeout and move on to the next proposer. As such, validators have to find a balance between wait-time to get the most signatures and risk of losing out on proposing the next block. This mechanism aims to incentivize non-empty block proposals, better networking between validators, and mitigates censorship.")]),e._v(" "),a("p",[e._v("For a concrete example to illustrate the aforementioned concept, there are 10 validators with equal stake. Each validator applies a 1% commission rate and has 20% of self-delegated ATOM. Now comes a successful block that collects a total of 1025.51020408 ATOM in fees.")]),e._v(" "),a("p",[e._v("First, a 2% tax is applied. The corresponding ATOM go to the reserve pool. The reserve pool's funds can be allocated through governance to fund bounties and upgrades.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("2% * 1025.51020408 = 20.51020408")]),e._v(" ATOM go to the reserve pool.")])]),e._v(" "),a("p",[e._v("1005 ATOM now remain. For this example, the proposer included 100% of the signatures in its block so the proposer obtains the full bonus of 5%.")]),e._v(" "),a("p",[e._v("To solve this simple equation to find the reward R for each validator:")]),e._v(" "),a("p",[a("code",[e._v("9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),e._v(" "),a("ul",[a("li",[e._v("For the proposer validator:\n"),a("ul",[a("li",[e._v("The pool obtains "),a("code",[e._v("R + R * 5%")]),e._v(": 105 ATOM")]),e._v(" "),a("li",[e._v("Commission: "),a("code",[e._v("105 * 80% * 1%")]),e._v(" = 0.84 ATOM")]),e._v(" "),a("li",[e._v("Validator's reward: "),a("code",[e._v("105 * 20% + Commission")]),e._v(" = 21.84 ATOM")]),e._v(" "),a("li",[e._v("Delegators' rewards: "),a("code",[e._v("105 * 80% - Commission")]),e._v(" = 83.16 ATOM (each delegator is able to claim its portion of these rewards in proportion to their stake)")])])]),e._v(" "),a("li",[e._v("For each non-proposer validator:\n"),a("ul",[a("li",[e._v("The pool obtains R: 100 ATOM")]),e._v(" "),a("li",[e._v("Commission: "),a("code",[e._v("100 * 80% * 1%")]),e._v(" = 0.8 ATOM")]),e._v(" "),a("li",[e._v("Validator's reward: "),a("code",[e._v("100 * 20% + Commission")]),e._v(" = 20.8 ATOM")]),e._v(" "),a("li",[e._v("Delegators' rewards: "),a("code",[e._v("100 * 80% - Commission")]),e._v(" = 79.2 ATOM (each delegator is able to claim their portion of these rewards in proportion to their stake)")])])])]),e._v(" "),a("h3",{attrs:{id:"what-are-the-slashing-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-slashing-conditions"}},[e._v("#")]),e._v(" What are the slashing conditions?")]),e._v(" "),a("p",[e._v("If a validator misbehaves, their delegated stake is partially slashed. Two faults can result in slashing of funds for a validator and their delegators:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on chain A that a validator signed two blocks at the same height on chain A and chain B, and if chain A and chain B share a common ancestor, then this validator gets slashed by 5% on chain A.")]),e._v(" "),a("li",[a("strong",[e._v("Downtime:")]),e._v(" If a validator misses more than "),a("code",[e._v("95%")]),e._v(" of the last "),a("code",[e._v("10,000")]),e._v(" blocks (roughly ~19 hours), they are slashed by 0.01%.")])]),e._v(" "),a("h3",{attrs:{id:"are-validators-required-to-self-delegate-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validators-required-to-self-delegate-atom"}},[e._v("#")]),e._v(" Are validators required to self-delegate ATOM?")]),e._v(" "),a("p",[e._v("No, they do not need to self-delegate. Even though there is no obligation for validators to self-delegate, delegators may want their validator to have self-delegated ATOM in their staking pool. In other words, validators share the risk.")]),e._v(" "),a("p",[e._v("Note however that it's possible that some validators decide to self-delegate via a different address for security reasons.")]),e._v(" "),a("h3",{attrs:{id:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"}},[e._v("#")]),e._v(" How to prevent concentration of stake in the hands of a few top validators?")]),e._v(" "),a("p",[e._v("The community is expected to behave in a smart and self-preserving way. When a mining pool in Bitcoin gets too much mining power the community usually stops contributing to that pool. The Cosmos Hub relies on the same effect. Additionally, when delegaters switch to another validator, they are not subject to the unbonding period, which removes any barrier to quickly redelegating tokens in service of improving decentralization.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking-module"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking-module"}},[e._v("#")]),e._v(" Liquid Staking Module")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-liquid-staking-module"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-liquid-staking-module"}},[e._v("#")]),e._v(" What is the liquid staking module?")]),e._v(" "),a("p",[e._v("The Liquid Staking Module is a set of safety features that mitigate liquid staking risks by:")]),e._v(" "),a("ul",[a("li",[e._v("limiting the total amount of tokens that can be liquid staked to X% of all staked tokens.")]),e._v(" "),a("li",[e._v("introducing a requirement that validators validator-bond tokens to be eligible for delegations from liquid staking providers.")]),e._v(" "),a("li",[e._v("limiting the portion of validators's shares that can be liquid staked to X% of their total shares.")])]),e._v(" "),a("p",[e._v("The Liquid Staking Module also improves liquid staking UX by making delegations transferable under limited scenarios, to allow delegators to convert their delegations into liquid staking positions without having to wait the unbonding period.")]),e._v(" "),a("p",[e._v("For a detailed and technical description, please see ADR-061 in the Cosmos SDK or the Liquid Staking Module Cosmos Hub "),a("a",{attrs:{href:"https://forum.cosmos.network/t/signaling-proposal-draft-add-liquid-staking-module-to-the-cosmos-hub/10368",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum post"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"who-can-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#who-can-validator-bond"}},[e._v("#")]),e._v(" Who can validator bond?")]),e._v(" "),a("p",[e._v("The validator themselves, but also any other address delegated to the validator.")]),e._v(" "),a("h3",{attrs:{id:"how-can-i-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-validator-bond"}},[e._v("#")]),e._v(" How can I validator bond?")]),e._v(" "),a("p",[e._v("Once delegated to a validator, a delegator (or validator operator) can convert their delegation to a validator into Validator Bond by signing a ValidatorBond message.")]),e._v(" "),a("p",[e._v("The ValidatorBond message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyB2YWxpZGF0b3ItYm9uZCBjb3Ntb3N2YWxvcGVyMTNoNXhkeGhzZGF1Z3dkcmt1c2Y4bGtndTQwNmg4dDYyamtxdjNoICZsdDtkZWxlZ2F0b3ImZ3Q7IC0tZnJvbSBteWtleSAgCg=="}}),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("To convert Validator Bond back into a standard delegation, simply unbond the shares.")]),e._v(" "),a("h3",{attrs:{id:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"}},[e._v("#")]),e._v(" How does a delegator or validator mark their delegation as a validator bond?")]),e._v(" "),a("p",[e._v("Once delegated to a validator, sign a "),a("code",[e._v("ValidatorBond")]),e._v(" message.")]),e._v(" "),a("h3",{attrs:{id:"are-validator-bonds-subject-to-additional-slashing-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validator-bonds-subject-to-additional-slashing-conditions"}},[e._v("#")]),e._v(" Are validator bonds subject to additional slashing conditions?")]),e._v(" "),a("p",[e._v("No, in the event of a slash, a validator bond is slashed at the same rate as a regular bond.")]),e._v(" "),a("h3",{attrs:{id:"can-i-unbond-my-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-i-unbond-my-validator-bond"}},[e._v("#")]),e._v(" Can I unbond my validator bond?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("If liquid staking providers undelegate 250 ATOM from Validator V, Validator V can now remove 1 ATOM of validator bond.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"}},[e._v("#")]),e._v(" Can I validator bond some of my tokens and delegate the remaining portion normally?")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("ValidatorBond")]),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"technical-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#technical-requirements"}},[e._v("#")]),e._v(" Technical Requirements")]),e._v(" "),a("h3",{attrs:{id:"what-are-hardware-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-hardware-requirements"}},[e._v("#")]),e._v(" What are hardware requirements?")]),e._v(" "),a("p",[e._v("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 "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("Joining Mainnet documentation")]),e._v(".")],1),e._v(" "),a("p",[e._v("Validators are recommended to set up "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("sentry nodes"),a("OutboundLink")],1),e._v(" to protect your validator node from DDoS attacks.")]),e._v(" "),a("h3",{attrs:{id:"what-are-software-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-software-requirements"}},[e._v("#")]),e._v(" What are software requirements?")]),e._v(" "),a("p",[e._v("In addition to running a Cosmos Hub node, validators are expected to implement monitoring, alerting, and management solutions. There are "),a("a",{attrs:{href:"https://medium.com/solar-labs-team/cosmos-how-to-monitoring-your-validator-892a46298722",target:"_blank",rel:"noopener noreferrer"}},[e._v("several tools"),a("OutboundLink")],1),e._v(" that you can use.")]),e._v(" "),a("h3",{attrs:{id:"what-are-bandwidth-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-bandwidth-requirements"}},[e._v("#")]),e._v(" What are bandwidth requirements?")]),e._v(" "),a("p",[e._v("The Cosmos network has the capacity for very high throughput relative to chains like Ethereum or Bitcoin.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("Ultimately, as the network becomes more heavily used, multigigabyte per day bandwidth is very realistic.")]),e._v(" "),a("h3",{attrs:{id:"how-to-handle-key-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-handle-key-management"}},[e._v("#")]),e._v(" How to handle key management?")]),e._v(" "),a("p",[e._v("Validators are expected to run an HSM that supports ed25519 keys. Here are potential options:")]),e._v(" "),a("ul",[a("li",[e._v("YubiHSM 2")]),e._v(" "),a("li",[e._v("Ledger Nano S")]),e._v(" "),a("li",[e._v("Ledger BOLOS SGX enclave")]),e._v(" "),a("li",[e._v("Thales nShield support")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"what-can-validators-expect-in-terms-of-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-can-validators-expect-in-terms-of-operations"}},[e._v("#")]),e._v(" What can validators expect in terms of operations?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-maintenance-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-maintenance-requirements"}},[e._v("#")]),e._v(" What are the maintenance requirements?")]),e._v(" "),a("p",[e._v("Validators are expected to perform regular software updates to accommodate chain upgrades and bug fixes. It is suggested to consider using "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" to partially automate this process.")]),e._v(" "),a("p",[e._v("During an chain upgrade, progress is discussed in a private channel in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developer Discord"),a("OutboundLink")],1),e._v(". If your validator is in the active set we encourage you to request access to that channel by contacting a moderator.")]),e._v(" "),a("h3",{attrs:{id:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[e._v("#")]),e._v(" How can validators protect themselves from denial-of-service attacks?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology using a sentry node architecture.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet-based 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.")]),e._v(" "),a("p",[e._v("For more sentry node details, see the "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT Documentation"),a("OutboundLink")],1),e._v(" or the "),a("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sentry Node Architecture Overview"),a("OutboundLink")],1),e._v(" on the forum.")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{487:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-faq"}},[e._v("#")]),e._v(" Validator FAQ")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Disclaimer")]),e._v(" "),a("p",[e._v("This is work in progress. Mechanisms and values are susceptible to change.")])]),e._v(" "),a("h2",{attrs:{id:"general-concepts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-concepts"}},[e._v("#")]),e._v(" General Concepts")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-cosmos-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-cosmos-validator"}},[e._v("#")]),e._v(" What is a Cosmos validator?")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/getting-started/what-is-gaia.html"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators to secure the network. The role of validators is to run a full node and participate in consensus by broadcasting votes that contain cryptographic signatures signed by the validator's private key. Validators commit new blocks in the blockchain and receive revenue in exchange for their work. Validators must also participate in governance by voting on proposals. Validators are weighted according to their total stake.")],1),e._v(" "),a("h3",{attrs:{id:"what-is-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-staking"}},[e._v("#")]),e._v(" What is staking?")]),e._v(" "),a("p",[e._v("The Cosmos Hub is a public Proof-Of-Stake (PoS) blockchain, meaning that the weight of validators is determined by the amount of staking tokens (ATOM) bonded as collateral. These ATOM tokens can be self-delegated directly by the validator or delegated to the validator by other ATOM holders.")]),e._v(" "),a("p",[e._v("Any user in the system can declare their intention to become a validator by sending a "),a("code",[e._v("create-validator")]),e._v(" transaction to become validator candidates.")]),e._v(" "),a("p",[e._v("The weight (i.e. voting power) of a validator determines whether they are an active validator. The active validator set is limited to "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("an amount"),a("OutboundLink")],1),e._v(" that changes over time.")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[e._v("#")]),e._v(" What is a full node?")]),e._v(" "),a("p",[e._v("A full node is a server running a chain's "),a("em",[e._v("binary")]),e._v(" (its software) that fully validates transactions and blocks of a blockchain and keeps a full record of all historic activity. A full node is distinct from a pruned node that processes only block headers and a small subset of transactions. Running a full node requires more resources than a pruned node. Validators can decide to run either a full node or a pruned node, but they need to make sure they retain enough blocks to be able to validate new blocks.")]),e._v(" "),a("p",[e._v("Of course, it is possible and encouraged for users to run full nodes even if they do not plan to be validators.")]),e._v(" "),a("p",[e._v("You can find more details about the requirements in the "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("Joining Mainnet Tutorial")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("Delegators are ATOM holders who cannot, or do not want to, run a validator themselves. ATOM holders can delegate ATOM to a validator and obtain a part of their revenue in exchange. For details on how revenue is distributed, see "),a("a",{attrs:{href:"#what-is-the-incentive-to-stake?"}},[e._v("What is the incentive to stake?")]),e._v(" and "),a("a",{attrs:{href:"#what-are-validators-commission?"}},[e._v("What are validators commission?")]),e._v(" in this document.")]),e._v(" "),a("p",[e._v("Because delegators share revenue with their validators, they also share risks. If a validator misbehaves, each of their delegators are partially slashed in proportion to their delegated stake. This penalty is one of the reasons why delegators must perform due diligence on validators before delegating. Spreading their stake over multiple validators is another layer of protection.")]),e._v(" "),a("p",[e._v("Delegators play a critical role in the system, as they are responsible for choosing validators. Being a delegator is not a passive role. Delegators must actively monitor the actions of their validators and participate in governance. For details on being a delegator, read the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/delegators/delegator-faq.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delegator FAQ"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"becoming-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#becoming-a-validator"}},[e._v("#")]),e._v(" Becoming a Validator")]),e._v(" "),a("h3",{attrs:{id:"how-to-become-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-become-a-validator"}},[e._v("#")]),e._v(" How to become a validator?")]),e._v(" "),a("p",[e._v("Any participant in the network can signal that they want to become a validator by sending a "),a("code",[e._v("create-validator")]),e._v(" transaction, where they must fill out the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's "),a("code",[e._v("PubKey")]),e._v(":")]),e._v(" The private key associated with this Tendermint/CometBFT "),a("code",[e._v("PubKey")]),e._v(" is used to sign "),a("em",[e._v("prevotes")]),e._v(" and "),a("em",[e._v("precommits")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Validator's Address:")]),e._v(" Application level address that is used to publicly identify your validator. The private key associated with this address is used to delegate, unbond, claim rewards, and participate in governance.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's name (moniker)")])]),e._v(" "),a("li",[a("strong",[e._v("Validator's website (Optional)")])]),e._v(" "),a("li",[a("strong",[e._v("Validator's description (Optional)")])]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on block rewards and fees charged to delegators.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate that this validator can charge. This parameter is fixed and cannot be changed after the "),a("code",[e._v("create-validator")]),e._v(" transaction is processed.")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator commission. This parameter is fixed cannot be changed after the "),a("code",[e._v("create-validator")]),e._v(" transaction is processed.")])]),e._v(" "),a("p",[e._v("After a validator is created, ATOM holders can delegate ATOM to them, effectively adding stake to the validator's pool. The total stake of an address is the combination of ATOM bonded by delegators and ATOM self-bonded by the validator.")]),e._v(" "),a("p",[e._v("From all validator candidates that signaled themselves, the 180 validators with the most total stake are the designated "),a("strong",[e._v("validators")]),e._v(". If a validator's total stake falls below the top 180, then that validator loses its validator privileges. The validator cannot participate in consensus or generate rewards until the stake is high enough to be in the top 180. Over time, the maximum number of validators may be increased via on-chain governance proposal.")]),e._v(" "),a("h2",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[e._v("#")]),e._v(" Testnet")]),e._v(" "),a("h3",{attrs:{id:"how-can-i-join-the-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-join-the-testnet"}},[e._v("#")]),e._v(" How can I join the testnet?")]),e._v(" "),a("p",[e._v("The testnet is a great environment to test your validator setup before launch.")]),e._v(" "),a("p",[e._v("Testnet participation is a great way to signal to the community that you are ready and able to operate a validator. For details, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[e._v("Join the Public Testnet")]),e._v(" documentation.")],1),e._v(" "),a("h2",{attrs:{id:"additional-concepts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-concepts"}},[e._v("#")]),e._v(" Additional Concepts")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-different-types-of-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-different-types-of-keys"}},[e._v("#")]),e._v(" What are the different types of keys?")]),e._v(" "),a("p",[e._v("There are two types of keys:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Tendermint/CometBFT key")]),e._v(": A unique key that is used to sign consensus votes.\n"),a("ul",[a("li",[e._v("It is associated with a public key "),a("code",[e._v("cosmosvalconspub")]),e._v(" (To get this value, run "),a("code",[e._v("gaiad tendermint show-validator")]),e._v(")")]),e._v(" "),a("li",[e._v("It is generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")])])]),e._v(" "),a("li",[a("strong",[e._v("Application key")]),e._v(": This key is created from the "),a("code",[e._v("gaiad")]),e._v(" binary and is used to sign transactions. Application keys are associated with a public key that is prefixed by "),a("code",[e._v("cosmospub")]),e._v(" and an address that is prefixed by "),a("code",[e._v("cosmos")]),e._v(".")])]),e._v(" "),a("p",[e._v("The Tendermint/CometBFT key and the application key are derived from account keys that are generated by the "),a("code",[e._v("gaiad keys add")]),e._v(" command.")]),e._v(" "),a("p",[a("strong",[e._v("Note:")]),e._v(" A validator's operator key is directly tied to an application key and uses the "),a("code",[e._v("cosmosvaloper")]),e._v(" and "),a("code",[e._v("cosmosvaloperpub")]),e._v(" prefixes that are reserved solely for this purpose.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-different-states-a-validator-can-be-in"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-different-states-a-validator-can-be-in"}},[e._v("#")]),e._v(" What are the different states a validator can be in?")]),e._v(" "),a("p",[e._v("After a validator is created with a "),a("code",[e._v("create-validator")]),e._v(" transaction, the validator is in one of three states:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("in validator set")]),e._v(": Validator is in the active set and participates in consensus. The validator is earning rewards and can be slashed for misbehavior.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("jailed")]),e._v(": Validator misbehaved and is in jail, i.e. outside of the validator set.")]),e._v(" "),a("ul",[a("li",[e._v("If the jailing is due to being offline for too long (i.e. having missed more than "),a("code",[e._v("95%")]),e._v(" out of the last "),a("code",[e._v("10,000")]),e._v(" blocks), the validator can send an "),a("code",[e._v("unjail")]),e._v(" transaction in order to re-enter the validator set.")]),e._v(" "),a("li",[e._v("If the jailing is due to double signing, the validator cannot unjail.")])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("unbonded")]),e._v(": Validator is not in the active set, and therefore not signing blocks. The validator cannot be slashed and does not earn any reward. It is still possible to delegate ATOM to an unbonded validator. Undelegating from an "),a("code",[e._v("unbonded")]),e._v(" validator is immediate, meaning that the tokens are not subject to the unbonding period.")])])]),e._v(" "),a("h3",{attrs:{id:"what-is-self-delegation-how-can-i-increase-my-self-delegation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-self-delegation-how-can-i-increase-my-self-delegation"}},[e._v("#")]),e._v(" What is self-delegation? How can I increase my self-delegation?")]),e._v(" "),a("p",[e._v("Self-delegation is a delegation of ATOM from a validator to themselves. The delegated amount can be increased by sending a "),a("code",[e._v("delegate")]),e._v(" transaction from your validator's "),a("code",[e._v("application")]),e._v(" application key.")]),e._v(" "),a("h3",{attrs:{id:"what-is-validator-bond-how-can-i-increase-my-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-validator-bond-how-can-i-increase-my-validator-bond"}},[e._v("#")]),e._v(" What is validator bond? How can I increase my validator bond?")]),e._v(" "),a("p",[e._v("Validator bond is a delegation of ATOM from a delegator to a validator. Validator operators can validator bond to themselves. The validator bond amount can be increased by sending a "),a("code",[e._v("ValidatorBond")]),e._v(" transaction from any account delegated to your validator. Validator bond is required before a validator can accept delegations from liquid staking providers. As such it forces validators to put “skin in the game” in order to be entrusted with delegations from liquid staking providers. This disincentivizes malicious behavior and enables the validator to negotiate its relationship with liquid staking providers.")]),e._v(" "),a("h3",{attrs:{id:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"}},[e._v("#")]),e._v(" Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?")]),e._v(" "),a("p",[e._v("The minimum is 1 ATOM. But the network is currently secured by much higher values. You can check the minimum required ATOM to become part of the active validator set on the "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan validator page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"how-do-delegators-choose-their-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-do-delegators-choose-their-validators"}},[e._v("#")]),e._v(" How do delegators choose their validators?")]),e._v(" "),a("p",[e._v("Delegators are free to choose validators according to their own subjective criteria. Selection criteria includes:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Amount of validator-bonded ATOM:")]),e._v(" Number of ATOM a validator validator-bonded to themselves. A validator with a higher amount of self-delegated ATOM indicates that the validator is sharing the risk and consequences for their actions, or has enough goodwill from the community so that others post validator bond on the validator's behalf.")]),e._v(" "),a("li",[a("strong",[e._v("Amount of delegated ATOM:")]),e._v(" Total number of ATOM delegated to a validator. A high voting power shows that the community trusts this validator. Larger validators also decrease the decentralization of the network, so delegators are suggested to consider delegating to smaller validators.")]),e._v(" "),a("li",[a("strong",[e._v("Commission rate:")]),e._v(" Commission applied on revenue by validators before the revenue is distributed to their delegators.")]),e._v(" "),a("li",[a("strong",[e._v("Track record:")]),e._v(" Delegators review the track record of the validators they plan to delegate to. This track record includes past votes on proposals and historical average uptime.")]),e._v(" "),a("li",[a("strong",[e._v("Community contributions:")]),e._v(" Another (more subjective) criteria is the work that validators have contributed to the community, such as educational content, participation in the community channels, contributions to open source software, etc.")])]),e._v(" "),a("p",[e._v("Apart from these criteria, validators send a "),a("code",[e._v("create-validator")]),e._v(" transaction to signal a website address to complete their resume. Validators must build reputation one way or another to attract delegators. For example, a good practice for validators is to have a third party audit their setup. Note though, that the CometBFT team does not approve or conduct any audits themselves. For more information on due diligence, see the "),a("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[e._v("A Delegator’s Guide to Staking"),a("OutboundLink")],1),e._v(" blog post.")]),e._v(" "),a("h2",{attrs:{id:"responsibilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responsibilities"}},[e._v("#")]),e._v(" Responsibilities")]),e._v(" "),a("h3",{attrs:{id:"do-validators-need-to-be-publicly-identified"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#do-validators-need-to-be-publicly-identified"}},[e._v("#")]),e._v(" Do validators need to be publicly identified?")]),e._v(" "),a("p",[e._v("No, they do not. Each delegator can value validators based on their own criteria. Validators are able to register a website address when they nominate themselves so that they can advertise their operation as they see fit. Some delegators prefer a website that clearly displays the team operating the validator and their resume, while other validators might prefer to be anonymous validators with positive track records.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-responsibilities-of-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-responsibilities-of-a-validator"}},[e._v("#")]),e._v(" What are the responsibilities of a validator?")]),e._v(" "),a("p",[e._v("Validators have two main responsibilities:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("Be able to constantly run a correct version of the software:")]),e._v(" Validators must ensure that their servers are always online and their private keys are not compromised.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("Actively participate in governance:")]),e._v(" Validators are required to vote on every proposal.")])])]),e._v(" "),a("p",[e._v("Additionally, validators are expected to be active members of the community. Validators must always be up-to-date with the current state of the ecosystem so that they can easily adapt to any change.")]),e._v(" "),a("h3",{attrs:{id:"what-does-participate-in-governance-entail"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-does-participate-in-governance-entail"}},[e._v("#")]),e._v(" What does 'participate in governance' entail?")]),e._v(" "),a("p",[e._v("Validators and delegators on the Cosmos Hub can vote on proposals to change operational parameters (such as the block gas limit), coordinate upgrades, or make a decision on any given matter.")]),e._v(" "),a("p",[e._v("Validators play a special role in the governance system. As pillars of the system, validators are required to vote on every proposal. It is especially important since delegators who do not vote inherit the vote of their validator.")]),e._v(" "),a("h3",{attrs:{id:"what-does-staking-imply"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-does-staking-imply"}},[e._v("#")]),e._v(" What does staking imply?")]),e._v(" "),a("p",[e._v("Staking ATOM can be thought of as a safety deposit on validation activities. When a validator or a delegator wants to retrieve part or all of their deposit, they send an "),a("code",[e._v("unbonding")]),e._v(" transaction. Then, ATOM undergoes a "),a("strong",[e._v("3-week unbonding period")]),e._v(" during which they are liable to being slashed for potential misbehaviors committed by the validator before the unbonding process started.")]),e._v(" "),a("p",[e._v("Validators, and by association delegators, receive block rewards, fees, and have the right to participate in governance. If a validator misbehaves, a certain portion of their total stake is slashed. This means that every delegator that bonded ATOM to this validator gets penalized in proportion to their bonded stake. Delegators are therefore incentivized to delegate to validators that they anticipate will function safely.")]),e._v(" "),a("h3",{attrs:{id:"can-a-validator-run-away-with-their-delegators-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-a-validator-run-away-with-their-delegators-atom"}},[e._v("#")]),e._v(" Can a validator run away with their delegators' ATOM?")]),e._v(" "),a("p",[e._v("By delegating to a validator, a user delegates voting power. The more voting power a validator have, the more weight they have in the consensus and governance processes. This does not mean that the validator has custody of their delegators' ATOM. "),a("strong",[e._v("A validator cannot run away with its delegator's funds")]),e._v(".")]),e._v(" "),a("p",[e._v("Even though delegated funds cannot be stolen by their validators, delegators' tokens can still be slashed by a small percentage if their validator suffers a "),a("a",{attrs:{href:"#what-are-the-slashing-conditions"}},[e._v("slashing event")]),e._v(", which is why we encourage due diligence when "),a("a",{attrs:{href:"#how-do-delegators-choose-their-validators"}},[e._v("selecting a validator")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"}},[e._v("#")]),e._v(" How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?")]),e._v(" "),a("p",[e._v("The validator that is selected to propose the next block is called the proposer. Each proposer is selected deterministically. The frequency of being chosen is proportional to the voting power (i.e. amount of bonded ATOM) of the validator. For example, if the total bonded stake across all validators is 100 ATOM and a validator's total stake is 10 ATOM, then this validator is the proposer ~10% of the blocks.")]),e._v(" "),a("h3",{attrs:{id:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"}},[e._v("#")]),e._v(" Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?")]),e._v(" "),a("p",[e._v("This depends, currently no validators are required to validate other blockchains. But when the first version of "),a("a",{attrs:{href:"https://blog.cosmos.network/interchain-security-is-coming-to-the-cosmos-hub-f144c45fb035",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Security"),a("OutboundLink")],1),e._v(" is launched on the Cosmos Hub, delegators can vote to have certain blockchains secured via Interchain Security. In those cases, validators are required to validate on these chains as well.")]),e._v(" "),a("h3",{attrs:{id:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"}},[e._v("#")]),e._v(" How can a validator safely quit validating on the Cosmos Hub?")]),e._v(" "),a("p",[e._v("If a validator simply shuts down their node, this would result in the validator and their delegators getting slashed for being offline. The only way to safely exit a validator node running on the Cosmos Hub is by unbonding the validator with the "),a("code",[e._v("UnbondValidator")]),e._v(" message. As a result, the validator gets jailed and kicked out of the active set of validators, without getting slashed. They can then proceed to shut down their node without risking their tokens.")]),e._v(" "),a("p",[e._v("It's highly advised to inform your delegators when doing this, as they will still be bonded to your validator after it got jailed. They will need to manually unbond and they might not have been made aware of this via their preferred wallet application.")]),e._v(" "),a("h2",{attrs:{id:"incentives"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incentives"}},[e._v("#")]),e._v(" Incentives")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-incentive-to-stake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-incentive-to-stake"}},[e._v("#")]),e._v(" What is the incentive to stake?")]),e._v(" "),a("p",[e._v("Each member of a validator's staking pool earns different types of revenue:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block rewards:")]),e._v(" Native tokens of applications (e.g. ATOM on the Cosmos Hub) run by validators are inflated to produce block provisions. These provisions exist to incentivize ATOM holders to bond their stake. Non-bonded ATOM are diluted over time.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees:")]),e._v(" The Cosmos Hub maintains an allow list of tokens that are accepted as fee payment. The initial fee token is the "),a("code",[e._v("atom")]),e._v(".")])]),e._v(" "),a("p",[e._v("This total revenue is divided among validators' staking pools according to each validator's weight. Then, within each validator's staking pool the revenue is divided among delegators in proportion to each delegator's stake. A commission on delegators' revenue is applied by the validator before it is distributed.")]),e._v(" "),a("h3",{attrs:{id:"what-is-a-validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator-commission"}},[e._v("#")]),e._v(" What is a validator commission?")]),e._v(" "),a("p",[e._v("Revenue received by a validator's pool is split between the validator and their delegators. The validator can apply a commission on the part of the revenue that goes to their delegators. This commission is set as a percentage. Each validator is free to set their initial commission, maximum daily commission change rate, and maximum commission. The Cosmos Hub enforces the parameter that each validator sets. The maximum commission rate is fixed and cannot be changed. However, the commission rate itself can be changed after the validator is created as long as it does not exceed the maximum commission.")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-incentive-to-run-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-incentive-to-run-a-validator"}},[e._v("#")]),e._v(" What is the incentive to run a validator?")]),e._v(" "),a("p",[e._v("Validators earn proportionally more revenue than their delegators because of the commission they take on the staking rewards from their delegators.")]),e._v(" "),a("p",[e._v("Validators also play a major role in governance. If a delegator does not vote, they inherit the vote from their validator. This voting inheritance gives validators a major responsibility in the ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"how-are-block-rewards-distributed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-are-block-rewards-distributed"}},[e._v("#")]),e._v(" How are block rewards distributed?")]),e._v(" "),a("p",[e._v("Block rewards are distributed proportionally to all validators relative to their voting power. This means that even though each validator gains ATOM with each reward, all validators maintain equal weight over time.")]),e._v(" "),a("p",[e._v("For example, 10 validators have equal voting power and a commission rate of 1%. For this example, the reward for a block is 1000 ATOM and each validator has 20% of self-bonded ATOM. These tokens do not go directly to the proposer. Instead, the tokens are evenly spread among validators. So now each validator's pool has 100 ATOM. These 100 ATOM are distributed according to each participant's stake:")]),e._v(" "),a("ul",[a("li",[e._v("Commission: "),a("code",[e._v("100*80%*1% = 0.8 ATOM")])]),e._v(" "),a("li",[e._v("Validator gets: "),a("code",[e._v("100\\*20% + Commission = 20.8 ATOM")])]),e._v(" "),a("li",[e._v("All delegators get: "),a("code",[e._v("100\\*80% - Commission = 79.2 ATOM")])])]),e._v(" "),a("p",[e._v("Then, each delegator can claim their part of the 79.2 ATOM in proportion to their stake in the validator's staking pool.")]),e._v(" "),a("h3",{attrs:{id:"how-are-fees-distributed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-are-fees-distributed"}},[e._v("#")]),e._v(" How are fees distributed?")]),e._v(" "),a("p",[e._v("Fees are similarly distributed with the exception that the block proposer can get a bonus on the fees of the block they propose if the proposer includes more than the strict minimum of required precommits.")]),e._v(" "),a("p",[e._v("When a validator is selected to propose the next block, the validator must include at least 2/3 precommits of the previous block. However, an incentive to include more than 2/3 precommits is a bonus. The bonus is linear: it ranges from 1% if the proposer includes 2/3rd precommits (minimum for the block to be valid) to 5% if the proposer includes 100% precommits. Of course the proposer must not wait too long or other validators may timeout and move on to the next proposer. As such, validators have to find a balance between wait-time to get the most signatures and risk of losing out on proposing the next block. This mechanism aims to incentivize non-empty block proposals, better networking between validators, and mitigates censorship.")]),e._v(" "),a("p",[e._v("For a concrete example to illustrate the aforementioned concept, there are 10 validators with equal stake. Each validator applies a 1% commission rate and has 20% of self-delegated ATOM. Now comes a successful block that collects a total of 1025.51020408 ATOM in fees.")]),e._v(" "),a("p",[e._v("First, a 2% tax is applied. The corresponding ATOM go to the reserve pool. The reserve pool's funds can be allocated through governance to fund bounties and upgrades.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("2% * 1025.51020408 = 20.51020408")]),e._v(" ATOM go to the reserve pool.")])]),e._v(" "),a("p",[e._v("1005 ATOM now remain. For this example, the proposer included 100% of the signatures in its block so the proposer obtains the full bonus of 5%.")]),e._v(" "),a("p",[e._v("To solve this simple equation to find the reward R for each validator:")]),e._v(" "),a("p",[a("code",[e._v("9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),e._v(" "),a("ul",[a("li",[e._v("For the proposer validator:\n"),a("ul",[a("li",[e._v("The pool obtains "),a("code",[e._v("R + R * 5%")]),e._v(": 105 ATOM")]),e._v(" "),a("li",[e._v("Commission: "),a("code",[e._v("105 * 80% * 1%")]),e._v(" = 0.84 ATOM")]),e._v(" "),a("li",[e._v("Validator's reward: "),a("code",[e._v("105 * 20% + Commission")]),e._v(" = 21.84 ATOM")]),e._v(" "),a("li",[e._v("Delegators' rewards: "),a("code",[e._v("105 * 80% - Commission")]),e._v(" = 83.16 ATOM (each delegator is able to claim its portion of these rewards in proportion to their stake)")])])]),e._v(" "),a("li",[e._v("For each non-proposer validator:\n"),a("ul",[a("li",[e._v("The pool obtains R: 100 ATOM")]),e._v(" "),a("li",[e._v("Commission: "),a("code",[e._v("100 * 80% * 1%")]),e._v(" = 0.8 ATOM")]),e._v(" "),a("li",[e._v("Validator's reward: "),a("code",[e._v("100 * 20% + Commission")]),e._v(" = 20.8 ATOM")]),e._v(" "),a("li",[e._v("Delegators' rewards: "),a("code",[e._v("100 * 80% - Commission")]),e._v(" = 79.2 ATOM (each delegator is able to claim their portion of these rewards in proportion to their stake)")])])])]),e._v(" "),a("h3",{attrs:{id:"what-are-the-slashing-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-slashing-conditions"}},[e._v("#")]),e._v(" What are the slashing conditions?")]),e._v(" "),a("p",[e._v("If a validator misbehaves, their delegated stake is partially slashed. Two faults can result in slashing of funds for a validator and their delegators:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on chain A that a validator signed two blocks at the same height on chain A and chain B, and if chain A and chain B share a common ancestor, then this validator gets slashed by 5% on chain A.")]),e._v(" "),a("li",[a("strong",[e._v("Downtime:")]),e._v(" If a validator misses more than "),a("code",[e._v("95%")]),e._v(" of the last "),a("code",[e._v("10,000")]),e._v(" blocks (roughly ~19 hours), they are slashed by 0.01%.")])]),e._v(" "),a("h3",{attrs:{id:"are-validators-required-to-self-delegate-atom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validators-required-to-self-delegate-atom"}},[e._v("#")]),e._v(" Are validators required to self-delegate ATOM?")]),e._v(" "),a("p",[e._v("No, they do not need to self-delegate. Even though there is no obligation for validators to self-delegate, delegators may want their validator to have self-delegated ATOM in their staking pool. In other words, validators share the risk.")]),e._v(" "),a("p",[e._v("Note however that it's possible that some validators decide to self-delegate via a different address for security reasons.")]),e._v(" "),a("h3",{attrs:{id:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"}},[e._v("#")]),e._v(" How to prevent concentration of stake in the hands of a few top validators?")]),e._v(" "),a("p",[e._v("The community is expected to behave in a smart and self-preserving way. When a mining pool in Bitcoin gets too much mining power the community usually stops contributing to that pool. The Cosmos Hub relies on the same effect. Additionally, when delegaters switch to another validator, they are not subject to the unbonding period, which removes any barrier to quickly redelegating tokens in service of improving decentralization.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking-module"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking-module"}},[e._v("#")]),e._v(" Liquid Staking Module")]),e._v(" "),a("h3",{attrs:{id:"what-is-the-liquid-staking-module"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-liquid-staking-module"}},[e._v("#")]),e._v(" What is the liquid staking module?")]),e._v(" "),a("p",[e._v("The Liquid Staking Module is a set of safety features that mitigate liquid staking risks by:")]),e._v(" "),a("ul",[a("li",[e._v("limiting the total amount of tokens that can be liquid staked to X% of all staked tokens.")]),e._v(" "),a("li",[e._v("introducing a requirement that validators validator-bond tokens to be eligible for delegations from liquid staking providers.")]),e._v(" "),a("li",[e._v("limiting the portion of validators's shares that can be liquid staked to X% of their total shares.")])]),e._v(" "),a("p",[e._v("The Liquid Staking Module also improves liquid staking UX by making delegations transferable under limited scenarios, to allow delegators to convert their delegations into liquid staking positions without having to wait the unbonding period.")]),e._v(" "),a("p",[e._v("For a detailed and technical description, please see ADR-061 in the Cosmos SDK or the Liquid Staking Module Cosmos Hub "),a("a",{attrs:{href:"https://forum.cosmos.network/t/signaling-proposal-draft-add-liquid-staking-module-to-the-cosmos-hub/10368",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum post"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"who-can-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#who-can-validator-bond"}},[e._v("#")]),e._v(" Who can validator bond?")]),e._v(" "),a("p",[e._v("The validator themselves, but also any other address delegated to the validator.")]),e._v(" "),a("h3",{attrs:{id:"how-can-i-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-validator-bond"}},[e._v("#")]),e._v(" How can I validator bond?")]),e._v(" "),a("p",[e._v("Once delegated to a validator, a delegator (or validator operator) can convert their delegation to a validator into Validator Bond by signing a ValidatorBond message.")]),e._v(" "),a("p",[e._v("The ValidatorBond message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyB2YWxpZGF0b3ItYm9uZCBjb3Ntb3N2YWxvcGVyMTNoNXhkeGhzZGF1Z3dkcmt1c2Y4bGtndTQwNmg4dDYyamtxdjNoICZsdDtkZWxlZ2F0b3ImZ3Q7IC0tZnJvbSBteWtleSAgCg=="}}),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("To convert Validator Bond back into a standard delegation, simply unbond the shares.")]),e._v(" "),a("h3",{attrs:{id:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"}},[e._v("#")]),e._v(" How does a delegator or validator mark their delegation as a validator bond?")]),e._v(" "),a("p",[e._v("Once delegated to a validator, sign a "),a("code",[e._v("ValidatorBond")]),e._v(" message.")]),e._v(" "),a("h3",{attrs:{id:"are-validator-bonds-subject-to-additional-slashing-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#are-validator-bonds-subject-to-additional-slashing-conditions"}},[e._v("#")]),e._v(" Are validator bonds subject to additional slashing conditions?")]),e._v(" "),a("p",[e._v("No, in the event of a slash, a validator bond is slashed at the same rate as a regular bond.")]),e._v(" "),a("h3",{attrs:{id:"can-i-unbond-my-validator-bond"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-i-unbond-my-validator-bond"}},[e._v("#")]),e._v(" Can I unbond my validator bond?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("If liquid staking providers undelegate 250 ATOM from Validator V, Validator V can now remove 1 ATOM of validator bond.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"}},[e._v("#")]),e._v(" Can I validator bond some of my tokens and delegate the remaining portion normally?")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("ValidatorBond")]),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"technical-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#technical-requirements"}},[e._v("#")]),e._v(" Technical Requirements")]),e._v(" "),a("h3",{attrs:{id:"what-are-hardware-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-hardware-requirements"}},[e._v("#")]),e._v(" What are hardware requirements?")]),e._v(" "),a("p",[e._v("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 "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("Joining Mainnet documentation")]),e._v(".")],1),e._v(" "),a("p",[e._v("Validators are recommended to set up "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("sentry nodes"),a("OutboundLink")],1),e._v(" to protect your validator node from DDoS attacks.")]),e._v(" "),a("h3",{attrs:{id:"what-are-software-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-software-requirements"}},[e._v("#")]),e._v(" What are software requirements?")]),e._v(" "),a("p",[e._v("In addition to running a Cosmos Hub node, validators are expected to implement monitoring, alerting, and management solutions. There are "),a("a",{attrs:{href:"https://medium.com/solar-labs-team/cosmos-how-to-monitoring-your-validator-892a46298722",target:"_blank",rel:"noopener noreferrer"}},[e._v("several tools"),a("OutboundLink")],1),e._v(" that you can use.")]),e._v(" "),a("h3",{attrs:{id:"what-are-bandwidth-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-bandwidth-requirements"}},[e._v("#")]),e._v(" What are bandwidth requirements?")]),e._v(" "),a("p",[e._v("The Cosmos network has the capacity for very high throughput relative to chains like Ethereum or Bitcoin.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("Ultimately, as the network becomes more heavily used, multigigabyte per day bandwidth is very realistic.")]),e._v(" "),a("h3",{attrs:{id:"how-to-handle-key-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-handle-key-management"}},[e._v("#")]),e._v(" How to handle key management?")]),e._v(" "),a("p",[e._v("Validators are expected to run an HSM that supports ed25519 keys. Here are potential options:")]),e._v(" "),a("ul",[a("li",[e._v("YubiHSM 2")]),e._v(" "),a("li",[e._v("Ledger Nano S")]),e._v(" "),a("li",[e._v("Ledger BOLOS SGX enclave")]),e._v(" "),a("li",[e._v("Thales nShield support")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"what-can-validators-expect-in-terms-of-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-can-validators-expect-in-terms-of-operations"}},[e._v("#")]),e._v(" What can validators expect in terms of operations?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"what-are-the-maintenance-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-maintenance-requirements"}},[e._v("#")]),e._v(" What are the maintenance requirements?")]),e._v(" "),a("p",[e._v("Validators are expected to perform regular software updates to accommodate chain upgrades and bug fixes. It is suggested to consider using "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" to partially automate this process.")]),e._v(" "),a("p",[e._v("During an chain upgrade, progress is discussed in a private channel in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developer Discord"),a("OutboundLink")],1),e._v(". If your validator is in the active set we encourage you to request access to that channel by contacting a moderator.")]),e._v(" "),a("h3",{attrs:{id:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[e._v("#")]),e._v(" How can validators protect themselves from denial-of-service attacks?")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology using a sentry node architecture.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet-based 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.")]),e._v(" "),a("p",[e._v("For more sentry node details, see the "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT Documentation"),a("OutboundLink")],1),e._v(" or the "),a("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sentry Node Architecture Overview"),a("OutboundLink")],1),e._v(" on the forum.")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/176.1ea06b4c.js b/main/assets/js/177.761af6db.js similarity index 99% rename from main/assets/js/176.1ea06b4c.js rename to main/assets/js/177.761af6db.js index 187d084f24d..af8326e52a5 100644 --- a/main/assets/js/176.1ea06b4c.js +++ b/main/assets/js/177.761af6db.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{628:function(t,a,e){"use strict";e.r(a);var o=e(1),s=Object(o.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"running-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-a-validator"}},[t._v("#")]),t._v(" Running a Validator")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("Before setting up a validator node, make sure to have completed the "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet")]),t._v(" guide.")],1),t._v(" "),e("p",[t._v("If you plan to use a KMS (key management system), you should go through these steps first: "),e("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Using a KMS")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"what-is-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator"}},[t._v("#")]),t._v(" What is a Validator?")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validators")]),t._v(" are responsible for committing new blocks to the blockchain through an automated voting process. A validator's stake is slashed if they become unavailable or sign blocks at the same height. Because there is a chance of slashing, we suggest you read about "),e("RouterLink",{attrs:{to:"/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("Sentry Node Architecture")]),t._v(" to protect your node from DDOS attacks and to ensure high-availability.")],1),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("If you want to become a validator for the Hub's "),e("code",[t._v("mainnet")]),t._v(", you should learn more about "),e("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("security")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("The following instructions assume you have already "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("set up a full-node")]),t._v(" and are synchonised to the latest blockheight.")],1),t._v(" "),e("h2",{attrs:{id:"create-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-validator"}},[t._v("#")]),t._v(" Create Your Validator")]),t._v(" "),e("p",[t._v("Your "),e("code",[t._v("cosmosvalconspub")]),t._v(" can be used to create a new validator by staking tokens. You can find your validator pubkey by running:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),e("p",[t._v("To create your validator, just use the following command:")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[t._v("Don't use more "),e("code",[t._v("uatom")]),t._v(" than you have!")])]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tZ2FzPSZxdW90O2F1dG8mcXVvdDsgXAogIC0tZ2FzLXByaWNlcz0mcXVvdDswLjAwMjV1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("When specifying commission parameters, the "),e("code",[t._v("commission-max-change-rate")]),t._v(" is used to measure % "),e("em",[t._v("point")]),t._v(" change over the "),e("code",[t._v("commission-rate")]),t._v(". E.g. 1% to 2% is a 100% rate increase, but only 1 percentage point.")])]),t._v(" "),e("p",[t._v("It's possible that you won't have enough ATOM to be part of the active set of validators in the beginning. Users are able to delegate to inactive validators (those outside of the active set) using the "),e("a",{attrs:{href:"https://wallet.keplr.app/#/cosmoshub/stake?tab=inactive-validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr web app"),e("OutboundLink")],1),t._v(". You can confirm that you are in the validator set by using a third party explorer like "),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"edit-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#edit-validator-description"}},[t._v("#")]),t._v(" Edit Validator Description")]),t._v(" "),e("p",[t._v("You can edit your validator's public description. This info is to identify your validator, and will be relied on by delegators to decide which validators to stake to. Make sure to provide input for every flag below. If a flag is not included in the command the field will default to empty ("),e("code",[t._v("--moniker")]),t._v(" defaults to the machine name) if the field has never been set or remain the same if it has been set in the past.")]),t._v(" "),e("p",[t._v("The specifies which validator you are editing. If you choose to not include some of the flags below, remember that the --from flag "),e("strong",[t._v("must")]),t._v(" be included to identify the validator to update.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("--identity")]),t._v(" can be used as to verify identity with systems like Keybase or UPort. When using Keybase, "),e("code",[t._v("--identity")]),t._v(" should be populated with a 16-digit string that is generated with a "),e("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),e("OutboundLink")],1),t._v(" account. It's a cryptographically secure method of verifying your identity across multiple online networks. The Keybase API allows us to retrieve your Keybase avatar. This is how you can add a logo to your validator profile.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("Please note that some parameters such as "),e("code",[t._v("commission-max-rate")]),t._v(" and "),e("code",[t._v("commission-max-change-rate")]),t._v(" cannot be changed once your validator is up and running.")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": The "),e("code",[t._v("commission-rate")]),t._v(" value must adhere to the following rules:")]),t._v(" "),e("ul",[e("li",[t._v("Must be between 0 and the validator's "),e("code",[t._v("commission-max-rate")])]),t._v(" "),e("li",[t._v("Must not exceed the validator's "),e("code",[t._v("commission-max-change-rate")]),t._v(" which is maximum\n% point change rate "),e("strong",[t._v("per day")]),t._v(". In other words, a validator can only change\nits commission once per day and within "),e("code",[t._v("commission-max-change-rate")]),t._v(" bounds.")])]),t._v(" "),e("h2",{attrs:{id:"view-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#view-validator-description"}},[t._v("#")]),t._v(" View Validator Description")]),t._v(" "),e("p",[t._v("View the validator's information with this command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"track-validator-signing-information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#track-validator-signing-information"}},[t._v("#")]),t._v(" Track Validator Signing Information")]),t._v(" "),e("p",[t._v("In order to keep track of a validator's signatures in the past you can do so by using the "),e("code",[t._v("signing-info")]),t._v(" command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),e("h2",{attrs:{id:"unjail-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unjail-validator"}},[t._v("#")]),t._v(" Unjail Validator")]),t._v(" "),e("p",[t._v('When a validator is "jailed" for downtime, you must submit an '),e("code",[t._v("Unjail")]),t._v(" transaction from the operator account in order to be able to get block proposer rewards again (depends on the zone fee distribution).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"confirm-your-validator-is-running"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-validator-is-running"}},[t._v("#")]),t._v(" Confirm Your Validator is Running")]),t._v(" "),e("p",[t._v("Your validator is active if the following command returns anything:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy1hZGRyZXNzKSZxdW90Owo="}}),t._v(" "),e("p",[t._v("You should now see your validator in one of the Cosmos Hub explorers. You are looking for the "),e("code",[t._v("bech32")]),t._v(" encoded "),e("code",[t._v("address")]),t._v(" in the "),e("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" file.")]),t._v(" "),e("h2",{attrs:{id:"halting-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#halting-your-validator"}},[t._v("#")]),t._v(" Halting Your Validator")]),t._v(" "),e("p",[t._v("When attempting to perform routine maintenance or planning for an upcoming coordinated upgrade, it can be useful to have your validator systematically and gracefully halt. You can achieve this by either setting the "),e("code",[t._v("halt-height")]),t._v(" to the height at which you want your node to shutdown or by passing the "),e("code",[t._v("--halt-height")]),t._v(" flag to "),e("code",[t._v("gaiad")]),t._v(". The node will shutdown with a zero exit code at that given height after committing\nthe block.")]),t._v(" "),e("h2",{attrs:{id:"advanced-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration"}},[t._v("#")]),t._v(" Advanced configuration")]),t._v(" "),e("p",[t._v("You can find more advanced information about running a node or a validator on the "),e("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("CometBFT Core documentation"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"common-problems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#common-problems"}},[t._v("#")]),t._v(" Common Problems")]),t._v(" "),e("h3",{attrs:{id:"problem-1-my-validator-has-voting-power-0"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-1-my-validator-has-voting-power-0"}},[t._v("#")]),t._v(" Problem #1: My validator has "),e("code",[t._v("voting_power: 0")])]),t._v(" "),e("p",[t._v("Your validator has become jailed. Validators get jailed, i.e. get removed from the active validator set, if they do not vote on at least "),e("code",[t._v("500")]),t._v(" of the last "),e("code",[t._v("10,000")]),t._v(" blocks, or if they double sign.")]),t._v(" "),e("p",[t._v("If you got jailed for downtime, you can get your voting power back to your validator. First, if you're not using "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(" and "),e("code",[t._v("gaiad")]),t._v(" is not running, start it up again:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("Wait for your full node to catch up to the latest block. Then, you can "),e("a",{attrs:{href:"#unjail-validator"}},[t._v("unjail your validator")])]),t._v(" "),e("p",[t._v("After you have submitted the unjail transaction, check your validator again to see if your voting power is back.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("You may notice that your voting power is less than it used to be. That's because you got slashed for downtime!")]),t._v(" "),e("h3",{attrs:{id:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[t._v("#")]),t._v(" Problem #2: My "),e("code",[t._v("gaiad")]),t._v(" crashes because of "),e("code",[t._v("too many open files")])]),t._v(" "),e("p",[t._v("The default number of files Linux can open (per-process) is "),e("code",[t._v("1024")]),t._v(". "),e("code",[t._v("gaiad")]),t._v(" is known to open more than "),e("code",[t._v("1024")]),t._v(" files. This causes the process to crash. A quick fix is to run "),e("code",[t._v("ulimit -n 4096")]),t._v(" (increase the number of open files allowed) and then restarting the process with "),e("code",[t._v("gaiad start")]),t._v(". If you are using "),e("code",[t._v("systemd")]),t._v(" or another process manager to launch "),e("code",[t._v("gaiad")]),t._v(" (such as "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(") this may require some configuration at that level. A sample "),e("code",[t._v("systemd")]),t._v(" file to fix this issue is below:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{552:function(t,a,e){"use strict";e.r(a);var o=e(1),s=Object(o.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"running-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-a-validator"}},[t._v("#")]),t._v(" Running a Validator")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("Before setting up a validator node, make sure to have completed the "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet")]),t._v(" guide.")],1),t._v(" "),e("p",[t._v("If you plan to use a KMS (key management system), you should go through these steps first: "),e("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Using a KMS")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"what-is-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator"}},[t._v("#")]),t._v(" What is a Validator?")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validators")]),t._v(" are responsible for committing new blocks to the blockchain through an automated voting process. A validator's stake is slashed if they become unavailable or sign blocks at the same height. Because there is a chance of slashing, we suggest you read about "),e("RouterLink",{attrs:{to:"/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("Sentry Node Architecture")]),t._v(" to protect your node from DDOS attacks and to ensure high-availability.")],1),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("If you want to become a validator for the Hub's "),e("code",[t._v("mainnet")]),t._v(", you should learn more about "),e("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("security")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("The following instructions assume you have already "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("set up a full-node")]),t._v(" and are synchonised to the latest blockheight.")],1),t._v(" "),e("h2",{attrs:{id:"create-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-validator"}},[t._v("#")]),t._v(" Create Your Validator")]),t._v(" "),e("p",[t._v("Your "),e("code",[t._v("cosmosvalconspub")]),t._v(" can be used to create a new validator by staking tokens. You can find your validator pubkey by running:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),e("p",[t._v("To create your validator, just use the following command:")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[t._v("Don't use more "),e("code",[t._v("uatom")]),t._v(" than you have!")])]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tZ2FzPSZxdW90O2F1dG8mcXVvdDsgXAogIC0tZ2FzLXByaWNlcz0mcXVvdDswLjAwMjV1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("When specifying commission parameters, the "),e("code",[t._v("commission-max-change-rate")]),t._v(" is used to measure % "),e("em",[t._v("point")]),t._v(" change over the "),e("code",[t._v("commission-rate")]),t._v(". E.g. 1% to 2% is a 100% rate increase, but only 1 percentage point.")])]),t._v(" "),e("p",[t._v("It's possible that you won't have enough ATOM to be part of the active set of validators in the beginning. Users are able to delegate to inactive validators (those outside of the active set) using the "),e("a",{attrs:{href:"https://wallet.keplr.app/#/cosmoshub/stake?tab=inactive-validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr web app"),e("OutboundLink")],1),t._v(". You can confirm that you are in the validator set by using a third party explorer like "),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"edit-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#edit-validator-description"}},[t._v("#")]),t._v(" Edit Validator Description")]),t._v(" "),e("p",[t._v("You can edit your validator's public description. This info is to identify your validator, and will be relied on by delegators to decide which validators to stake to. Make sure to provide input for every flag below. If a flag is not included in the command the field will default to empty ("),e("code",[t._v("--moniker")]),t._v(" defaults to the machine name) if the field has never been set or remain the same if it has been set in the past.")]),t._v(" "),e("p",[t._v("The specifies which validator you are editing. If you choose to not include some of the flags below, remember that the --from flag "),e("strong",[t._v("must")]),t._v(" be included to identify the validator to update.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("--identity")]),t._v(" can be used as to verify identity with systems like Keybase or UPort. When using Keybase, "),e("code",[t._v("--identity")]),t._v(" should be populated with a 16-digit string that is generated with a "),e("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),e("OutboundLink")],1),t._v(" account. It's a cryptographically secure method of verifying your identity across multiple online networks. The Keybase API allows us to retrieve your Keybase avatar. This is how you can add a logo to your validator profile.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("Please note that some parameters such as "),e("code",[t._v("commission-max-rate")]),t._v(" and "),e("code",[t._v("commission-max-change-rate")]),t._v(" cannot be changed once your validator is up and running.")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": The "),e("code",[t._v("commission-rate")]),t._v(" value must adhere to the following rules:")]),t._v(" "),e("ul",[e("li",[t._v("Must be between 0 and the validator's "),e("code",[t._v("commission-max-rate")])]),t._v(" "),e("li",[t._v("Must not exceed the validator's "),e("code",[t._v("commission-max-change-rate")]),t._v(" which is maximum\n% point change rate "),e("strong",[t._v("per day")]),t._v(". In other words, a validator can only change\nits commission once per day and within "),e("code",[t._v("commission-max-change-rate")]),t._v(" bounds.")])]),t._v(" "),e("h2",{attrs:{id:"view-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#view-validator-description"}},[t._v("#")]),t._v(" View Validator Description")]),t._v(" "),e("p",[t._v("View the validator's information with this command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"track-validator-signing-information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#track-validator-signing-information"}},[t._v("#")]),t._v(" Track Validator Signing Information")]),t._v(" "),e("p",[t._v("In order to keep track of a validator's signatures in the past you can do so by using the "),e("code",[t._v("signing-info")]),t._v(" command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),e("h2",{attrs:{id:"unjail-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unjail-validator"}},[t._v("#")]),t._v(" Unjail Validator")]),t._v(" "),e("p",[t._v('When a validator is "jailed" for downtime, you must submit an '),e("code",[t._v("Unjail")]),t._v(" transaction from the operator account in order to be able to get block proposer rewards again (depends on the zone fee distribution).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"confirm-your-validator-is-running"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-validator-is-running"}},[t._v("#")]),t._v(" Confirm Your Validator is Running")]),t._v(" "),e("p",[t._v("Your validator is active if the following command returns anything:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy1hZGRyZXNzKSZxdW90Owo="}}),t._v(" "),e("p",[t._v("You should now see your validator in one of the Cosmos Hub explorers. You are looking for the "),e("code",[t._v("bech32")]),t._v(" encoded "),e("code",[t._v("address")]),t._v(" in the "),e("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" file.")]),t._v(" "),e("h2",{attrs:{id:"halting-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#halting-your-validator"}},[t._v("#")]),t._v(" Halting Your Validator")]),t._v(" "),e("p",[t._v("When attempting to perform routine maintenance or planning for an upcoming coordinated upgrade, it can be useful to have your validator systematically and gracefully halt. You can achieve this by either setting the "),e("code",[t._v("halt-height")]),t._v(" to the height at which you want your node to shutdown or by passing the "),e("code",[t._v("--halt-height")]),t._v(" flag to "),e("code",[t._v("gaiad")]),t._v(". The node will shutdown with a zero exit code at that given height after committing\nthe block.")]),t._v(" "),e("h2",{attrs:{id:"advanced-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration"}},[t._v("#")]),t._v(" Advanced configuration")]),t._v(" "),e("p",[t._v("You can find more advanced information about running a node or a validator on the "),e("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("CometBFT Core documentation"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"common-problems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#common-problems"}},[t._v("#")]),t._v(" Common Problems")]),t._v(" "),e("h3",{attrs:{id:"problem-1-my-validator-has-voting-power-0"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-1-my-validator-has-voting-power-0"}},[t._v("#")]),t._v(" Problem #1: My validator has "),e("code",[t._v("voting_power: 0")])]),t._v(" "),e("p",[t._v("Your validator has become jailed. Validators get jailed, i.e. get removed from the active validator set, if they do not vote on at least "),e("code",[t._v("500")]),t._v(" of the last "),e("code",[t._v("10,000")]),t._v(" blocks, or if they double sign.")]),t._v(" "),e("p",[t._v("If you got jailed for downtime, you can get your voting power back to your validator. First, if you're not using "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(" and "),e("code",[t._v("gaiad")]),t._v(" is not running, start it up again:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("Wait for your full node to catch up to the latest block. Then, you can "),e("a",{attrs:{href:"#unjail-validator"}},[t._v("unjail your validator")])]),t._v(" "),e("p",[t._v("After you have submitted the unjail transaction, check your validator again to see if your voting power is back.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("You may notice that your voting power is less than it used to be. That's because you got slashed for downtime!")]),t._v(" "),e("h3",{attrs:{id:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[t._v("#")]),t._v(" Problem #2: My "),e("code",[t._v("gaiad")]),t._v(" crashes because of "),e("code",[t._v("too many open files")])]),t._v(" "),e("p",[t._v("The default number of files Linux can open (per-process) is "),e("code",[t._v("1024")]),t._v(". "),e("code",[t._v("gaiad")]),t._v(" is known to open more than "),e("code",[t._v("1024")]),t._v(" files. This causes the process to crash. A quick fix is to run "),e("code",[t._v("ulimit -n 4096")]),t._v(" (increase the number of open files allowed) and then restarting the process with "),e("code",[t._v("gaiad start")]),t._v(". If you are using "),e("code",[t._v("systemd")]),t._v(" or another process manager to launch "),e("code",[t._v("gaiad")]),t._v(" (such as "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(") this may require some configuration at that level. A sample "),e("code",[t._v("systemd")]),t._v(" file to fix this issue is below:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/177.642da123.js b/main/assets/js/178.b2ce0b2e.js similarity index 97% rename from main/assets/js/177.642da123.js rename to main/assets/js/178.b2ce0b2e.js index d37cbc4a9c7..36f0c04932d 100644 --- a/main/assets/js/177.642da123.js +++ b/main/assets/js/178.b2ce0b2e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{629:function(t,a,s){"use strict";s.r(a);var o=s(1),i=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"gaia文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia文档"}},[t._v("#")]),t._v(" gaia文档")]),t._v(" "),s("p",[t._v("欢迎阅读"),s("code",[t._v("Gaia")]),t._v("文档。 "),s("code",[t._v("Gaia")]),t._v("是Cosmos Hub目前的应用程序名。")]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub主网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub主网"}},[t._v("#")]),t._v(" 加入Cosmos Hub主网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),s("code",[t._v("gaia")]),t._v("程序")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("启动一个全节点并加入主网")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-setup.html"}},[t._v("升级成一个验证人节点")])],1)]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub公共测试网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub公共测试网"}},[t._v("#")]),t._v(" 加入Cosmos Hub公共测试网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("加入测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"部署你自己的gaia测试网络"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#部署你自己的gaia测试网络"}},[t._v("#")]),t._v(" 部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网络")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"额外资源"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#额外资源"}},[t._v("#")]),t._v(" 额外资源")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人介绍")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-faq.html"}},[t._v("验证人问答")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("验证人安全性考量")])],1)])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[178],{551:function(t,a,s){"use strict";s.r(a);var o=s(1),i=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"gaia文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia文档"}},[t._v("#")]),t._v(" gaia文档")]),t._v(" "),s("p",[t._v("欢迎阅读"),s("code",[t._v("Gaia")]),t._v("文档。 "),s("code",[t._v("Gaia")]),t._v("是Cosmos Hub目前的应用程序名。")]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub主网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub主网"}},[t._v("#")]),t._v(" 加入Cosmos Hub主网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),s("code",[t._v("gaia")]),t._v("程序")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("启动一个全节点并加入主网")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-setup.html"}},[t._v("升级成一个验证人节点")])],1)]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub公共测试网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub公共测试网"}},[t._v("#")]),t._v(" 加入Cosmos Hub公共测试网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("加入测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"部署你自己的gaia测试网络"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#部署你自己的gaia测试网络"}},[t._v("#")]),t._v(" 部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网络")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"额外资源"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#额外资源"}},[t._v("#")]),t._v(" 额外资源")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人介绍")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-faq.html"}},[t._v("验证人问答")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("验证人安全性考量")])],1)])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/178.631ad545.js b/main/assets/js/179.f478a22a.js similarity index 99% rename from main/assets/js/178.631ad545.js rename to main/assets/js/179.f478a22a.js index 6ef66d8c530..094c120be98 100644 --- a/main/assets/js/178.631ad545.js +++ b/main/assets/js/179.f478a22a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[178],{494:function(g,C,A){"use strict";A.r(C);var I=A(1),v=Object(I.a)({},(function(){var g=this,C=g.$createElement,A=g._self._c||C;return A("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[A("h1",{attrs:{id:"委托人指南-cli"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#委托人指南-cli"}},[g._v("#")]),g._v(" 委托人指南 (CLI)")]),g._v(" "),A("p",[g._v("本文介绍了如何使用Cosmos Hub的命令行交互(CLI)程序实现通证委托的相关知识和操作步骤。")]),g._v(" "),A("p",[g._v("同时,本文也介绍了如何管理账户,如何从筹款人那里恢复账户,以及如何使用一个硬件钱包的相关知识。")]),g._v(" "),A("p",[g._v("::: 风险提示")]),g._v(" "),A("p",[A("strong",[g._v("重要提示")]),g._v(":请务必按照下面的操作步骤谨慎操作,过程中发生任何错误都有可能导致您永远失去所拥有的通证。因此,请在开始操作之前先仔细阅读全文,如果有任何问题可以联系我们获得支持。")]),g._v(" "),A("p",[g._v("另请注意,您即将要与Cosmos Hub进行交互,Cosmos Hub仍然是一个试验型的区块链技术软件。虽然Cosmos Hub区块链是应用现有最新技术开发并经过审核的,但我们仍然可能会在运行时遇到问题,需要不断更新和修复漏洞。此外,使用区块链技术仍然要求有很高的技术能力,并且有可能遇到我们无法预知和控制的风险。使用Cosmos Hub前,您需要充分了解与加密软件相关的潜在风险(请参考"),A("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[g._v("Cosmos跨链贡献条款"),A("OutboundLink")],1),g._v("中关于风险的部分条款),并且我们跨链基金会和(或)Tendermint/CometBFT团队对于因为使用本产品而可能产生的损失不承担任何责任。使用Cosmos Hub需要遵守Apache 2.0开源软件授权条款,用户需要自己承担所有责任,所使用的软件按“现状”提供且不提供任何形式的保障或条件。\n:::")]),g._v(" "),A("p",[g._v("请务必谨慎行事!")]),g._v(" "),A("h2",{attrs:{id:"目录"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#目录"}},[g._v("#")]),g._v(" 目录")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E5%AE%89%E8%A3%85-gaiad"}},[g._v("安装 "),A("code",[g._v("gaiad")])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#Cosmos%E8%B4%A6%E6%88%B7"}},[g._v("Cosmos账户")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E9%80%9A%E8%BF%87%E5%8B%9F%E8%B5%84%E4%BA%BA%E6%81%A2%E5%A4%8D%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("通过募资人恢复一个账户")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("创建一个账户")])])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%AE%BF%E9%97%AECosmos-Hub%E7%BD%91%E7%BB%9C"}},[g._v("访问Cosmos Hub网络")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E8%BF%90%E8%A1%8C%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E5%85%A8%E8%8A%82%E7%82%B9"}},[g._v("运行您自己的全节点")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%80%E4%B8%AA%E8%BF%9C%E7%A8%8B%E5%85%A8%E8%8A%82%E7%82%B9"}},[g._v("连接到一个远程全节点")])])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[g._v("设置"),A("code",[g._v("gaiad")])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E7%8A%B6%E6%80%81%E6%9F%A5%E8%AF%A2"}},[g._v("状态查询")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%8F%91%E8%B5%B7%E4%BA%A4%E6%98%93"}},[g._v("发起交易")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E5%85%B3%E4%BA%8Egas%E8%B4%B9%E5%92%8C%E6%89%8B%E7%BB%AD%E8%B4%B9"}},[g._v("关于gas费和手续费")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BCatom%E9%80%9A%E8%AF%81--%E6%8F%90%E5%8F%96%E5%A5%96%E5%8A%B1"}},[g._v("抵押Atom通证 & 提取奖励")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%8F%82%E4%B8%8E%E9%93%BE%E4%B8%8A%E6%B2%BB%E7%90%86"}},[g._v("参与链上治理")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("从一台离线电脑上签署交易")])])])])]),g._v(" "),A("h2",{attrs:{id:"安装-gaiad"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaiad"}},[g._v("#")]),g._v(" 安装 "),A("code",[g._v("gaiad")])]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(": 与"),A("code",[g._v("gaiad")]),g._v("全节点交互的命令行用户界面。")]),g._v(" "),A("p",[g._v("::: 安全提示")]),g._v(" "),A("p",[A("strong",[g._v("请检查并且确认你下载的"),A("code",[g._v("gaiad")]),g._v("是可获得的最新稳定版本")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("["),A("strong",[g._v("下载已编译代码")]),g._v("]暂不提供")]),g._v(" "),A("p",[A("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[A("strong",[g._v("通过源代码安装")]),A("OutboundLink")],1)]),g._v(" "),A("div",{staticClass:"custom-block tip"},[A("p",{staticClass:"custom-block-title"},[g._v("提示")]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(" 需要通过操作系统的终端窗口使用,打开步骤如下所示:")]),g._v(" "),A("ul",[A("li",[A("strong",[g._v("Windows")]),g._v(": "),A("code",[g._v("开始")]),g._v(" > "),A("code",[g._v("所有程序")]),g._v(" > "),A("code",[g._v("附件")]),g._v(" > "),A("code",[g._v("终端")])]),g._v(" "),A("li",[A("strong",[g._v("MacOS")]),g._v(": "),A("code",[g._v("访达")]),g._v(" > "),A("code",[g._v("应用程序")]),g._v(" > "),A("code",[g._v("实用工具")]),g._v(" > "),A("code",[g._v("终端")])]),g._v(" "),A("li",[A("strong",[g._v("Linux")]),g._v(": "),A("code",[g._v("Ctrl")]),g._v(" + "),A("code",[g._v("Alt")]),g._v(" + "),A("code",[g._v("T")])])])]),g._v(" "),A("h2",{attrs:{id:"cosmos账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#cosmos账户"}},[g._v("#")]),g._v(" Cosmos账户")]),g._v(" "),A("p",[g._v("每个Cosmos账户的核心基础是一个包含12或24个词的助记词组,通过这个助记词可以生成无数个Cosmos账户,例如,一组私钥/公钥对。这被称为一个硬件钱包(跟多硬件钱包相关说明请参见"),A("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),A("OutboundLink")],1),g._v(")")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICAgICDotKbmiLcgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICDotKbmiLcgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOi0puaItyAyCgorLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfAp8ICAgICAgIOWcsOWdgCAwICAgICAgfCAgICAgICAgICAgICAgfCAgICAgIOWcsOWdgCAxICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg5Zyw5Z2AIDIgICAgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICArICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8CnwgICAgICAg5YWs6ZKlIDAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAg5YWs6ZKlIDEgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICDlhazpkqUgMiAgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgICAgICDnp4HpkqUgMCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICDnp4HpkqUgMSAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgIOengemSpSAyICAgICAgfAp8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg5Yqp6K6w6K+NIChTZWVkKSAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),A("p",[g._v("私钥是控制一个账户中所存资产的钥匙。私钥是通过助记词单向产生的。如果您不小心丢失了私钥,你可以通过助记词恢复。 然而,如果你丢失了助记词,那么你就有可能失去对由这个助记词产生的所有私钥的控制。同样,如果有人获得了你的助记词,他们就可以操作所有相关账户。")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("谨慎保管并不要告诉他人你的助记词。 为了防止资产被盗或者丢失,您最好多备份几份助记词, 并且把它们存放在只有您知道的安全地方,这样做将有助于保障您的私钥以及相关账户的安全。")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("Cosmos地址是一个以可读词开头的字符串(比如"),A("code",[g._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),g._v(") 如果有人想给你转账通证,他们就往这个地址转账。根据给定地址来推算私钥是不可行的。")]),g._v(" "),A("h3",{attrs:{id:"通过募资人恢复一个账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#通过募资人恢复一个账户"}},[g._v("#")]),g._v(" 通过募资人恢复一个账户")]),g._v(" "),A("p",[g._v("::: 提示")]),g._v(" "),A("p",[A("em",[g._v("注:这部分内容仅适用于众筹活动参与者")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("如果您是众筹的参与者,你应该有一个助记词。新产生的助记词用24个词,但是12个词的助记词组也兼容所有Cosmos工具。")]),g._v(" "),A("h4",{attrs:{id:"通过硬件钱包设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#通过硬件钱包设备进行操作"}},[g._v("#")]),g._v(" 通过硬件钱包设备进行操作")]),g._v(" "),A("p",[g._v("一个数字钱包设备的核心是通过一个助记词在多个区块链上创建账户(包括Cosmos hub)。通常,您会在初始化您的数字钱包设备时创建一个新的助记词,也可以通过已有的助记词进行导入。让我们一起来看如何将您在参与众筹时获得的助记词设定为一个数字钱包设备的seed。")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("em",[g._v("注意:"),A("strong",[g._v("最好使用一个新的钱包设备")]),g._v("来恢复您的Cosmos账户。确实,每个数字钱包设备只能有一个助记词。 当然,您可以通过 "),A("code",[g._v("设置")]),g._v(">"),A("code",[g._v("设备")]),g._v(">"),A("code",[g._v("重置所有")]),g._v(" 将一个已经有助记词的(用过的)数字钱包重新初始化。"),A("strong",[g._v("但请注意,这样会清空您设备中现有的助记词,如果您没有做好备份的话,有可能会丢失您的资产")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("对于一个没有初始化的数字钱包设备,您需要做如下操作。")]),g._v(" "),A("ol",[A("li",[g._v("将您的数字钱包设备通过USB与电脑链接")]),g._v(" "),A("li",[g._v("同时按下两个按钮")]),g._v(" "),A("li",[A("strong",[g._v("不要")]),g._v("选择“配置一个新设备”选项,而是选择“恢复配置”")]),g._v(" "),A("li",[g._v("选择一个PIN")]),g._v(" "),A("li",[g._v("选择12个词选项")]),g._v(" "),A("li",[g._v("逐个按顺序输入您在众筹时获得的12个助记词")])]),g._v(" "),A("p",[g._v("现在,您的钱包已经正确地设置好您在众筹时获得的助记词,切勿丢失!任何时候您的钱包设备出现问题,您都可以通过助记词在一个新的钱包设备上恢复所有账户。")]),g._v(" "),A("p",[g._v("接下来,请点击"),A("a",{attrs:{href:"#%E4%BD%BF%E7%94%A8%E7%A1%AC%E4%BB%B6%E9%92%B1%E5%8C%85%E8%AE%BE%E5%A4%87%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C"}},[g._v("这里")]),g._v("来学习如何生成一个账户。")]),g._v(" "),A("h4",{attrs:{id:"在电脑上操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#在电脑上操作"}},[g._v("#")]),g._v(" 在电脑上操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意: 在一台没有联网的计算机上执行以下操作会更加安全")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("如果您希望通过众筹时获得的助记词恢复账户并保存相关私钥,请按以下步骤操作:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIK"}}),g._v(" "),A("p",[g._v("首先,您需要输入一个密码来对您硬盘上账户"),A("code",[g._v("0")]),g._v("的私钥进行加密。每次您发出一笔交易时都将需要输入这个密码。如果您丢失了密码,您可以通过助记词来恢复您的私钥。")]),g._v(" "),A("p",[g._v("-"),A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称被用来识别您的账户。")]),g._v(" "),A("ul",[A("li",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])]),g._v(" "),A("h3",{attrs:{id:"创建一个账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#创建一个账户"}},[g._v("#")]),g._v(" 创建一个账户")]),g._v(" "),A("p",[g._v("前,您需要先安装"),A("code",[g._v("gaiad")]),g._v(",同时,您需要知道你希望在哪里保存和使用您的私钥。 最好的办法是把他们保存在一台没有上网的电脑或者一个硬件钱包设备里面。 将私钥保存在一台联网的电脑里面比较危险,任何人通过网络攻击都有可能获取您的私钥,进而盗取您的资产。")]),g._v(" "),A("h4",{attrs:{id:"使用硬件钱包设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#使用硬件钱包设备进行操作"}},[g._v("#")]),g._v(" 使用硬件钱包设备进行操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("建议仅使用您新买的钱包设备或者您足够信任的设备")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("当您初始化钱包设备时,设备会产生一个24个词的助记词组。这个助记词组和Cosmos是兼容的,我们可以通过这个助记词组创建Cosmos账户。所以,您需要做的是确认您的钱包设备兼容"),A("code",[g._v("gaiad")]),g._v(",通过下面的步骤可以帮助您确认您的设备是否兼容:")]),g._v(" "),A("ol",[A("li",[g._v("下载"),A("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[g._v("Ledger Live应用"),A("OutboundLink")],1),g._v(".")]),g._v(" "),A("li",[g._v("通过USB将钱包与计算机连接,并且将钱包固件升级到最新版本。")]),g._v(" "),A("li",[g._v("到Ledger Live钱包的应用商店下载”Cosmos“应用(这可能需要花些时间)。"),A("strong",[g._v("下载”Cosmos“应用程序需要在Ledger Live钱包"),A("code",[g._v("Settings")]),g._v("选项中激活"),A("code",[g._v("Dev Mode")])])]),g._v(" "),A("li",[g._v("在你的钱包设备上操作Cosmos APP。")])]),g._v(" "),A("p",[g._v("然后,通过以下命令创建账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJBY2NvdW50TmFtZSZndDsgLS1sZWRnZXIgCg=="}}),g._v(" "),A("p",[g._v("::: 注意: 该命令仅在硬件钱包已导入并在解锁状态时才有效:::")]),g._v(" "),A("ul",[A("li",[A("p",[A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称被用来识别您的账户。")])]),g._v(" "),A("li",[A("p",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])])]),g._v(" "),A("h4",{attrs:{id:"使用电脑设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#使用电脑设备进行操作"}},[g._v("#")]),g._v(" 使用电脑设备进行操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意:在一台没有联网的电脑上操作会更加安全")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("然后,通过以下命令创建账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0Owo="}}),g._v(" "),A("p",[g._v("这个命令会产生一个24个词的助记词组,并且同时保存账户 "),A("code",[g._v("0")]),g._v(" 的私钥和公钥。 另外,您还需要输入一个密码来对您硬盘上账户"),A("code",[g._v("0")]),g._v("的私钥进行加密。 每次您发出一笔交易时都将需要输入这个密码。如果您丢失了密码,您可以通过助记词来恢复您的私钥。")]),g._v(" "),A("p",[g._v("::: 危险提示")]),g._v(" "),A("p",[A("strong",[g._v("千万不要丢失或者告诉其他人你的12个词的助记词组。 为了防止资产被盗或者丢失,您最好多备份几份助记词, 并且把它们存放在只有您知道的安全地方,如果有人取得您的助记词,那么他也就取得了您的私钥并且可以控制相关账户。")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n在确认已经安全保存好您的助记词以后(至少3遍!),你可以用如下命令清除终端窗口中的命令历史记录,以防有人通过历史记录获得您的助记词。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}}),g._v(" "),A("p",[g._v(":::")]),g._v(" "),A("p",[g._v("你可以用以下命令使用助记词生成多个账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),g._v(" "),A("ul",[A("li",[A("ul",[A("li",[A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称用来识别您的账户。")])])]),g._v(" "),A("li",[A("p",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])])]),g._v(" "),A("p",[g._v("这条命令需要您输入一个密码。改变账号就代表生成了一个新的账户。")]),g._v(" "),A("h2",{attrs:{id:"访问cosmos-hub网络"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#访问cosmos-hub网络"}},[g._v("#")]),g._v(" 访问Cosmos Hub网络")]),g._v(" "),A("p",[g._v("为了查询网络状态和发起交易,你需要通过自建一个全节点,或者连接到其他人的全节点访问Cosmos Hub网络")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意: 请不要与任何人分享您的助记词,您是唯一需要知道这些助记词的人。如果任何人通过邮件或者其他社交媒体向您要求您提供您的助记词,那就需要警惕了。 请记住,Cosmos/Tendermint团队,或跨链基金会永远不会通过邮件要求您提供您的账户密码或助记词。")]),g._v("\n:::")]),g._v(" "),A("h3",{attrs:{id:"运行您自己的全节点"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#运行您自己的全节点"}},[g._v("#")]),g._v(" 运行您自己的全节点")]),g._v(" "),A("p",[g._v("这是最安全的途径,但需要相当多的资源。您需要有较大的带宽和至少1TB的磁盘容量来运行一个全节点。")]),g._v(" "),A("p",[A("code",[g._v("gaia")]),g._v("的安装教程在"),A("RouterLink",{attrs:{to:"/zh/getting-started/installation.html"}},[g._v("这里")]),g._v(", 如何运行一个全节点指导在"),A("RouterLink",{attrs:{to:"/zh/hub-tutorials/join-mainnet.html"}},[g._v("这里")])],1),g._v(" "),A("h3",{attrs:{id:"连接到一个远程全节点"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#连接到一个远程全节点"}},[g._v("#")]),g._v(" 连接到一个远程全节点")]),g._v(" "),A("p",[g._v("如果您不想或没有能力运行一个全节点,您也可以连接到其他人的全节点。您需要谨慎的选择一个可信的运营商,因为恶意的运营商往往会向您反馈错误的查询结果,或者对您的交易进行监控。 然而,他们永远也无法盗取您的资产,因为您的私钥仅保持在您的本地计算机或者钱包设备中。 验证人,钱包供应商或者交易所是可以提供全节点的运营商。")]),g._v(" "),A("p",[g._v("连接到其他人提供的全节点,你需要一个全节点地址,如"),A("code",[g._v("https://77.87.106.33:26657")]),g._v("。这个地址是您的供应商提供的一个可信的接入地址。你会在下一节中用到这个地址。")]),g._v(" "),A("h2",{attrs:{id:"设置-gaiad"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#设置-gaiad"}},[g._v("#")]),g._v(" 设置 "),A("code",[g._v("gaiad")])]),g._v(" "),A("p",[g._v("::: 提示")]),g._v(" "),A("p",[A("strong",[g._v("在开始设置 "),A("code",[g._v("gaiad")]),g._v("前,请确认你已经可以"),A("a",{attrs:{href:"#%E8%AE%BF%E9%97%AEcosmos-hub%E7%BD%91%E7%BB%9C"}},[g._v("访问Cosmos Hub网络")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("请确认您使用的"),A("code",[g._v("gaiad")]),g._v("是最新的稳定版本")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("无论您是否在自己运行一个节点,"),A("code",[g._v("gaiad")]),g._v(" 都可以帮您实现与Cosmos Hub网络的交互。让我们来完成对它的配置。")]),g._v(" "),A("p",[g._v("您需要用下面的命令行完成对"),A("code",[g._v("gaiad")]),g._v("的配置:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),g._v(" "),A("p",[g._v("此命名允许您为每个参数设置缺省值。")]),g._v(" "),A("p",[g._v("首先,设置你想要访问的全节点的地址:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyDmoLfkvos6IGdhaWFkIGNvbmZpZyBub2RlIGh0dHBzOi8vNzcuODcuMTA2LjMzOjI2NjU3Cg=="}}),g._v(" "),A("p",[g._v("如果你是自己运行全节点,可以使用 "),A("code",[g._v("tcp://localhost:26657")]),g._v(" 作为地址。")]),g._v(" "),A("p",[g._v("最后,让我们设置需要访问区块链的 "),A("code",[g._v("chain-id")])]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGdvcy02Cg=="}}),g._v(" "),A("h2",{attrs:{id:"状态查询"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#状态查询"}},[g._v("#")]),g._v(" 状态查询")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("准备抵押ATOM通证和取回奖励前,需要先完成 "),A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[A("code",[g._v("gaiad")]),g._v(" 配置")])]),g._v("\n:::")]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(" 可以帮助您获得所有区块链的相关信息, 比如账户余额,抵押通证数量,奖励,治理提案以及其他信息。下面是一组用于委托操作的命令")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ci8vIOafpeivoui0puaIt+S9memineaIluiAheWFtuS7lui0puaIt+ebuOWFs+S/oeaBrwpnYWlhZCBxdWVyeSBhY2NvdW50CgoKLy8g5p+l6K+i6aqM6K+B5Lq65YiX6KGoCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9ycwoKCi8vIOafpeivouaMh+WumuWcsOWdgOeahOmqjOivgeS6uueahOS/oeaBryhlLmcuIGNvc21vc3ZhbG9wZXIxbjVwZXB2bWdzZmQzcDJ0cXFndnQ1MDVqdnltbXN0ZjZzOWd3MjcpCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9yICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OwoKCi8v5p+l6K+i5oyH5a6a5Zyw5Z2A55qE6aqM6K+B5Lq655u45YWz55qE5omA5pyJ5aeU5omY5L+h5oGvIChlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZykKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIOafpeivouS7juS4gOS4quaMh+WumuWcsOWdgOeahOWnlOaJmOS6uihlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZynlkozkuIDkuKrmjIflrprlnLDlnYDnmoTpqozor4HkurooZS5nLiBjb3Ntb3N2YWxvcGVyMW41cGVwdm1nc2ZkM3AydHFxZ3Z0NTA1anZ5bW1zdGY2czlndzI3KSDkuYvpl7TnmoTlp5TmiZjkuqTmmJMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsKCi8vIOafpeivouS4gOS4quaMh+WumuWcsOWdgOeahOWnlOaJmOS6uihlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZynmiYDog73ojrflvpfnmoTlpZblirHmg4XlhrUKZ2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvckFkZHJlc3MmZ3Q7IAoKLy8g5p+l6K+i5omA5pyJ546w5Zyo5q2j562J5b6F5oq15oq855qE5o+Q5qGICmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKCi8v5p+l6K+i5omA5pyJ546w5Zyo5q2j562J5b6F5oqV56Wo55qE5aGrCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZAoKLy8g5p+l6K+i5LiA5Liq5oyH5a6acHJvcHNhbElE55qE5o+Q5qGI5L+h5oGvCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbCAmbHQ7cHJvcG9zYWxJRCZndDsK"}}),g._v(" "),A("p",[g._v("需要了解跟多的命令,只需要用:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),g._v(" "),A("p",[g._v("对于每条命令,您都可以使用"),A("code",[g._v("-h")]),g._v(" 或 "),A("code",[g._v("--help")]),g._v(" 参数来获得更多的信息。")]),g._v(" "),A("h2",{attrs:{id:"发起交易"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#发起交易"}},[g._v("#")]),g._v(" 发起交易")]),g._v(" "),A("h3",{attrs:{id:"关于gas费和手续费"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#关于gas费和手续费"}},[g._v("#")]),g._v(" 关于gas费和手续费")]),g._v(" "),A("p",[g._v("Cosmos Hub网络上的交易在被执行时需要支付手续费。这个手续费是用于支付执行交易所需的gas。计算公式如下:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),g._v(" "),A("p",[A("code",[g._v("gas")]),g._v(" 的多少取决于交易类型,不同的交易类型会收取不同的 "),A("code",[g._v("gas")]),g._v(" 。每个交易的 "),A("code",[g._v("gas")]),g._v(" 费是在实际执行过程中计算的,但我们可以通过设置 "),A("code",[g._v("gas")]),g._v(" 参数中的 "),A("code",[g._v("auto")]),g._v(" 值实现在交易前对 "),A("code",[g._v("gas")]),g._v(" 费的估算,但这只是一个粗略的估计,你可以通过 "),A("code",[g._v("--gas-adjustment")]),g._v(" (缺省值 "),A("code",[g._v("1.0")]),g._v(") 对预估的"),A("code",[g._v("gas")]),g._v(" 值进行调节,以确保为交易支付足够的"),A("code",[g._v("gas")]),g._v(" 。")]),g._v(" "),A("p",[A("code",[g._v("gasPrice")]),g._v(" 用于设置单位 "),A("code",[g._v("gas")]),g._v(" 的价格。每个验证人会设置一个最低gas价"),A("code",[g._v("min-gas-price")]),g._v(", 并只会将"),A("code",[g._v("gasPrice")]),g._v("大于"),A("code",[g._v("min-gas-price")]),g._v("的交易打包。")]),g._v(" "),A("p",[g._v("交易的"),A("code",[g._v("fees")]),g._v(" 是"),A("code",[g._v("gas")]),g._v(" 和 "),A("code",[g._v("gasPrice")]),g._v("的乘积。作为一个用户,你需要输入3个参数中至少2个, "),A("code",[g._v("gasPrice")]),g._v("/"),A("code",[g._v("fees")]),g._v("的值越大,您的交易就越有机会被打包执行。")]),g._v(" "),A("h3",{attrs:{id:"抵押atom通证-提取奖励"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#抵押atom通证-提取奖励"}},[g._v("#")]),g._v(" 抵押Atom通证 & 提取奖励")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("在您抵押通证或取回奖励之前,您需要完成"),A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[A("code",[g._v("gaiad")]),g._v(" 设置")]),g._v(" 和 "),A("a",{attrs:{href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("创建账户")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n"),A("strong",[g._v("在抵押通证前,请仔细阅读"),A("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[g._v("委托者常见问题"),A("OutboundLink")],1),g._v(" 并且理解其中的风险和责任")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n"),A("strong",[g._v("注意:执行以下命令需要在一台联网的计算机。用一个硬件钱包设备执行这些命令会更安全。关于离线交易过程请看"),A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("这里")]),g._v(".")]),g._v("\n:::")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5ZCR5oyH5a6a6aqM6K+B5Lq657uR5a6a5LiA5a6a5pWw6YeP55qEQXRvbemAmuivgQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7YW1vdW50VG9Cb3VuZCZndDs9MTAwMDAwMDAwMDB1YXRvbSwgJmx0O2dhc1ByaWNlJmd0Oz0xMDAwdWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgZGVsZWdhdGUgJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7ICZsdDthbW91bnRUb0JvbmQmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsgLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OwoKCi8vIOaPkOWPluaJgOacieeahOWlluWKsQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDtnYXNQcmljZSZndDs9MTAwMHVhdG9tCgpnYWlhZCB0eCBkaXN0cmlidXRpb24gd2l0aGRyYXctYWxsLXJld2FyZHMgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7CgoKLy8g5ZCR5oyH5a6a6aqM6K+B5Lq655Sz6K+36Kej57uR5LiA5a6a5pWw6YeP55qEQXRvbemAmuivgQovLyDop6Pnu5HnmoTpgJror4HpnIDopoEz5ZGo5ZCO5omN6IO95a6M5YWo6Kej57uR5bm25Y+v5Lul5Lqk5piT77yMCi8vIOWPguaVsOiuvuWumuagt+S+izogJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDthbW91bnRUb1VuYm91bmQmZ3Q7PTEwMDAwMDAwMDAwdWF0b20sICZsdDtnYXNQcmljZSZndDs9MTAwMHVhdG9tCgpnYWlhZCB0eCBzdGFraW5nIHVuYm9uZCAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Ftb3VudFRvVW5ib25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsK"}}),g._v(" "),A("p",[g._v("::: 提示\n:::\n如果您是使用一个联网的钱包设备,在交易被广播到网络前您需要在设备上确认交易。")]),g._v(" "),A("p",[g._v("确认您的交易已经发出,可以用以下查询:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5oKo55qE6LSm5oi35L2Z6aKd5Zyo5oKo5oq15oq8QXRvbemAmuivgeaIluiAheWPluWbnuWlluWKseWQjuS8muWPkeeUn+WPmOWMlgpnYWlhZCBxdWVyeSBhY2NvdW50CgovLyDmgqjlnKjmirXmirzlkI7lupTor6Xog73mn6XliLDlp5TmiZjkuqTmmJMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIOWmguaenOS6pOaYk+W3sue7j+iiq+aJk+WMhe+8jOWwhuS8mui/lOWbnuS6pOaYk+iusOW9le+8iHR477yJCi8vIOWcqOS7peS4i+afpeivouWRveS7pOS4reWPr+S7peS9v+eUqOaYvuekuueahOS6pOaYk+WTiOW4jOWAvOS9nOS4uuWPguaVsApnYWlhZCBxdWVyeSB0eCAmbHQ7dHhIYXNoJmd0OwoK"}}),g._v(" "),A("p",[g._v("如果您是连接到一个可信全节点的话,您可以通过一个区块链浏览器做检查。")]),g._v(" "),A("h2",{attrs:{id:"参与链上治理"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#参与链上治理"}},[g._v("#")]),g._v(" 参与链上治理")]),g._v(" "),A("h4",{attrs:{id:"链上治理入门"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#链上治理入门"}},[g._v("#")]),g._v(" 链上治理入门")]),g._v(" "),A("p",[g._v("Cosmos Hub有一个内建的治理系统,该系统允许抵押通证的持有人参与提案投票。系统现在支持3种提案类型:")]),g._v(" "),A("ul",[A("li",[A("code",[g._v("Text Proposals")]),g._v(": 这是最基本的一种提案类型,通常用于获得大家对某个网络治理意见的观点。")]),g._v(" "),A("li",[A("code",[g._v("Parameter Proposals")]),g._v(": 这种提案通常用于改变网络参数的设定。")]),g._v(" "),A("li",[A("code",[g._v("Software Upgrade Proposal")]),g._v(": 这个提案用于升级Hub的软件。")])]),g._v(" "),A("p",[g._v("任何Atom通证的持有人都能够提交一个提案。为了让一个提案获准公开投票,提议人必须要抵押一定量的通证 "),A("code",[g._v("deposit")]),g._v(",且抵押值必须大于 "),A("code",[g._v("minDeposit")]),g._v(" 参数设定值. 提案的抵押不需要提案人一次全部交付。如果早期提案人交付的 "),A("code",[g._v("deposit")]),g._v(" 不足,那么提案进入 "),A("code",[g._v("deposit_period")]),g._v(" 状态。 此后,任何通证持有人可以通过 "),A("code",[g._v("depositTx")]),g._v(" 交易增加对提案的抵押。")]),g._v(" "),A("p",[g._v("当"),A("code",[g._v("deposit")]),g._v(" 达到 "),A("code",[g._v("minDeposit")]),g._v(",提案进入2周的 "),A("code",[g._v("voting_period")]),g._v(" 。 任何"),A("strong",[g._v("抵押了通证")]),g._v("的持有人都可以参与对这个提案的投票。投票的选项有"),A("code",[g._v("Yes")]),g._v(", "),A("code",[g._v("No")]),g._v(", "),A("code",[g._v("NoWithVeto")]),g._v(" 和 "),A("code",[g._v("Abstain")]),g._v("。投票的权重取决于投票人所抵押的通证数量。如果通证持有人不投票,那么委托人将继承其委托的验证人的投票选项。当然,委托人也可以自己投出与所委托验证人不同的票。")]),g._v(" "),A("p",[g._v("当投票期结束后,获得50%(不包括投"),A("code",[g._v("Abstain")]),g._v("票)以上 "),A("code",[g._v("Yes")]),g._v(" 投票权重且少于33.33% 的"),A("code",[g._v("NoWithVeto")]),g._v("(不包括投"),A("code",[g._v("Abstain")]),g._v("票)提案将被接受,")]),g._v(" "),A("h4",{attrs:{id:"实践练习"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#实践练习"}},[g._v("#")]),g._v(" 实践练习")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("在您能够抵押通证或者提取奖励以前,您需要了解"),A("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BCatom%E9%80%9A%E8%AF%81--%E6%8F%90%E5%8F%96%E5%A5%96%E5%8A%B1"}},[g._v("通证抵押")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意:执行以下命令需要一台联网的计算机。用一个硬件钱包设备执行这些命令会更安全。关于离线交易过程请看"),A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("这里")]),g._v(".")]),g._v("\n:::")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5o+Q5Lqk5LiA5Liq5o+Q5qGICi8vICZsdDt0eXBlJmd0Oz10ZXh0L3BhcmFtZXRlcl9jaGFuZ2Uvc29mdHdhcmVfdXBncmFkZQovLyBleCB2YWx1ZSBmb3IgZmxhZzogJmx0O2dhc1ByaWNlJmd0Oz0xMDB1YXRvbQoKZ2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCAtLXRpdGxlICZxdW90O1Rlc3QgUHJvcG9zYWwmcXVvdDsgLS1kZXNjcmlwdGlvbiAmcXVvdDtNeSBhd2Vzb21lIHByb3Bvc2FsJnF1b3Q7IC0tdHlwZSAmbHQ7dHlwZSZndDsgLS1kZXBvc2l0PTEwMDAwMDAwdWF0b20gLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyDlop7liqDlr7nmj5DmoYjnmoTmirXmirwKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIGRlcG9zaXRfcGVyaW9kCi8vIOmAmui/hyAkZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZCDlkb3ku6TojrflvpcgYHByb3Bvc2FsSURgIAovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDtkZXBvc2l0Jmd0Oz0xMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyDlr7nkuIDkuKrmj5DmoYjmipXnpagKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIHZvdGluZ19wZXJpb2QgCumAmui/hyAkZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZCDlkb3ku6TojrflvpcgYHByb3Bvc2FsSURgIAovLyAmbHQ7b3B0aW9uJmd0Oz15ZXMvbm8vbm9fd2l0aF92ZXRvL2Fic3RhaW4KCmdhaWFkIHR4IGdvdiB2b3RlICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7b3B0aW9uJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsK"}}),g._v(" "),A("h3",{attrs:{id:"从一台离线电脑上签署交易"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#从一台离线电脑上签署交易"}},[g._v("#")]),g._v(" 从一台离线电脑上签署交易")]),g._v(" "),A("p",[g._v("如果你没有数字钱包设备,而且希望和一台存有私钥的没有联网的电脑进行交互,你可以使用如下过程。首先,在"),A("strong",[g._v("联网的电脑上")]),g._v("生成一个没有签名的交易,然后通过下列命令操作(下面以抵押交易为例):")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5oq15oq8QXRvbemAmuivgQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMDAwMHVhdG9tLCAmbHQ7YmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTEwMDB1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Ftb3VudFRvQm9uZCZndDsgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVFguanNvbgo="}}),g._v(" "),A("p",[g._v("然后,复制 "),A("code",[g._v("unsignedTx.json")]),g._v(" 并且帮它转移到没有联网的电脑上(比如通过U盘)。如果没有在没联网的电脑上建立账户,可先"),A("a",{attrs:{href:"#%E4%BD%BF%E7%94%A8%E7%94%B5%E8%84%91%E8%AE%BE%E5%A4%87%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C"}},[g._v("在没有联网的电脑上建立账户")]),g._v("。为了进一步保障安全,你可以在签署交易前用以下命令对参数进行检查。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),g._v(" "),A("p",[g._v("现在,通过以下命令对交易签名:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tLWFkZHIgJmx0O2RlbGVnYXRvckFkZHImZ3Q7Jmd0OyBzaWduZWRUeC5qc29uCg=="}}),g._v(" "),A("p",[g._v("复制 "),A("code",[g._v("signedTx.json")]),g._v(" 并转移回联网的那台电脑。最后,用以下命令向网络广播交易。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);C.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{495:function(g,C,A){"use strict";A.r(C);var I=A(1),v=Object(I.a)({},(function(){var g=this,C=g.$createElement,A=g._self._c||C;return A("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[A("h1",{attrs:{id:"委托人指南-cli"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#委托人指南-cli"}},[g._v("#")]),g._v(" 委托人指南 (CLI)")]),g._v(" "),A("p",[g._v("本文介绍了如何使用Cosmos Hub的命令行交互(CLI)程序实现通证委托的相关知识和操作步骤。")]),g._v(" "),A("p",[g._v("同时,本文也介绍了如何管理账户,如何从筹款人那里恢复账户,以及如何使用一个硬件钱包的相关知识。")]),g._v(" "),A("p",[g._v("::: 风险提示")]),g._v(" "),A("p",[A("strong",[g._v("重要提示")]),g._v(":请务必按照下面的操作步骤谨慎操作,过程中发生任何错误都有可能导致您永远失去所拥有的通证。因此,请在开始操作之前先仔细阅读全文,如果有任何问题可以联系我们获得支持。")]),g._v(" "),A("p",[g._v("另请注意,您即将要与Cosmos Hub进行交互,Cosmos Hub仍然是一个试验型的区块链技术软件。虽然Cosmos Hub区块链是应用现有最新技术开发并经过审核的,但我们仍然可能会在运行时遇到问题,需要不断更新和修复漏洞。此外,使用区块链技术仍然要求有很高的技术能力,并且有可能遇到我们无法预知和控制的风险。使用Cosmos Hub前,您需要充分了解与加密软件相关的潜在风险(请参考"),A("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[g._v("Cosmos跨链贡献条款"),A("OutboundLink")],1),g._v("中关于风险的部分条款),并且我们跨链基金会和(或)Tendermint/CometBFT团队对于因为使用本产品而可能产生的损失不承担任何责任。使用Cosmos Hub需要遵守Apache 2.0开源软件授权条款,用户需要自己承担所有责任,所使用的软件按“现状”提供且不提供任何形式的保障或条件。\n:::")]),g._v(" "),A("p",[g._v("请务必谨慎行事!")]),g._v(" "),A("h2",{attrs:{id:"目录"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#目录"}},[g._v("#")]),g._v(" 目录")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E5%AE%89%E8%A3%85-gaiad"}},[g._v("安装 "),A("code",[g._v("gaiad")])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#Cosmos%E8%B4%A6%E6%88%B7"}},[g._v("Cosmos账户")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E9%80%9A%E8%BF%87%E5%8B%9F%E8%B5%84%E4%BA%BA%E6%81%A2%E5%A4%8D%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("通过募资人恢复一个账户")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("创建一个账户")])])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%AE%BF%E9%97%AECosmos-Hub%E7%BD%91%E7%BB%9C"}},[g._v("访问Cosmos Hub网络")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E8%BF%90%E8%A1%8C%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E5%85%A8%E8%8A%82%E7%82%B9"}},[g._v("运行您自己的全节点")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%80%E4%B8%AA%E8%BF%9C%E7%A8%8B%E5%85%A8%E8%8A%82%E7%82%B9"}},[g._v("连接到一个远程全节点")])])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[g._v("设置"),A("code",[g._v("gaiad")])])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E7%8A%B6%E6%80%81%E6%9F%A5%E8%AF%A2"}},[g._v("状态查询")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%8F%91%E8%B5%B7%E4%BA%A4%E6%98%93"}},[g._v("发起交易")]),g._v(" "),A("ul",[A("li",[A("a",{attrs:{href:"#%E5%85%B3%E4%BA%8Egas%E8%B4%B9%E5%92%8C%E6%89%8B%E7%BB%AD%E8%B4%B9"}},[g._v("关于gas费和手续费")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BCatom%E9%80%9A%E8%AF%81--%E6%8F%90%E5%8F%96%E5%A5%96%E5%8A%B1"}},[g._v("抵押Atom通证 & 提取奖励")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E5%8F%82%E4%B8%8E%E9%93%BE%E4%B8%8A%E6%B2%BB%E7%90%86"}},[g._v("参与链上治理")])]),g._v(" "),A("li",[A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("从一台离线电脑上签署交易")])])])])]),g._v(" "),A("h2",{attrs:{id:"安装-gaiad"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaiad"}},[g._v("#")]),g._v(" 安装 "),A("code",[g._v("gaiad")])]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(": 与"),A("code",[g._v("gaiad")]),g._v("全节点交互的命令行用户界面。")]),g._v(" "),A("p",[g._v("::: 安全提示")]),g._v(" "),A("p",[A("strong",[g._v("请检查并且确认你下载的"),A("code",[g._v("gaiad")]),g._v("是可获得的最新稳定版本")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("["),A("strong",[g._v("下载已编译代码")]),g._v("]暂不提供")]),g._v(" "),A("p",[A("a",{attrs:{href:"https://cosmos.network/docs/gaia/installation.html",target:"_blank",rel:"noopener noreferrer"}},[A("strong",[g._v("通过源代码安装")]),A("OutboundLink")],1)]),g._v(" "),A("div",{staticClass:"custom-block tip"},[A("p",{staticClass:"custom-block-title"},[g._v("提示")]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(" 需要通过操作系统的终端窗口使用,打开步骤如下所示:")]),g._v(" "),A("ul",[A("li",[A("strong",[g._v("Windows")]),g._v(": "),A("code",[g._v("开始")]),g._v(" > "),A("code",[g._v("所有程序")]),g._v(" > "),A("code",[g._v("附件")]),g._v(" > "),A("code",[g._v("终端")])]),g._v(" "),A("li",[A("strong",[g._v("MacOS")]),g._v(": "),A("code",[g._v("访达")]),g._v(" > "),A("code",[g._v("应用程序")]),g._v(" > "),A("code",[g._v("实用工具")]),g._v(" > "),A("code",[g._v("终端")])]),g._v(" "),A("li",[A("strong",[g._v("Linux")]),g._v(": "),A("code",[g._v("Ctrl")]),g._v(" + "),A("code",[g._v("Alt")]),g._v(" + "),A("code",[g._v("T")])])])]),g._v(" "),A("h2",{attrs:{id:"cosmos账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#cosmos账户"}},[g._v("#")]),g._v(" Cosmos账户")]),g._v(" "),A("p",[g._v("每个Cosmos账户的核心基础是一个包含12或24个词的助记词组,通过这个助记词可以生成无数个Cosmos账户,例如,一组私钥/公钥对。这被称为一个硬件钱包(跟多硬件钱包相关说明请参见"),A("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),A("OutboundLink")],1),g._v(")")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICAgICDotKbmiLcgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICDotKbmiLcgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOi0puaItyAyCgorLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfAp8ICAgICAgIOWcsOWdgCAwICAgICAgfCAgICAgICAgICAgICAgfCAgICAgIOWcsOWdgCAxICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg5Zyw5Z2AIDIgICAgICB8CnwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICArICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8CnwgICAgICAg5YWs6ZKlIDAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAg5YWs6ZKlIDEgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICDlhazpkqUgMiAgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgICAgICDnp4HpkqUgMCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICDnp4HpkqUgMSAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgIOengemSpSAyICAgICAgfAp8ICAgICAgICBeICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICBeICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg5Yqp6K6w6K+NIChTZWVkKSAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),A("p",[g._v("私钥是控制一个账户中所存资产的钥匙。私钥是通过助记词单向产生的。如果您不小心丢失了私钥,你可以通过助记词恢复。 然而,如果你丢失了助记词,那么你就有可能失去对由这个助记词产生的所有私钥的控制。同样,如果有人获得了你的助记词,他们就可以操作所有相关账户。")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("谨慎保管并不要告诉他人你的助记词。 为了防止资产被盗或者丢失,您最好多备份几份助记词, 并且把它们存放在只有您知道的安全地方,这样做将有助于保障您的私钥以及相关账户的安全。")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("Cosmos地址是一个以可读词开头的字符串(比如"),A("code",[g._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),g._v(") 如果有人想给你转账通证,他们就往这个地址转账。根据给定地址来推算私钥是不可行的。")]),g._v(" "),A("h3",{attrs:{id:"通过募资人恢复一个账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#通过募资人恢复一个账户"}},[g._v("#")]),g._v(" 通过募资人恢复一个账户")]),g._v(" "),A("p",[g._v("::: 提示")]),g._v(" "),A("p",[A("em",[g._v("注:这部分内容仅适用于众筹活动参与者")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("如果您是众筹的参与者,你应该有一个助记词。新产生的助记词用24个词,但是12个词的助记词组也兼容所有Cosmos工具。")]),g._v(" "),A("h4",{attrs:{id:"通过硬件钱包设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#通过硬件钱包设备进行操作"}},[g._v("#")]),g._v(" 通过硬件钱包设备进行操作")]),g._v(" "),A("p",[g._v("一个数字钱包设备的核心是通过一个助记词在多个区块链上创建账户(包括Cosmos hub)。通常,您会在初始化您的数字钱包设备时创建一个新的助记词,也可以通过已有的助记词进行导入。让我们一起来看如何将您在参与众筹时获得的助记词设定为一个数字钱包设备的seed。")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("em",[g._v("注意:"),A("strong",[g._v("最好使用一个新的钱包设备")]),g._v("来恢复您的Cosmos账户。确实,每个数字钱包设备只能有一个助记词。 当然,您可以通过 "),A("code",[g._v("设置")]),g._v(">"),A("code",[g._v("设备")]),g._v(">"),A("code",[g._v("重置所有")]),g._v(" 将一个已经有助记词的(用过的)数字钱包重新初始化。"),A("strong",[g._v("但请注意,这样会清空您设备中现有的助记词,如果您没有做好备份的话,有可能会丢失您的资产")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("对于一个没有初始化的数字钱包设备,您需要做如下操作。")]),g._v(" "),A("ol",[A("li",[g._v("将您的数字钱包设备通过USB与电脑链接")]),g._v(" "),A("li",[g._v("同时按下两个按钮")]),g._v(" "),A("li",[A("strong",[g._v("不要")]),g._v("选择“配置一个新设备”选项,而是选择“恢复配置”")]),g._v(" "),A("li",[g._v("选择一个PIN")]),g._v(" "),A("li",[g._v("选择12个词选项")]),g._v(" "),A("li",[g._v("逐个按顺序输入您在众筹时获得的12个助记词")])]),g._v(" "),A("p",[g._v("现在,您的钱包已经正确地设置好您在众筹时获得的助记词,切勿丢失!任何时候您的钱包设备出现问题,您都可以通过助记词在一个新的钱包设备上恢复所有账户。")]),g._v(" "),A("p",[g._v("接下来,请点击"),A("a",{attrs:{href:"#%E4%BD%BF%E7%94%A8%E7%A1%AC%E4%BB%B6%E9%92%B1%E5%8C%85%E8%AE%BE%E5%A4%87%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C"}},[g._v("这里")]),g._v("来学习如何生成一个账户。")]),g._v(" "),A("h4",{attrs:{id:"在电脑上操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#在电脑上操作"}},[g._v("#")]),g._v(" 在电脑上操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意: 在一台没有联网的计算机上执行以下操作会更加安全")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("如果您希望通过众筹时获得的助记词恢复账户并保存相关私钥,请按以下步骤操作:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIK"}}),g._v(" "),A("p",[g._v("首先,您需要输入一个密码来对您硬盘上账户"),A("code",[g._v("0")]),g._v("的私钥进行加密。每次您发出一笔交易时都将需要输入这个密码。如果您丢失了密码,您可以通过助记词来恢复您的私钥。")]),g._v(" "),A("p",[g._v("-"),A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称被用来识别您的账户。")]),g._v(" "),A("ul",[A("li",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])]),g._v(" "),A("h3",{attrs:{id:"创建一个账户"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#创建一个账户"}},[g._v("#")]),g._v(" 创建一个账户")]),g._v(" "),A("p",[g._v("前,您需要先安装"),A("code",[g._v("gaiad")]),g._v(",同时,您需要知道你希望在哪里保存和使用您的私钥。 最好的办法是把他们保存在一台没有上网的电脑或者一个硬件钱包设备里面。 将私钥保存在一台联网的电脑里面比较危险,任何人通过网络攻击都有可能获取您的私钥,进而盗取您的资产。")]),g._v(" "),A("h4",{attrs:{id:"使用硬件钱包设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#使用硬件钱包设备进行操作"}},[g._v("#")]),g._v(" 使用硬件钱包设备进行操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("建议仅使用您新买的钱包设备或者您足够信任的设备")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("当您初始化钱包设备时,设备会产生一个24个词的助记词组。这个助记词组和Cosmos是兼容的,我们可以通过这个助记词组创建Cosmos账户。所以,您需要做的是确认您的钱包设备兼容"),A("code",[g._v("gaiad")]),g._v(",通过下面的步骤可以帮助您确认您的设备是否兼容:")]),g._v(" "),A("ol",[A("li",[g._v("下载"),A("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[g._v("Ledger Live应用"),A("OutboundLink")],1),g._v(".")]),g._v(" "),A("li",[g._v("通过USB将钱包与计算机连接,并且将钱包固件升级到最新版本。")]),g._v(" "),A("li",[g._v("到Ledger Live钱包的应用商店下载”Cosmos“应用(这可能需要花些时间)。"),A("strong",[g._v("下载”Cosmos“应用程序需要在Ledger Live钱包"),A("code",[g._v("Settings")]),g._v("选项中激活"),A("code",[g._v("Dev Mode")])])]),g._v(" "),A("li",[g._v("在你的钱包设备上操作Cosmos APP。")])]),g._v(" "),A("p",[g._v("然后,通过以下命令创建账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJBY2NvdW50TmFtZSZndDsgLS1sZWRnZXIgCg=="}}),g._v(" "),A("p",[g._v("::: 注意: 该命令仅在硬件钱包已导入并在解锁状态时才有效:::")]),g._v(" "),A("ul",[A("li",[A("p",[A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称被用来识别您的账户。")])]),g._v(" "),A("li",[A("p",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])])]),g._v(" "),A("h4",{attrs:{id:"使用电脑设备进行操作"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#使用电脑设备进行操作"}},[g._v("#")]),g._v(" 使用电脑设备进行操作")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意:在一台没有联网的电脑上操作会更加安全")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("然后,通过以下命令创建账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0Owo="}}),g._v(" "),A("p",[g._v("这个命令会产生一个24个词的助记词组,并且同时保存账户 "),A("code",[g._v("0")]),g._v(" 的私钥和公钥。 另外,您还需要输入一个密码来对您硬盘上账户"),A("code",[g._v("0")]),g._v("的私钥进行加密。 每次您发出一笔交易时都将需要输入这个密码。如果您丢失了密码,您可以通过助记词来恢复您的私钥。")]),g._v(" "),A("p",[g._v("::: 危险提示")]),g._v(" "),A("p",[A("strong",[g._v("千万不要丢失或者告诉其他人你的12个词的助记词组。 为了防止资产被盗或者丢失,您最好多备份几份助记词, 并且把它们存放在只有您知道的安全地方,如果有人取得您的助记词,那么他也就取得了您的私钥并且可以控制相关账户。")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n在确认已经安全保存好您的助记词以后(至少3遍!),你可以用如下命令清除终端窗口中的命令历史记录,以防有人通过历史记录获得您的助记词。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}}),g._v(" "),A("p",[g._v(":::")]),g._v(" "),A("p",[g._v("你可以用以下命令使用助记词生成多个账户:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),g._v(" "),A("ul",[A("li",[A("ul",[A("li",[A("code",[g._v("")]),g._v(" 是账户名称,用来指代用助记词生成私钥/公钥对的Cosmos账户。在您发起交易时,这个账户名称用来识别您的账户。")])])]),g._v(" "),A("li",[A("p",[g._v("您可以通过增加 "),A("code",[g._v("--account")]),g._v(" 标志来指定您账户生成的路径 ("),A("code",[g._v("0")]),g._v(", "),A("code",[g._v("1")]),g._v(", "),A("code",[g._v("2")]),g._v(", ...), "),A("code",[g._v("0")]),g._v(" 是缺省值。")])])]),g._v(" "),A("p",[g._v("这条命令需要您输入一个密码。改变账号就代表生成了一个新的账户。")]),g._v(" "),A("h2",{attrs:{id:"访问cosmos-hub网络"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#访问cosmos-hub网络"}},[g._v("#")]),g._v(" 访问Cosmos Hub网络")]),g._v(" "),A("p",[g._v("为了查询网络状态和发起交易,你需要通过自建一个全节点,或者连接到其他人的全节点访问Cosmos Hub网络")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意: 请不要与任何人分享您的助记词,您是唯一需要知道这些助记词的人。如果任何人通过邮件或者其他社交媒体向您要求您提供您的助记词,那就需要警惕了。 请记住,Cosmos/Tendermint团队,或跨链基金会永远不会通过邮件要求您提供您的账户密码或助记词。")]),g._v("\n:::")]),g._v(" "),A("h3",{attrs:{id:"运行您自己的全节点"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#运行您自己的全节点"}},[g._v("#")]),g._v(" 运行您自己的全节点")]),g._v(" "),A("p",[g._v("这是最安全的途径,但需要相当多的资源。您需要有较大的带宽和至少1TB的磁盘容量来运行一个全节点。")]),g._v(" "),A("p",[A("code",[g._v("gaia")]),g._v("的安装教程在"),A("RouterLink",{attrs:{to:"/zh/getting-started/installation.html"}},[g._v("这里")]),g._v(", 如何运行一个全节点指导在"),A("RouterLink",{attrs:{to:"/zh/hub-tutorials/join-mainnet.html"}},[g._v("这里")])],1),g._v(" "),A("h3",{attrs:{id:"连接到一个远程全节点"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#连接到一个远程全节点"}},[g._v("#")]),g._v(" 连接到一个远程全节点")]),g._v(" "),A("p",[g._v("如果您不想或没有能力运行一个全节点,您也可以连接到其他人的全节点。您需要谨慎的选择一个可信的运营商,因为恶意的运营商往往会向您反馈错误的查询结果,或者对您的交易进行监控。 然而,他们永远也无法盗取您的资产,因为您的私钥仅保持在您的本地计算机或者钱包设备中。 验证人,钱包供应商或者交易所是可以提供全节点的运营商。")]),g._v(" "),A("p",[g._v("连接到其他人提供的全节点,你需要一个全节点地址,如"),A("code",[g._v("https://77.87.106.33:26657")]),g._v("。这个地址是您的供应商提供的一个可信的接入地址。你会在下一节中用到这个地址。")]),g._v(" "),A("h2",{attrs:{id:"设置-gaiad"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#设置-gaiad"}},[g._v("#")]),g._v(" 设置 "),A("code",[g._v("gaiad")])]),g._v(" "),A("p",[g._v("::: 提示")]),g._v(" "),A("p",[A("strong",[g._v("在开始设置 "),A("code",[g._v("gaiad")]),g._v("前,请确认你已经可以"),A("a",{attrs:{href:"#%E8%AE%BF%E9%97%AEcosmos-hub%E7%BD%91%E7%BB%9C"}},[g._v("访问Cosmos Hub网络")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("请确认您使用的"),A("code",[g._v("gaiad")]),g._v("是最新的稳定版本")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("无论您是否在自己运行一个节点,"),A("code",[g._v("gaiad")]),g._v(" 都可以帮您实现与Cosmos Hub网络的交互。让我们来完成对它的配置。")]),g._v(" "),A("p",[g._v("您需要用下面的命令行完成对"),A("code",[g._v("gaiad")]),g._v("的配置:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),g._v(" "),A("p",[g._v("此命名允许您为每个参数设置缺省值。")]),g._v(" "),A("p",[g._v("首先,设置你想要访问的全节点的地址:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyDmoLfkvos6IGdhaWFkIGNvbmZpZyBub2RlIGh0dHBzOi8vNzcuODcuMTA2LjMzOjI2NjU3Cg=="}}),g._v(" "),A("p",[g._v("如果你是自己运行全节点,可以使用 "),A("code",[g._v("tcp://localhost:26657")]),g._v(" 作为地址。")]),g._v(" "),A("p",[g._v("最后,让我们设置需要访问区块链的 "),A("code",[g._v("chain-id")])]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGdvcy02Cg=="}}),g._v(" "),A("h2",{attrs:{id:"状态查询"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#状态查询"}},[g._v("#")]),g._v(" 状态查询")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("准备抵押ATOM通证和取回奖励前,需要先完成 "),A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[A("code",[g._v("gaiad")]),g._v(" 配置")])]),g._v("\n:::")]),g._v(" "),A("p",[A("code",[g._v("gaiad")]),g._v(" 可以帮助您获得所有区块链的相关信息, 比如账户余额,抵押通证数量,奖励,治理提案以及其他信息。下面是一组用于委托操作的命令")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ci8vIOafpeivoui0puaIt+S9memineaIluiAheWFtuS7lui0puaIt+ebuOWFs+S/oeaBrwpnYWlhZCBxdWVyeSBhY2NvdW50CgoKLy8g5p+l6K+i6aqM6K+B5Lq65YiX6KGoCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9ycwoKCi8vIOafpeivouaMh+WumuWcsOWdgOeahOmqjOivgeS6uueahOS/oeaBryhlLmcuIGNvc21vc3ZhbG9wZXIxbjVwZXB2bWdzZmQzcDJ0cXFndnQ1MDVqdnltbXN0ZjZzOWd3MjcpCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9yICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OwoKCi8v5p+l6K+i5oyH5a6a5Zyw5Z2A55qE6aqM6K+B5Lq655u45YWz55qE5omA5pyJ5aeU5omY5L+h5oGvIChlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZykKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIOafpeivouS7juS4gOS4quaMh+WumuWcsOWdgOeahOWnlOaJmOS6uihlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZynlkozkuIDkuKrmjIflrprlnLDlnYDnmoTpqozor4HkurooZS5nLiBjb3Ntb3N2YWxvcGVyMW41cGVwdm1nc2ZkM3AydHFxZ3Z0NTA1anZ5bW1zdGY2czlndzI3KSDkuYvpl7TnmoTlp5TmiZjkuqTmmJMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsKCi8vIOafpeivouS4gOS4quaMh+WumuWcsOWdgOeahOWnlOaJmOS6uihlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZynmiYDog73ojrflvpfnmoTlpZblirHmg4XlhrUKZ2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvckFkZHJlc3MmZ3Q7IAoKLy8g5p+l6K+i5omA5pyJ546w5Zyo5q2j562J5b6F5oq15oq855qE5o+Q5qGICmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKCi8v5p+l6K+i5omA5pyJ546w5Zyo5q2j562J5b6F5oqV56Wo55qE5aGrCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZAoKLy8g5p+l6K+i5LiA5Liq5oyH5a6acHJvcHNhbElE55qE5o+Q5qGI5L+h5oGvCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbCAmbHQ7cHJvcG9zYWxJRCZndDsK"}}),g._v(" "),A("p",[g._v("需要了解跟多的命令,只需要用:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),g._v(" "),A("p",[g._v("对于每条命令,您都可以使用"),A("code",[g._v("-h")]),g._v(" 或 "),A("code",[g._v("--help")]),g._v(" 参数来获得更多的信息。")]),g._v(" "),A("h2",{attrs:{id:"发起交易"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#发起交易"}},[g._v("#")]),g._v(" 发起交易")]),g._v(" "),A("h3",{attrs:{id:"关于gas费和手续费"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#关于gas费和手续费"}},[g._v("#")]),g._v(" 关于gas费和手续费")]),g._v(" "),A("p",[g._v("Cosmos Hub网络上的交易在被执行时需要支付手续费。这个手续费是用于支付执行交易所需的gas。计算公式如下:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),g._v(" "),A("p",[A("code",[g._v("gas")]),g._v(" 的多少取决于交易类型,不同的交易类型会收取不同的 "),A("code",[g._v("gas")]),g._v(" 。每个交易的 "),A("code",[g._v("gas")]),g._v(" 费是在实际执行过程中计算的,但我们可以通过设置 "),A("code",[g._v("gas")]),g._v(" 参数中的 "),A("code",[g._v("auto")]),g._v(" 值实现在交易前对 "),A("code",[g._v("gas")]),g._v(" 费的估算,但这只是一个粗略的估计,你可以通过 "),A("code",[g._v("--gas-adjustment")]),g._v(" (缺省值 "),A("code",[g._v("1.0")]),g._v(") 对预估的"),A("code",[g._v("gas")]),g._v(" 值进行调节,以确保为交易支付足够的"),A("code",[g._v("gas")]),g._v(" 。")]),g._v(" "),A("p",[A("code",[g._v("gasPrice")]),g._v(" 用于设置单位 "),A("code",[g._v("gas")]),g._v(" 的价格。每个验证人会设置一个最低gas价"),A("code",[g._v("min-gas-price")]),g._v(", 并只会将"),A("code",[g._v("gasPrice")]),g._v("大于"),A("code",[g._v("min-gas-price")]),g._v("的交易打包。")]),g._v(" "),A("p",[g._v("交易的"),A("code",[g._v("fees")]),g._v(" 是"),A("code",[g._v("gas")]),g._v(" 和 "),A("code",[g._v("gasPrice")]),g._v("的乘积。作为一个用户,你需要输入3个参数中至少2个, "),A("code",[g._v("gasPrice")]),g._v("/"),A("code",[g._v("fees")]),g._v("的值越大,您的交易就越有机会被打包执行。")]),g._v(" "),A("h3",{attrs:{id:"抵押atom通证-提取奖励"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#抵押atom通证-提取奖励"}},[g._v("#")]),g._v(" 抵押Atom通证 & 提取奖励")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("在您抵押通证或取回奖励之前,您需要完成"),A("a",{attrs:{href:"#%E8%AE%BE%E7%BD%AE-gaiad"}},[A("code",[g._v("gaiad")]),g._v(" 设置")]),g._v(" 和 "),A("a",{attrs:{href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"}},[g._v("创建账户")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n"),A("strong",[g._v("在抵押通证前,请仔细阅读"),A("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[g._v("委托者常见问题"),A("OutboundLink")],1),g._v(" 并且理解其中的风险和责任")]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告\n"),A("strong",[g._v("注意:执行以下命令需要在一台联网的计算机。用一个硬件钱包设备执行这些命令会更安全。关于离线交易过程请看"),A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("这里")]),g._v(".")]),g._v("\n:::")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5ZCR5oyH5a6a6aqM6K+B5Lq657uR5a6a5LiA5a6a5pWw6YeP55qEQXRvbemAmuivgQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7YW1vdW50VG9Cb3VuZCZndDs9MTAwMDAwMDAwMDB1YXRvbSwgJmx0O2dhc1ByaWNlJmd0Oz0xMDAwdWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgZGVsZWdhdGUgJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7ICZsdDthbW91bnRUb0JvbmQmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsgLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OwoKCi8vIOaPkOWPluaJgOacieeahOWlluWKsQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDtnYXNQcmljZSZndDs9MTAwMHVhdG9tCgpnYWlhZCB0eCBkaXN0cmlidXRpb24gd2l0aGRyYXctYWxsLXJld2FyZHMgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7CgoKLy8g5ZCR5oyH5a6a6aqM6K+B5Lq655Sz6K+36Kej57uR5LiA5a6a5pWw6YeP55qEQXRvbemAmuivgQovLyDop6Pnu5HnmoTpgJror4HpnIDopoEz5ZGo5ZCO5omN6IO95a6M5YWo6Kej57uR5bm25Y+v5Lul5Lqk5piT77yMCi8vIOWPguaVsOiuvuWumuagt+S+izogJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDthbW91bnRUb1VuYm91bmQmZ3Q7PTEwMDAwMDAwMDAwdWF0b20sICZsdDtnYXNQcmljZSZndDs9MTAwMHVhdG9tCgpnYWlhZCB0eCBzdGFraW5nIHVuYm9uZCAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Ftb3VudFRvVW5ib25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsK"}}),g._v(" "),A("p",[g._v("::: 提示\n:::\n如果您是使用一个联网的钱包设备,在交易被广播到网络前您需要在设备上确认交易。")]),g._v(" "),A("p",[g._v("确认您的交易已经发出,可以用以下查询:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5oKo55qE6LSm5oi35L2Z6aKd5Zyo5oKo5oq15oq8QXRvbemAmuivgeaIluiAheWPluWbnuWlluWKseWQjuS8muWPkeeUn+WPmOWMlgpnYWlhZCBxdWVyeSBhY2NvdW50CgovLyDmgqjlnKjmirXmirzlkI7lupTor6Xog73mn6XliLDlp5TmiZjkuqTmmJMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIOWmguaenOS6pOaYk+W3sue7j+iiq+aJk+WMhe+8jOWwhuS8mui/lOWbnuS6pOaYk+iusOW9le+8iHR477yJCi8vIOWcqOS7peS4i+afpeivouWRveS7pOS4reWPr+S7peS9v+eUqOaYvuekuueahOS6pOaYk+WTiOW4jOWAvOS9nOS4uuWPguaVsApnYWlhZCBxdWVyeSB0eCAmbHQ7dHhIYXNoJmd0OwoK"}}),g._v(" "),A("p",[g._v("如果您是连接到一个可信全节点的话,您可以通过一个区块链浏览器做检查。")]),g._v(" "),A("h2",{attrs:{id:"参与链上治理"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#参与链上治理"}},[g._v("#")]),g._v(" 参与链上治理")]),g._v(" "),A("h4",{attrs:{id:"链上治理入门"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#链上治理入门"}},[g._v("#")]),g._v(" 链上治理入门")]),g._v(" "),A("p",[g._v("Cosmos Hub有一个内建的治理系统,该系统允许抵押通证的持有人参与提案投票。系统现在支持3种提案类型:")]),g._v(" "),A("ul",[A("li",[A("code",[g._v("Text Proposals")]),g._v(": 这是最基本的一种提案类型,通常用于获得大家对某个网络治理意见的观点。")]),g._v(" "),A("li",[A("code",[g._v("Parameter Proposals")]),g._v(": 这种提案通常用于改变网络参数的设定。")]),g._v(" "),A("li",[A("code",[g._v("Software Upgrade Proposal")]),g._v(": 这个提案用于升级Hub的软件。")])]),g._v(" "),A("p",[g._v("任何Atom通证的持有人都能够提交一个提案。为了让一个提案获准公开投票,提议人必须要抵押一定量的通证 "),A("code",[g._v("deposit")]),g._v(",且抵押值必须大于 "),A("code",[g._v("minDeposit")]),g._v(" 参数设定值. 提案的抵押不需要提案人一次全部交付。如果早期提案人交付的 "),A("code",[g._v("deposit")]),g._v(" 不足,那么提案进入 "),A("code",[g._v("deposit_period")]),g._v(" 状态。 此后,任何通证持有人可以通过 "),A("code",[g._v("depositTx")]),g._v(" 交易增加对提案的抵押。")]),g._v(" "),A("p",[g._v("当"),A("code",[g._v("deposit")]),g._v(" 达到 "),A("code",[g._v("minDeposit")]),g._v(",提案进入2周的 "),A("code",[g._v("voting_period")]),g._v(" 。 任何"),A("strong",[g._v("抵押了通证")]),g._v("的持有人都可以参与对这个提案的投票。投票的选项有"),A("code",[g._v("Yes")]),g._v(", "),A("code",[g._v("No")]),g._v(", "),A("code",[g._v("NoWithVeto")]),g._v(" 和 "),A("code",[g._v("Abstain")]),g._v("。投票的权重取决于投票人所抵押的通证数量。如果通证持有人不投票,那么委托人将继承其委托的验证人的投票选项。当然,委托人也可以自己投出与所委托验证人不同的票。")]),g._v(" "),A("p",[g._v("当投票期结束后,获得50%(不包括投"),A("code",[g._v("Abstain")]),g._v("票)以上 "),A("code",[g._v("Yes")]),g._v(" 投票权重且少于33.33% 的"),A("code",[g._v("NoWithVeto")]),g._v("(不包括投"),A("code",[g._v("Abstain")]),g._v("票)提案将被接受,")]),g._v(" "),A("h4",{attrs:{id:"实践练习"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#实践练习"}},[g._v("#")]),g._v(" 实践练习")]),g._v(" "),A("p",[g._v("::: 提示\n"),A("strong",[g._v("在您能够抵押通证或者提取奖励以前,您需要了解"),A("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BCatom%E9%80%9A%E8%AF%81--%E6%8F%90%E5%8F%96%E5%A5%96%E5%8A%B1"}},[g._v("通证抵押")])]),g._v("\n:::")]),g._v(" "),A("p",[g._v("::: 警告")]),g._v(" "),A("p",[A("strong",[g._v("注意:执行以下命令需要一台联网的计算机。用一个硬件钱包设备执行这些命令会更安全。关于离线交易过程请看"),A("a",{attrs:{href:"#%E4%BB%8E%E4%B8%80%E5%8F%B0%E7%A6%BB%E7%BA%BF%E7%94%B5%E8%84%91%E4%B8%8A%E7%AD%BE%E7%BD%B2%E4%BA%A4%E6%98%93"}},[g._v("这里")]),g._v(".")]),g._v("\n:::")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5o+Q5Lqk5LiA5Liq5o+Q5qGICi8vICZsdDt0eXBlJmd0Oz10ZXh0L3BhcmFtZXRlcl9jaGFuZ2Uvc29mdHdhcmVfdXBncmFkZQovLyBleCB2YWx1ZSBmb3IgZmxhZzogJmx0O2dhc1ByaWNlJmd0Oz0xMDB1YXRvbQoKZ2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCAtLXRpdGxlICZxdW90O1Rlc3QgUHJvcG9zYWwmcXVvdDsgLS1kZXNjcmlwdGlvbiAmcXVvdDtNeSBhd2Vzb21lIHByb3Bvc2FsJnF1b3Q7IC0tdHlwZSAmbHQ7dHlwZSZndDsgLS1kZXBvc2l0PTEwMDAwMDAwdWF0b20gLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyDlop7liqDlr7nmj5DmoYjnmoTmirXmirwKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIGRlcG9zaXRfcGVyaW9kCi8vIOmAmui/hyAkZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZCDlkb3ku6TojrflvpcgYHByb3Bvc2FsSURgIAovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDtkZXBvc2l0Jmd0Oz0xMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1nYXMgYXV0byAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyDlr7nkuIDkuKrmj5DmoYjmipXnpagKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIHZvdGluZ19wZXJpb2QgCumAmui/hyAkZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZCDlkb3ku6TojrflvpcgYHByb3Bvc2FsSURgIAovLyAmbHQ7b3B0aW9uJmd0Oz15ZXMvbm8vbm9fd2l0aF92ZXRvL2Fic3RhaW4KCmdhaWFkIHR4IGdvdiB2b3RlICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7b3B0aW9uJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsK"}}),g._v(" "),A("h3",{attrs:{id:"从一台离线电脑上签署交易"}},[A("a",{staticClass:"header-anchor",attrs:{href:"#从一台离线电脑上签署交易"}},[g._v("#")]),g._v(" 从一台离线电脑上签署交易")]),g._v(" "),A("p",[g._v("如果你没有数字钱包设备,而且希望和一台存有私钥的没有联网的电脑进行交互,你可以使用如下过程。首先,在"),A("strong",[g._v("联网的电脑上")]),g._v("生成一个没有签名的交易,然后通过下列命令操作(下面以抵押交易为例):")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g5oq15oq8QXRvbemAmuivgQovLyDlj4LmlbDorr7lrprmoLfkvos6ICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMDAwMHVhdG9tLCAmbHQ7YmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTEwMDB1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Ftb3VudFRvQm9uZCZndDsgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVFguanNvbgo="}}),g._v(" "),A("p",[g._v("然后,复制 "),A("code",[g._v("unsignedTx.json")]),g._v(" 并且帮它转移到没有联网的电脑上(比如通过U盘)。如果没有在没联网的电脑上建立账户,可先"),A("a",{attrs:{href:"#%E4%BD%BF%E7%94%A8%E7%94%B5%E8%84%91%E8%AE%BE%E5%A4%87%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C"}},[g._v("在没有联网的电脑上建立账户")]),g._v("。为了进一步保障安全,你可以在签署交易前用以下命令对参数进行检查。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),g._v(" "),A("p",[g._v("现在,通过以下命令对交易签名:")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tLWFkZHIgJmx0O2RlbGVnYXRvckFkZHImZ3Q7Jmd0OyBzaWduZWRUeC5qc29uCg=="}}),g._v(" "),A("p",[g._v("复制 "),A("code",[g._v("signedTx.json")]),g._v(" 并转移回联网的那台电脑。最后,用以下命令向网络广播交易。")]),g._v(" "),A("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);C.default=v.exports}}]); \ No newline at end of file diff --git a/main/assets/js/179.38d352e6.js b/main/assets/js/180.efe3f6d9.js similarity index 98% rename from main/assets/js/179.38d352e6.js rename to main/assets/js/180.efe3f6d9.js index e073c142afb..e7361f930ac 100644 --- a/main/assets/js/179.38d352e6.js +++ b/main/assets/js/180.efe3f6d9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{631:function(t,a,s){"use strict";s.r(a);var o=s(1),e=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"安装-gaia"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaia"}},[t._v("#")]),t._v(" 安装 Gaia")]),t._v(" "),s("p",[t._v("本教程将详细说明如何在你的系统上安装"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("。安装后,你可以作为"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("全节点")]),t._v("或是"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("验证人节点")]),t._v("加入到主网。")],1),t._v(" "),s("h3",{attrs:{id:"安装-go"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-go"}},[t._v("#")]),t._v(" 安装 Go")]),t._v(" "),s("p",[t._v("按照"),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("官方文档"),s("OutboundLink")],1),t._v("安装"),s("code",[t._v("go")]),t._v("。记得设置环境变量 "),s("code",[t._v("$PATH")]),t._v(":")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("Cosmos SDK 需要安装"),s("strong",[t._v("Go 1.12+")])])]),t._v(" "),s("h3",{attrs:{id:"安装二进制执行程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装二进制执行程序"}},[t._v("#")]),t._v(" 安装二进制执行程序")]),t._v(" "),s("p",[t._v("接下来,安装最新版本的 Gaia。需要确认您 `git checkout 了正确的"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发布版本"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("对于主网,请确保你的版本大于或等于"),s("code",[t._v("v0.33.0")])])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),s("blockquote",[s("p",[s("em",[t._v("注意")]),t._v(": 如果在这一步中出现问题,请检查你是否安装的是 Go 的最新稳定版本。")])]),t._v(" "),s("p",[t._v("等"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("可执行程序安装完之后,请检查:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("的返回应该类似于:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29zbW9zLXNkazogMC4zMy4wCmdpdCBjb21taXQ6IDdiNDEwNGFjZWQ1MmFhNWI1OWE5NmMyOGI1ZWJlZWE3ODc3ZmM0ZjAKZ28uc3VtIGhhc2g6IGQxNTYxNTNiZDVlMTI4ZmVjMzg2OGVjYTlhMTM5N2E2M2E4NjRlZGI1Y2ZhMGFjNDg2ZGIxYjU3NGI4ZWVjZmUKYnVpbGQgdGFnczogbmV0Z28gbGVkZ2VyCmdvIHZlcnNpb24gZ28xLjEyIGxpbnV4L2FtZDY0Cg=="}}),t._v(" "),s("h5",{attrs:{id:"build-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),s("p",[t._v("build tags 指定了可执行程序具有的特殊特性。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Build Tag")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("netgo")]),t._v(" "),s("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),s("tr",[s("td",[t._v("ledger")]),t._v(" "),s("td",[t._v("支持 Ledger 设备(硬件钱包)")])])])]),t._v(" "),s("h3",{attrs:{id:"接下来"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接下来"}},[t._v("#")]),t._v(" 接下来")]),t._v(" "),s("p",[t._v("然后你可以选择 加入"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("主网")]),t._v("、"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("公共测试网")]),t._v(" 或是 "),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("创建私有测试网")]),t._v("。")],1)],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{550:function(t,a,s){"use strict";s.r(a);var o=s(1),e=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"安装-gaia"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaia"}},[t._v("#")]),t._v(" 安装 Gaia")]),t._v(" "),s("p",[t._v("本教程将详细说明如何在你的系统上安装"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("。安装后,你可以作为"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("全节点")]),t._v("或是"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("验证人节点")]),t._v("加入到主网。")],1),t._v(" "),s("h3",{attrs:{id:"安装-go"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-go"}},[t._v("#")]),t._v(" 安装 Go")]),t._v(" "),s("p",[t._v("按照"),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("官方文档"),s("OutboundLink")],1),t._v("安装"),s("code",[t._v("go")]),t._v("。记得设置环境变量 "),s("code",[t._v("$PATH")]),t._v(":")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("Cosmos SDK 需要安装"),s("strong",[t._v("Go 1.12+")])])]),t._v(" "),s("h3",{attrs:{id:"安装二进制执行程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装二进制执行程序"}},[t._v("#")]),t._v(" 安装二进制执行程序")]),t._v(" "),s("p",[t._v("接下来,安装最新版本的 Gaia。需要确认您 `git checkout 了正确的"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发布版本"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("对于主网,请确保你的版本大于或等于"),s("code",[t._v("v0.33.0")])])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),s("blockquote",[s("p",[s("em",[t._v("注意")]),t._v(": 如果在这一步中出现问题,请检查你是否安装的是 Go 的最新稳定版本。")])]),t._v(" "),s("p",[t._v("等"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("可执行程序安装完之后,请检查:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("的返回应该类似于:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29zbW9zLXNkazogMC4zMy4wCmdpdCBjb21taXQ6IDdiNDEwNGFjZWQ1MmFhNWI1OWE5NmMyOGI1ZWJlZWE3ODc3ZmM0ZjAKZ28uc3VtIGhhc2g6IGQxNTYxNTNiZDVlMTI4ZmVjMzg2OGVjYTlhMTM5N2E2M2E4NjRlZGI1Y2ZhMGFjNDg2ZGIxYjU3NGI4ZWVjZmUKYnVpbGQgdGFnczogbmV0Z28gbGVkZ2VyCmdvIHZlcnNpb24gZ28xLjEyIGxpbnV4L2FtZDY0Cg=="}}),t._v(" "),s("h5",{attrs:{id:"build-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),s("p",[t._v("build tags 指定了可执行程序具有的特殊特性。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Build Tag")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("netgo")]),t._v(" "),s("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),s("tr",[s("td",[t._v("ledger")]),t._v(" "),s("td",[t._v("支持 Ledger 设备(硬件钱包)")])])])]),t._v(" "),s("h3",{attrs:{id:"接下来"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接下来"}},[t._v("#")]),t._v(" 接下来")]),t._v(" "),s("p",[t._v("然后你可以选择 加入"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("主网")]),t._v("、"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("公共测试网")]),t._v(" 或是 "),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("创建私有测试网")]),t._v("。")],1)],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/180.6ebc142a.js b/main/assets/js/181.12f14250.js similarity index 99% rename from main/assets/js/180.6ebc142a.js rename to main/assets/js/181.12f14250.js index 813b78e17af..39a1fb1b62c 100644 --- a/main/assets/js/180.6ebc142a.js +++ b/main/assets/js/181.12f14250.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{632:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"加入主网"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#加入主网"}},[a._v("#")]),a._v(" 加入主网")]),a._v(" "),e("p",[a._v("::: 提示\n请查看"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("获取主网信息,包含了所使用的Cosmos-SDK的正确版本和genesis文件。\n:::")]),a._v(" "),e("p",[a._v("::: 警告\n"),e("strong",[a._v("在更进一步之前你需要"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[a._v("安装gaia")])],1),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"创建一个新节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[a._v("#")]),a._v(" 创建一个新节点")]),a._v(" "),e("p",[a._v("这些指令适用于从头开始设置一个全节点。")]),a._v(" "),e("p",[a._v("首先,初始化节点并创建必要的配置文件:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),e("p",[a._v("::: 注意\nmoniker只能包含ASCII字符。使用Unicode字符会使得你的节点不可访问\n:::")]),a._v(" "),e("p",[a._v("你可以稍后在"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件中编辑"),e("code",[a._v("moniker")]),a._v(":")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你可以编辑"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件来开启垃圾交易过滤机制以拒绝收到的手续费过低的交易:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你的全节点已经初始化成功!")]),a._v(" "),e("h2",{attrs:{id:"genesis-seeds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#genesis-seeds"}},[a._v("#")]),a._v(" Genesis & Seeds")]),a._v(" "),e("h3",{attrs:{id:"复制genesis文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#复制genesis文件"}},[a._v("#")]),a._v(" 复制genesis文件")]),a._v(" "),e("p",[a._v("将主网的"),e("code",[a._v("genesis.json")]),a._v("文件放置在"),e("code",[a._v("gaiad")]),a._v("的配置文件夹中")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("注意我们使用了"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("中的"),e("code",[a._v("latest")]),a._v("文件夹,该文件夹包含了最新版本主网的详细信息。")]),a._v(" "),e("p",[a._v("::: 提示\n如果你想加入的是公共测试网,点击"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[a._v("这里")]),a._v("\n:::")],1),a._v(" "),e("p",[a._v("运行命令验证配置的正确性:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("h3",{attrs:{id:"添加种子节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#添加种子节点"}},[a._v("#")]),a._v(" 添加种子节点")]),a._v(" "),e("p",[a._v("你的节点需要知道如何寻找伙伴节点。你需要添加有用的种子节点到"),e("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("文件中。"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e("code",[a._v("launch")]),e("OutboundLink")],1),a._v(" repo包含了一些种子节点的链接。")]),a._v(" "),e("p",[a._v("如果这些种子节点不再运行,你可以在Cosmos Hub浏览器(可以在"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch page"),e("OutboundLink")],1),a._v("中找到)发现种子节点和持久节点。")]),a._v(" "),e("p",[a._v("你还可以到"),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("验证人Riot聊天室"),e("OutboundLink")],1),a._v("里询问可用节点。")]),a._v(" "),e("p",[a._v("你可以阅读"),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("这里"),e("OutboundLink")],1),a._v("了解更多伙伴节点和种子节点的信息。")]),a._v(" "),e("p",[a._v("::: 警告\n在Cosmos Hub主网中,可接受的币种是"),e("code",[a._v("uatom")]),a._v(","),e("code",[a._v("1atom = 1.000.000uatom")]),a._v("\n:::")]),a._v(" "),e("p",[a._v("Cosmos Hub网络中的交易需要支付一笔交易手续费以得到处理。手续费支付执行交易所消耗的gas。计算公式如下:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),a._v(" "),e("p",[e("code",[a._v("gas")]),a._v("由交易本身决定。不同的交易需要不同数量的"),e("code",[a._v("gas")]),a._v("。一笔交易的"),e("code",[a._v("gas")]),a._v("数量在它被执行时计算,但有一种方式可以提前估算,那就是把标识"),e("code",[a._v("gas")]),a._v("\n的值设置为"),e("code",[a._v("auto")]),a._v("。当然,这只是给出一个预估值。如果你想要确保为交易提供足够的gas,你可以使用"),e("code",[a._v("--gas-adjustment")]),a._v("标识来调整预估值(默认是"),e("code",[a._v("1.0")]),a._v(")。")]),a._v(" "),e("p",[e("code",[a._v("gasPrice")]),a._v("是每个单位"),e("code",[a._v("gas")]),a._v("的单价。每个验证人节点可以设置"),e("code",[a._v("min-gas-price")]),a._v(",只会把那些"),e("code",[a._v("gasPrice")]),a._v("高于自己设置的"),e("code",[a._v("min-gas-price")]),a._v("的交易打包。")]),a._v(" "),e("p",[a._v("交易的"),e("code",[a._v("fees")]),a._v("是"),e("code",[a._v("gas")]),a._v("与"),e("code",[a._v("gasPrice")]),a._v("的结果。作为一个用户,你必须输入三者中的两者。更高的"),e("code",[a._v("gasPrice")]),a._v("/"),e("code",[a._v("fees")]),a._v(",将提高你的交易被打包的机会。")]),a._v(" "),e("p",[a._v("::: 提示\n主网中推荐的"),e("code",[a._v("gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"设置minimum-gas-prices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设置minimum-gas-prices"}},[a._v("#")]),a._v(" 设置"),e("code",[a._v("minimum-gas-prices")])]),a._v(" "),e("p",[a._v("你的全节点可以在交易池中放入未确认的交易。为了保护其免受Spam攻击,最好设置一个"),e("code",[a._v("minimum-gas-prices")]),a._v("来过滤交易以决定是否要放入交易池。这个参数可以在"),e("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("文件中配置。")]),a._v(" "),e("p",[a._v("推荐的初始"),e("code",[a._v("minimum-gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v(",如果你愿意可以稍后再修改它。")]),a._v(" "),e("h2",{attrs:{id:"运行一个全节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行一个全节点"}},[a._v("#")]),a._v(" 运行一个全节点")]),a._v(" "),e("p",[a._v("通过这条命令开始运行全节点:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("检查一切是否平稳运行中:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),e("p",[a._v("使用"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Explorer"),e("OutboundLink")],1),a._v("查看网络状态。")]),a._v(" "),e("h2",{attrs:{id:"导出状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出状态"}},[a._v("#")]),a._v(" 导出状态")]),a._v(" "),e("p",[a._v("Gaia能够将整个应用程序的状态转存到一个JSON文件中,该文件可以用于分析还可以用作一个新网络的genesis文件。")]),a._v(" "),e("p",[a._v("导出状态:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("你还可以导出指定高度的状态(处理完指定高度后的状态):")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("如果你计划使用导出的状态文件启动一个新网络,导出时要加上"),e("code",[a._v("--for-zero-height")]),a._v("标识:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("h2",{attrs:{id:"升级成为验证人节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级成为验证人节点"}},[a._v("#")]),a._v(" 升级成为验证人节点")]),a._v(" "),e("p",[a._v("你现在有了一个运行状态的全节点。接下来,你可以升级你的全节点,成为一个Cosmos验证人。排名前100的验证人节点可以向Cosmos Hub提议新的区块。请查看"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[a._v("创建验证人节点")]),a._v("。\n")],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[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 diff --git a/main/assets/js/181.929b25e6.js b/main/assets/js/182.c90d83a5.js similarity index 98% rename from main/assets/js/181.929b25e6.js rename to main/assets/js/182.c90d83a5.js index 2cc732d73cd..8c8d12c05b8 100644 --- a/main/assets/js/181.929b25e6.js +++ b/main/assets/js/182.c90d83a5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{634: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/182.a9457d82.js b/main/assets/js/183.648229b2.js similarity index 97% rename from main/assets/js/182.a9457d82.js rename to main/assets/js/183.648229b2.js index 9de03099043..0a546b2a607 100644 --- a/main/assets/js/182.a9457d82.js +++ b/main/assets/js/183.648229b2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{506:function(o,a,v){"use strict";v.r(a);var _=v(1),i=Object(_.a)({},(function(){var o=this,a=o.$createElement,v=o._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[v("h1",{attrs:{id:"gaia是什么"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#gaia是什么"}},[o._v("#")]),o._v(" Gaia是什么")]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的服务进程,运行着"),v("code",[o._v("gaia")]),o._v("程序的全节点。")]),o._v(" "),v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的命令行界面,用于同一个Gaia的全节点交互。")])]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("基于Cosmos SDK构建,使用了如下模块:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("x/auth")]),o._v(" : 账户和签名")]),o._v(" "),v("li",[v("code",[o._v("x/bank")]),o._v(" : token转账")]),o._v(" "),v("li",[v("code",[o._v("x/staking")]),o._v(" : 抵押逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/mint")]),o._v(" : 增发通胀逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/distribution")]),o._v(" : 费用分配逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/slashing")]),o._v(" : 处罚逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/gov")]),o._v(" : 治理逻辑")]),o._v(" "),v("li",[v("code",[o._v("ibc-go/modules")]),o._v(" : 跨链交易")]),o._v(" "),v("li",[v("code",[o._v("x/params")]),o._v(" : 处理应用级别的参数")])]),o._v(" "),v("blockquote",[v("p",[o._v("关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。")])]),o._v(" "),v("p",[o._v("接着,学习如何"),v("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[o._v("安装Gaia")])],1)])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{547:function(o,a,v){"use strict";v.r(a);var _=v(1),i=Object(_.a)({},(function(){var o=this,a=o.$createElement,v=o._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[v("h1",{attrs:{id:"gaia是什么"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#gaia是什么"}},[o._v("#")]),o._v(" Gaia是什么")]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的服务进程,运行着"),v("code",[o._v("gaia")]),o._v("程序的全节点。")]),o._v(" "),v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的命令行界面,用于同一个Gaia的全节点交互。")])]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("基于Cosmos SDK构建,使用了如下模块:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("x/auth")]),o._v(" : 账户和签名")]),o._v(" "),v("li",[v("code",[o._v("x/bank")]),o._v(" : token转账")]),o._v(" "),v("li",[v("code",[o._v("x/staking")]),o._v(" : 抵押逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/mint")]),o._v(" : 增发通胀逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/distribution")]),o._v(" : 费用分配逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/slashing")]),o._v(" : 处罚逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/gov")]),o._v(" : 治理逻辑")]),o._v(" "),v("li",[v("code",[o._v("ibc-go/modules")]),o._v(" : 跨链交易")]),o._v(" "),v("li",[v("code",[o._v("x/params")]),o._v(" : 处理应用级别的参数")])]),o._v(" "),v("blockquote",[v("p",[o._v("关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。")])]),o._v(" "),v("p",[o._v("接着,学习如何"),v("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[o._v("安装Gaia")])],1)])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/183.2708d4a5.js b/main/assets/js/184.3eccc474.js similarity index 98% rename from main/assets/js/183.2708d4a5.js rename to main/assets/js/184.3eccc474.js index d2e5e640649..70a342b2a65 100644 --- a/main/assets/js/183.2708d4a5.js +++ b/main/assets/js/184.3eccc474.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{635: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],{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 diff --git a/main/assets/js/184.87a58094.js b/main/assets/js/185.58bc31db.js similarity index 99% rename from main/assets/js/184.87a58094.js rename to main/assets/js/185.58bc31db.js index ae5ac657bb3..78b7c8ff004 100644 --- a/main/assets/js/184.87a58094.js +++ b/main/assets/js/185.58bc31db.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{501:function(o,s,t){"use strict";t.r(s);var r=t(1),e=Object(r.a)({},(function(){var o=this,s=o.$createElement,t=o._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub主网上线计划"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub主网上线计划"}},[o._v("#")]),o._v(" Cosmos Hub主网上线计划")]),o._v(" "),t("ul",[t("li",[o._v("2016年夏天,Cosmos首次发表了项目白皮书。")]),o._v(" "),t("li",[o._v("2017年春天,Cosmos完成了首次募资。")]),o._v(" "),t("li",[o._v("2019年一月,Cosmos Hub软件完成功能开发。")]),o._v(" "),t("li",[o._v("至此,Cosmos Hub主网即将启动。")]),o._v(" "),t("li",[o._v("那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?")])]),o._v(" "),t("p",[o._v("如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。")]),o._v(" "),t("p",[t("strong",[o._v("Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令")])]),o._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[o._v("CLI指南")])],1)]),o._v(" "),t("p",[o._v("CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。")]),o._v(" "),t("p",[o._v("请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。")]),o._v(" "),t("p",[t("strong",[o._v("Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!")])]),o._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[o._v("跨链 Cosmos 贡献条款"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[o._v("Apache 2.0授权协议"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。")]),o._v(" "),t("p",[o._v("注册链接:"),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[o._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),o._v(" "),t("h2",{attrs:{id:"主网启动的里程碑"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#主网启动的里程碑"}},[o._v("#")]),o._v(" 主网启动的里程碑")]),o._v(" "),t("p",[o._v("欢迎收藏"),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[o._v("cosmos.network/launch"),t("OutboundLink")],1),o._v(",跟踪主网启动全过程。")]),o._v(" "),t("ul",[t("li",[o._v("Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。")]),o._v(" "),t("li",[o._v("Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。")]),o._v(" "),t("li",[o._v("权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。"),t("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[o._v("GoS记分准则"),t("OutboundLink")],1)]),o._v(" "),t("li",[o._v("创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中")]),o._v(" "),t("li",[o._v("Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。")])]),o._v(" "),t("h2",{attrs:{id:"cosmos官方交流渠道"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos官方交流渠道"}},[o._v("#")]),o._v(" Cosmos官方交流渠道")]),o._v(" "),t("p",[t("strong",[o._v("以下是Cosmos有关主网启动的官方渠道")])]),o._v(" "),t("ul",[t("li",[o._v("Cosmos Network (twitter.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos GitHub (github.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos Blog (blog.cosmos.network)\n"),t("strong",[o._v("请注意Cosmos forum,Riot群,和Telegram群将不被视为官方信息发布渠道。")])]),o._v(" "),t("li",[t("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[o._v("Cosmos forum"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[o._v("Riot群"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[o._v("Telegram群"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。")]),o._v(" "),t("p",[o._v("切记,我们绝不会要求您提供您的私钥或者助记词。")]),o._v(" "),t("h2",{attrs:{id:"在主网启动期间确保资产安全可靠"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在主网启动期间确保资产安全可靠"}},[o._v("#")]),o._v(" 在主网启动期间确保资产安全可靠")]),o._v(" "),t("p",[o._v("任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。")]),o._v(" "),t("p",[o._v("虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。")]),o._v(" "),t("h2",{attrs:{id:"安全规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安全规则"}},[o._v("#")]),o._v(" 安全规则")]),o._v(" "),t("h4",{attrs:{id:"参与cosmos主网启动-您需要熟记以下规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与cosmos主网启动-您需要熟记以下规则"}},[o._v("#")]),o._v(" 参与Cosmos主网启动,您需要熟记以下规则")]),o._v(" "),t("ul",[t("li",[o._v("直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。")]),o._v(" "),t("li",[o._v("不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。")]),o._v(" "),t("li",[o._v("对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,"),t("a",{attrs:{href:"https://phishingquiz.withgoogle.com",target:"_blank",rel:"noopener noreferrer"}},[o._v("请在此处对钓鱼邮件进行测试"),t("OutboundLink")],1),o._v("。")]),o._v(" "),t("li",[o._v("在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。")]),o._v(" "),t("li",[o._v("Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。")]),o._v(" "),t("li",[o._v("对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。")]),o._v(" "),t("li",[o._v("在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。")])]),o._v(" "),t("p",[o._v("如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{502:function(o,s,t){"use strict";t.r(s);var r=t(1),e=Object(r.a)({},(function(){var o=this,s=o.$createElement,t=o._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub主网上线计划"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub主网上线计划"}},[o._v("#")]),o._v(" Cosmos Hub主网上线计划")]),o._v(" "),t("ul",[t("li",[o._v("2016年夏天,Cosmos首次发表了项目白皮书。")]),o._v(" "),t("li",[o._v("2017年春天,Cosmos完成了首次募资。")]),o._v(" "),t("li",[o._v("2019年一月,Cosmos Hub软件完成功能开发。")]),o._v(" "),t("li",[o._v("至此,Cosmos Hub主网即将启动。")]),o._v(" "),t("li",[o._v("那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?")])]),o._v(" "),t("p",[o._v("如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。")]),o._v(" "),t("p",[t("strong",[o._v("Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令")])]),o._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[o._v("CLI指南")])],1)]),o._v(" "),t("p",[o._v("CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。")]),o._v(" "),t("p",[o._v("请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。")]),o._v(" "),t("p",[t("strong",[o._v("Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!")])]),o._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[o._v("跨链 Cosmos 贡献条款"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[o._v("Apache 2.0授权协议"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。")]),o._v(" "),t("p",[o._v("注册链接:"),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[o._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),o._v(" "),t("h2",{attrs:{id:"主网启动的里程碑"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#主网启动的里程碑"}},[o._v("#")]),o._v(" 主网启动的里程碑")]),o._v(" "),t("p",[o._v("欢迎收藏"),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[o._v("cosmos.network/launch"),t("OutboundLink")],1),o._v(",跟踪主网启动全过程。")]),o._v(" "),t("ul",[t("li",[o._v("Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。")]),o._v(" "),t("li",[o._v("Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。")]),o._v(" "),t("li",[o._v("权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。"),t("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[o._v("GoS记分准则"),t("OutboundLink")],1)]),o._v(" "),t("li",[o._v("创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中")]),o._v(" "),t("li",[o._v("Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。")])]),o._v(" "),t("h2",{attrs:{id:"cosmos官方交流渠道"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos官方交流渠道"}},[o._v("#")]),o._v(" Cosmos官方交流渠道")]),o._v(" "),t("p",[t("strong",[o._v("以下是Cosmos有关主网启动的官方渠道")])]),o._v(" "),t("ul",[t("li",[o._v("Cosmos Network (twitter.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos GitHub (github.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos Blog (blog.cosmos.network)\n"),t("strong",[o._v("请注意Cosmos forum,Riot群,和Telegram群将不被视为官方信息发布渠道。")])]),o._v(" "),t("li",[t("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[o._v("Cosmos forum"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[o._v("Riot群"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[o._v("Telegram群"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。")]),o._v(" "),t("p",[o._v("切记,我们绝不会要求您提供您的私钥或者助记词。")]),o._v(" "),t("h2",{attrs:{id:"在主网启动期间确保资产安全可靠"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在主网启动期间确保资产安全可靠"}},[o._v("#")]),o._v(" 在主网启动期间确保资产安全可靠")]),o._v(" "),t("p",[o._v("任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。")]),o._v(" "),t("p",[o._v("虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。")]),o._v(" "),t("h2",{attrs:{id:"安全规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安全规则"}},[o._v("#")]),o._v(" 安全规则")]),o._v(" "),t("h4",{attrs:{id:"参与cosmos主网启动-您需要熟记以下规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与cosmos主网启动-您需要熟记以下规则"}},[o._v("#")]),o._v(" 参与Cosmos主网启动,您需要熟记以下规则")]),o._v(" "),t("ul",[t("li",[o._v("直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。")]),o._v(" "),t("li",[o._v("不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。")]),o._v(" "),t("li",[o._v("对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,"),t("a",{attrs:{href:"https://phishingquiz.withgoogle.com",target:"_blank",rel:"noopener noreferrer"}},[o._v("请在此处对钓鱼邮件进行测试"),t("OutboundLink")],1),o._v("。")]),o._v(" "),t("li",[o._v("在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。")]),o._v(" "),t("li",[o._v("Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。")]),o._v(" "),t("li",[o._v("对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。")]),o._v(" "),t("li",[o._v("在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。")])]),o._v(" "),t("p",[o._v("如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/185.c1f27438.js b/main/assets/js/186.cb4cc8b9.js similarity index 99% rename from main/assets/js/185.c1f27438.js rename to main/assets/js/186.cb4cc8b9.js index 088ae1c0708..48afe8436d8 100644 --- a/main/assets/js/185.c1f27438.js +++ b/main/assets/js/186.cb4cc8b9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{636:function(t,o,r){"use strict";r.r(o);var s=r(1),e=Object(s.a)({},(function(){var t=this,o=t.$createElement,r=t._self._c||o;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"cosmos主网上线三部曲"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos主网上线三部曲"}},[t._v("#")]),t._v(" "),r("strong",[t._v("Cosmos主网上线三部曲")])]),t._v(" "),r("p",[t._v("Cosmos主网启动将分成3个阶段分布完成,下面我们将具体介绍每一阶段的预期目标。")]),t._v(" "),r("h2",{attrs:{id:"🚨第一阶段-网络逐步趋于稳定🚨"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#🚨第一阶段-网络逐步趋于稳定🚨"}},[t._v("#")]),t._v(" "),r("strong",[t._v("🚨第一阶段:网络逐步趋于稳定🚨")])]),t._v(" "),r("p",[t._v("在第一阶段,主网可能会不太稳定,也许会出现暂停或其他故障,可能需要Cosmos主网验证人和全节点运营者们一起来协助修复。在网络趋于稳定过程中,出现此类故障并不意外。")]),t._v(" "),r("p",[r("strong",[t._v("状态修改和主网启动:")])]),t._v(" "),r("p",[t._v("区块链的核心价值之一是其不可篡改性,也就是说我们不会通过回滚来修改过去的状态记录。最终,这种不可篡改的理念在软件共识协议层面得到了支持,并最终在社区参与者之间形成了社会契约。")]),t._v(" "),r("p",[t._v("也就是说,Cosmos Hub的底层技术开发是能够实现低难度的分叉和回滚的, 我们已经看到社区在测试网上做过多次相应的演练。这些技术也会在主网上应用,用以最终抵御卡特尔风险的发生。")]),t._v(" "),r("p",[t._v("回滚网络状态通常被认为是非常严重的问题,因为这将损害网络的经济最终性。因此,回滚网络状态只能在极端状态下使用,比如以太网的DAO硬分叉,也就是说,在Cosmos Hub主网启动初期,转账交易不会开启,因此回滚的危害性很小,因为状态转换远比“经济最终性”的影响低。 如果需要,比如发现漏洞,我们可以将过去某一个高度时的网络状态导出,然后重启网络,就如同我们在测试网上演练过的那样。")]),t._v(" "),r("p",[t._v("一旦链上治理决定开启交易功能,全网将会遵从经济最终性。")]),t._v(" "),r("p",[t._v("总而言之,如果在链上交易功能开启之前,Cosmos Hub发现任何错误或漏洞,那么用户可期望回滚至任意状态,甚至创世块。")]),t._v(" "),r("p",[t._v("一旦链上交易功能开始后,状态回滚方式将很难被采纳。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":Cosmos主网启动是投资者参与主网的第一阶段。作为分布式应用的开发人员,您可能是Cosmos-SDK框架或Tendermint Core的用户。开发者基于"),r("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos-SDK"),r("OutboundLink")],1),t._v("或"),r("a",{attrs:{href:"https://tendermint.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tendermint"),r("OutboundLink")],1),t._v("的应用开发进度现阶段应该不受Cosmos Hub的影响,但如果您的项目需要使用"),r("a",{attrs:{href:"https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC"),r("OutboundLink")],1),t._v("(链间通信协议),则必须要等到第三阶段或参与即将开始的IBC测试网络。")]),t._v(" "),r("p",[r("strong",[t._v("对于用户的建议")]),t._v(":在此阶段,我们强烈建议您不要交易Atoms(其实法律合同也限定不能交易),因为在这个阶段仍然存在状态回滚的风险。")]),t._v(" "),r("p",[t._v("但是,您可以通过下面链接的"),r("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[t._v("CLI指南")]),t._v("和视频教程的指导,在此阶段将Atoms通证委托给验证人。当然,如果发生状态修改,那么所有收益(包括手续费和通胀收益)都将丢失。Voyager是用于与Cosmos Hub交互的图形化客户端,目前处于alpha版,正在持续开发中。一旦Voager beta版上线,并可以安全使用,我们将另行公告。")],1),t._v(" "),r("p",[t._v("CLI指南和视频教程:"),r("a",{attrs:{href:"https://v.qq.com/x/page/q08425izfhi.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://v.qq.com/x/page/q08425izfhi.html"),r("OutboundLink")],1)]),t._v(" "),r("h2",{attrs:{id:"第二阶段-链上交易开启"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第二阶段-链上交易开启"}},[t._v("#")]),t._v(" 第二阶段:链上交易开启")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("一旦我们认为主网足够稳定,在链上抵押了Atom的通证持有者将会通过链上治理过程投票决定是否开启链上交易。")]),t._v(" "),r("p",[t._v("Cosmos浏览器是查看治理提案状态的最佳途径,可以在我们的主网启动页面上找到多款"),r("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos浏览器"),r("OutboundLink")],1),t._v("。")]),t._v(" "),r("p",[t._v("对用户来说:如果提案被社区接受,并且链上交易开启,您就可以在链上转移您的Atom了。")]),t._v(" "),r("h2",{attrs:{id:"第三阶段-启用ibc协议"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第三阶段-启用ibc协议"}},[t._v("#")]),t._v(" 第三阶段:启用IBC协议")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("第三阶段我们将会发布"),r("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC协议"),r("OutboundLink")],1),t._v(",并且对是否将其纳入Cosmos-SDK的核心模块库进行链上治理投票。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":使用Cosmos-SDK或Tendermint BFT构建的应用专有链将能够连接到 Cosmos Hub,并与连接到Hubs上的其他任意区块链进行跨链交互。")]),t._v(" "),r("p",[r("strong",[t._v("对用户的建议")]),t._v(":您可以将各种通证和NFT直接从采用IBC协议连接的一个链转移到另一个通过IBC协议连接的链,而无需通过一个第三方中心化平台。")]),t._v(" "),r("h2",{attrs:{id:"验证人提示-提交您的主网gentx文件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#验证人提示-提交您的主网gentx文件"}},[t._v("#")]),t._v(" 验证人提示: 提交您的主网gentx文件")]),t._v(" "),r("ol",[r("li",[r("p",[t._v("验证人应该已经生成并且安全的保存好用于主网验证的共识密钥。")])]),t._v(" "),r("li",[r("p",[t._v("验证人根据自己获得ATOM通证的来源,比如募资参与者或权益争夺活动的获奖者,准备好在创世文件(Genesis)中需要签署的交易。")])]),t._v(" "),r("li",[r("p",[t._v("一旦创世通证分配计划发布,我们将开始征集gentx文件。")])])]),t._v(" "),r("h2",{attrs:{id:"总结"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#总结"}},[t._v("#")]),t._v(" 总结")]),t._v(" "),r("p",[t._v("Cosmos旨在建立所有区块链间的桥梁,最终建立一个区块链互联网。然而,路漫漫其修远兮,我们还有很长的路要走。主网上线之后,我们需要完成与整个通证经济世界的深度融合,很多的工作要做等着我们去完成。正如肯尼迪在逆境中曾经说过的那样:")]),t._v(" "),r("p",[t._v("“我们选择去月球,不是因为很容易,而是因为很难......”")]),t._v(" "),r("p",[t._v("走更崎岖的路,才会看见更美的风景!")]),t._v(" "),r("hr")])}),[],!1,null,null,null);o.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{545: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/186.051074c4.js b/main/assets/js/187.0b511603.js similarity index 99% rename from main/assets/js/186.051074c4.js rename to main/assets/js/187.0b511603.js index 9fe7110a158..26313597d14 100644 --- a/main/assets/js/186.051074c4.js +++ b/main/assets/js/187.0b511603.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{493:function(a,t,s){"use strict";s.r(t);var c=s(1),e=Object(c.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:"gaia客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia客户端"}},[a._v("#")]),a._v(" Gaia客户端")]),a._v(" "),s("h2",{attrs:{id:"gaia-cli"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli"}},[a._v("#")]),a._v(" Gaia CLI")]),a._v(" "),s("p",[s("code",[a._v("gaiad")]),a._v("是一个工具,使您能够与 Cosmos Hub 网络中的节点进行交互,无论您是否自己运行它。 让我们恰当的设置它。 要安装它,请按照[安装步骤](./ installation.md)进行安装。")]),a._v(" "),s("h3",{attrs:{id:"配置-gaiad"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#配置-gaiad"}},[a._v("#")]),a._v(" 配置 gaiad")]),a._v(" "),s("p",[a._v("设置"),s("code",[a._v("gaiad")]),a._v("的主要命令如下:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("该命令能为每个标志设置默认值。")]),a._v(" "),s("p",[a._v("首先,设置要连接的全节点的地址:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgojIGV4YW1wbGU6IGdhaWFkIGNvbmZpZyBub2RlIGh0dHBzOi8vNzcuODcuMTA2LjMzOjI2NjU3IChub3RlOiB0aGlzIGlzIGEgcGxhY2Vob2xkZXIpCg=="}}),a._v(" "),s("p",[a._v("如果您运行自己的全节点,只需使用"),s("code",[a._v("tcp://localhost:26657")]),a._v("地址即可。")]),a._v(" "),s("p",[a._v("最后,设置我们想要与之交互链的"),s("code",[a._v("chain-id")]),a._v(":")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),a._v(" "),s("h3",{attrs:{id:"key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#key"}},[a._v("#")]),a._v(" Key")]),a._v(" "),s("h4",{attrs:{id:"key类型"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#key类型"}},[a._v("#")]),a._v(" Key类型")]),a._v(" "),s("p",[a._v("有如下类型的key:")]),a._v(" "),s("ul",[s("li",[s("code",[a._v("cosmos")]),a._v(" "),s("ul",[s("li",[a._v("从通过"),s("code",[a._v("gaiad keys add")]),a._v("生成的账户私钥中产生")]),a._v(" "),s("li",[a._v("用于接收资金")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmosvaloper")]),a._v(" "),s("ul",[s("li",[a._v("用于关联一个验证人和其操作者")]),a._v(" "),s("li",[a._v("用于发起staking操作命令")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmospub")]),a._v(" "),s("ul",[s("li",[a._v("从通过"),s("code",[a._v("gaiad keys add")]),a._v("生成的账户私钥中产生")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmosvalconspub")]),a._v(" "),s("ul",[s("li",[a._v("在使用"),s("code",[a._v("gaiad init")]),a._v("创建节点时生成")]),a._v(" "),s("li",[a._v("使用"),s("code",[a._v("gaiad tendermint show-validator")]),a._v("获得该值")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),a._v(" "),s("h4",{attrs:{id:"生成-key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#生成-key"}},[a._v("#")]),a._v(" 生成 Key")]),a._v(" "),s("p",[a._v("你需要一个帐户的私钥公钥对(分别称作"),s("code",[a._v("sk")]),a._v(","),s("code",[a._v("pk")]),a._v(")才能接收资金,发送交易,绑定交易等等。")]),a._v(" "),s("p",[a._v("生成一个新的"),s("em",[a._v("secp256k1")]),a._v("密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),a._v(" "),s("p",[a._v("接下来,你必须创建一个密码来保护磁盘上的密钥。上述命令的输出将包含种子短语。建议将种子短语保存在安全的地方,以便在忘记密码的情况下,最终可以使用以下命令从种子短语重新生成密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),a._v(" "),s("p",[a._v("如果你检查你的私钥,你会看到"),s("code",[a._v("")]),a._v(" :")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("通过下面的命令查看验证人操作者的地址:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),a._v(" "),s("p",[a._v("你可以查看你所有的可以使用的密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),s("p",[a._v("查看你节点的验证人公钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),a._v(" "),s("p",[a._v("请注意,这是CometBFT的签名密钥,而不是你在委托交易中使用的操作员密钥。")]),a._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[a._v("Warning")]),a._v(" "),s("p",[a._v("我们强烈建议不要对多个密钥使用相同的密码。CometBFT 团队和 Interchain Foundation 将不承担资金损失的责任。")])]),a._v(" "),s("h4",{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:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),a._v(" "),s("p",[s("code",[a._v("K")]),a._v("是将要对多签公钥发起的交易进行签名的最小私钥数。")]),a._v(" "),s("p",[s("code",[a._v("--multisig")]),a._v("标识必须包含要将组合成一个公钥的那些子公钥的名称,该公钥将在本地数据库中生成并存储为"),s("code",[a._v("new_key_name")]),a._v("。通过"),s("code",[a._v("--multisig")]),a._v("提供的所有名称必须已存在于本地数据库中。除非设置了"),s("code",[a._v("--nosort")]),a._v("标识,否则在命令行上提供密钥的顺序无关紧要,即以下命令生成两个相同的密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),a._v(" "),s("p",[a._v("多签地址也可以在运行中生成并通过以下命令打印:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),a._v(" "),s("p",[a._v("有关如何生成多签帐户,使用其签名和广播多签交易的详细信息,请参阅"),s("a",{attrs:{href:"#%E5%A4%9A%E7%AD%BE%E4%BA%A4%E6%98%93"}},[a._v("多签交易")])]),a._v(" "),s("h3",{attrs:{id:"tx-广播"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tx-广播"}},[a._v("#")]),a._v(" Tx 广播")]),a._v(" "),s("p",[a._v("在广播交易时,"),s("code",[a._v("gaiad")]),a._v("接受"),s("code",[a._v("--broadcast-mode")]),a._v("标识。 这个标识的值可以是"),s("code",[a._v("sync")]),a._v("(默认值)、"),s("code",[a._v("async")]),a._v("或"),s("code",[a._v("block")]),a._v(",其中"),s("code",[a._v("sync")]),a._v("使客户端返回 CheckTx 响应,"),s("code",[a._v("async")]),a._v("使客户端立即返回,而"),s("code",[a._v("block")]),a._v("使得 客户端等待 tx 被提交(或超时)。")]),a._v(" "),s("p",[a._v("值得注意的是,在大多数情况下"),s("strong",[a._v("不")]),a._v("应该使用"),s("code",[a._v("block")]),a._v("模式。 这是因为广播可以超时但是 tx 仍然可能存在在块中,这可能导致很多不良结果。 因此,最好使用"),s("code",[a._v("sync")]),a._v("或"),s("code",[a._v("async")]),a._v("并通过 tx hash 查询以确定 tx 何时包含在块中。")]),a._v(" "),s("h3",{attrs:{id:"fees-和-gas"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fees-和-gas"}},[a._v("#")]),a._v(" Fees 和 Gas")]),a._v(" "),s("p",[a._v("每笔交易可能会提供 fees 或 gas price,但不能同时提供。")]),a._v(" "),s("p",[a._v("验证人可以配置最低 gas price(多币种的),并且在决定它们是否能被包含在区块中的"),s("code",[a._v("CheckTx")]),a._v("期间使用改值,其中 "),s("code",[a._v("gasPrices >= minGasPrices")]),a._v("。请注意,你的交易必须提供大于或等于验证人要求的任何接受币种的费用。")]),a._v(" "),s("p",[s("strong",[a._v("注意")]),a._v(":有了这样的机制,验证人可能会开始在 mempool 中通过 gasPrice 来优先处理某些 txs,因此提供更高 fee 或 gas price可能会产生更高的tx优先级。")]),a._v(" "),s("p",[a._v("比如:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),a._v(" "),s("p",[a._v("或:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),a._v(" "),s("h3",{attrs:{id:"账户"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#账户"}},[a._v("#")]),a._v(" 账户")]),a._v(" "),s("h4",{attrs:{id:"获取-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#获取-token"}},[a._v("#")]),a._v(" 获取 Token")]),a._v(" "),s("p",[a._v("获取token的最佳方式是通过"),s("a",{attrs:{href:"https://faucetcosmos.network",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos测试网水龙头"),s("OutboundLink")],1),a._v("。如果水龙头对你不生效,尝试在"),s("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("#cosmos-validator"),s("OutboundLink")],1),a._v("上向人索要。水龙头需要你打算用于抵押股权的"),s("code",[a._v("cosmos")]),a._v("开头的地址。")]),a._v(" "),s("h4",{attrs:{id:"查询账户余额"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询账户余额"}},[a._v("#")]),a._v(" 查询账户余额")]),a._v(" "),s("p",[a._v("在你的地址收到token后,你可以通过以下命令查看账户的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("当你查询余额为零的帐户时,你将收到以下错误:"),s("code",[a._v("No account with address was found in the state.")]),a._v(" 如果你在节点与区块链完全同步之前就查询,也会发生这种情况。这些都很正常。")])]),a._v(" "),s("h4",{attrs:{id:"发送-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#发送-token"}},[a._v("#")]),a._v(" 发送 Token")]),a._v(" "),s("p",[a._v("你可以通过如下命令从一个账户发送资金到另一个账户:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[s("code",[a._v("--amount")]),a._v("标识接收格式:"),s("code",[a._v("--amount=")])])]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("你可能希望通过"),s("code",[a._v("--gas")]),a._v("标识限制交易可以消耗的最大燃料。如果你通过"),s("code",[a._v("--gas=auto")]),a._v(",将在执行交易前自动估gas。gas估算可能是不准确的,因为状态变化可能发生在模拟结束和交易的实际执行之间,因此在原始估计之上应用调整以确保能够成功地广播交易。可以通过"),s("code",[a._v("--gas-adjustment")]),a._v("标识控制调整,其默认值为1.0。")])]),a._v(" "),s("p",[a._v("现在,查看源账户和目标账户的更新后的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),a._v(" "),s("p",[a._v("你还可以使用"),s("code",[a._v("--block")]),a._v("标识查询在特定高度区块下你的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),a._v(" "),s("p",[a._v("你可以通过在命令行中附加"),s("code",[a._v("--dry-run")]),a._v("标识来模拟交易而不实际广播它:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtkZXN0aW5hdGlvbl9jb3Ntb3NhY2NhZGRyJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWRyeS1ydW4K"}}),a._v(" "),s("p",[a._v("此外,你可以通过将"),s("code",[a._v("--generate-only")]),a._v("附加到命令行参数列表来构建交易并将其JSON格式打印到STDOUT:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtkZXN0aW5hdGlvbl9jb3Ntb3NhY2NhZGRyJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFNlbmRUeC5qc29uCg=="}}),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OwogIHVuc2lnbmVkU2VuZFR4Lmpzb24gJmd0OyBzaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("标识 "),s("code",[a._v("--generate-only")]),a._v(" 只能在访问本地 keybase 时使用。")])]),a._v(" "),s("p",[a._v("你可以通过下面的命令验证交易的签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),s("p",[a._v("你可以将由JSON文件提供的已签名的交易广播至指定节点:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),s("h3",{attrs:{id:"查询交易"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询交易"}},[a._v("#")]),a._v(" 查询交易")]),a._v(" "),s("h4",{attrs:{id:"匹配一组tag"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#匹配一组tag"}},[a._v("#")]),a._v(" 匹配一组tag")]),a._v(" "),s("p",[a._v("你可以使用交易搜索命令查询与每个交易上添加的特定"),s("code",[a._v("标签集")]),a._v("匹配的交易。")]),a._v(" "),s("p",[a._v("每个标签都由"),s("code",[a._v("{eventType}.{eventAttribute}={value}")]),a._v("形式的键值对形成。还可以使用"),s("code",[a._v("&")]),a._v("符号组合标签来查询更具体的结果。")]),a._v(" "),s("p",[a._v("使用"),s("code",[a._v("标签")]),a._v("查询交易的命令如下:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),a._v(" "),s("p",[a._v("使用多个"),s("code",[a._v("标签")]),a._v(":")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),a._v(" "),s("p",[a._v("通过"),s("code",[a._v("page")]),a._v("和"),s("code",[a._v("limit")]),a._v("来实现分页:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("注意")]),a._v(" "),s("p",[a._v("action标签始终等于相关message的"),s("code",[a._v("Type()")]),a._v("函数返回的消息类型。")]),a._v(" "),s("p",[a._v("你可以在每个SDK的模块中找到目前的标签列表:")]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Staking events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Governance events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Slashing events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Distribution events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Bank events"),s("OutboundLink")],1)])])]),a._v(" "),s("h4",{attrs:{id:"匹配一笔交易的hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#匹配一笔交易的hash"}},[a._v("#")]),a._v(" 匹配一笔交易的hash")]),a._v(" "),s("p",[a._v("你一可以通过指定hash值查询该笔交易:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),a._v(" "),s("h3",{attrs:{id:"slashing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[a._v("#")]),a._v(" Slashing")]),a._v(" "),s("h4",{attrs:{id:"unjailing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[a._v("#")]),a._v(" Unjailing")]),a._v(" "),s("p",[a._v("将你入狱的验证人释放出狱:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),a._v(" "),s("h4",{attrs:{id:"signing-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[a._v("#")]),a._v(" Signing Info")]),a._v(" "),s("p",[a._v("检索一个验证人的签名信息:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),a._v(" "),s("h4",{attrs:{id:"查询参数"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询参数"}},[a._v("#")]),a._v(" 查询参数")]),a._v(" "),s("p",[a._v("你可以查询当前的slashing参数:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),a._v(" "),s("h3",{attrs:{id:"staking"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[a._v("#")]),a._v(" Staking")]),a._v(" "),s("h4",{attrs:{id:"设置一个验证人"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#设置一个验证人"}},[a._v("#")]),a._v(" 设置一个验证人")]),a._v(" "),s("p",[a._v("有关如何设置验证人候选者的完整指南,请参阅"),s("a",{attrs:{href:""}},[a._v("验证人设置")]),a._v("章节")]),a._v(" "),s("h4",{attrs:{id:"向一个验证人委托"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#向一个验证人委托"}},[a._v("#")]),a._v(" 向一个验证人委托")]),a._v(" "),s("p",[a._v("一旦主网上线,你可以把"),s("code",[a._v("atom")]),a._v("委托给一个验证人。这些委托人可以收到部分验证人的收益。阅读"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Token Model"),s("OutboundLink")],1),a._v("了解更多信息。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),a._v(" "),s("p",[a._v("如果你想要获得单个验证人的信息,你可以使用下面的命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("h4",{attrs:{id:"绑定-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#绑定-token"}},[a._v("#")]),a._v(" 绑定 Token")]),a._v(" "),s("p",[a._v("在Cosmos Hub主网中,我们绑定"),s("code",[a._v("uatom")]),a._v(","),s("code",[a._v("1atom = 1000000uatom")]),a._v("。你可以把token绑定在一个测试网验证人节点上(即委托):")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("p",[s("code",[a._v("")]),a._v("是你要委托的验证人的操作者地址。如果你运行的是本地testnet,可以通过以下方式找到:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),a._v(" "),s("p",[a._v("其中"),s("code",[a._v("[name]")]),a._v("是初始化"),s("code",[a._v("gaiad")]),a._v("时指定的键的名称。")]),a._v(" "),s("p",[a._v("虽然token是绑定的,但它们与网络中的所有其他绑定的token汇集在一起。验证人和委托人获得一定比例的股权,这些股权等于他们在这个资产池中的抵押。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),a._v(" "),s("p",[a._v("或者你想查看所有当前的委托:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("你还可以通过添加"),s("code",[a._v("--height")]),a._v("标识来获取先前的委托状态。")]),a._v(" "),s("h4",{attrs:{id:"解绑-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#解绑-token"}},[a._v("#")]),a._v(" 解绑 Token")]),a._v(" "),s("p",[a._v("如果出于一些原因验证人行为异常,或者你想解绑一定数量的token,请使用以下命令。")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("经过解绑期后,解绑自动完成。")]),a._v(" "),s("h4",{attrs:{id:"查询unbonding-delegations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询unbonding-delegations"}},[a._v("#")]),a._v(" 查询Unbonding-Delegations")]),a._v(" "),s("p",[a._v("一旦你开始了一笔unbonding-delegation,你可以使用以下命令查看信息:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),a._v(" "),s("p",[a._v("或者你可以查看当前你所有的unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),a._v(" "),s("p",[a._v("此外,你可以从特定验证人获取所有unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("要获取指定区块时的unbonding-delegation状态,请尝试添加"),s("code",[a._v("--height")]),a._v("标识。")]),a._v(" "),s("h4",{attrs:{id:"重新委托token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#重新委托token"}},[a._v("#")]),a._v(" 重新委托token")]),a._v(" "),s("p",[a._v("重新授权是一种委托类型,允许你将非流动token从一个验证人上绑定到另一个验证人:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ7c3JjLXZhbGlkYXRvci1vcGVyYXRvci1hZGRyJmd0OyBcCiAgJmx0O2RzdC12YWxpZGF0b3Itb3BlcmF0b3ItYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("这里,你还可以使用"),s("code",[a._v("shares-amount")]),a._v("或"),s("code",[a._v("shares-fraction")]),a._v("标识重新委托。")]),a._v(" "),s("p",[a._v("经过解绑期后,重新委托自动完成。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O2RlbGVnYXRvcl9hZGRyJmd0OyAmbHQ7c3JjX3ZhbF9hZGRyJmd0OyAmbHQ7ZHN0X3ZhbF9hZGRyJmd0Owo="}}),a._v(" "),s("p",[a._v("或者,如果你可以检查所有当前的unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDthY2NvdW50X2Nvc21vcyZndDsK"}}),a._v(" "),s("p",[a._v("此外,你可以查询某个特定验证人的所有转出的重新绑定:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zLWZyb20gJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("p",[a._v("添加"),s("code",[a._v("--height")]),a._v("标识来查询之前某个特定区块的redelegation。")]),a._v(" "),s("h4",{attrs:{id:"查询参数-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询参数-2"}},[a._v("#")]),a._v(" 查询参数")]),a._v(" "),s("p",[a._v("参数定义了staking的高级参数。你可以使用以下方法获取:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),a._v(" "),s("p",[a._v("使用上面的命令,你将获得以下值:")]),a._v(" "),s("ul",[s("li",[a._v("unbonding时间")]),a._v(" "),s("li",[a._v("验证人的最大数量")]),a._v(" "),s("li",[a._v("用于抵押的币种")])]),a._v(" "),s("p",[a._v("所有这些值都将通过对一个"),s("code",[a._v("ParameterChange")]),a._v("提案的"),s("code",[a._v("governance")]),a._v("流程进行更新。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),a._v(" "),s("p",[a._v("使用"),s("code",[a._v("pool")]),a._v("命令,你将获得以下值:")]),a._v(" "),s("ul",[s("li",[a._v("未绑定和已绑定的token")]),a._v(" "),s("li",[a._v("token总量")]),a._v(" "),s("li",[a._v("当前的年度通货膨胀率以及上次发生通货膨胀的区块")]),a._v(" "),s("li",[a._v("最后记录的绑定股权")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGVsZWdhdGlvbnMtdG8gJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("h3",{attrs:{id:"治理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#治理"}},[a._v("#")]),a._v(" 治理")]),a._v(" "),s("p",[a._v("治理是Cosmos Hub的用户可以就软件升级,主网的参数或自定义文本提案并达成共识的过程。这是通过对提案进行投票来完成的,提案将由主要网络上的"),s("code",[a._v("Atom")]),a._v("持有者提交。")]),a._v(" "),s("p",[a._v("关于投票过程的一些考虑因素:")]),a._v(" "),s("ul",[s("li",[a._v("投票由绑定"),s("code",[a._v("Atom")]),a._v("的持有者以1个绑定的"),s("code",[a._v("Atom")]),a._v("对应1票方式投出")]),a._v(" "),s("li",[a._v("委托人不投票的话会将票权继承给其验证人")]),a._v(" "),s("li",[s("strong",[a._v("验证人必须对每个提案进行投票")]),a._v("。如果验证人未对提案进行投票,则会对其进行削减处罚。")]),a._v(" "),s("li",[a._v("投票期结束时(主网上是2周)统计投票。每个地址可以多次投票以更新其"),s("code",[a._v("Option")]),a._v("值(每次支付交易费用),只有最后一次投票将被视为有效。")]),a._v(" "),s("li",[a._v("选民可以选择"),s("code",[a._v("Yes")]),a._v(","),s("code",[a._v("No")]),a._v(","),s("code",[a._v("NoWithVeto")]),a._v("和"),s("code",[a._v("Abstain")]),a._v("选项。在投票结束时,如果"),s("code",[a._v("( YesVotes / ( YesVotes + NoVotes + NoWithVetoVotes ) ) > 1/2")]),a._v("且"),s("code",[a._v("( NoWithVetoVotes / ( YesVotes + NoVotes + NoWithVetoVotes )) < 1/3")]),a._v("提案通过,否则就拒绝。")])]),a._v(" "),s("p",[a._v("有关治理流程及其工作原理的更多信息,请查看Governance模块"),s("a",{attrs:{href:""}},[a._v("规范")]),a._v("。")]),a._v(" "),s("h4",{attrs:{id:"创建一个治理提案"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建一个治理提案"}},[a._v("#")]),a._v(" 创建一个治理提案")]),a._v(" "),s("p",[a._v("要创建治理提案,您必须提交初始抵押以及标题和说明。治理之外的其它模块可以实现自己的提议类型和处理程序(例如:参数更改),其中治理模块本身支持"),s("code",[a._v("Text")]),a._v("提议。治理之外的任何模块都将命令绑定在"),s("code",[a._v("submit-proposal")]),a._v("上。")]),a._v(" "),s("p",[a._v("提交一个文本类型的提案:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ7dGl0bGUmZ3Q7IFwKICAtLWRlc2NyaXB0aW9uPSZsdDtkZXNjcmlwdGlvbiZndDsgXAogIC0tdHlwZT0mcXVvdDtUZXh0JnF1b3Q7IFwKICAtLWRlcG9zaXQ9JnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("p",[a._v("您也可以直接通过"),s("code",[a._v("--proposal")]),a._v("指向包含提案的 JSON 文件。")]),a._v(" "),s("p",[a._v("要提交更改参数的提案,您必须提供提案文件,因为其内容对 CLI 输入不太友好:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O3BhdGgvdG8vcHJvcG9zYWwuanNvbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("其中"),s("code",[a._v("proposal.json")]),a._v("包含以下内容:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),a._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[a._v("Warning")]),a._v(" "),s("p",[a._v("Currently parameter changes are "),s("em",[a._v("evaluated")]),a._v(" but not "),s("em",[a._v("validated")]),a._v(", so it is very important\nthat any "),s("code",[a._v("value")]),a._v(" change is valid (ie. correct type and within bounds) for its\nrespective parameter, eg. "),s("code",[a._v("MaxValidators")]),a._v(" should be an integer and not a decimal.")]),a._v(" "),s("p",[a._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.")]),a._v(" "),s("p",[a._v("目前,参数更改已经过"),s("em",[a._v("评估")]),a._v("但未"),s("em",[a._v("经过验证")]),a._v(",因此"),s("code",[a._v("value")]),a._v("对于其相应参数,任何更改都是有效的(即正确类型和边界内)非常重要,例如 "),s("code",[a._v("MaxValidators")]),a._v(" 应该是整数而不是小数。")]),a._v(" "),s("p",[a._v("正确审查参数变更提案应该可以防止这种情况发生(在治理过程中不会发生抵押),但无论如何都应该注意。")])]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("目前不支持"),s("code",[a._v("SoftwareUpgrade")]),a._v(",因为它没有实现,目前与"),s("code",[a._v("Text")]),a._v("提议的语义没有区别。")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("p",[a._v("或者查询所有的有效提案:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),a._v(" "),s("p",[a._v("你还可以使用"),s("code",[a._v("voter")]),a._v("或"),s("code",[a._v("depositor")]),a._v("标识来过滤查询提案。")]),a._v(" "),s("p",[a._v("要查询特定提案的提议人:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{attrs:{id:"增加存入金"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#增加存入金"}},[a._v("#")]),a._v(" 增加存入金")]),a._v(" "),s("p",[a._v("为了将提案广播到网络,存入的金额必须高于"),s("code",[a._v("minDeposit")]),a._v("值(初始值:"),s("code",[a._v("10steak")]),a._v(")。如果你之前创建的提案不符合此要求,你仍可以增加存入的总金额以激活它。达到最低存入金后,提案进入投票期:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmcXVvdDsxMDAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("blockquote",[s("p",[a._v("注意:达到"),s("code",[a._v("MaxDepositPeriod")]),a._v("后,将删除不符合此要求的提案。")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("p",[a._v("你还可以查询特定地址提交的存入金:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7ZGVwb3NpdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),a._v(" "),s("h4",{attrs:{id:"投票给一个提案"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#投票给一个提案"}},[a._v("#")]),a._v(" 投票给一个提案")]),a._v(" "),s("p",[a._v("在提案的存入金达到"),s("code",[a._v("MinDeposit")]),a._v("后,投票期将开放。抵押了"),s("code",[a._v("Atom")]),a._v("的持有人可以投票:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7WWVzL05vL05vV2l0aFZldG8vQWJzdGFpbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7dm90ZXJfYWRkcmVzcyZndDsK"}}),a._v(" "),s("p",[a._v("你还可以查询提交给所有此前投给指定提案的投票:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{attrs:{id:"查询提案的计票结果"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询提案的计票结果"}},[a._v("#")]),a._v(" 查询提案的计票结果")]),a._v(" "),s("p",[a._v("要检查指定提案的当前计票,你可以使用"),s("code",[a._v("tally")]),a._v("命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtcwo="}}),a._v(" "),s("p",[a._v("查询运行的治理参数的子集:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),a._v(" "),s("h3",{attrs:{id:"费用分配"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#费用分配"}},[a._v("#")]),a._v(" 费用分配")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0Owo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0OyAmbHQ7c3RhcnRfaGVpZ2h0Jmd0OyAmbHQ7ZW5kX2hlaWdodCZndDsK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0Owo="}}),a._v(" "),s("h3",{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("例如,给定包含密钥"),s("code",[a._v("p1")]),a._v(","),s("code",[a._v("p2")]),a._v("和"),s("code",[a._v("p3")]),a._v("的多签密钥,每个密钥由不同方持有,持有"),s("code",[a._v("p1")]),a._v("的用户将需要导入"),s("code",[a._v("p2")]),a._v("和"),s("code",[a._v("p3")]),a._v("的公钥以生成多签帐户公钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIHAyIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxdGQyOHV3YTB5eHR3YWw1MjIzcXFyNWFxZjV5NTd0Yzdrazd6OHFkNHpwbHJkbGs1ZXo1a2RubHJqNAoKZ2FpYWQga2V5cyBhZGQgXAogIHAzIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxZ2owNGpwbTl3cmRtbDVxbnNzOWtqeGtteHp5d3VrbG5rajBnM2EzZjhsNXd4OXo0ZW5uejg0eW01dAoKZ2FpYWQga2V5cyBhZGQgXAogIHAxcDJwMyBcCiAgLS1tdWx0aXNpZy10aHJlc2hvbGQ9MiBcCiAgLS1tdWx0aXNpZz1wMSxwMixwMwo="}}),a._v(" "),s("p",[a._v("已存储新的多签公钥"),s("code",[a._v("p1p2p3")]),a._v(",其地址将用作多签交易的签名者:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),a._v(" "),s("p",[a._v("您还可以通过查看 key 的 JSON 输出或增加"),s("code",[a._v("--show-multisig")]),a._v("标识来查看multisig阈值,pubkey构成和相应的权重:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),a._v(" "),s("p",[a._v("创建多签交易的第一步是使用上面创建的多签地址初始化:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwMHVhdG9tIFwKICAtLWZyb209Jmx0O211bHRpc2lnX2FkZHJlc3MmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFR4Lmpzb24K"}}),a._v(" "),s("p",[s("code",[a._v("unsignedTx.json")]),a._v("文件包含以JSON编码的未签署交易。"),s("code",[a._v("p1")]),a._v("现在可以使用自己的私钥对交易进行签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),s("p",[a._v("生成签名后,"),s("code",[a._v("p1")]),a._v("将"),s("code",[a._v("unsignedTx.json")]),a._v("和"),s("code",[a._v("p1signature.json")]),a._v("都发送到"),s("code",[a._v("p2")]),a._v("或"),s("code",[a._v("p3")]),a._v(",然后"),s("code",[a._v("p2")]),a._v("或"),s("code",[a._v("p3")]),a._v("将生成它们各自的签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),s("p",[s("code",[a._v("p1p2p3")]),a._v(" is a 2-of-3 multisig key, therefore one additional signature is sufficient. Any the key holders can now generate the multisig transaction by combining the required signature files:")]),a._v(" "),s("p",[a._v("p1p2p3` 是 2-of-3 多签key,因此一个的签名就足够了。 现在,任何密钥持有者都可以通过组合所需的签名文件来生成多签交易:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),a._v(" "),s("p",[a._v("现在可以把交易发送给节点:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),a._v(" "),s("h2",{attrs:{id:"shell-自动补全脚本"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#shell-自动补全脚本"}},[a._v("#")]),a._v(" shell 自动补全脚本")]),a._v(" "),s("p",[a._v("可以通过完全命令生成主流的UNIX shell解释器(如"),s("code",[a._v("Bash")]),a._v("和"),s("code",[a._v("Zsh")]),a._v(")的"),s("code",[a._v("completion")]),a._v("命令,该命令可用于"),s("code",[a._v("gaiad")]),a._v("和"),s("code",[a._v("gaiad")]),a._v("。")]),a._v(" "),s("p",[a._v("如果要生成Bash完成脚本,请运行以下命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),s("p",[a._v("如果要生成Zsh完成脚本,请运行以下命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("在大多数UNIX系统上,可以在"),s("code",[a._v(".bashrc")]),a._v("或"),s("code",[a._v(".bash_profile")]),a._v("中加载此类脚本以启用Bash自动完成:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),a._v(" "),s("p",[a._v("有关如何启用shell自动完成的信息,请参阅操作系统提供的解释器用户手册。")])],1)],1)}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{494:function(a,t,s){"use strict";s.r(t);var c=s(1),e=Object(c.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:"gaia客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia客户端"}},[a._v("#")]),a._v(" Gaia客户端")]),a._v(" "),s("h2",{attrs:{id:"gaia-cli"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli"}},[a._v("#")]),a._v(" Gaia CLI")]),a._v(" "),s("p",[s("code",[a._v("gaiad")]),a._v("是一个工具,使您能够与 Cosmos Hub 网络中的节点进行交互,无论您是否自己运行它。 让我们恰当的设置它。 要安装它,请按照[安装步骤](./ installation.md)进行安装。")]),a._v(" "),s("h3",{attrs:{id:"配置-gaiad"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#配置-gaiad"}},[a._v("#")]),a._v(" 配置 gaiad")]),a._v(" "),s("p",[a._v("设置"),s("code",[a._v("gaiad")]),a._v("的主要命令如下:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("该命令能为每个标志设置默认值。")]),a._v(" "),s("p",[a._v("首先,设置要连接的全节点的地址:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgojIGV4YW1wbGU6IGdhaWFkIGNvbmZpZyBub2RlIGh0dHBzOi8vNzcuODcuMTA2LjMzOjI2NjU3IChub3RlOiB0aGlzIGlzIGEgcGxhY2Vob2xkZXIpCg=="}}),a._v(" "),s("p",[a._v("如果您运行自己的全节点,只需使用"),s("code",[a._v("tcp://localhost:26657")]),a._v("地址即可。")]),a._v(" "),s("p",[a._v("最后,设置我们想要与之交互链的"),s("code",[a._v("chain-id")]),a._v(":")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),a._v(" "),s("h3",{attrs:{id:"key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#key"}},[a._v("#")]),a._v(" Key")]),a._v(" "),s("h4",{attrs:{id:"key类型"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#key类型"}},[a._v("#")]),a._v(" Key类型")]),a._v(" "),s("p",[a._v("有如下类型的key:")]),a._v(" "),s("ul",[s("li",[s("code",[a._v("cosmos")]),a._v(" "),s("ul",[s("li",[a._v("从通过"),s("code",[a._v("gaiad keys add")]),a._v("生成的账户私钥中产生")]),a._v(" "),s("li",[a._v("用于接收资金")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmosvaloper")]),a._v(" "),s("ul",[s("li",[a._v("用于关联一个验证人和其操作者")]),a._v(" "),s("li",[a._v("用于发起staking操作命令")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmospub")]),a._v(" "),s("ul",[s("li",[a._v("从通过"),s("code",[a._v("gaiad keys add")]),a._v("生成的账户私钥中产生")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),a._v(" "),s("li",[s("code",[a._v("cosmosvalconspub")]),a._v(" "),s("ul",[s("li",[a._v("在使用"),s("code",[a._v("gaiad init")]),a._v("创建节点时生成")]),a._v(" "),s("li",[a._v("使用"),s("code",[a._v("gaiad tendermint show-validator")]),a._v("获得该值")]),a._v(" "),s("li",[a._v("例如 "),s("code",[a._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),a._v(" "),s("h4",{attrs:{id:"生成-key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#生成-key"}},[a._v("#")]),a._v(" 生成 Key")]),a._v(" "),s("p",[a._v("你需要一个帐户的私钥公钥对(分别称作"),s("code",[a._v("sk")]),a._v(","),s("code",[a._v("pk")]),a._v(")才能接收资金,发送交易,绑定交易等等。")]),a._v(" "),s("p",[a._v("生成一个新的"),s("em",[a._v("secp256k1")]),a._v("密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),a._v(" "),s("p",[a._v("接下来,你必须创建一个密码来保护磁盘上的密钥。上述命令的输出将包含种子短语。建议将种子短语保存在安全的地方,以便在忘记密码的情况下,最终可以使用以下命令从种子短语重新生成密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),a._v(" "),s("p",[a._v("如果你检查你的私钥,你会看到"),s("code",[a._v("")]),a._v(" :")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("通过下面的命令查看验证人操作者的地址:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),a._v(" "),s("p",[a._v("你可以查看你所有的可以使用的密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),s("p",[a._v("查看你节点的验证人公钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),a._v(" "),s("p",[a._v("请注意,这是CometBFT的签名密钥,而不是你在委托交易中使用的操作员密钥。")]),a._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[a._v("Warning")]),a._v(" "),s("p",[a._v("我们强烈建议不要对多个密钥使用相同的密码。CometBFT 团队和 Interchain Foundation 将不承担资金损失的责任。")])]),a._v(" "),s("h4",{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:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),a._v(" "),s("p",[s("code",[a._v("K")]),a._v("是将要对多签公钥发起的交易进行签名的最小私钥数。")]),a._v(" "),s("p",[s("code",[a._v("--multisig")]),a._v("标识必须包含要将组合成一个公钥的那些子公钥的名称,该公钥将在本地数据库中生成并存储为"),s("code",[a._v("new_key_name")]),a._v("。通过"),s("code",[a._v("--multisig")]),a._v("提供的所有名称必须已存在于本地数据库中。除非设置了"),s("code",[a._v("--nosort")]),a._v("标识,否则在命令行上提供密钥的顺序无关紧要,即以下命令生成两个相同的密钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),a._v(" "),s("p",[a._v("多签地址也可以在运行中生成并通过以下命令打印:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),a._v(" "),s("p",[a._v("有关如何生成多签帐户,使用其签名和广播多签交易的详细信息,请参阅"),s("a",{attrs:{href:"#%E5%A4%9A%E7%AD%BE%E4%BA%A4%E6%98%93"}},[a._v("多签交易")])]),a._v(" "),s("h3",{attrs:{id:"tx-广播"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tx-广播"}},[a._v("#")]),a._v(" Tx 广播")]),a._v(" "),s("p",[a._v("在广播交易时,"),s("code",[a._v("gaiad")]),a._v("接受"),s("code",[a._v("--broadcast-mode")]),a._v("标识。 这个标识的值可以是"),s("code",[a._v("sync")]),a._v("(默认值)、"),s("code",[a._v("async")]),a._v("或"),s("code",[a._v("block")]),a._v(",其中"),s("code",[a._v("sync")]),a._v("使客户端返回 CheckTx 响应,"),s("code",[a._v("async")]),a._v("使客户端立即返回,而"),s("code",[a._v("block")]),a._v("使得 客户端等待 tx 被提交(或超时)。")]),a._v(" "),s("p",[a._v("值得注意的是,在大多数情况下"),s("strong",[a._v("不")]),a._v("应该使用"),s("code",[a._v("block")]),a._v("模式。 这是因为广播可以超时但是 tx 仍然可能存在在块中,这可能导致很多不良结果。 因此,最好使用"),s("code",[a._v("sync")]),a._v("或"),s("code",[a._v("async")]),a._v("并通过 tx hash 查询以确定 tx 何时包含在块中。")]),a._v(" "),s("h3",{attrs:{id:"fees-和-gas"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fees-和-gas"}},[a._v("#")]),a._v(" Fees 和 Gas")]),a._v(" "),s("p",[a._v("每笔交易可能会提供 fees 或 gas price,但不能同时提供。")]),a._v(" "),s("p",[a._v("验证人可以配置最低 gas price(多币种的),并且在决定它们是否能被包含在区块中的"),s("code",[a._v("CheckTx")]),a._v("期间使用改值,其中 "),s("code",[a._v("gasPrices >= minGasPrices")]),a._v("。请注意,你的交易必须提供大于或等于验证人要求的任何接受币种的费用。")]),a._v(" "),s("p",[s("strong",[a._v("注意")]),a._v(":有了这样的机制,验证人可能会开始在 mempool 中通过 gasPrice 来优先处理某些 txs,因此提供更高 fee 或 gas price可能会产生更高的tx优先级。")]),a._v(" "),s("p",[a._v("比如:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),a._v(" "),s("p",[a._v("或:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),a._v(" "),s("h3",{attrs:{id:"账户"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#账户"}},[a._v("#")]),a._v(" 账户")]),a._v(" "),s("h4",{attrs:{id:"获取-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#获取-token"}},[a._v("#")]),a._v(" 获取 Token")]),a._v(" "),s("p",[a._v("获取token的最佳方式是通过"),s("a",{attrs:{href:"https://faucetcosmos.network",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos测试网水龙头"),s("OutboundLink")],1),a._v("。如果水龙头对你不生效,尝试在"),s("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("#cosmos-validator"),s("OutboundLink")],1),a._v("上向人索要。水龙头需要你打算用于抵押股权的"),s("code",[a._v("cosmos")]),a._v("开头的地址。")]),a._v(" "),s("h4",{attrs:{id:"查询账户余额"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询账户余额"}},[a._v("#")]),a._v(" 查询账户余额")]),a._v(" "),s("p",[a._v("在你的地址收到token后,你可以通过以下命令查看账户的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("当你查询余额为零的帐户时,你将收到以下错误:"),s("code",[a._v("No account with address was found in the state.")]),a._v(" 如果你在节点与区块链完全同步之前就查询,也会发生这种情况。这些都很正常。")])]),a._v(" "),s("h4",{attrs:{id:"发送-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#发送-token"}},[a._v("#")]),a._v(" 发送 Token")]),a._v(" "),s("p",[a._v("你可以通过如下命令从一个账户发送资金到另一个账户:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[s("code",[a._v("--amount")]),a._v("标识接收格式:"),s("code",[a._v("--amount=")])])]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("你可能希望通过"),s("code",[a._v("--gas")]),a._v("标识限制交易可以消耗的最大燃料。如果你通过"),s("code",[a._v("--gas=auto")]),a._v(",将在执行交易前自动估gas。gas估算可能是不准确的,因为状态变化可能发生在模拟结束和交易的实际执行之间,因此在原始估计之上应用调整以确保能够成功地广播交易。可以通过"),s("code",[a._v("--gas-adjustment")]),a._v("标识控制调整,其默认值为1.0。")])]),a._v(" "),s("p",[a._v("现在,查看源账户和目标账户的更新后的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),a._v(" "),s("p",[a._v("你还可以使用"),s("code",[a._v("--block")]),a._v("标识查询在特定高度区块下你的余额:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),a._v(" "),s("p",[a._v("你可以通过在命令行中附加"),s("code",[a._v("--dry-run")]),a._v("标识来模拟交易而不实际广播它:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtkZXN0aW5hdGlvbl9jb3Ntb3NhY2NhZGRyJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWRyeS1ydW4K"}}),a._v(" "),s("p",[a._v("此外,你可以通过将"),s("code",[a._v("--generate-only")]),a._v("附加到命令行参数列表来构建交易并将其JSON格式打印到STDOUT:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtkZXN0aW5hdGlvbl9jb3Ntb3NhY2NhZGRyJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFNlbmRUeC5qc29uCg=="}}),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OwogIHVuc2lnbmVkU2VuZFR4Lmpzb24gJmd0OyBzaWduZWRTZW5kVHguanNvbgo="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("标识 "),s("code",[a._v("--generate-only")]),a._v(" 只能在访问本地 keybase 时使用。")])]),a._v(" "),s("p",[a._v("你可以通过下面的命令验证交易的签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),s("p",[a._v("你可以将由JSON文件提供的已签名的交易广播至指定节点:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),a._v(" "),s("h3",{attrs:{id:"查询交易"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询交易"}},[a._v("#")]),a._v(" 查询交易")]),a._v(" "),s("h4",{attrs:{id:"匹配一组tag"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#匹配一组tag"}},[a._v("#")]),a._v(" 匹配一组tag")]),a._v(" "),s("p",[a._v("你可以使用交易搜索命令查询与每个交易上添加的特定"),s("code",[a._v("标签集")]),a._v("匹配的交易。")]),a._v(" "),s("p",[a._v("每个标签都由"),s("code",[a._v("{eventType}.{eventAttribute}={value}")]),a._v("形式的键值对形成。还可以使用"),s("code",[a._v("&")]),a._v("符号组合标签来查询更具体的结果。")]),a._v(" "),s("p",[a._v("使用"),s("code",[a._v("标签")]),a._v("查询交易的命令如下:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),a._v(" "),s("p",[a._v("使用多个"),s("code",[a._v("标签")]),a._v(":")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),a._v(" "),s("p",[a._v("通过"),s("code",[a._v("page")]),a._v("和"),s("code",[a._v("limit")]),a._v("来实现分页:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("注意")]),a._v(" "),s("p",[a._v("action标签始终等于相关message的"),s("code",[a._v("Type()")]),a._v("函数返回的消息类型。")]),a._v(" "),s("p",[a._v("你可以在每个SDK的模块中找到目前的标签列表:")]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Staking events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Governance events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Slashing events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Distribution events"),s("OutboundLink")],1)]),a._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[a._v("Bank events"),s("OutboundLink")],1)])])]),a._v(" "),s("h4",{attrs:{id:"匹配一笔交易的hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#匹配一笔交易的hash"}},[a._v("#")]),a._v(" 匹配一笔交易的hash")]),a._v(" "),s("p",[a._v("你一可以通过指定hash值查询该笔交易:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),a._v(" "),s("h3",{attrs:{id:"slashing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[a._v("#")]),a._v(" Slashing")]),a._v(" "),s("h4",{attrs:{id:"unjailing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[a._v("#")]),a._v(" Unjailing")]),a._v(" "),s("p",[a._v("将你入狱的验证人释放出狱:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),a._v(" "),s("h4",{attrs:{id:"signing-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[a._v("#")]),a._v(" Signing Info")]),a._v(" "),s("p",[a._v("检索一个验证人的签名信息:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),a._v(" "),s("h4",{attrs:{id:"查询参数"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询参数"}},[a._v("#")]),a._v(" 查询参数")]),a._v(" "),s("p",[a._v("你可以查询当前的slashing参数:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),a._v(" "),s("h3",{attrs:{id:"staking"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[a._v("#")]),a._v(" Staking")]),a._v(" "),s("h4",{attrs:{id:"设置一个验证人"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#设置一个验证人"}},[a._v("#")]),a._v(" 设置一个验证人")]),a._v(" "),s("p",[a._v("有关如何设置验证人候选者的完整指南,请参阅"),s("a",{attrs:{href:""}},[a._v("验证人设置")]),a._v("章节")]),a._v(" "),s("h4",{attrs:{id:"向一个验证人委托"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#向一个验证人委托"}},[a._v("#")]),a._v(" 向一个验证人委托")]),a._v(" "),s("p",[a._v("一旦主网上线,你可以把"),s("code",[a._v("atom")]),a._v("委托给一个验证人。这些委托人可以收到部分验证人的收益。阅读"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Token Model"),s("OutboundLink")],1),a._v("了解更多信息。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),a._v(" "),s("p",[a._v("如果你想要获得单个验证人的信息,你可以使用下面的命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("h4",{attrs:{id:"绑定-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#绑定-token"}},[a._v("#")]),a._v(" 绑定 Token")]),a._v(" "),s("p",[a._v("在Cosmos Hub主网中,我们绑定"),s("code",[a._v("uatom")]),a._v(","),s("code",[a._v("1atom = 1000000uatom")]),a._v("。你可以把token绑定在一个测试网验证人节点上(即委托):")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("p",[s("code",[a._v("")]),a._v("是你要委托的验证人的操作者地址。如果你运行的是本地testnet,可以通过以下方式找到:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),a._v(" "),s("p",[a._v("其中"),s("code",[a._v("[name]")]),a._v("是初始化"),s("code",[a._v("gaiad")]),a._v("时指定的键的名称。")]),a._v(" "),s("p",[a._v("虽然token是绑定的,但它们与网络中的所有其他绑定的token汇集在一起。验证人和委托人获得一定比例的股权,这些股权等于他们在这个资产池中的抵押。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),a._v(" "),s("p",[a._v("或者你想查看所有当前的委托:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("你还可以通过添加"),s("code",[a._v("--height")]),a._v("标识来获取先前的委托状态。")]),a._v(" "),s("h4",{attrs:{id:"解绑-token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#解绑-token"}},[a._v("#")]),a._v(" 解绑 Token")]),a._v(" "),s("p",[a._v("如果出于一些原因验证人行为异常,或者你想解绑一定数量的token,请使用以下命令。")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("经过解绑期后,解绑自动完成。")]),a._v(" "),s("h4",{attrs:{id:"查询unbonding-delegations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询unbonding-delegations"}},[a._v("#")]),a._v(" 查询Unbonding-Delegations")]),a._v(" "),s("p",[a._v("一旦你开始了一笔unbonding-delegation,你可以使用以下命令查看信息:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),a._v(" "),s("p",[a._v("或者你可以查看当前你所有的unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),a._v(" "),s("p",[a._v("此外,你可以从特定验证人获取所有unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),a._v(" "),s("p",[a._v("要获取指定区块时的unbonding-delegation状态,请尝试添加"),s("code",[a._v("--height")]),a._v("标识。")]),a._v(" "),s("h4",{attrs:{id:"重新委托token"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#重新委托token"}},[a._v("#")]),a._v(" 重新委托token")]),a._v(" "),s("p",[a._v("重新授权是一种委托类型,允许你将非流动token从一个验证人上绑定到另一个验证人:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ7c3JjLXZhbGlkYXRvci1vcGVyYXRvci1hZGRyJmd0OyBcCiAgJmx0O2RzdC12YWxpZGF0b3Itb3BlcmF0b3ItYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("这里,你还可以使用"),s("code",[a._v("shares-amount")]),a._v("或"),s("code",[a._v("shares-fraction")]),a._v("标识重新委托。")]),a._v(" "),s("p",[a._v("经过解绑期后,重新委托自动完成。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O2RlbGVnYXRvcl9hZGRyJmd0OyAmbHQ7c3JjX3ZhbF9hZGRyJmd0OyAmbHQ7ZHN0X3ZhbF9hZGRyJmd0Owo="}}),a._v(" "),s("p",[a._v("或者,如果你可以检查所有当前的unbonding-delegation:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDthY2NvdW50X2Nvc21vcyZndDsK"}}),a._v(" "),s("p",[a._v("此外,你可以查询某个特定验证人的所有转出的重新绑定:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zLWZyb20gJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("p",[a._v("添加"),s("code",[a._v("--height")]),a._v("标识来查询之前某个特定区块的redelegation。")]),a._v(" "),s("h4",{attrs:{id:"查询参数-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询参数-2"}},[a._v("#")]),a._v(" 查询参数")]),a._v(" "),s("p",[a._v("参数定义了staking的高级参数。你可以使用以下方法获取:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),a._v(" "),s("p",[a._v("使用上面的命令,你将获得以下值:")]),a._v(" "),s("ul",[s("li",[a._v("unbonding时间")]),a._v(" "),s("li",[a._v("验证人的最大数量")]),a._v(" "),s("li",[a._v("用于抵押的币种")])]),a._v(" "),s("p",[a._v("所有这些值都将通过对一个"),s("code",[a._v("ParameterChange")]),a._v("提案的"),s("code",[a._v("governance")]),a._v("流程进行更新。")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),a._v(" "),s("p",[a._v("使用"),s("code",[a._v("pool")]),a._v("命令,你将获得以下值:")]),a._v(" "),s("ul",[s("li",[a._v("未绑定和已绑定的token")]),a._v(" "),s("li",[a._v("token总量")]),a._v(" "),s("li",[a._v("当前的年度通货膨胀率以及上次发生通货膨胀的区块")]),a._v(" "),s("li",[a._v("最后记录的绑定股权")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGVsZWdhdGlvbnMtdG8gJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),a._v(" "),s("h3",{attrs:{id:"治理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#治理"}},[a._v("#")]),a._v(" 治理")]),a._v(" "),s("p",[a._v("治理是Cosmos Hub的用户可以就软件升级,主网的参数或自定义文本提案并达成共识的过程。这是通过对提案进行投票来完成的,提案将由主要网络上的"),s("code",[a._v("Atom")]),a._v("持有者提交。")]),a._v(" "),s("p",[a._v("关于投票过程的一些考虑因素:")]),a._v(" "),s("ul",[s("li",[a._v("投票由绑定"),s("code",[a._v("Atom")]),a._v("的持有者以1个绑定的"),s("code",[a._v("Atom")]),a._v("对应1票方式投出")]),a._v(" "),s("li",[a._v("委托人不投票的话会将票权继承给其验证人")]),a._v(" "),s("li",[s("strong",[a._v("验证人必须对每个提案进行投票")]),a._v("。如果验证人未对提案进行投票,则会对其进行削减处罚。")]),a._v(" "),s("li",[a._v("投票期结束时(主网上是2周)统计投票。每个地址可以多次投票以更新其"),s("code",[a._v("Option")]),a._v("值(每次支付交易费用),只有最后一次投票将被视为有效。")]),a._v(" "),s("li",[a._v("选民可以选择"),s("code",[a._v("Yes")]),a._v(","),s("code",[a._v("No")]),a._v(","),s("code",[a._v("NoWithVeto")]),a._v("和"),s("code",[a._v("Abstain")]),a._v("选项。在投票结束时,如果"),s("code",[a._v("( YesVotes / ( YesVotes + NoVotes + NoWithVetoVotes ) ) > 1/2")]),a._v("且"),s("code",[a._v("( NoWithVetoVotes / ( YesVotes + NoVotes + NoWithVetoVotes )) < 1/3")]),a._v("提案通过,否则就拒绝。")])]),a._v(" "),s("p",[a._v("有关治理流程及其工作原理的更多信息,请查看Governance模块"),s("a",{attrs:{href:""}},[a._v("规范")]),a._v("。")]),a._v(" "),s("h4",{attrs:{id:"创建一个治理提案"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建一个治理提案"}},[a._v("#")]),a._v(" 创建一个治理提案")]),a._v(" "),s("p",[a._v("要创建治理提案,您必须提交初始抵押以及标题和说明。治理之外的其它模块可以实现自己的提议类型和处理程序(例如:参数更改),其中治理模块本身支持"),s("code",[a._v("Text")]),a._v("提议。治理之外的任何模块都将命令绑定在"),s("code",[a._v("submit-proposal")]),a._v("上。")]),a._v(" "),s("p",[a._v("提交一个文本类型的提案:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ7dGl0bGUmZ3Q7IFwKICAtLWRlc2NyaXB0aW9uPSZsdDtkZXNjcmlwdGlvbiZndDsgXAogIC0tdHlwZT0mcXVvdDtUZXh0JnF1b3Q7IFwKICAtLWRlcG9zaXQ9JnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("p",[a._v("您也可以直接通过"),s("code",[a._v("--proposal")]),a._v("指向包含提案的 JSON 文件。")]),a._v(" "),s("p",[a._v("要提交更改参数的提案,您必须提供提案文件,因为其内容对 CLI 输入不太友好:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O3BhdGgvdG8vcHJvcG9zYWwuanNvbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("p",[a._v("其中"),s("code",[a._v("proposal.json")]),a._v("包含以下内容:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),a._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[a._v("Warning")]),a._v(" "),s("p",[a._v("Currently parameter changes are "),s("em",[a._v("evaluated")]),a._v(" but not "),s("em",[a._v("validated")]),a._v(", so it is very important\nthat any "),s("code",[a._v("value")]),a._v(" change is valid (ie. correct type and within bounds) for its\nrespective parameter, eg. "),s("code",[a._v("MaxValidators")]),a._v(" should be an integer and not a decimal.")]),a._v(" "),s("p",[a._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.")]),a._v(" "),s("p",[a._v("目前,参数更改已经过"),s("em",[a._v("评估")]),a._v("但未"),s("em",[a._v("经过验证")]),a._v(",因此"),s("code",[a._v("value")]),a._v("对于其相应参数,任何更改都是有效的(即正确类型和边界内)非常重要,例如 "),s("code",[a._v("MaxValidators")]),a._v(" 应该是整数而不是小数。")]),a._v(" "),s("p",[a._v("正确审查参数变更提案应该可以防止这种情况发生(在治理过程中不会发生抵押),但无论如何都应该注意。")])]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("目前不支持"),s("code",[a._v("SoftwareUpgrade")]),a._v(",因为它没有实现,目前与"),s("code",[a._v("Text")]),a._v("提议的语义没有区别。")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("p",[a._v("或者查询所有的有效提案:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),a._v(" "),s("p",[a._v("你还可以使用"),s("code",[a._v("voter")]),a._v("或"),s("code",[a._v("depositor")]),a._v("标识来过滤查询提案。")]),a._v(" "),s("p",[a._v("要查询特定提案的提议人:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{attrs:{id:"增加存入金"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#增加存入金"}},[a._v("#")]),a._v(" 增加存入金")]),a._v(" "),s("p",[a._v("为了将提案广播到网络,存入的金额必须高于"),s("code",[a._v("minDeposit")]),a._v("值(初始值:"),s("code",[a._v("10steak")]),a._v(")。如果你之前创建的提案不符合此要求,你仍可以增加存入的总金额以激活它。达到最低存入金后,提案进入投票期:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmcXVvdDsxMDAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),a._v(" "),s("blockquote",[s("p",[a._v("注意:达到"),s("code",[a._v("MaxDepositPeriod")]),a._v("后,将删除不符合此要求的提案。")])]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("p",[a._v("你还可以查询特定地址提交的存入金:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7ZGVwb3NpdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),a._v(" "),s("h4",{attrs:{id:"投票给一个提案"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#投票给一个提案"}},[a._v("#")]),a._v(" 投票给一个提案")]),a._v(" "),s("p",[a._v("在提案的存入金达到"),s("code",[a._v("MinDeposit")]),a._v("后,投票期将开放。抵押了"),s("code",[a._v("Atom")]),a._v("的持有人可以投票:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7WWVzL05vL05vV2l0aFZldG8vQWJzdGFpbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7dm90ZXJfYWRkcmVzcyZndDsK"}}),a._v(" "),s("p",[a._v("你还可以查询提交给所有此前投给指定提案的投票:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{attrs:{id:"查询提案的计票结果"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查询提案的计票结果"}},[a._v("#")]),a._v(" 查询提案的计票结果")]),a._v(" "),s("p",[a._v("要检查指定提案的当前计票,你可以使用"),s("code",[a._v("tally")]),a._v("命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtcwo="}}),a._v(" "),s("p",[a._v("查询运行的治理参数的子集:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),a._v(" "),s("h3",{attrs:{id:"费用分配"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#费用分配"}},[a._v("#")]),a._v(" 费用分配")]),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0Owo="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0OyAmbHQ7c3RhcnRfaGVpZ2h0Jmd0OyAmbHQ7ZW5kX2hlaWdodCZndDsK"}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),a._v(" "),s("h4",{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:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0Owo="}}),a._v(" "),s("h3",{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("例如,给定包含密钥"),s("code",[a._v("p1")]),a._v(","),s("code",[a._v("p2")]),a._v("和"),s("code",[a._v("p3")]),a._v("的多签密钥,每个密钥由不同方持有,持有"),s("code",[a._v("p1")]),a._v("的用户将需要导入"),s("code",[a._v("p2")]),a._v("和"),s("code",[a._v("p3")]),a._v("的公钥以生成多签帐户公钥:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIHAyIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxdGQyOHV3YTB5eHR3YWw1MjIzcXFyNWFxZjV5NTd0Yzdrazd6OHFkNHpwbHJkbGs1ZXo1a2RubHJqNAoKZ2FpYWQga2V5cyBhZGQgXAogIHAzIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxZ2owNGpwbTl3cmRtbDVxbnNzOWtqeGtteHp5d3VrbG5rajBnM2EzZjhsNXd4OXo0ZW5uejg0eW01dAoKZ2FpYWQga2V5cyBhZGQgXAogIHAxcDJwMyBcCiAgLS1tdWx0aXNpZy10aHJlc2hvbGQ9MiBcCiAgLS1tdWx0aXNpZz1wMSxwMixwMwo="}}),a._v(" "),s("p",[a._v("已存储新的多签公钥"),s("code",[a._v("p1p2p3")]),a._v(",其地址将用作多签交易的签名者:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),a._v(" "),s("p",[a._v("您还可以通过查看 key 的 JSON 输出或增加"),s("code",[a._v("--show-multisig")]),a._v("标识来查看multisig阈值,pubkey构成和相应的权重:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),a._v(" "),s("p",[a._v("创建多签交易的第一步是使用上面创建的多签地址初始化:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwMHVhdG9tIFwKICAtLWZyb209Jmx0O211bHRpc2lnX2FkZHJlc3MmZ3Q7IFwKICAtLWdlbmVyYXRlLW9ubHkgJmd0OyB1bnNpZ25lZFR4Lmpzb24K"}}),a._v(" "),s("p",[s("code",[a._v("unsignedTx.json")]),a._v("文件包含以JSON编码的未签署交易。"),s("code",[a._v("p1")]),a._v("现在可以使用自己的私钥对交易进行签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),s("p",[a._v("生成签名后,"),s("code",[a._v("p1")]),a._v("将"),s("code",[a._v("unsignedTx.json")]),a._v("和"),s("code",[a._v("p1signature.json")]),a._v("都发送到"),s("code",[a._v("p2")]),a._v("或"),s("code",[a._v("p3")]),a._v(",然后"),s("code",[a._v("p2")]),a._v("或"),s("code",[a._v("p3")]),a._v("将生成它们各自的签名:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),a._v(" "),s("p",[s("code",[a._v("p1p2p3")]),a._v(" is a 2-of-3 multisig key, therefore one additional signature is sufficient. Any the key holders can now generate the multisig transaction by combining the required signature files:")]),a._v(" "),s("p",[a._v("p1p2p3` 是 2-of-3 多签key,因此一个的签名就足够了。 现在,任何密钥持有者都可以通过组合所需的签名文件来生成多签交易:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),a._v(" "),s("p",[a._v("现在可以把交易发送给节点:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),a._v(" "),s("h2",{attrs:{id:"shell-自动补全脚本"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#shell-自动补全脚本"}},[a._v("#")]),a._v(" shell 自动补全脚本")]),a._v(" "),s("p",[a._v("可以通过完全命令生成主流的UNIX shell解释器(如"),s("code",[a._v("Bash")]),a._v("和"),s("code",[a._v("Zsh")]),a._v(")的"),s("code",[a._v("completion")]),a._v("命令,该命令可用于"),s("code",[a._v("gaiad")]),a._v("和"),s("code",[a._v("gaiad")]),a._v("。")]),a._v(" "),s("p",[a._v("如果要生成Bash完成脚本,请运行以下命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),s("p",[a._v("如果要生成Zsh完成脚本,请运行以下命令:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("Note")]),a._v(" "),s("p",[a._v("在大多数UNIX系统上,可以在"),s("code",[a._v(".bashrc")]),a._v("或"),s("code",[a._v(".bash_profile")]),a._v("中加载此类脚本以启用Bash自动完成:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),a._v(" "),s("p",[a._v("有关如何启用shell自动完成的信息,请参阅操作系统提供的解释器用户手册。")])],1)],1)}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/187.4cb9727a.js b/main/assets/js/188.86ec8986.js similarity index 99% rename from main/assets/js/187.4cb9727a.js rename to main/assets/js/188.86ec8986.js index fdb3f85e53f..ead58624401 100644 --- a/main/assets/js/187.4cb9727a.js +++ b/main/assets/js/188.86ec8986.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{500:function(v,d,_){"use strict";_.r(d);var e=_(1),o=Object(e.a)({},(function(){var v=this,d=v.$createElement,_=v._self._c||d;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"创世-genesis-文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世-genesis-文件"}},[v._v("#")]),v._v(" 创世(Genesis)文件")]),v._v(" "),_("p",[v._v("本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的"),_("code",[v._v("gaia")]),v._v(" testnet 创建一个 genesis 文件。")]),v._v(" "),_("p",[v._v("请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),v._v(" "),_("p",[v._v("genesis 文件存储在 "),_("code",[v._v("~/.gaia/config/genesis.toml")]),v._v(".")]),v._v(" "),_("h2",{attrs:{id:"什么是创世文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#什么是创世文件"}},[v._v("#")]),v._v(" 什么是创世文件")]),v._v(" "),_("p",[v._v("genesis 文件是一个 JSON 文件,用于定义区块链的初始状态。 它可以看作是区块链的高度“0”。 高度为“1”的第一个块将引用 genesis 文件作为其父级。")]),v._v(" "),_("p",[v._v("genesis 文件中定义的状态包含所有必要的信息,如初始令牌分配、创建时间、默认参数等。 我们来分别描述这些信息。")]),v._v(" "),_("h2",{attrs:{id:"genesis-时间和链id"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#genesis-时间和链id"}},[v._v("#")]),v._v(" Genesis 时间和链ID")]),v._v(" "),_("p",[_("code",[v._v("genesis_time")]),v._v("定义在 genesis 文件的顶部。 它是一个“UTC”时间戳,指示区块链何时启动。 此时,创世记验证人应该上线并开始参与共识过程。 当超过2/3的生成验证人(通过投票权加权)在线时,区块链启动。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),_("p",[_("code",[v._v("chain_id")]),v._v("是您的链的唯一标识符。 它有助于区分使用相同版本的软件的不同链。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0xJnF1b3Q7LAo="}}),v._v(" "),_("h2",{attrs:{id:"共识参数"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#共识参数"}},[v._v("#")]),v._v(" 共识参数")]),v._v(" "),_("p",[v._v("接下来,创世文件定义共识参数。 共识参数覆盖与共识层相关的所有参数,"),_("code",[v._v("gaia")]),v._v(" 的共识层是 "),_("code",[v._v("CometBFT")]),v._v("。 我们来看看这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("block")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_bytes")]),v._v(": 每个块的最大字节数。")]),v._v(" "),_("li",[_("code",[v._v("max_gas")]),v._v(": 每个块的最大 gas 数量。 该区块中包含的每笔交易都会消耗一些 gas,包含在一个区块内的交易所使用的总 gas 不能超出。")])])]),v._v(" "),_("li",[_("code",[v._v("evidence")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_age")]),v._v(": 证据(evidence)是一种证明,表明验证者在同一高度(同一轮)签署了两个不同的区块。 这是一种明显的恶意行为,会在状态机层受到惩罚。 "),_("code",[v._v("max_age")]),v._v("定义"),_("strong",[v._v("块")]),v._v("的最大数量,在经过"),_("code",[v._v("max_age")]),v._v("块之后证据不再有效。")])])]),v._v(" "),_("li",[_("code",[v._v("validator")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pub_key_types")]),v._v(": 可被验证人接受的公钥类型 (例如"),_("code",[v._v("ed25519")]),v._v(", "),_("code",[v._v("secp256k1")]),v._v(", ...) ,目前仅支持"),_("code",[v._v("ed25519")]),v._v("。")])])])]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),_("h2",{attrs:{id:"应用程序状态"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#应用程序状态"}},[v._v("#")]),v._v(" 应用程序状态")]),v._v(" "),_("p",[v._v("应用程序状态定义了状态机的初始状态。")]),v._v(" "),_("h3",{attrs:{id:"创世账号"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世账号"}},[v._v("#")]),v._v(" 创世账号")]),v._v(" "),_("p",[v._v("在本节中,定义了初始分配的 Token。 可以通过直接编辑 genesis 文件手动添加帐户,但也可以使用以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),v._v(" "),_("p",[v._v("这个命令在 "),_("code",[v._v("app_state.accounts")]),v._v(" 下创建一个条目。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("sequence_number")]),v._v(": 此编号用于计算此帐户发送的交易数。 每次事务包含在块中时它都会递增,并用于防止重放攻击,初始值为“0”。")]),v._v(" "),_("li",[_("code",[v._v("account_number")]),v._v(": 帐户的唯一标识符,它在包含此帐户的首次被打包到块的交易中生成。")]),v._v(" "),_("li",[_("code",[v._v("original_vesting")]),v._v(": 锁仓(Vesting) 由"),_("code",[v._v("gaia")]),v._v("原生支持。 您可以定义帐户需要锁仓 token 数量,这些 token 在一定时间之后才能流通。 锁仓中的 token 可用于委托。 默认值为“null”。")]),v._v(" "),_("li",[_("code",[v._v("delegated_free")]),v._v(": 在 vest 过期后可转让的委托 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegated_vesting")]),v._v(": 锁仓中的 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("start_time")]),v._v(": vesting 期开始区块高度。创世文件中,大部分情况是"),_("code",[v._v("0")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("end_time")]),v._v(": vesting 期结束区块高度。如果没有 token 在 vesting 期,这个值是"),_("code",[v._v("0")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"银行-bank"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#银行-bank"}},[v._v("#")]),v._v(" 银行(Bank)")]),v._v(" "),_("p",[_("code",[v._v("bank")]),v._v("模块负责 token。在本节中唯一 需要定义的参数是“转账”是否在创世文件启用。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),_("h3",{attrs:{id:"权益-staking"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#权益-staking"}},[v._v("#")]),v._v(" 权益(Staking)")]),v._v(" "),_("p",[_("code",[v._v("staking")]),v._v("模块处理状态机中的大多数 POS 逻辑。 此部分应如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("not_bonded_tokens")]),v._v(": 在创世文件中没有绑定(即委托)的 token 数量。 通常情况下,它与权益 token (本例中是 "),_("code",[v._v("uatom")]),v._v(")的总供应量相等。")]),v._v(" "),_("li",[_("code",[v._v("bonded_tokens")]),v._v(": 在创世文件中绑定的 token 数量,通常是0。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("unbonding_time")]),v._v(": 以"),_("strong",[v._v("纳秒")]),v._v("为单位的解绑延迟时间。")]),v._v(" "),_("li",[_("code",[v._v("max_validators")]),v._v(": 最大验证人节点数量。")]),v._v(" "),_("li",[_("code",[v._v("max_entries")]),v._v(": 每对验证人和委托人之间可进行解委托、重新委托的最大条目数。")]),v._v(" "),_("li",[_("code",[v._v("bond_denom")]),v._v(": 权益代币符号。")])])]),v._v(" "),_("li",[_("code",[v._v("last_total_power")]),v._v(": 总投票权重。在创世文件通常是0(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("last_validator_powers")]),v._v(": 最后一个区块的状态中每个验证人的投票权重。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("validators")]),v._v(": 最后一个区块中的验证人列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("bonds")]),v._v(": 最后一个区块中的委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("unbonding_delegations")]),v._v(": 最后一个区块中的解绑委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("redelegations")]),v._v(": 最后一个区块中的重新委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("exported")]),v._v(": 创世文件是否是从之前的状态导出得到的。")])]),v._v(" "),_("h3",{attrs:{id:"挖矿-mint"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#挖矿-mint"}},[v._v("#")]),v._v(" 挖矿(Mint)")]),v._v(" "),_("p",[_("code",[v._v("mint")]),v._v("模块管理 token 供应的通胀逻辑。 创世文件中的"),_("code",[v._v("mint")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("minter")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("inflation")]),v._v(":总 token 供应量的年化通胀百分比,每周更新。值 “0.070000000000000000” 意味着目标是每年通货膨胀率为“7%”,每周重新计算一次。")]),v._v(" "),_("li",[_("code",[v._v("annual_provisions")]),v._v(": 每块重新计算。初始值是 "),_("code",[v._v("0.000000000000000000")]),v._v("。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("mint_denom")]),v._v(": 增发权益代币面值,此处是 "),_("code",[v._v("uatom")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("inflation_rate_change")]),v._v(": 通胀每年最大变化。")]),v._v(" "),_("li",[_("code",[v._v("inflation_max")]),v._v(": 最高通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("inflation_min")]),v._v(": 最低通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("goal_bonded")]),v._v(": 目标绑定量占总供应量百分比。如果委托 token 的百分比低于此目标,则通胀率会增加(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_max")]),v._v("。 如果委托 token 的百分比高于此目标,则通胀率会下降(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_min")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("blocks_per_year")]),v._v(": 每年出块量估算。用于计算出块收益中权益 token 的通胀部分(称之为块供给)。")])])])]),v._v(" "),_("h3",{attrs:{id:"分配-distribution"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#分配-distribution"}},[v._v("#")]),v._v(" 分配(Distribution)")]),v._v(" "),_("p",[_("code",[v._v("distribution")]),v._v("模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的"),_("code",[v._v("distribution")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("fee_pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("community_pool")]),v._v(": 用于支付奖励的 token 放在公共池中,它通过治理提案分配。在创世文件中通常是 null。")])])]),v._v(" "),_("li",[_("code",[v._v("community_tax")]),v._v(": 税率,即交易费和出块收益中需要放入公共池部分的百分比。")]),v._v(" "),_("li",[_("code",[v._v("base_proposer_reward")]),v._v(": 区块提议者在有效区块中收取的交易费用奖励的基础部分。 如果值为"),_("code",[v._v("0.010000000000000000")]),v._v(",则1%的费用将转给提议者。")]),v._v(" "),_("li",[_("code",[v._v("bonus_proposer_reward")]),v._v(": 如果区块提议者收集了 2/3 (该块有效的最小值)加权投票的预提交,则获得 "),_("code",[v._v("base_proposer_reward")]),v._v(" 奖励。 如果区块提议者收集了100%加权投票的预提交,则奖励会再线性增加"),_("code",[v._v("bonus_proposer_reward")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("withdraw_addr_enabled")]),v._v(": 如果是"),_("code",[v._v("true")]),v._v(",委托人可以设置不同的地址来取回他们的奖励。 如果要在创世时禁用转账,则要设置为"),_("code",[v._v("false")]),v._v(",因为它可以绕过转账限制。")]),v._v(" "),_("li",[_("code",[v._v("delegator_withdraw_infos")]),v._v(": 委托人收益地址列表。 如果没有从之前的状态导出,一般是"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("previous_proposer")]),v._v(': 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。')]),v._v(" "),_("li",[_("code",[v._v("outstanding_rewards")]),v._v(": 未付(未提取)奖励。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_accumulated_commission")]),v._v(": 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_historical_rewards")]),v._v(": 验证人的历史奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validators_current_rewards")]),v._v(": 验证人的当前奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegator_starting_infos")]),v._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_slash_events")]),v._v(": Set of information related to the past slashing of validators. Set to "),_("code",[v._v("null")]),v._v(" if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"治理-governance"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#治理-governance"}},[v._v("#")]),v._v(" 治理(Governance)")]),v._v(" "),_("p",[_("code",[v._v("gov")]),v._v("模块处理所有与治理相关的事务。 "),_("code",[v._v("gov")]),v._v("部分的初始状态如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("starting_proposal_id")]),v._v(": 此参数定义第一个提案的ID,每个提案都由唯一ID标识。")]),v._v(" "),_("li",[_("code",[v._v("deposits")]),v._v(": 每个提案 ID 的保证金列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("votes")]),v._v(": 每个提案 ID 的投票列表。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("proposals")]),v._v(": 所有提案列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("deposit_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("min_deposit")]),v._v(": 使提案进入投票期的最小抵押数量,如果提供了多种面值,满足其一即可。")]),v._v(" "),_("li",[_("code",[v._v("max_deposit_period")]),v._v(": 最长抵押等待时间(单位"),_("strong",[v._v("纳秒")]),v._v("),之后就不能再进行抵押了。")])])]),v._v(" "),_("li",[_("code",[v._v("voting_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("voting_period")]),v._v(": 投票期时长(单位"),_("strong",[v._v("纳秒")]),v._v(")。")])])]),v._v(" "),_("li",[_("code",[v._v("tally_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("quorum")]),v._v(": 提议生效所需的投票数占总抵押数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("threshold")]),v._v(": 提议生效所需 "),_("code",[v._v("YES")]),v._v(" 票占总投票数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("veto")]),v._v(": 提议生效所需"),_("code",[v._v("NO_WITH_VETO")]),v._v(" 票占总投票数的最大百分比.")]),v._v(" "),_("li",[_("code",[v._v("governance_penalty")]),v._v(": 对未给特定提案进行投票的验证人的处罚。")])])])]),v._v(" "),_("h3",{attrs:{id:"惩罚-slashing"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#惩罚-slashing"}},[v._v("#")]),v._v(" 惩罚(Slashing )")]),v._v(" "),_("p",[v._v("The "),_("code",[v._v("slashing")]),v._v(" module handles the logic to slash delegators if their validator misbehave. The "),_("code",[v._v("slashing")]),v._v(" section in genesis looks as follows:")]),v._v(" "),_("p",[_("code",[v._v("slashing")]),v._v("模块处理对验证人行为不当的惩罚逻辑。 创世文件中的"),_("code",[v._v("slashing")]),v._v("部分如下:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_evidence_age")]),v._v(": 证据最长有效期,单位 "),_("strong",[v._v("纳秒")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("signed_blocks_window")]),v._v(": 用于检验验证人节点可用性的滑动窗口,(单位"),_("strong",[v._v("块")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("min_signed_per_window")]),v._v(": 在滑动窗口中预提交的数量少于此值,认为验证人节点可用性差。")]),v._v(" "),_("li",[_("code",[v._v("downtime_jail_duration")]),v._v(": 验证人节点因可用性差被关监狱后,在监狱中被关的时间("),_("strong",[v._v("纳秒")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_double_sign")]),v._v(": 验证人节点双签时,需缴纳罚金占总委托数量的百分比。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_downtime")]),v._v(": 验证人节点可用性差时,需缴纳罚金占总委托数量的百分比。")])])]),v._v(" "),_("li",[_("code",[v._v("signing_infos")]),v._v(":"),_("code",[v._v("slashing")]),v._v(" 模块所需的每个验证人节点的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("missed_blocks")]),v._v(": "),_("code",[v._v("slashing")]),v._v(" 模块所需的与丢块相关的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"创世交易-genesis-transactions"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世交易-genesis-transactions"}},[v._v("#")]),v._v(" 创世交易(Genesis Transactions)")]),v._v(" "),_("p",[v._v("默认情况下,genesis文件不包含任何"),_("code",[v._v("gentxs")]),v._v("。 "),_("code",[v._v("gentx")]),v._v("是一种交易,在创世文件中的将"),_("code",[v._v("accounts")]),v._v("下的 token 委托给验证人节点,本质上就是在创世时创建验证人。 在"),_("code",[v._v("genesis_time")]),v._v("之后,一旦有超过 2/3 的验证人(加权投票)作为有效"),_("code",[v._v("gentx")]),v._v("的接收者上线,该链就会启动。")]),v._v(" "),_("p",[v._v("可以手动将"),_("code",[v._v("gentx")]),v._v("添加到genesis文件,或通过以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),_("p",[v._v("此命令将存储在"),_("code",[v._v("~/.gaia/config/gentx")]),v._v("中的所有"),_("code",[v._v("gentxs")]),v._v("添加到genesis文件中。 要创建创世纪交易,请单击"),_("RouterLink",{attrs:{to:"/zh/resources/validators/validator-setup.html#participation-in-genesis-as-a-validator"}},[v._v("此处")]),v._v("。\n")],1)],1)}),[],!1,null,null,null);d.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{501:function(v,d,_){"use strict";_.r(d);var e=_(1),o=Object(e.a)({},(function(){var v=this,d=v.$createElement,_=v._self._c||d;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"创世-genesis-文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世-genesis-文件"}},[v._v("#")]),v._v(" 创世(Genesis)文件")]),v._v(" "),_("p",[v._v("本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的"),_("code",[v._v("gaia")]),v._v(" testnet 创建一个 genesis 文件。")]),v._v(" "),_("p",[v._v("请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),v._v(" "),_("p",[v._v("genesis 文件存储在 "),_("code",[v._v("~/.gaia/config/genesis.toml")]),v._v(".")]),v._v(" "),_("h2",{attrs:{id:"什么是创世文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#什么是创世文件"}},[v._v("#")]),v._v(" 什么是创世文件")]),v._v(" "),_("p",[v._v("genesis 文件是一个 JSON 文件,用于定义区块链的初始状态。 它可以看作是区块链的高度“0”。 高度为“1”的第一个块将引用 genesis 文件作为其父级。")]),v._v(" "),_("p",[v._v("genesis 文件中定义的状态包含所有必要的信息,如初始令牌分配、创建时间、默认参数等。 我们来分别描述这些信息。")]),v._v(" "),_("h2",{attrs:{id:"genesis-时间和链id"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#genesis-时间和链id"}},[v._v("#")]),v._v(" Genesis 时间和链ID")]),v._v(" "),_("p",[_("code",[v._v("genesis_time")]),v._v("定义在 genesis 文件的顶部。 它是一个“UTC”时间戳,指示区块链何时启动。 此时,创世记验证人应该上线并开始参与共识过程。 当超过2/3的生成验证人(通过投票权加权)在线时,区块链启动。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),_("p",[_("code",[v._v("chain_id")]),v._v("是您的链的唯一标识符。 它有助于区分使用相同版本的软件的不同链。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0xJnF1b3Q7LAo="}}),v._v(" "),_("h2",{attrs:{id:"共识参数"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#共识参数"}},[v._v("#")]),v._v(" 共识参数")]),v._v(" "),_("p",[v._v("接下来,创世文件定义共识参数。 共识参数覆盖与共识层相关的所有参数,"),_("code",[v._v("gaia")]),v._v(" 的共识层是 "),_("code",[v._v("CometBFT")]),v._v("。 我们来看看这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("block")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_bytes")]),v._v(": 每个块的最大字节数。")]),v._v(" "),_("li",[_("code",[v._v("max_gas")]),v._v(": 每个块的最大 gas 数量。 该区块中包含的每笔交易都会消耗一些 gas,包含在一个区块内的交易所使用的总 gas 不能超出。")])])]),v._v(" "),_("li",[_("code",[v._v("evidence")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_age")]),v._v(": 证据(evidence)是一种证明,表明验证者在同一高度(同一轮)签署了两个不同的区块。 这是一种明显的恶意行为,会在状态机层受到惩罚。 "),_("code",[v._v("max_age")]),v._v("定义"),_("strong",[v._v("块")]),v._v("的最大数量,在经过"),_("code",[v._v("max_age")]),v._v("块之后证据不再有效。")])])]),v._v(" "),_("li",[_("code",[v._v("validator")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pub_key_types")]),v._v(": 可被验证人接受的公钥类型 (例如"),_("code",[v._v("ed25519")]),v._v(", "),_("code",[v._v("secp256k1")]),v._v(", ...) ,目前仅支持"),_("code",[v._v("ed25519")]),v._v("。")])])])]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),_("h2",{attrs:{id:"应用程序状态"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#应用程序状态"}},[v._v("#")]),v._v(" 应用程序状态")]),v._v(" "),_("p",[v._v("应用程序状态定义了状态机的初始状态。")]),v._v(" "),_("h3",{attrs:{id:"创世账号"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世账号"}},[v._v("#")]),v._v(" 创世账号")]),v._v(" "),_("p",[v._v("在本节中,定义了初始分配的 Token。 可以通过直接编辑 genesis 文件手动添加帐户,但也可以使用以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),v._v(" "),_("p",[v._v("这个命令在 "),_("code",[v._v("app_state.accounts")]),v._v(" 下创建一个条目。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("sequence_number")]),v._v(": 此编号用于计算此帐户发送的交易数。 每次事务包含在块中时它都会递增,并用于防止重放攻击,初始值为“0”。")]),v._v(" "),_("li",[_("code",[v._v("account_number")]),v._v(": 帐户的唯一标识符,它在包含此帐户的首次被打包到块的交易中生成。")]),v._v(" "),_("li",[_("code",[v._v("original_vesting")]),v._v(": 锁仓(Vesting) 由"),_("code",[v._v("gaia")]),v._v("原生支持。 您可以定义帐户需要锁仓 token 数量,这些 token 在一定时间之后才能流通。 锁仓中的 token 可用于委托。 默认值为“null”。")]),v._v(" "),_("li",[_("code",[v._v("delegated_free")]),v._v(": 在 vest 过期后可转让的委托 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegated_vesting")]),v._v(": 锁仓中的 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("start_time")]),v._v(": vesting 期开始区块高度。创世文件中,大部分情况是"),_("code",[v._v("0")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("end_time")]),v._v(": vesting 期结束区块高度。如果没有 token 在 vesting 期,这个值是"),_("code",[v._v("0")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"银行-bank"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#银行-bank"}},[v._v("#")]),v._v(" 银行(Bank)")]),v._v(" "),_("p",[_("code",[v._v("bank")]),v._v("模块负责 token。在本节中唯一 需要定义的参数是“转账”是否在创世文件启用。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),_("h3",{attrs:{id:"权益-staking"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#权益-staking"}},[v._v("#")]),v._v(" 权益(Staking)")]),v._v(" "),_("p",[_("code",[v._v("staking")]),v._v("模块处理状态机中的大多数 POS 逻辑。 此部分应如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("not_bonded_tokens")]),v._v(": 在创世文件中没有绑定(即委托)的 token 数量。 通常情况下,它与权益 token (本例中是 "),_("code",[v._v("uatom")]),v._v(")的总供应量相等。")]),v._v(" "),_("li",[_("code",[v._v("bonded_tokens")]),v._v(": 在创世文件中绑定的 token 数量,通常是0。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("unbonding_time")]),v._v(": 以"),_("strong",[v._v("纳秒")]),v._v("为单位的解绑延迟时间。")]),v._v(" "),_("li",[_("code",[v._v("max_validators")]),v._v(": 最大验证人节点数量。")]),v._v(" "),_("li",[_("code",[v._v("max_entries")]),v._v(": 每对验证人和委托人之间可进行解委托、重新委托的最大条目数。")]),v._v(" "),_("li",[_("code",[v._v("bond_denom")]),v._v(": 权益代币符号。")])])]),v._v(" "),_("li",[_("code",[v._v("last_total_power")]),v._v(": 总投票权重。在创世文件通常是0(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("last_validator_powers")]),v._v(": 最后一个区块的状态中每个验证人的投票权重。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("validators")]),v._v(": 最后一个区块中的验证人列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("bonds")]),v._v(": 最后一个区块中的委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("unbonding_delegations")]),v._v(": 最后一个区块中的解绑委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("redelegations")]),v._v(": 最后一个区块中的重新委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("exported")]),v._v(": 创世文件是否是从之前的状态导出得到的。")])]),v._v(" "),_("h3",{attrs:{id:"挖矿-mint"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#挖矿-mint"}},[v._v("#")]),v._v(" 挖矿(Mint)")]),v._v(" "),_("p",[_("code",[v._v("mint")]),v._v("模块管理 token 供应的通胀逻辑。 创世文件中的"),_("code",[v._v("mint")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("minter")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("inflation")]),v._v(":总 token 供应量的年化通胀百分比,每周更新。值 “0.070000000000000000” 意味着目标是每年通货膨胀率为“7%”,每周重新计算一次。")]),v._v(" "),_("li",[_("code",[v._v("annual_provisions")]),v._v(": 每块重新计算。初始值是 "),_("code",[v._v("0.000000000000000000")]),v._v("。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("mint_denom")]),v._v(": 增发权益代币面值,此处是 "),_("code",[v._v("uatom")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("inflation_rate_change")]),v._v(": 通胀每年最大变化。")]),v._v(" "),_("li",[_("code",[v._v("inflation_max")]),v._v(": 最高通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("inflation_min")]),v._v(": 最低通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("goal_bonded")]),v._v(": 目标绑定量占总供应量百分比。如果委托 token 的百分比低于此目标,则通胀率会增加(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_max")]),v._v("。 如果委托 token 的百分比高于此目标,则通胀率会下降(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_min")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("blocks_per_year")]),v._v(": 每年出块量估算。用于计算出块收益中权益 token 的通胀部分(称之为块供给)。")])])])]),v._v(" "),_("h3",{attrs:{id:"分配-distribution"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#分配-distribution"}},[v._v("#")]),v._v(" 分配(Distribution)")]),v._v(" "),_("p",[_("code",[v._v("distribution")]),v._v("模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的"),_("code",[v._v("distribution")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("fee_pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("community_pool")]),v._v(": 用于支付奖励的 token 放在公共池中,它通过治理提案分配。在创世文件中通常是 null。")])])]),v._v(" "),_("li",[_("code",[v._v("community_tax")]),v._v(": 税率,即交易费和出块收益中需要放入公共池部分的百分比。")]),v._v(" "),_("li",[_("code",[v._v("base_proposer_reward")]),v._v(": 区块提议者在有效区块中收取的交易费用奖励的基础部分。 如果值为"),_("code",[v._v("0.010000000000000000")]),v._v(",则1%的费用将转给提议者。")]),v._v(" "),_("li",[_("code",[v._v("bonus_proposer_reward")]),v._v(": 如果区块提议者收集了 2/3 (该块有效的最小值)加权投票的预提交,则获得 "),_("code",[v._v("base_proposer_reward")]),v._v(" 奖励。 如果区块提议者收集了100%加权投票的预提交,则奖励会再线性增加"),_("code",[v._v("bonus_proposer_reward")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("withdraw_addr_enabled")]),v._v(": 如果是"),_("code",[v._v("true")]),v._v(",委托人可以设置不同的地址来取回他们的奖励。 如果要在创世时禁用转账,则要设置为"),_("code",[v._v("false")]),v._v(",因为它可以绕过转账限制。")]),v._v(" "),_("li",[_("code",[v._v("delegator_withdraw_infos")]),v._v(": 委托人收益地址列表。 如果没有从之前的状态导出,一般是"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("previous_proposer")]),v._v(': 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。')]),v._v(" "),_("li",[_("code",[v._v("outstanding_rewards")]),v._v(": 未付(未提取)奖励。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_accumulated_commission")]),v._v(": 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_historical_rewards")]),v._v(": 验证人的历史奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validators_current_rewards")]),v._v(": 验证人的当前奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegator_starting_infos")]),v._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_slash_events")]),v._v(": Set of information related to the past slashing of validators. Set to "),_("code",[v._v("null")]),v._v(" if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"治理-governance"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#治理-governance"}},[v._v("#")]),v._v(" 治理(Governance)")]),v._v(" "),_("p",[_("code",[v._v("gov")]),v._v("模块处理所有与治理相关的事务。 "),_("code",[v._v("gov")]),v._v("部分的初始状态如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("starting_proposal_id")]),v._v(": 此参数定义第一个提案的ID,每个提案都由唯一ID标识。")]),v._v(" "),_("li",[_("code",[v._v("deposits")]),v._v(": 每个提案 ID 的保证金列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("votes")]),v._v(": 每个提案 ID 的投票列表。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("proposals")]),v._v(": 所有提案列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("deposit_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("min_deposit")]),v._v(": 使提案进入投票期的最小抵押数量,如果提供了多种面值,满足其一即可。")]),v._v(" "),_("li",[_("code",[v._v("max_deposit_period")]),v._v(": 最长抵押等待时间(单位"),_("strong",[v._v("纳秒")]),v._v("),之后就不能再进行抵押了。")])])]),v._v(" "),_("li",[_("code",[v._v("voting_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("voting_period")]),v._v(": 投票期时长(单位"),_("strong",[v._v("纳秒")]),v._v(")。")])])]),v._v(" "),_("li",[_("code",[v._v("tally_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("quorum")]),v._v(": 提议生效所需的投票数占总抵押数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("threshold")]),v._v(": 提议生效所需 "),_("code",[v._v("YES")]),v._v(" 票占总投票数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("veto")]),v._v(": 提议生效所需"),_("code",[v._v("NO_WITH_VETO")]),v._v(" 票占总投票数的最大百分比.")]),v._v(" "),_("li",[_("code",[v._v("governance_penalty")]),v._v(": 对未给特定提案进行投票的验证人的处罚。")])])])]),v._v(" "),_("h3",{attrs:{id:"惩罚-slashing"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#惩罚-slashing"}},[v._v("#")]),v._v(" 惩罚(Slashing )")]),v._v(" "),_("p",[v._v("The "),_("code",[v._v("slashing")]),v._v(" module handles the logic to slash delegators if their validator misbehave. The "),_("code",[v._v("slashing")]),v._v(" section in genesis looks as follows:")]),v._v(" "),_("p",[_("code",[v._v("slashing")]),v._v("模块处理对验证人行为不当的惩罚逻辑。 创世文件中的"),_("code",[v._v("slashing")]),v._v("部分如下:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_evidence_age")]),v._v(": 证据最长有效期,单位 "),_("strong",[v._v("纳秒")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("signed_blocks_window")]),v._v(": 用于检验验证人节点可用性的滑动窗口,(单位"),_("strong",[v._v("块")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("min_signed_per_window")]),v._v(": 在滑动窗口中预提交的数量少于此值,认为验证人节点可用性差。")]),v._v(" "),_("li",[_("code",[v._v("downtime_jail_duration")]),v._v(": 验证人节点因可用性差被关监狱后,在监狱中被关的时间("),_("strong",[v._v("纳秒")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_double_sign")]),v._v(": 验证人节点双签时,需缴纳罚金占总委托数量的百分比。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_downtime")]),v._v(": 验证人节点可用性差时,需缴纳罚金占总委托数量的百分比。")])])]),v._v(" "),_("li",[_("code",[v._v("signing_infos")]),v._v(":"),_("code",[v._v("slashing")]),v._v(" 模块所需的每个验证人节点的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("missed_blocks")]),v._v(": "),_("code",[v._v("slashing")]),v._v(" 模块所需的与丢块相关的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"创世交易-genesis-transactions"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世交易-genesis-transactions"}},[v._v("#")]),v._v(" 创世交易(Genesis Transactions)")]),v._v(" "),_("p",[v._v("默认情况下,genesis文件不包含任何"),_("code",[v._v("gentxs")]),v._v("。 "),_("code",[v._v("gentx")]),v._v("是一种交易,在创世文件中的将"),_("code",[v._v("accounts")]),v._v("下的 token 委托给验证人节点,本质上就是在创世时创建验证人。 在"),_("code",[v._v("genesis_time")]),v._v("之后,一旦有超过 2/3 的验证人(加权投票)作为有效"),_("code",[v._v("gentx")]),v._v("的接收者上线,该链就会启动。")]),v._v(" "),_("p",[v._v("可以手动将"),_("code",[v._v("gentx")]),v._v("添加到genesis文件,或通过以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),_("p",[v._v("此命令将存储在"),_("code",[v._v("~/.gaia/config/gentx")]),v._v("中的所有"),_("code",[v._v("gentxs")]),v._v("添加到genesis文件中。 要创建创世纪交易,请单击"),_("RouterLink",{attrs:{to:"/zh/resources/validators/validator-setup.html#participation-in-genesis-as-a-validator"}},[v._v("此处")]),v._v("。\n")],1)],1)}),[],!1,null,null,null);d.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/188.d77b1399.js b/main/assets/js/189.2b6a907b.js similarity index 99% rename from main/assets/js/188.d77b1399.js rename to main/assets/js/189.2b6a907b.js index 8926aad2d10..4db621a08a9 100644 --- a/main/assets/js/188.d77b1399.js +++ b/main/assets/js/189.2b6a907b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{633:function(g,I,C){"use strict";C.r(I);var A=C(1),t=Object(A.a)({},(function(){var g=this,I=g.$createElement,C=g._self._c||I;return C("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[C("h1",{attrs:{id:"ledger-nano支持"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano支持"}},[g._v("#")]),g._v(" Ledger Nano支持")]),g._v(" "),C("h2",{attrs:{id:"关于hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#关于hd钱包"}},[g._v("#")]),g._v(" 关于HD钱包")]),g._v(" "),C("p",[g._v("HD钱包(分层确定性钱包), 最初是在比特币的"),C("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),C("OutboundLink")],1),g._v("提案中提出,\n是一种特殊的钱包类型,可以让用户从单个种子派生任意数量的账户。为了更好的理解, 让我们定义以下术语:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("钱包")]),g._v(": 从一个给定的seed中获得的一组账户。")]),g._v(" "),C("li",[C("strong",[g._v("账户")]),g._v(": 一组公钥/私钥对。")]),g._v(" "),C("li",[C("strong",[g._v("私钥")]),g._v(": 私钥是用于签署消息的私密信息。在区块链领域, 一个私钥就是一个账户的所有者。永远不要想他人透露用户的私钥。")]),g._v(" "),C("li",[C("strong",[g._v("公钥")]),g._v(": 公钥是通过对私钥上使用不可逆的加密函数而获得的一条信息。从公钥中可以导出地址。但无法从公钥中逆向获得私钥。")]),g._v(" "),C("li",[C("strong",[g._v("地址")]),g._v(": 地址是一个公开的用于标识账户的,带着可读前缀的字符串。通过对公钥使用加密函数获得。")]),g._v(" "),C("li",[C("strong",[g._v("数字签名")]),g._v(": 数字签名是一段加密信息,证明了指定私钥的所有者在不泄露其私钥的情况下,批准了指定消息。")]),g._v(" "),C("li",[C("strong",[g._v("种子")]),g._v(": 同助记词。")]),g._v(" "),C("li",[C("strong",[g._v("助记词")]),g._v(": 助记符是一串单词,用作种子来派生私钥。助记符是每个钱包的核心。永远不要丢失你的助记词。把它写在一张纸上,然后把它存放在安全的地方。如果你失去了它,那就没有办法去重新获取它了。如果某人获得了助记词访问权限,他们将获得所有相关帐户的访问权限。")])]),g._v(" "),C("p",[g._v("HD钱包的核心是种子。用这个种子用户可以确定地生成子帐户。要从种子生成子帐户,使用了单向的数学转换。要决定生成哪个帐户,用户指定"),C("code",[g._v("path")]),g._v(",通常是"),C("code",[g._v("integer")]),g._v("("),C("code",[g._v("0")]),g._v(","),C("code",[g._v("1")]),g._v(","),C("code",[g._v("2")]),g._v(",...)。")]),g._v(" "),C("p",[g._v("例如,通过将"),C("code",[g._v("path")]),g._v("指定为"),C("code",[g._v("0")]),g._v(",钱包将从种子生成"),C("code",[g._v("0号私钥")]),g._v("。然后,可以从"),C("code",[g._v("0号私钥")]),g._v("生成“"),C("code",[g._v("号公钥")]),g._v("。最后,可以从"),C("code",[g._v("0号公钥")]),g._v("生成"),C("code",[g._v("0号地址")]),g._v("。所有这些步骤都是单向的,这意味着"),C("code",[g._v("公钥")]),g._v("无法从"),C("code",[g._v("地址")]),g._v("中获得,"),C("code",[g._v("私钥")]),g._v("无法从"),C("code",[g._v("公钥")]),g._v("中获得,......")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),C("p",[g._v("从种子中推导出帐户的过程是确定性的。这意味着给定相同的路径,派生出私钥将始终相同。")]),g._v(" "),C("p",[g._v("存储在帐户中的资金由私钥控制。此私钥对助记词使用单向函数生成的。如果丢失了私钥,则可以使用助记词恢复它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了你的助记词访问权限,他们就可以访问所有相关帐户。")]),g._v(" "),C("h2",{attrs:{id:"ledger支持hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger支持hd钱包"}},[g._v("#")]),g._v(" Ledger支持HD钱包")]),g._v(" "),C("p",[g._v("在Ledger钱包的内核,有一个用于生成私钥的助记词。初始化Ledger时,会生成助记词。")]),g._v(" "),C("p",[g._v("::: 危险\n"),C("strong",[g._v("不要遗失或与任何人分享你的12/24个单词。为防止盗窃或资金损失,最好确保备份多个助记词拷贝,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记词,他们将能够访问你的私钥并控制与其关联的帐户")]),g._v("\n:::")]),g._v(" "),C("p",[g._v("助记词与Cosmos帐户体系兼容。用于在Cosmos Hub网络上生成地址和交易的工具称为"),C("code",[g._v("gaiad")]),g._v(",它支持从Ledger种子派生帐户私钥。请注意,Ledger钱包充当种子和私钥的沙盒,并且对交易进行签名的过程完全在内部进行。没有任何私人信息会离开Ledger钱包。")]),g._v(" "),C("p",[g._v("要将"),C("code",[g._v("gaiad")]),g._v("与Ledger钱包一起使用,你需要具备以下条件:")]),g._v(" "),C("ul",[C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#using-a-ledger-device"}},[g._v("在Ledger Nano中安装"),C("code",[g._v("COSMOS")]),g._v("应用并生成账户")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#accessing-the-cosmos-hub-network"}},[g._v("有一个你打算连接的可访问的并处于运行状态的"),C("code",[g._v("gaiad")]),g._v("实例")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#setting-up-gaiad"}},[g._v("一个同你所选的"),C("code",[g._v("gaiad")]),g._v("实例相连接的"),C("code",[g._v("gaiad")]),g._v("实例")])],1)]),g._v(" "),C("p",[g._v("现在,你都准备好去"),C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#sending-transactions"}},[g._v("发送交易到网络")]),g._v(".")],1)],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[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 diff --git a/main/assets/js/189.3baaa217.js b/main/assets/js/190.b2731a9d.js similarity index 98% rename from main/assets/js/189.3baaa217.js rename to main/assets/js/190.b2731a9d.js index 2f8b63a9836..1b7af3fcb1b 100644 --- a/main/assets/js/189.3baaa217.js +++ b/main/assets/js/190.b2731a9d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{630:function(t,r,a){"use strict";a.r(r);var o=a(1),s=Object(o.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"验证人概览"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证人概览"}},[t._v("#")]),t._v(" 验证人概览")]),t._v(" "),a("h2",{attrs:{id:"介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),a("p",[t._v("Cosmos Hub基于CometBFT,它依赖于一组负责在区块链中提交新区块的验证人。这些验证人通过广播投票来参与共识协议,投票包含由每个验证人的私钥签名的加密签名。")]),t._v(" "),a("p",[t._v("验证人候选者可以绑定他们自己的Atoms=,还能让token持有者将Atoms=“委托”或“抵押”给他们。Cosmos Hub将有100个验证人,但随着时间的推移,将根据预定义的时间表增加到300个验证人。验证人根据谁拥有最多的投票权来确定——拥有最多股权的前100名验证人候选者将成为Cosmos的验证人。")]),t._v(" "),a("p",[t._v("验证人及其委托人能通过执行CometBFT共识协议赚取Atom作为区块增发奖励和作为交易手续费的其他token。最初,交易费用将以Atom支付,但在将来,Cosmos生态中的任何token如果通过治理加入到白名单中,就能作为有效的交易手续费。请注意,验证人可以设置从他们的委托人身上收取的佣金作为额外奖励。")]),t._v(" "),a("p",[t._v("如果验证人双签,频繁下线或不参与治理,则可以削减其抵押的Atom(包括那些用户委托给他们的Atom)。处罚取决于违规的严重程度。")]),t._v(" "),a("h2",{attrs:{id:"硬件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#硬件"}},[t._v("#")]),t._v(" 硬件")]),t._v(" "),a("p",[t._v("目前还没有合适的针对验证人密钥管理的云解决方案。这可能会等到2018年云解决方案SGX变得更加普及时才会有所改善。由于这个原因,验证人必须设置一个受限访问的物理操作。例如,安置在安全的数据中心。")]),t._v(" "),a("p",[t._v("验证人期望为他们的数据中心装备充足的电力,带宽及存储备份。期望有数个充足的对应光纤,防火墙还有路由的需求的网络设备,一台有着足够硬盘和容错能力的小型服务器。硬件可以先从低端的数据中心配置开始。")]),t._v(" "),a("p",[t._v("我们预计最初的网络需求是比较低的。当前的测试网络只需要极小的资源。之后,带宽,CPU和内存的需求将会随着网络的发展而增长。要存储数年区块链的历史信息的话,推荐配置足够大的的硬盘。")]),t._v(" "),a("h2",{attrs:{id:"创建一个网站"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建一个网站"}},[t._v("#")]),t._v(" 创建一个网站")]),t._v(" "),a("p",[t._v("建立一个专门的用以显示验证人信息网站,并在我们的"),a("a",{attrs:{href:"https://forum.cosmos.network/t/validator-candidates/127/3",target:"_blank",rel:"noopener noreferrer"}},[t._v("论坛"),a("OutboundLink")],1),t._v("上表明您想成为验证人的意图。这非常重要,因为委托人希望获得关于他们予以Atom委托的验证人的信息。")]),t._v(" "),a("h2",{attrs:{id:"寻求法律建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#寻求法律建议"}},[t._v("#")]),t._v(" 寻求法律建议")]),t._v(" "),a("p",[t._v("如果您打算成为一个验证人,请寻求法律建议")]),t._v(" "),a("h2",{attrs:{id:"社区"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社区"}},[t._v("#")]),t._v(" 社区")]),t._v(" "),a("p",[t._v("在我们的社区聊天频道和论坛上讨论有关成为验证人的更多细节:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Chat"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://forum.cosmos.network/c/validating",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Forum"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[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/190.9d19fc9e.js b/main/assets/js/191.5c7e320c.js similarity index 98% rename from main/assets/js/190.9d19fc9e.js rename to main/assets/js/191.5c7e320c.js index f399fada10d..5f6e9486998 100644 --- a/main/assets/js/190.9d19fc9e.js +++ b/main/assets/js/191.5c7e320c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{627:function(v,a,t){"use strict";t.r(a);var _=t(1),l=Object(_.a)({},(function(){var v=this,a=v.$createElement,t=v._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"验证人安全"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人安全"}},[v._v("#")]),v._v(" 验证人安全")]),v._v(" "),t("p",[v._v("我们鼓励每一个验证人候选者独立运行其操作,因为不同的设置增加了网络的抵抗能力。为了能按时启动主网,验证人候选者现在就应该开始设置了。")]),v._v(" "),t("h2",{attrs:{id:"密钥管理-hsm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#密钥管理-hsm"}},[v._v("#")]),v._v(" 密钥管理 - HSM")]),v._v(" "),t("p",[v._v("让攻击者无法盗取验证人的密钥是至关重要的任务。如果可能发生盗取,这将会使委托给抵抗力脆弱的验证人的所有股权都处于风险之中。硬件安全模块是防范该风险的一个重要策略。")]),v._v(" "),t("p",[v._v("为了支持Cosmos Hub,HSM模块必须要支持"),t("code",[v._v("ed25519")]),v._v("签名。YubiHSM2支持了"),t("code",[v._v("ed25519")]),v._v(",我们期望在2017年12月时,能有一个可以使用的库。YubiHSM可以保护私钥但是不能确保它不会去重复签署一个区块。")]),v._v(" "),t("p",[v._v("CometBFT团队也在为拓展Ledger Nano S应用以支持验证人签名做贡献。这个应用将会储存最近的区块,并能降低双重签名攻击的风险。")]),v._v(" "),t("p",[v._v("我们会在有更多关于密钥保存安全的可行的解决方案出现时更新这个文档。")]),v._v(" "),t("h2",{attrs:{id:"哨兵节点-ddos防御"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#哨兵节点-ddos防御"}},[v._v("#")]),v._v(" 哨兵节点(DDOS防御)")]),v._v(" "),t("p",[v._v("验证人有责任确保网络能够经受住DDOS攻击。")]),v._v(" "),t("p",[v._v("降低这种风险的一个推荐方案是验证人要在成为哨兵节点的网络拓扑结构上去精心搭建他们的网络结构。")]),v._v(" "),t("p",[v._v("因为验证人节点可以操作自身,也可以被其熟知的其它验证人运行,验证人节点应该只连接到其所信任的全节点上。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以去连接云服务中上的哨兵节点。验证人节点直接连接到其哨兵节点,减缓了DDOS攻击带来的压力,还可以添加多个新的哨兵节点用以轮换来减轻已存在哨兵节点所遭受到的攻击。")]),v._v(" "),t("p",[v._v("哨兵节点能够迅速轮换或者改变它们的IP地址。因为与哨兵节点的连接是在私有的IP网段,基于因特网的攻击不可能直接骚扰到验证人节点。这将确保验证人区块的提交和投票总是能广播至网络中的其余节点。")]),v._v(" "),t("p",[v._v("你可以按照下面的指令去设置你的哨兵节点架构:")]),v._v(" "),t("p",[v._v("验证人节点必须编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),v._v(" "),t("p",[v._v("哨兵节点应该编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7aXBhZGRyZXNzIG9mIHZhbGlkYXRvciBub2RlcyZxdW90Owo="}}),v._v(" "),t("h2",{attrs:{id:"环境变量"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#环境变量"}},[v._v("#")]),v._v(" 环境变量")]),v._v(" "),t("p",[v._v("默认情况下,具有以下前缀的大写环境变量将替换小写命令行标志:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("GA")]),v._v("(对应Gaia的标识)")]),v._v(" "),t("li",[t("code",[v._v("TM")]),v._v("(对应Tendermint, 现在 CometBFT的标识)")]),v._v(" "),t("li",[t("code",[v._v("BC")]),v._v("(对应democli或basecli的标识)")])]),v._v(" "),t("p",[v._v("例如,环境变量"),t("code",[v._v("GA_CHAIN_ID")]),v._v("将映射到命令行标识"),t("code",[v._v("--chain-id")]),v._v("。注意,虽然显式命令行标识优先于环境变量,但环境变量优先于任何配置文件。因此,必须锁定环境,以便在CLI上将任何关键参数定义为标识或防止修改任何环境变量。\n")])],1)}),[],!1,null,null,null);a.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{542: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/191.56392928.js b/main/assets/js/192.08a3247e.js similarity index 99% rename from main/assets/js/191.56392928.js rename to main/assets/js/192.08a3247e.js index f210152073a..f0acede7b0b 100644 --- a/main/assets/js/191.56392928.js +++ b/main/assets/js/192.08a3247e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{492:function(v,_,t){"use strict";t.r(_);var a=t(1),s=Object(a.a)({},(function(){var v=this,_=v.$createElement,t=v._self._c||_;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("::: 声明\n这项工作正在进行中。机制和具体值都容易发生变化。\n:::")]),v._v(" "),t("h2",{attrs:{id:"基本概念"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#基本概念"}},[v._v("#")]),v._v(" 基本概念")]),v._v(" "),t("h3",{attrs:{id:"什么是验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[v._v("#")]),v._v(" 什么是验证人?")]),v._v(" "),t("p",[t("RouterLink",{attrs:{to:"/zh/what-is-gaia.html"}},[v._v("Cosmos Hub")]),v._v("基于"),t("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[v._v("CometBFT"),t("OutboundLink")],1),v._v(",它依靠一组验证人来保障网络的安全。验证人的作用是通过广播包含由验证人的私钥签名的加密签名的投票来运行全节点并参与共识。验证人在区块链中提交新的区块并获得收益作为报酬。他们还必须通过对提案进行投票来参与治理。验证人根据他们的总抵押股权来排位。")],1),v._v(" "),t("h3",{attrs:{id:"什么是-抵押"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是-抵押"}},[v._v("#")]),v._v(" 什么是'抵押'?")]),v._v(" "),t("p",[v._v("Cosmos Hub是一个权益证明(PoS)区块链,意味着验证人的权重由其抵押的,用作担保金的代币(Atom)的数量决定。这些Atom可以直接由验证人抵押,或者由Atom持有者委托给验证人。")]),v._v(" "),t("p",[v._v("系统中的任何用户都可以通过发送"),t("code",[v._v("create-validator")]),v._v("交易来表明其想成为验证人的意图。从那里,他们成为验证者。从这开始,才能成为验证人。")]),v._v(" "),t("p",[v._v("验证人的权重(即总抵押)决定其是否能成为有效验证人,还有该节点提议区块的频率以及它将获得多少收益。一开始,只有权重最多的125个验证人才是有效验证人。如果验证者双重签名,经常脱机或不参与治理,如果验证人双签,频繁掉线或者不参加治理,他们抵押的Atom(包括那些委托给他们的Atom)会被销毁,也就是‘削减处罚’。")]),v._v(" "),t("h3",{attrs:{id:"什么是全节点"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是全节点"}},[v._v("#")]),v._v(" 什么是全节点?")]),v._v(" "),t("p",[v._v("全节点是一个全程验证区块链的交易和区块的程序。区别于只处理区块头信息和小部分交易的轻节点。运行一个全节点比轻节点需要更多的资源,这也是成为验证人必须要具备的。实际上,运行全节点意味着运行网络延迟较低且不掉线的软件的最新版本。")]),v._v(" "),t("p",[v._v("当然,我们鼓励任何用户都去运行一个全节点,即使他们并不打算成为验证人。")]),v._v(" "),t("h3",{attrs:{id:"什么是委托人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是委托人"}},[v._v("#")]),v._v(" 什么是委托人?")]),v._v(" "),t("p",[v._v("委托人是那些没有能力或者不想执行验证人操作的Atom持有者。通过"),t("a",{attrs:{href:"https://cosmos.network/docs/getting-started/voyager.html",target:"_blank",rel:"noopener noreferrer"}},[v._v("Cosmos Voyager"),t("OutboundLink")],1),v._v(",一个用户可以把Atom委托给一个验证人,并获取一部分交易收益(关于收益是如何分配的,查看下面的"),t("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BC%E6%9C%89%E4%BB%80%E4%B9%88%E6%BF%80%E5%8A%B1?"}},[t("strong",[v._v("抵押有什么激励?")])]),v._v("和"),t("a",{attrs:{href:"#%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E9%AA%8C%E8%AF%81%E4%BA%BA%E6%9C%89%E4%BB%80%E4%B9%88%E6%BF%80%E5%8A%B1?"}},[t("strong",[v._v("运行一个验证人有什么激励?")])]),v._v(")")]),v._v(" "),t("p",[v._v("委托人与他们的验证人分享收益,所以委托人也要共担责任。如果一个验证人行为不端,每一个相关的委托人也会按比例遭受股权的部分削减处罚。这就是为什么委托人在委托之前应该履行调查职责,还要尽量把股权分散给多个验证人。")]),v._v(" "),t("p",[v._v("委托人在系统里扮演了一个关键角色,因为他们负责选举验证人。委托人也并不是一个消极的角色:委托人应该积极监控验证人的行为,并参与到治理当中。")]),v._v(" "),t("h2",{attrs:{id:"成为一个验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#成为一个验证人"}},[v._v("#")]),v._v(" 成为一个验证人")]),v._v(" "),t("h3",{attrs:{id:"如何成为一个验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何成为一个验证人"}},[v._v("#")]),v._v(" 如何成为一个验证人?")]),v._v(" "),t("p",[v._v("网络中的任何参与者都可以通过发送一笔"),t("code",[v._v("create-validator")]),v._v("交易来表明他们想成为一个验证人,必须要填写下列参数:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("验证人的公钥:"),t("strong",[v._v("用于签名")]),v._v("投票")]),v._v("和"),t("strong",[v._v("提交")]),v._v("的私钥对应的公钥。通过这种方式,验证人可以用不同的账户分别去做验证和持有流动资金。")]),v._v(" "),t("li",[v._v("**验证人的地址:**应用程序级别的地址。这是用于外界识别验证人的地址。与此地址关联的私钥用于绑定,取消绑定,声明奖励和参与治理(仅限MVP)。")]),v._v(" "),t("li",[t("strong",[v._v("验证人的名称(moniker)")])]),v._v(" "),t("li",[t("strong",[v._v("验证人的网站(可选的)")])]),v._v(" "),t("li",[t("strong",[v._v("验证人的描述信息(可选的)")])]),v._v(" "),t("li",[v._v("**初始佣金比例:**区块增发奖励,区块奖励,交易手续费中抽成给验证人的初始比例")]),v._v(" "),t("li",[v._v("**最大佣金:**该验证人保证的最大佣金率")]),v._v(" "),t("li",[v._v("**佣金变化率:**验证人候选者的最大每日佣金增长率")]),v._v(" "),t("li",[v._v("**最小自抵押数量:**验证人在任何时候所要的抵押的最小Atom数量。如果验证人的自抵押股权数量跌破了这个限制,其整个抵押池都会被释放。")]),v._v(" "),t("li",[v._v("**初始自抵押数量:**验证人最初的自抵押的Atom数量")])]),v._v(" "),t("p",[v._v("一旦创建了验证人,Atom持有者可以向其委托Atom,有效地向股权池里增加股权。一个地址的总股权是验证人自抵押的Atom和委托人委托的Atom的总和。")]),v._v(" "),t("p",[v._v("在所有表明的验证人中,股权最多的100名被任命为有效验证人。如果某个验证人的股权总量跌出了前100名就会失去验证人权利。随着时间的推移,验证人的最大数量会依照计划逐渐增加:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("Year 0:")]),v._v(" 100")]),v._v(" "),t("li",[t("strong",[v._v("Year 1:")]),v._v(" 113")]),v._v(" "),t("li",[t("strong",[v._v("Year 2:")]),v._v(" 127")]),v._v(" "),t("li",[t("strong",[v._v("Year 3:")]),v._v(" 144")]),v._v(" "),t("li",[t("strong",[v._v("Year 4:")]),v._v(" 163")]),v._v(" "),t("li",[t("strong",[v._v("Year 5:")]),v._v(" 184")]),v._v(" "),t("li",[t("strong",[v._v("Year 6:")]),v._v(" 208")]),v._v(" "),t("li",[t("strong",[v._v("Year 7:")]),v._v(" 235")]),v._v(" "),t("li",[t("strong",[v._v("Year 8:")]),v._v(" 265")]),v._v(" "),t("li",[t("strong",[v._v("Year 9:")]),v._v(" 300")]),v._v(" "),t("li",[t("strong",[v._v("Year 10:")]),v._v(" 300")])]),v._v(" "),t("h2",{attrs:{id:"测试网"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试网"}},[v._v("#")]),v._v(" 测试网")]),v._v(" "),t("h3",{attrs:{id:"我要怎样加入到测试网"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#我要怎样加入到测试网"}},[v._v("#")]),v._v(" 我要怎样加入到测试网?")]),v._v(" "),t("p",[v._v("测试网络是一个在主网上线之前很好的测试验证人设置的环境。")]),v._v(" "),t("p",[v._v("我们将参与测试网络视为一个向社区展示你是有准备且有能力去运行验证人节点的方式。你可以在"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("和"),t("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("找到有关测试网的更多内容。")]),v._v(" "),t("h3",{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("strong",[v._v("CometBFT/Tendermint Key")]),v._v(" :这是用于对区块哈希进行签名的唯一密钥。它与一个公钥"),t("code",[v._v("cosmosvalconspub")]),v._v("相关联。\n"),t("ul",[t("li",[v._v("使用"),t("code",[v._v("gaiad init")]),v._v("创建节点时生成。")]),v._v(" "),t("li",[v._v("使用"),t("code",[v._v("gaiad tendermint show-validator")]),v._v("查看,如"),t("code",[v._v("cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c")]),v._v("。")])])]),v._v(" "),t("li",[t("strong",[v._v("Application keys")]),v._v(" :这些密钥是由应用程序创建的,用于签名交易。作为验证人,你可能会使用一个密钥来签名与抵押相关的交易,另一个密钥用于签署与治理相关的交易。应用程序私钥和公钥"),t("code",[v._v("cosmospub")]),v._v("及地址"),t("code",[v._v("cosmos")]),v._v("相关联。两者都来自"),t("code",[v._v("gaiad keys add")]),v._v("生成的帐户私钥。\n"),t("ul",[t("li",[v._v("注意:验证人的操作员的私钥直接绑定到应用程序私钥,但为此目的保留前缀:"),t("code",[v._v("cosmosvaloper")]),v._v("和"),t("code",[v._v("cosmosvaloperpub")])])])])]),v._v(" "),t("h3",{attrs:{id:"验证人可以具有哪些不同的状态"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人可以具有哪些不同的状态"}},[v._v("#")]),v._v(" 验证人可以具有哪些不同的状态")]),v._v(" "),t("p",[v._v("使用"),t("code",[v._v("create-validator")]),v._v("交易创建验证人后,它可以处于三种状态:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("bonded")]),v._v(" : 验证人在活跃集合中并参与共识。验证人正在获得奖励,并且可能因为不当行为而遭到削减处罚。")]),v._v(" "),t("li",[t("code",[v._v("unbonding")]),v._v(" : 验证人不在活跃集合中,也不参与共识。验证人没有获得奖励,但仍然可能因为不当行为而遭到削减处罚。这是从"),t("code",[v._v("bonded")]),v._v("到"),t("code",[v._v("unbonding")]),v._v("的过渡状态。如果验证人在"),t("code",[v._v("unbonding")]),v._v("模式下未发送"),t("code",[v._v("rebond")]),v._v("交易,则状态转换将需要三周时间才能完成。")]),v._v(" "),t("li",[t("code",[v._v("unbonded")]),v._v(" : 验证人不在活跃集合中,因此不签署区块。验证人不能遭到削减处罚,也不会获得任何奖励。仍然可以将Atom委托给此验证人。从"),t("code",[v._v("unbonded")]),v._v("状态的验证人取消委托是立即的。")])]),v._v(" "),t("p",[v._v("委托人与其验证人具有相同的状态。")]),v._v(" "),t("p",[v._v("请注意,委托不一定是绑定的。Atom可以是delegated和bonded状态,delegated和unbonding状态,delegated和unbonded状态,或流通状态。")]),v._v(" "),t("h3",{attrs:{id:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是self-bond-怎样增加我的self-bond-有水龙头吗"}},[v._v("#")]),v._v(" 什么是"),t("code",[v._v("self-bond")]),v._v("?怎样增加我的"),t("code",[v._v("self-bond")]),v._v("?有水龙头吗?")]),v._v(" "),t("p",[v._v("如果你想获得测试网的测试币,你可以使用这个"),t("a",{attrs:{href:"https://faucet.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[v._v("水龙头"),t("OutboundLink")],1),v._v("。")]),v._v(" "),t("h3",{attrs:{id:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"}},[v._v("#")]),v._v(" 成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?")]),v._v(" "),t("p",[v._v("没有最小限制。总股权(总股权=自抵押股权+委托股权)最高的前100名是活跃验证人。")]),v._v(" "),t("h4",{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("strong",[v._v("自抵押的Atom数量")]),v._v(":一个验证人在股权池里自抵押的Atom数量。有着更多自抵押Atom的验证人承担了更大的风险,将促使其对自己的行为更加负责。")]),v._v(" "),t("li",[t("strong",[v._v("委托的Atom总量")]),v._v(": 委托给某个验证人的Atom总量。大量的股权显示社区对该验证人的信任,但这也意味着该验证人更容易成为黑客们的目标。实际上,黑客更倾向攻击更大的验证人,这样他们可能会从不能抵御攻击的验证人那里获得更多。随着委托的Atom的增长,验证人也被期待不要太过引人注目。")]),v._v(" "),t("li",[t("strong",[v._v("佣金比率")]),v._v(": 在把奖励分散给委托人之前抽成一部分佣金来奖励验证人。")]),v._v(" "),t("li",[t("strong",[v._v("跟踪记录")]),v._v(":委托人很可能去查看他们计划去委托的验证人的行为记录。包括资历,过去对提议的投票,历史的平均运行时长和验证人节点掉线的频率。")])]),v._v(" "),t("p",[v._v("除去这些会展示在Cosmos Voyager上的评判标准,验证人还可能向公众展示一个网站来完善他们的简历。验证人需要通过多种方式去树立良好的声誉来吸引委托人。比如,验证人让第三方来审计他们的设置就是一个很好的实践。注意,CometBFT团队将不会批准和引导任何对自身的审计。有关尽职调查的更多信息,请参阅此"),t("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[v._v("博客"),t("OutboundLink")],1)]),v._v(" "),t("h2",{attrs:{id:"责任"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#责任"}},[v._v("#")]),v._v(" 责任")]),v._v(" "),t("h3",{attrs:{id:"验证人需要公开表明身份吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人需要公开表明身份吗"}},[v._v("#")]),v._v(" 验证人需要公开表明身份吗?")]),v._v(" "),t("p",[v._v("不需要。每个委托人会用他们自己的评判标准去衡量验证人的价值。验证人可以(也被推荐)在他们提名自己时注册一个网站,以便他们可以按照自己的意愿宣传自己的行动。一些委托人可能更喜欢通过一个清楚展示团队是如何去运行验证人节点以及团队成员的简历的网站来帮助选择,尽管其他一些委托人更偏好那些隐藏了行为记录的匿名验证人。最有可能的是身份明确的验证人和匿名的验证人都会存在于验证人集合中。")]),v._v(" "),t("h3",{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("strong",[v._v("能够不断运行软件的正确版本")]),v._v(":验证人需要去保证他们的服务器任何时刻都在线,保护其私钥避免遭到窃取。")]),v._v(" "),t("li",[t("strong",[v._v("积极地参与治理")]),v._v(":验证人需要对每个提案投票表决。")])]),v._v(" "),t("p",[v._v("此外,验证人应该是社区的活跃成员。他们应该始终与生态系统的当前状态保持同步,以便他们能够轻松适应任何变化。")]),v._v(" "),t("h3",{attrs:{id:"参与治理-需要"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与治理-需要"}},[v._v("#")]),v._v(' "参与治理"需要?')]),v._v(" "),t("p",[v._v("Cosmos Hub中的验证人员和委托人可以就改变运行参数(例如区块燃料限制),协调升级以及对治理Cosmos Hub的宪法的修正方案进行投票表决。")]),v._v(" "),t("p",[v._v("验证人在治理系统中发挥着特殊作用。身为系统的支柱他们需要对每一个提案进行投票表决。这是尤其重要的,因为委托人把票权给了验证人而自己无法直接去投票。每次当某个验证人不去对一个提案投票表决时,他就会遭受削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"抵押是指"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#抵押是指"}},[v._v("#")]),v._v(" 抵押是指?")]),v._v(" "),t("p",[v._v("抵押Atom可以被认为是一种在验证活动中进行的安全储蓄。当一个验证人或者委托人想要拿回部分甚至所有的存款时,他们就发送一笔unbonding交易。然后,Atom会经历一个"),t("em",[v._v("3周的解绑周期")]),v._v(",在unbonding开始前他们容易因错误提交而遭到削减处罚。")]),v._v(" "),t("p",[v._v("验证人,和与其形成联盟的委托人,得到区块增发奖励,区块奖励和手续费奖励,还有参与治理的权利。如果一个验证人行为不端,它的总股份的一部分会遭削减处罚(处罚的严厉性取决于错误行为的类型)。这意味着每一个往验证人委托Atom的用户也会受到一定比例的处罚。因此委托人倾向于把Atom委托给那些规范安全运作的验证人。")]),v._v(" "),t("h3",{attrs:{id:"验证人可以卷走委托人的atom跑路吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人可以卷走委托人的atom跑路吗"}},[v._v("#")]),v._v(" 验证人可以卷走委托人的Atom跑路吗?")]),v._v(" "),t("p",[v._v("向一个验证人委托,用户只是委托了他的股权。验证人有更多的股权,在共识和治理工程中也就有了更大的权重。这不意味着验证人可以扣押其委托人的Atom。一个验证人是绝不可能带着委托人的Atom跑路的。")]),v._v(" "),t("p",[v._v("尽管委托资金不可能被验证人盗取,委托人仍然要对他们的验证人做出的不端行为负责。这种情况下,每个委托人的股权也会按其股权比例遭到部分的削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"}},[v._v("#")]),v._v(" 一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?")]),v._v(" "),t("p",[v._v("被选作提议下一个区块的验证人称为提案人。每个提案人都是由明确的方式选出来的,被选的频率也与他们的总股权相等(总股权=自抵押股权+委托股权)。比如,如果所有验证人总的抵押股权是100个Atom,一个验证人的总股权是10个Atom,那么有10%的时间该验证人会被选作下一个提案人。")]),v._v(" "),t("h3",{attrs:{id:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"}},[v._v("#")]),v._v(" Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?")]),v._v(" "),t("p",[v._v("是的,他们会如此。最初,Cosmos Hub的验证人还会验证第一个公共Ethermint分区。如果通过治理决定这么做,Cosmos Hub的验证人可能需要去验证Cosmos生态系统里的其它分区。就Ethermint分区而言,对每个额外的分区奖励都会以区块奖励和交易手续费的形式来提供。")]),v._v(" "),t("h2",{attrs:{id:"激励"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#激励"}},[v._v("#")]),v._v(" 激励")]),v._v(" "),t("h3",{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("strong",[v._v("区块增发奖励")]),v._v(": 验证人运行的应用里的原生的token(例如Cosmos Hub中的Atom)会是通胀的,用作区块增发奖励。这些增发奖励激励Atom持有者去抵押他们的股权,所以未绑定的Atom会随着时间的流逝而稀释。")]),v._v(" "),t("li",[t("strong",[v._v("区块奖励")]),v._v(": 对于Ethermint分区,区块奖励会以Photon来支付。对Ethereum进行硬分叉来完成初始的分配。这意味着Photon会按和Ether的比例1:1发放。")]),v._v(" "),t("li",[t("strong",[v._v("交易手续费")]),v._v(":Cosmos Hub维持一个token的白名单,上面的token都能作为手续费。")])]),v._v(" "),t("p",[v._v("这些总收益会按验证人股权池中每个验证人所占的权重来进行分配。然后,每个验证人的股权池的收益又会根据其每一个委托人的股权来分配。注意,会在分配前从委托人所得中抽取佣金给予验证人。")]),v._v(" "),t("h3",{attrs:{id:"运行一个验证人有什么激励"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#运行一个验证人有什么激励"}},[v._v("#")]),v._v(" 运行一个验证人有什么激励?")]),v._v(" "),t("p",[v._v("由于能抽成佣金,验证人比起他们的委托人能按比例赚取更多的收益。")]),v._v(" "),t("p",[v._v("验证人在治理中充当一个重要角色。如果一个委托人没有投票,他也能从他的验证人那里继承到投票权。这样验证人在生态里承担主要的责任。")]),v._v(" "),t("h3",{attrs:{id:"什么是验证人的佣金"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人的佣金"}},[v._v("#")]),v._v(" 什么是验证人的佣金?")]),v._v(" "),t("p",[v._v("一个验证人的股权池收到的收益会被拆分为给验证人的部分和给委托人的部分。验证人可以从给其委托人的收益中抽取一部分作为给自己佣金奖励。这个佣金被设置成一个百分比。每个验证人可以随意设置初始佣金,最大每日佣金变化率和最大佣金。Cosmos Hub强制每个验证人都要明确设置这些参数。这些参数只能在一开始声明竞选时设置,也只可能在声明之后被进一步限制。")]),v._v(" "),t("h3",{attrs:{id:"区块增发奖励怎么分配"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#区块增发奖励怎么分配"}},[v._v("#")]),v._v(" 区块增发奖励怎么分配?")]),v._v(" "),t("p",[v._v("区块增发奖励会按验证人的总股权来成比例地发放。这意味着即使每个验证人每次增发奖励时都获得了Atom,但所有验证人仍然会维持相等的权重。")]),v._v(" "),t("p",[v._v("让我们举一个例子:我们有着股权相等的10个验证人,佣金比例是1%。然后我们假设一个区块的增发奖励是1000个Atom,每一个验证人有20%的自抵押Atom。这些token不会直接分给提案人。而是被均匀地分发给验证人。所以现在每个验证人的股权池获得100个Atom。这100个Atom会依据每个参与者的股权来分发:")]),v._v(" "),t("ul",[t("li",[v._v("佣金:"),t("code",[v._v("100*80%*1% = 0.8 Atoms")])]),v._v(" "),t("li",[v._v("验证人获得部分: "),t("code",[v._v("100*20% + 佣金 = 20.8 Atoms")])]),v._v(" "),t("li",[v._v("委托人获得部分: "),t("code",[v._v("100*80% - 佣金 = 79.2 Atoms")])])]),v._v(" "),t("p",[v._v("然后,每个委托人可以按照他们在验证人股权池中的股权,从79.2个Atom中等比例地索要属于他们应得的那一份。注意验证人的佣金不仅只适用于区块增发奖励,也适用于区块奖励(使用Photon支付)。")]),v._v(" "),t("h3",{attrs:{id:"交易手续费怎么分配"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#交易手续费怎么分配"}},[v._v("#")]),v._v(" 交易手续费怎么分配?")]),v._v(" "),t("p",[v._v("手续费以类似的方式分发,不同之处在于,如果区块的提案人有多于明确的提交所需的最小值,区块提案人就可以在由其提议的区块手续费中获得一笔奖励。")]),v._v(" "),t("p",[v._v("当一个验证人被选作去提议下一个区块时,必须要含有对当前区块至少2/3的验证人签名许可。尽管如此,仍然存在有一个激励去奖励那些超过2/3的验证人签名许可。这个奖励是线性的:如果提案人含有2/3的签名许可(区块有效的最小值),比例是1%, 如果提案人含有100%的签名许可,比例是5%。当然,提案人不应该等待太久去做提案,或许其他的验证人有可能超时,长时间的等待容易造成提案的延误。这样的话,验证人不得不在获取最多签名的等待时间和失去对下个区块的提案之间寻找一个平衡点。这个机制旨在提案人不要去提案空块,维护验证人之间更好的网络,还有减轻审查。")]),v._v(" "),t("p",[v._v("让我们举一个实际的例子来说明上面的概念。在这个例子中,有着10个股权相等的验证人。每个验证人采用1%的佣金比例,有20%的自抵押Atom。现在,产出了一个有着1025.51020408个Atom手续费的区块。")]),v._v(" "),t("p",[v._v("首先,一个 2% 的税是必须的。这部分Atom会进入贮存池中。贮存池里的资金会通过治理来分配,用来作奖赏和更新升级的花费。")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("2% * 1025.51020408 = 20.51020408 Atoms")]),v._v(" 进入到贮存池中")])]),v._v(" "),t("p",[v._v("现在只剩下了1005个Atom。让我们假设提案人提案的区块包含了100%的验证人签名。因此提案人能获得手续费奖励中的5%的额外奖励。")]),v._v(" "),t("p",[v._v("我们解这个简单的算式得出给每一个验证人的奖励R :")]),v._v(" "),t("p",[t("code",[v._v("9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),v._v(" "),t("ul",[t("li",[v._v("对于发起提案的验证人:\n"),t("ul",[t("li",[v._v("奖金池获得 "),t("code",[v._v("R + R * 5% = 105 Atoms")])]),v._v(" "),t("li",[v._v("佣金: "),t("code",[v._v("105 * 80% * 1% = 0.84 Atoms")])]),v._v(" "),t("li",[v._v("验证人的奖励: "),t("code",[v._v("105 * 20% + 佣金 = 21.84 Atoms")])]),v._v(" "),t("li",[v._v("委托人的奖励: "),t("code",[v._v("105 * 80% - 佣金 = 83.16 Atoms")]),v._v("(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)")])])]),v._v(" "),t("li",[v._v("对于每个非提案验证人:\n"),t("ul",[t("li",[v._v("奖金池获得 "),t("code",[v._v("R = 100 Atoms")])]),v._v(" "),t("li",[v._v("佣金: "),t("code",[v._v("100 * 80% * 1% = 0.8 Atoms")])]),v._v(" "),t("li",[v._v("验证人的奖励: "),t("code",[v._v("100 * 20% + 佣金 = 20.8 Atoms")])]),v._v(" "),t("li",[v._v("委托人的奖励: "),t("code",[v._v("100 * 80% - 佣金 = 79.2 Atoms")]),v._v("(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)")])])])]),v._v(" "),t("h3",{attrs:{id:"遭到削减处罚的原因"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#遭到削减处罚的原因"}},[v._v("#")]),v._v(" 遭到削减处罚的原因?")]),v._v(" "),t("p",[v._v("如果一个验证人行为不端,其抵押的股权,连同其委托人的股权都会遭到削减处罚。处罚的严重性依据错误的类型来定。有3个主要的错误会导致验证人和其委托人的资金遭到削减处罚:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("双签")]),v._v(":如果某人反馈在A链上,一个验证人在相同高度的A链和B链上签署了两个区块,这个验证人会被A链处罚。")]),v._v(" "),t("li",[t("strong",[v._v("不在线")]),v._v(": 如果一个验证人的签名没有被最近的X个区块包含,对该验证人会按与X成比例的最低额度来处罚。如果X高于某个限制Y,这个验证人会被赎回下线。")]),v._v(" "),t("li",[t("strong",[v._v("不投票")]),v._v(": 如果一个验证人没有对某个提案投票表决,一旦被某个人举报,他的股权会受到削减处罚。")])]),v._v(" "),t("p",[v._v("请注意,即使一个验证人并不是有意作恶,在出现节点崩溃,失去连接,被DDOS攻击,或者是私钥泄露的情况时,仍然会被遭受削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"验证人需要去自抵押一些atom吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人需要去自抵押一些atom吗"}},[v._v("#")]),v._v(" 验证人需要去自抵押一些Atom吗?")]),v._v(" "),t("p",[v._v("不,他们不必。一个验证人的总股权等于其自抵押股权和受委托股权的总和。这意味着一个验证人可以通过吸引更多委托人来补偿其低额的自抵押股权。这也是为何对验证人而言,良好的声誉是极其重要的。")]),v._v(" "),t("p",[v._v("尽管对验证人来说是并没有义务去自抵押Atom,委托人还是希望他们的验证人在其股权池里有一定的自抵押Atom。换句话说,验证人应该共担风险。")]),v._v(" "),t("p",[v._v("为了委托人能获得一些与之共担风险的验证人给予的保证,验证人可以声明一个最小数量的自抵押Atom额度。如果一个验证人的自抵押额度低于预先定义的限制,该验证人和其所有的委托人的股权都会被赎回。")]),v._v(" "),t("h3",{attrs:{id:"怎样预防股权集中到少数的验证人手中"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#怎样预防股权集中到少数的验证人手中"}},[v._v("#")]),v._v(" 怎样预防股权集中到少数的验证人手中?")]),v._v(" "),t("p",[v._v("目前我们期望社区能有更明智的和有自我保护意识的行为表现。当一个Bitcoin的矿池获得过多的算力时,社区通常会停止向该矿池贡献算力。Cosmos Hub在初期也将会依赖同样的方式。之后,其他的机制会被应用,来尽可能地使这个过程更顺畅:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("免处罚的重新委托")]),v._v(" :这允许委托人轻易地从一个验证人切换到另一个验证人,从而降低对验证人的粘性")]),v._v(" "),t("li",[t("strong",[v._v("黑客赏金")]),v._v(": 激励社区去攻击验证人。攻击者将获得与所攻击的验证人规模成比例的赏金,促使一个验证人随着其总股权的增长,成为一个受人关注的攻击目标。")]),v._v(" "),t("li",[t("strong",[v._v("UI警告")]),v._v(": 如果用户想要去委托股权给一个已经有了大量股权的验证人的话,用户会收到来自Cosmos Voyager的警告。")])]),v._v(" "),t("h2",{attrs:{id:"技术要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#技术要求"}},[v._v("#")]),v._v(" 技术要求")]),v._v(" "),t("h3",{attrs:{id:"对硬件的要求是什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对硬件的要求是什么"}},[v._v("#")]),v._v(" 对硬件的要求是什么?")]),v._v(" "),t("p",[v._v("我们期望验证人供应一个或多个的有着充足电力,网络资源,防火墙安全,HSM和服务器的数据中心。")]),v._v(" "),t("p",[v._v("我们期望初期能有一个适度级别的硬件规格说明书,会随着网络使用的增长而逐步提高标准。参与到测试网络是了解更多情况的不错方式。")]),v._v(" "),t("h3",{attrs:{id:"对软件有什么要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对软件有什么要求"}},[v._v("#")]),v._v(" 对软件有什么要求?")]),v._v(" "),t("p",[v._v("除了能运行一个Cosmos Hub节点,验证人还应该开发相关的监控,预警和管理工具。")]),v._v(" "),t("h3",{attrs:{id:"对带宽有什么要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对带宽有什么要求"}},[v._v("#")]),v._v(" 对带宽有什么要求?")]),v._v(" "),t("p",[v._v("与像Ethereum或Bitcoin这样的区块链相比,Cosmos网络要有高吞吐量的性能。")]),v._v(" "),t("p",[v._v("我们建议数据中心只在云服务上连接信任的全节点或者是熟知的验证人节点,这会减轻数据中心遭受DDOS攻击的压力。")]),v._v(" "),t("p",[v._v("最后,随着网络越来越被重度使用,具有单日GB级别的带宽是可能的。")]),v._v(" "),t("h3",{attrs:{id:"运行一个验证人节点意味着什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#运行一个验证人节点意味着什么"}},[v._v("#")]),v._v(" 运行一个验证人节点意味着什么?")]),v._v(" "),t("p",[v._v("运行一个成功的验证人节点需要多方面的高超技艺的和持久关注的共同努力。相比运行一个Bitcoin矿工节点要付出更多。")]),v._v(" "),t("h3",{attrs:{id:"怎样去进行密钥管理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#怎样去进行密钥管理"}},[v._v("#")]),v._v(" 怎样去进行密钥管理?")]),v._v(" "),t("p",[v._v("我们期望验证人去运行一个HSM来支持ed25519密钥。下面是可能的选择:")]),v._v(" "),t("ul",[t("li",[v._v("YubiHSM 2")]),v._v(" "),t("li",[v._v("Ledger Nano S")]),v._v(" "),t("li",[v._v("Ledger BOLOS SGX enclave")]),v._v(" "),t("li",[v._v("Thales nShield support")])]),v._v(" "),t("p",[v._v("CometBFT团队不会推荐上面的其中之一。鼓励社区最好加强改进HSM和密钥管理的安全性。")]),v._v(" "),t("h3",{attrs:{id:"在操作上我们期望验证人可以做到哪些"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在操作上我们期望验证人可以做到哪些"}},[v._v("#")]),v._v(" 在操作上我们期望验证人可以做到哪些?")]),v._v(" "),t("p",[v._v("进行有效率的操作是避免验证人节点的意外掉线或遭到削减处罚的关键所在。这包括良好的攻击应对方法,断电情况,还有维持数据中心的安全性和独立性。")]),v._v(" "),t("h3",{attrs:{id:"维护需要什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#维护需要什么"}},[v._v("#")]),v._v(" 维护需要什么?")]),v._v(" "),t("p",[v._v("验证人应该去执行常规的软件升级以适应更新和修复漏洞。在启动阶段的前期阶段不可避免的会出现一些网络问题,这需要大量的警觉。")]),v._v(" "),t("h3",{attrs:{id:"验证人怎样保护自己免于ddos攻击"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人怎样保护自己免于ddos攻击"}},[v._v("#")]),v._v(" 验证人怎样保护自己免于DDOS攻击?")]),v._v(" "),t("p",[v._v("当一个攻击者向一个IP地址发送海量的因特网流量来阻止该IP地址上的网络服务时,这就是DDOS攻击。")]),v._v(" "),t("p",[v._v("一个攻击者扫描网络,尽量去获得多个验证人节点的IP地址,然后通过向他们发送海量流量来阻断他们之间的连接。")]),v._v(" "),t("p",[v._v("一个降低这样的风险的推荐做法是验证人在所谓的哨兵节点的架构中精心去构建他们的网络拓扑结构。")]),v._v(" "),t("p",[v._v("验证人节点应该只连接到他们所信任的全节点上,因为他们可以操作自身,也可以被他们熟知的其他验证人运行。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以使用去连接云服务中的哨兵节点。验证人节点直接连接到他们的哨兵节点,这样减缓了DOS攻击带来的压力,可能需要新的哨兵节点被激活去减轻已存在的哨兵节点所遭受到的攻击。")]),v._v(" "),t("p",[v._v("哨兵节点能够迅速地被轮换或者改变它们的IP地址。因为与哨兵节点的连接是私有的IP网段,基于因特网的攻击不可能直接骚扰到它们。这将确保验证人区块的提交和投票总是能传播到网络中的其余节点。")]),v._v(" "),t("p",[v._v("期待验证人在这方面良好的操作将完全消除这些威胁。")]),v._v(" "),t("p",[v._v("了解哨兵节点架构的更多信息请看"),t("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("。")])])}),[],!1,null,null,null);_.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{493:function(v,_,t){"use strict";t.r(_);var a=t(1),s=Object(a.a)({},(function(){var v=this,_=v.$createElement,t=v._self._c||_;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("::: 声明\n这项工作正在进行中。机制和具体值都容易发生变化。\n:::")]),v._v(" "),t("h2",{attrs:{id:"基本概念"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#基本概念"}},[v._v("#")]),v._v(" 基本概念")]),v._v(" "),t("h3",{attrs:{id:"什么是验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[v._v("#")]),v._v(" 什么是验证人?")]),v._v(" "),t("p",[t("RouterLink",{attrs:{to:"/zh/what-is-gaia.html"}},[v._v("Cosmos Hub")]),v._v("基于"),t("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[v._v("CometBFT"),t("OutboundLink")],1),v._v(",它依靠一组验证人来保障网络的安全。验证人的作用是通过广播包含由验证人的私钥签名的加密签名的投票来运行全节点并参与共识。验证人在区块链中提交新的区块并获得收益作为报酬。他们还必须通过对提案进行投票来参与治理。验证人根据他们的总抵押股权来排位。")],1),v._v(" "),t("h3",{attrs:{id:"什么是-抵押"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是-抵押"}},[v._v("#")]),v._v(" 什么是'抵押'?")]),v._v(" "),t("p",[v._v("Cosmos Hub是一个权益证明(PoS)区块链,意味着验证人的权重由其抵押的,用作担保金的代币(Atom)的数量决定。这些Atom可以直接由验证人抵押,或者由Atom持有者委托给验证人。")]),v._v(" "),t("p",[v._v("系统中的任何用户都可以通过发送"),t("code",[v._v("create-validator")]),v._v("交易来表明其想成为验证人的意图。从那里,他们成为验证者。从这开始,才能成为验证人。")]),v._v(" "),t("p",[v._v("验证人的权重(即总抵押)决定其是否能成为有效验证人,还有该节点提议区块的频率以及它将获得多少收益。一开始,只有权重最多的125个验证人才是有效验证人。如果验证者双重签名,经常脱机或不参与治理,如果验证人双签,频繁掉线或者不参加治理,他们抵押的Atom(包括那些委托给他们的Atom)会被销毁,也就是‘削减处罚’。")]),v._v(" "),t("h3",{attrs:{id:"什么是全节点"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是全节点"}},[v._v("#")]),v._v(" 什么是全节点?")]),v._v(" "),t("p",[v._v("全节点是一个全程验证区块链的交易和区块的程序。区别于只处理区块头信息和小部分交易的轻节点。运行一个全节点比轻节点需要更多的资源,这也是成为验证人必须要具备的。实际上,运行全节点意味着运行网络延迟较低且不掉线的软件的最新版本。")]),v._v(" "),t("p",[v._v("当然,我们鼓励任何用户都去运行一个全节点,即使他们并不打算成为验证人。")]),v._v(" "),t("h3",{attrs:{id:"什么是委托人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是委托人"}},[v._v("#")]),v._v(" 什么是委托人?")]),v._v(" "),t("p",[v._v("委托人是那些没有能力或者不想执行验证人操作的Atom持有者。通过"),t("a",{attrs:{href:"https://cosmos.network/docs/getting-started/voyager.html",target:"_blank",rel:"noopener noreferrer"}},[v._v("Cosmos Voyager"),t("OutboundLink")],1),v._v(",一个用户可以把Atom委托给一个验证人,并获取一部分交易收益(关于收益是如何分配的,查看下面的"),t("a",{attrs:{href:"#%E6%8A%B5%E6%8A%BC%E6%9C%89%E4%BB%80%E4%B9%88%E6%BF%80%E5%8A%B1?"}},[t("strong",[v._v("抵押有什么激励?")])]),v._v("和"),t("a",{attrs:{href:"#%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E9%AA%8C%E8%AF%81%E4%BA%BA%E6%9C%89%E4%BB%80%E4%B9%88%E6%BF%80%E5%8A%B1?"}},[t("strong",[v._v("运行一个验证人有什么激励?")])]),v._v(")")]),v._v(" "),t("p",[v._v("委托人与他们的验证人分享收益,所以委托人也要共担责任。如果一个验证人行为不端,每一个相关的委托人也会按比例遭受股权的部分削减处罚。这就是为什么委托人在委托之前应该履行调查职责,还要尽量把股权分散给多个验证人。")]),v._v(" "),t("p",[v._v("委托人在系统里扮演了一个关键角色,因为他们负责选举验证人。委托人也并不是一个消极的角色:委托人应该积极监控验证人的行为,并参与到治理当中。")]),v._v(" "),t("h2",{attrs:{id:"成为一个验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#成为一个验证人"}},[v._v("#")]),v._v(" 成为一个验证人")]),v._v(" "),t("h3",{attrs:{id:"如何成为一个验证人"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何成为一个验证人"}},[v._v("#")]),v._v(" 如何成为一个验证人?")]),v._v(" "),t("p",[v._v("网络中的任何参与者都可以通过发送一笔"),t("code",[v._v("create-validator")]),v._v("交易来表明他们想成为一个验证人,必须要填写下列参数:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("验证人的公钥:"),t("strong",[v._v("用于签名")]),v._v("投票")]),v._v("和"),t("strong",[v._v("提交")]),v._v("的私钥对应的公钥。通过这种方式,验证人可以用不同的账户分别去做验证和持有流动资金。")]),v._v(" "),t("li",[v._v("**验证人的地址:**应用程序级别的地址。这是用于外界识别验证人的地址。与此地址关联的私钥用于绑定,取消绑定,声明奖励和参与治理(仅限MVP)。")]),v._v(" "),t("li",[t("strong",[v._v("验证人的名称(moniker)")])]),v._v(" "),t("li",[t("strong",[v._v("验证人的网站(可选的)")])]),v._v(" "),t("li",[t("strong",[v._v("验证人的描述信息(可选的)")])]),v._v(" "),t("li",[v._v("**初始佣金比例:**区块增发奖励,区块奖励,交易手续费中抽成给验证人的初始比例")]),v._v(" "),t("li",[v._v("**最大佣金:**该验证人保证的最大佣金率")]),v._v(" "),t("li",[v._v("**佣金变化率:**验证人候选者的最大每日佣金增长率")]),v._v(" "),t("li",[v._v("**最小自抵押数量:**验证人在任何时候所要的抵押的最小Atom数量。如果验证人的自抵押股权数量跌破了这个限制,其整个抵押池都会被释放。")]),v._v(" "),t("li",[v._v("**初始自抵押数量:**验证人最初的自抵押的Atom数量")])]),v._v(" "),t("p",[v._v("一旦创建了验证人,Atom持有者可以向其委托Atom,有效地向股权池里增加股权。一个地址的总股权是验证人自抵押的Atom和委托人委托的Atom的总和。")]),v._v(" "),t("p",[v._v("在所有表明的验证人中,股权最多的100名被任命为有效验证人。如果某个验证人的股权总量跌出了前100名就会失去验证人权利。随着时间的推移,验证人的最大数量会依照计划逐渐增加:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("Year 0:")]),v._v(" 100")]),v._v(" "),t("li",[t("strong",[v._v("Year 1:")]),v._v(" 113")]),v._v(" "),t("li",[t("strong",[v._v("Year 2:")]),v._v(" 127")]),v._v(" "),t("li",[t("strong",[v._v("Year 3:")]),v._v(" 144")]),v._v(" "),t("li",[t("strong",[v._v("Year 4:")]),v._v(" 163")]),v._v(" "),t("li",[t("strong",[v._v("Year 5:")]),v._v(" 184")]),v._v(" "),t("li",[t("strong",[v._v("Year 6:")]),v._v(" 208")]),v._v(" "),t("li",[t("strong",[v._v("Year 7:")]),v._v(" 235")]),v._v(" "),t("li",[t("strong",[v._v("Year 8:")]),v._v(" 265")]),v._v(" "),t("li",[t("strong",[v._v("Year 9:")]),v._v(" 300")]),v._v(" "),t("li",[t("strong",[v._v("Year 10:")]),v._v(" 300")])]),v._v(" "),t("h2",{attrs:{id:"测试网"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试网"}},[v._v("#")]),v._v(" 测试网")]),v._v(" "),t("h3",{attrs:{id:"我要怎样加入到测试网"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#我要怎样加入到测试网"}},[v._v("#")]),v._v(" 我要怎样加入到测试网?")]),v._v(" "),t("p",[v._v("测试网络是一个在主网上线之前很好的测试验证人设置的环境。")]),v._v(" "),t("p",[v._v("我们将参与测试网络视为一个向社区展示你是有准备且有能力去运行验证人节点的方式。你可以在"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("和"),t("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("找到有关测试网的更多内容。")]),v._v(" "),t("h3",{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("strong",[v._v("CometBFT/Tendermint Key")]),v._v(" :这是用于对区块哈希进行签名的唯一密钥。它与一个公钥"),t("code",[v._v("cosmosvalconspub")]),v._v("相关联。\n"),t("ul",[t("li",[v._v("使用"),t("code",[v._v("gaiad init")]),v._v("创建节点时生成。")]),v._v(" "),t("li",[v._v("使用"),t("code",[v._v("gaiad tendermint show-validator")]),v._v("查看,如"),t("code",[v._v("cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c")]),v._v("。")])])]),v._v(" "),t("li",[t("strong",[v._v("Application keys")]),v._v(" :这些密钥是由应用程序创建的,用于签名交易。作为验证人,你可能会使用一个密钥来签名与抵押相关的交易,另一个密钥用于签署与治理相关的交易。应用程序私钥和公钥"),t("code",[v._v("cosmospub")]),v._v("及地址"),t("code",[v._v("cosmos")]),v._v("相关联。两者都来自"),t("code",[v._v("gaiad keys add")]),v._v("生成的帐户私钥。\n"),t("ul",[t("li",[v._v("注意:验证人的操作员的私钥直接绑定到应用程序私钥,但为此目的保留前缀:"),t("code",[v._v("cosmosvaloper")]),v._v("和"),t("code",[v._v("cosmosvaloperpub")])])])])]),v._v(" "),t("h3",{attrs:{id:"验证人可以具有哪些不同的状态"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人可以具有哪些不同的状态"}},[v._v("#")]),v._v(" 验证人可以具有哪些不同的状态")]),v._v(" "),t("p",[v._v("使用"),t("code",[v._v("create-validator")]),v._v("交易创建验证人后,它可以处于三种状态:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("bonded")]),v._v(" : 验证人在活跃集合中并参与共识。验证人正在获得奖励,并且可能因为不当行为而遭到削减处罚。")]),v._v(" "),t("li",[t("code",[v._v("unbonding")]),v._v(" : 验证人不在活跃集合中,也不参与共识。验证人没有获得奖励,但仍然可能因为不当行为而遭到削减处罚。这是从"),t("code",[v._v("bonded")]),v._v("到"),t("code",[v._v("unbonding")]),v._v("的过渡状态。如果验证人在"),t("code",[v._v("unbonding")]),v._v("模式下未发送"),t("code",[v._v("rebond")]),v._v("交易,则状态转换将需要三周时间才能完成。")]),v._v(" "),t("li",[t("code",[v._v("unbonded")]),v._v(" : 验证人不在活跃集合中,因此不签署区块。验证人不能遭到削减处罚,也不会获得任何奖励。仍然可以将Atom委托给此验证人。从"),t("code",[v._v("unbonded")]),v._v("状态的验证人取消委托是立即的。")])]),v._v(" "),t("p",[v._v("委托人与其验证人具有相同的状态。")]),v._v(" "),t("p",[v._v("请注意,委托不一定是绑定的。Atom可以是delegated和bonded状态,delegated和unbonding状态,delegated和unbonded状态,或流通状态。")]),v._v(" "),t("h3",{attrs:{id:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是self-bond-怎样增加我的self-bond-有水龙头吗"}},[v._v("#")]),v._v(" 什么是"),t("code",[v._v("self-bond")]),v._v("?怎样增加我的"),t("code",[v._v("self-bond")]),v._v("?有水龙头吗?")]),v._v(" "),t("p",[v._v("如果你想获得测试网的测试币,你可以使用这个"),t("a",{attrs:{href:"https://faucet.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[v._v("水龙头"),t("OutboundLink")],1),v._v("。")]),v._v(" "),t("h3",{attrs:{id:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"}},[v._v("#")]),v._v(" 成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?")]),v._v(" "),t("p",[v._v("没有最小限制。总股权(总股权=自抵押股权+委托股权)最高的前100名是活跃验证人。")]),v._v(" "),t("h4",{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("strong",[v._v("自抵押的Atom数量")]),v._v(":一个验证人在股权池里自抵押的Atom数量。有着更多自抵押Atom的验证人承担了更大的风险,将促使其对自己的行为更加负责。")]),v._v(" "),t("li",[t("strong",[v._v("委托的Atom总量")]),v._v(": 委托给某个验证人的Atom总量。大量的股权显示社区对该验证人的信任,但这也意味着该验证人更容易成为黑客们的目标。实际上,黑客更倾向攻击更大的验证人,这样他们可能会从不能抵御攻击的验证人那里获得更多。随着委托的Atom的增长,验证人也被期待不要太过引人注目。")]),v._v(" "),t("li",[t("strong",[v._v("佣金比率")]),v._v(": 在把奖励分散给委托人之前抽成一部分佣金来奖励验证人。")]),v._v(" "),t("li",[t("strong",[v._v("跟踪记录")]),v._v(":委托人很可能去查看他们计划去委托的验证人的行为记录。包括资历,过去对提议的投票,历史的平均运行时长和验证人节点掉线的频率。")])]),v._v(" "),t("p",[v._v("除去这些会展示在Cosmos Voyager上的评判标准,验证人还可能向公众展示一个网站来完善他们的简历。验证人需要通过多种方式去树立良好的声誉来吸引委托人。比如,验证人让第三方来审计他们的设置就是一个很好的实践。注意,CometBFT团队将不会批准和引导任何对自身的审计。有关尽职调查的更多信息,请参阅此"),t("a",{attrs:{href:"https://medium.com/@interchain_io/3d0faf10ce6f",target:"_blank",rel:"noopener noreferrer"}},[v._v("博客"),t("OutboundLink")],1)]),v._v(" "),t("h2",{attrs:{id:"责任"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#责任"}},[v._v("#")]),v._v(" 责任")]),v._v(" "),t("h3",{attrs:{id:"验证人需要公开表明身份吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人需要公开表明身份吗"}},[v._v("#")]),v._v(" 验证人需要公开表明身份吗?")]),v._v(" "),t("p",[v._v("不需要。每个委托人会用他们自己的评判标准去衡量验证人的价值。验证人可以(也被推荐)在他们提名自己时注册一个网站,以便他们可以按照自己的意愿宣传自己的行动。一些委托人可能更喜欢通过一个清楚展示团队是如何去运行验证人节点以及团队成员的简历的网站来帮助选择,尽管其他一些委托人更偏好那些隐藏了行为记录的匿名验证人。最有可能的是身份明确的验证人和匿名的验证人都会存在于验证人集合中。")]),v._v(" "),t("h3",{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("strong",[v._v("能够不断运行软件的正确版本")]),v._v(":验证人需要去保证他们的服务器任何时刻都在线,保护其私钥避免遭到窃取。")]),v._v(" "),t("li",[t("strong",[v._v("积极地参与治理")]),v._v(":验证人需要对每个提案投票表决。")])]),v._v(" "),t("p",[v._v("此外,验证人应该是社区的活跃成员。他们应该始终与生态系统的当前状态保持同步,以便他们能够轻松适应任何变化。")]),v._v(" "),t("h3",{attrs:{id:"参与治理-需要"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与治理-需要"}},[v._v("#")]),v._v(' "参与治理"需要?')]),v._v(" "),t("p",[v._v("Cosmos Hub中的验证人员和委托人可以就改变运行参数(例如区块燃料限制),协调升级以及对治理Cosmos Hub的宪法的修正方案进行投票表决。")]),v._v(" "),t("p",[v._v("验证人在治理系统中发挥着特殊作用。身为系统的支柱他们需要对每一个提案进行投票表决。这是尤其重要的,因为委托人把票权给了验证人而自己无法直接去投票。每次当某个验证人不去对一个提案投票表决时,他就会遭受削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"抵押是指"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#抵押是指"}},[v._v("#")]),v._v(" 抵押是指?")]),v._v(" "),t("p",[v._v("抵押Atom可以被认为是一种在验证活动中进行的安全储蓄。当一个验证人或者委托人想要拿回部分甚至所有的存款时,他们就发送一笔unbonding交易。然后,Atom会经历一个"),t("em",[v._v("3周的解绑周期")]),v._v(",在unbonding开始前他们容易因错误提交而遭到削减处罚。")]),v._v(" "),t("p",[v._v("验证人,和与其形成联盟的委托人,得到区块增发奖励,区块奖励和手续费奖励,还有参与治理的权利。如果一个验证人行为不端,它的总股份的一部分会遭削减处罚(处罚的严厉性取决于错误行为的类型)。这意味着每一个往验证人委托Atom的用户也会受到一定比例的处罚。因此委托人倾向于把Atom委托给那些规范安全运作的验证人。")]),v._v(" "),t("h3",{attrs:{id:"验证人可以卷走委托人的atom跑路吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人可以卷走委托人的atom跑路吗"}},[v._v("#")]),v._v(" 验证人可以卷走委托人的Atom跑路吗?")]),v._v(" "),t("p",[v._v("向一个验证人委托,用户只是委托了他的股权。验证人有更多的股权,在共识和治理工程中也就有了更大的权重。这不意味着验证人可以扣押其委托人的Atom。一个验证人是绝不可能带着委托人的Atom跑路的。")]),v._v(" "),t("p",[v._v("尽管委托资金不可能被验证人盗取,委托人仍然要对他们的验证人做出的不端行为负责。这种情况下,每个委托人的股权也会按其股权比例遭到部分的削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"}},[v._v("#")]),v._v(" 一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?")]),v._v(" "),t("p",[v._v("被选作提议下一个区块的验证人称为提案人。每个提案人都是由明确的方式选出来的,被选的频率也与他们的总股权相等(总股权=自抵押股权+委托股权)。比如,如果所有验证人总的抵押股权是100个Atom,一个验证人的总股权是10个Atom,那么有10%的时间该验证人会被选作下一个提案人。")]),v._v(" "),t("h3",{attrs:{id:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"}},[v._v("#")]),v._v(" Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?")]),v._v(" "),t("p",[v._v("是的,他们会如此。最初,Cosmos Hub的验证人还会验证第一个公共Ethermint分区。如果通过治理决定这么做,Cosmos Hub的验证人可能需要去验证Cosmos生态系统里的其它分区。就Ethermint分区而言,对每个额外的分区奖励都会以区块奖励和交易手续费的形式来提供。")]),v._v(" "),t("h2",{attrs:{id:"激励"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#激励"}},[v._v("#")]),v._v(" 激励")]),v._v(" "),t("h3",{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("strong",[v._v("区块增发奖励")]),v._v(": 验证人运行的应用里的原生的token(例如Cosmos Hub中的Atom)会是通胀的,用作区块增发奖励。这些增发奖励激励Atom持有者去抵押他们的股权,所以未绑定的Atom会随着时间的流逝而稀释。")]),v._v(" "),t("li",[t("strong",[v._v("区块奖励")]),v._v(": 对于Ethermint分区,区块奖励会以Photon来支付。对Ethereum进行硬分叉来完成初始的分配。这意味着Photon会按和Ether的比例1:1发放。")]),v._v(" "),t("li",[t("strong",[v._v("交易手续费")]),v._v(":Cosmos Hub维持一个token的白名单,上面的token都能作为手续费。")])]),v._v(" "),t("p",[v._v("这些总收益会按验证人股权池中每个验证人所占的权重来进行分配。然后,每个验证人的股权池的收益又会根据其每一个委托人的股权来分配。注意,会在分配前从委托人所得中抽取佣金给予验证人。")]),v._v(" "),t("h3",{attrs:{id:"运行一个验证人有什么激励"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#运行一个验证人有什么激励"}},[v._v("#")]),v._v(" 运行一个验证人有什么激励?")]),v._v(" "),t("p",[v._v("由于能抽成佣金,验证人比起他们的委托人能按比例赚取更多的收益。")]),v._v(" "),t("p",[v._v("验证人在治理中充当一个重要角色。如果一个委托人没有投票,他也能从他的验证人那里继承到投票权。这样验证人在生态里承担主要的责任。")]),v._v(" "),t("h3",{attrs:{id:"什么是验证人的佣金"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人的佣金"}},[v._v("#")]),v._v(" 什么是验证人的佣金?")]),v._v(" "),t("p",[v._v("一个验证人的股权池收到的收益会被拆分为给验证人的部分和给委托人的部分。验证人可以从给其委托人的收益中抽取一部分作为给自己佣金奖励。这个佣金被设置成一个百分比。每个验证人可以随意设置初始佣金,最大每日佣金变化率和最大佣金。Cosmos Hub强制每个验证人都要明确设置这些参数。这些参数只能在一开始声明竞选时设置,也只可能在声明之后被进一步限制。")]),v._v(" "),t("h3",{attrs:{id:"区块增发奖励怎么分配"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#区块增发奖励怎么分配"}},[v._v("#")]),v._v(" 区块增发奖励怎么分配?")]),v._v(" "),t("p",[v._v("区块增发奖励会按验证人的总股权来成比例地发放。这意味着即使每个验证人每次增发奖励时都获得了Atom,但所有验证人仍然会维持相等的权重。")]),v._v(" "),t("p",[v._v("让我们举一个例子:我们有着股权相等的10个验证人,佣金比例是1%。然后我们假设一个区块的增发奖励是1000个Atom,每一个验证人有20%的自抵押Atom。这些token不会直接分给提案人。而是被均匀地分发给验证人。所以现在每个验证人的股权池获得100个Atom。这100个Atom会依据每个参与者的股权来分发:")]),v._v(" "),t("ul",[t("li",[v._v("佣金:"),t("code",[v._v("100*80%*1% = 0.8 Atoms")])]),v._v(" "),t("li",[v._v("验证人获得部分: "),t("code",[v._v("100*20% + 佣金 = 20.8 Atoms")])]),v._v(" "),t("li",[v._v("委托人获得部分: "),t("code",[v._v("100*80% - 佣金 = 79.2 Atoms")])])]),v._v(" "),t("p",[v._v("然后,每个委托人可以按照他们在验证人股权池中的股权,从79.2个Atom中等比例地索要属于他们应得的那一份。注意验证人的佣金不仅只适用于区块增发奖励,也适用于区块奖励(使用Photon支付)。")]),v._v(" "),t("h3",{attrs:{id:"交易手续费怎么分配"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#交易手续费怎么分配"}},[v._v("#")]),v._v(" 交易手续费怎么分配?")]),v._v(" "),t("p",[v._v("手续费以类似的方式分发,不同之处在于,如果区块的提案人有多于明确的提交所需的最小值,区块提案人就可以在由其提议的区块手续费中获得一笔奖励。")]),v._v(" "),t("p",[v._v("当一个验证人被选作去提议下一个区块时,必须要含有对当前区块至少2/3的验证人签名许可。尽管如此,仍然存在有一个激励去奖励那些超过2/3的验证人签名许可。这个奖励是线性的:如果提案人含有2/3的签名许可(区块有效的最小值),比例是1%, 如果提案人含有100%的签名许可,比例是5%。当然,提案人不应该等待太久去做提案,或许其他的验证人有可能超时,长时间的等待容易造成提案的延误。这样的话,验证人不得不在获取最多签名的等待时间和失去对下个区块的提案之间寻找一个平衡点。这个机制旨在提案人不要去提案空块,维护验证人之间更好的网络,还有减轻审查。")]),v._v(" "),t("p",[v._v("让我们举一个实际的例子来说明上面的概念。在这个例子中,有着10个股权相等的验证人。每个验证人采用1%的佣金比例,有20%的自抵押Atom。现在,产出了一个有着1025.51020408个Atom手续费的区块。")]),v._v(" "),t("p",[v._v("首先,一个 2% 的税是必须的。这部分Atom会进入贮存池中。贮存池里的资金会通过治理来分配,用来作奖赏和更新升级的花费。")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("2% * 1025.51020408 = 20.51020408 Atoms")]),v._v(" 进入到贮存池中")])]),v._v(" "),t("p",[v._v("现在只剩下了1005个Atom。让我们假设提案人提案的区块包含了100%的验证人签名。因此提案人能获得手续费奖励中的5%的额外奖励。")]),v._v(" "),t("p",[v._v("我们解这个简单的算式得出给每一个验证人的奖励R :")]),v._v(" "),t("p",[t("code",[v._v("9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100")])]),v._v(" "),t("ul",[t("li",[v._v("对于发起提案的验证人:\n"),t("ul",[t("li",[v._v("奖金池获得 "),t("code",[v._v("R + R * 5% = 105 Atoms")])]),v._v(" "),t("li",[v._v("佣金: "),t("code",[v._v("105 * 80% * 1% = 0.84 Atoms")])]),v._v(" "),t("li",[v._v("验证人的奖励: "),t("code",[v._v("105 * 20% + 佣金 = 21.84 Atoms")])]),v._v(" "),t("li",[v._v("委托人的奖励: "),t("code",[v._v("105 * 80% - 佣金 = 83.16 Atoms")]),v._v("(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)")])])]),v._v(" "),t("li",[v._v("对于每个非提案验证人:\n"),t("ul",[t("li",[v._v("奖金池获得 "),t("code",[v._v("R = 100 Atoms")])]),v._v(" "),t("li",[v._v("佣金: "),t("code",[v._v("100 * 80% * 1% = 0.8 Atoms")])]),v._v(" "),t("li",[v._v("验证人的奖励: "),t("code",[v._v("100 * 20% + 佣金 = 20.8 Atoms")])]),v._v(" "),t("li",[v._v("委托人的奖励: "),t("code",[v._v("100 * 80% - 佣金 = 79.2 Atoms")]),v._v("(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)")])])])]),v._v(" "),t("h3",{attrs:{id:"遭到削减处罚的原因"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#遭到削减处罚的原因"}},[v._v("#")]),v._v(" 遭到削减处罚的原因?")]),v._v(" "),t("p",[v._v("如果一个验证人行为不端,其抵押的股权,连同其委托人的股权都会遭到削减处罚。处罚的严重性依据错误的类型来定。有3个主要的错误会导致验证人和其委托人的资金遭到削减处罚:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("双签")]),v._v(":如果某人反馈在A链上,一个验证人在相同高度的A链和B链上签署了两个区块,这个验证人会被A链处罚。")]),v._v(" "),t("li",[t("strong",[v._v("不在线")]),v._v(": 如果一个验证人的签名没有被最近的X个区块包含,对该验证人会按与X成比例的最低额度来处罚。如果X高于某个限制Y,这个验证人会被赎回下线。")]),v._v(" "),t("li",[t("strong",[v._v("不投票")]),v._v(": 如果一个验证人没有对某个提案投票表决,一旦被某个人举报,他的股权会受到削减处罚。")])]),v._v(" "),t("p",[v._v("请注意,即使一个验证人并不是有意作恶,在出现节点崩溃,失去连接,被DDOS攻击,或者是私钥泄露的情况时,仍然会被遭受削减处罚。")]),v._v(" "),t("h3",{attrs:{id:"验证人需要去自抵押一些atom吗"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人需要去自抵押一些atom吗"}},[v._v("#")]),v._v(" 验证人需要去自抵押一些Atom吗?")]),v._v(" "),t("p",[v._v("不,他们不必。一个验证人的总股权等于其自抵押股权和受委托股权的总和。这意味着一个验证人可以通过吸引更多委托人来补偿其低额的自抵押股权。这也是为何对验证人而言,良好的声誉是极其重要的。")]),v._v(" "),t("p",[v._v("尽管对验证人来说是并没有义务去自抵押Atom,委托人还是希望他们的验证人在其股权池里有一定的自抵押Atom。换句话说,验证人应该共担风险。")]),v._v(" "),t("p",[v._v("为了委托人能获得一些与之共担风险的验证人给予的保证,验证人可以声明一个最小数量的自抵押Atom额度。如果一个验证人的自抵押额度低于预先定义的限制,该验证人和其所有的委托人的股权都会被赎回。")]),v._v(" "),t("h3",{attrs:{id:"怎样预防股权集中到少数的验证人手中"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#怎样预防股权集中到少数的验证人手中"}},[v._v("#")]),v._v(" 怎样预防股权集中到少数的验证人手中?")]),v._v(" "),t("p",[v._v("目前我们期望社区能有更明智的和有自我保护意识的行为表现。当一个Bitcoin的矿池获得过多的算力时,社区通常会停止向该矿池贡献算力。Cosmos Hub在初期也将会依赖同样的方式。之后,其他的机制会被应用,来尽可能地使这个过程更顺畅:")]),v._v(" "),t("ul",[t("li",[t("strong",[v._v("免处罚的重新委托")]),v._v(" :这允许委托人轻易地从一个验证人切换到另一个验证人,从而降低对验证人的粘性")]),v._v(" "),t("li",[t("strong",[v._v("黑客赏金")]),v._v(": 激励社区去攻击验证人。攻击者将获得与所攻击的验证人规模成比例的赏金,促使一个验证人随着其总股权的增长,成为一个受人关注的攻击目标。")]),v._v(" "),t("li",[t("strong",[v._v("UI警告")]),v._v(": 如果用户想要去委托股权给一个已经有了大量股权的验证人的话,用户会收到来自Cosmos Voyager的警告。")])]),v._v(" "),t("h2",{attrs:{id:"技术要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#技术要求"}},[v._v("#")]),v._v(" 技术要求")]),v._v(" "),t("h3",{attrs:{id:"对硬件的要求是什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对硬件的要求是什么"}},[v._v("#")]),v._v(" 对硬件的要求是什么?")]),v._v(" "),t("p",[v._v("我们期望验证人供应一个或多个的有着充足电力,网络资源,防火墙安全,HSM和服务器的数据中心。")]),v._v(" "),t("p",[v._v("我们期望初期能有一个适度级别的硬件规格说明书,会随着网络使用的增长而逐步提高标准。参与到测试网络是了解更多情况的不错方式。")]),v._v(" "),t("h3",{attrs:{id:"对软件有什么要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对软件有什么要求"}},[v._v("#")]),v._v(" 对软件有什么要求?")]),v._v(" "),t("p",[v._v("除了能运行一个Cosmos Hub节点,验证人还应该开发相关的监控,预警和管理工具。")]),v._v(" "),t("h3",{attrs:{id:"对带宽有什么要求"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对带宽有什么要求"}},[v._v("#")]),v._v(" 对带宽有什么要求?")]),v._v(" "),t("p",[v._v("与像Ethereum或Bitcoin这样的区块链相比,Cosmos网络要有高吞吐量的性能。")]),v._v(" "),t("p",[v._v("我们建议数据中心只在云服务上连接信任的全节点或者是熟知的验证人节点,这会减轻数据中心遭受DDOS攻击的压力。")]),v._v(" "),t("p",[v._v("最后,随着网络越来越被重度使用,具有单日GB级别的带宽是可能的。")]),v._v(" "),t("h3",{attrs:{id:"运行一个验证人节点意味着什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#运行一个验证人节点意味着什么"}},[v._v("#")]),v._v(" 运行一个验证人节点意味着什么?")]),v._v(" "),t("p",[v._v("运行一个成功的验证人节点需要多方面的高超技艺的和持久关注的共同努力。相比运行一个Bitcoin矿工节点要付出更多。")]),v._v(" "),t("h3",{attrs:{id:"怎样去进行密钥管理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#怎样去进行密钥管理"}},[v._v("#")]),v._v(" 怎样去进行密钥管理?")]),v._v(" "),t("p",[v._v("我们期望验证人去运行一个HSM来支持ed25519密钥。下面是可能的选择:")]),v._v(" "),t("ul",[t("li",[v._v("YubiHSM 2")]),v._v(" "),t("li",[v._v("Ledger Nano S")]),v._v(" "),t("li",[v._v("Ledger BOLOS SGX enclave")]),v._v(" "),t("li",[v._v("Thales nShield support")])]),v._v(" "),t("p",[v._v("CometBFT团队不会推荐上面的其中之一。鼓励社区最好加强改进HSM和密钥管理的安全性。")]),v._v(" "),t("h3",{attrs:{id:"在操作上我们期望验证人可以做到哪些"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在操作上我们期望验证人可以做到哪些"}},[v._v("#")]),v._v(" 在操作上我们期望验证人可以做到哪些?")]),v._v(" "),t("p",[v._v("进行有效率的操作是避免验证人节点的意外掉线或遭到削减处罚的关键所在。这包括良好的攻击应对方法,断电情况,还有维持数据中心的安全性和独立性。")]),v._v(" "),t("h3",{attrs:{id:"维护需要什么"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#维护需要什么"}},[v._v("#")]),v._v(" 维护需要什么?")]),v._v(" "),t("p",[v._v("验证人应该去执行常规的软件升级以适应更新和修复漏洞。在启动阶段的前期阶段不可避免的会出现一些网络问题,这需要大量的警觉。")]),v._v(" "),t("h3",{attrs:{id:"验证人怎样保护自己免于ddos攻击"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人怎样保护自己免于ddos攻击"}},[v._v("#")]),v._v(" 验证人怎样保护自己免于DDOS攻击?")]),v._v(" "),t("p",[v._v("当一个攻击者向一个IP地址发送海量的因特网流量来阻止该IP地址上的网络服务时,这就是DDOS攻击。")]),v._v(" "),t("p",[v._v("一个攻击者扫描网络,尽量去获得多个验证人节点的IP地址,然后通过向他们发送海量流量来阻断他们之间的连接。")]),v._v(" "),t("p",[v._v("一个降低这样的风险的推荐做法是验证人在所谓的哨兵节点的架构中精心去构建他们的网络拓扑结构。")]),v._v(" "),t("p",[v._v("验证人节点应该只连接到他们所信任的全节点上,因为他们可以操作自身,也可以被他们熟知的其他验证人运行。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以使用去连接云服务中的哨兵节点。验证人节点直接连接到他们的哨兵节点,这样减缓了DOS攻击带来的压力,可能需要新的哨兵节点被激活去减轻已存在的哨兵节点所遭受到的攻击。")]),v._v(" "),t("p",[v._v("哨兵节点能够迅速地被轮换或者改变它们的IP地址。因为与哨兵节点的连接是私有的IP网段,基于因特网的攻击不可能直接骚扰到它们。这将确保验证人区块的提交和投票总是能传播到网络中的其余节点。")]),v._v(" "),t("p",[v._v("期待验证人在这方面良好的操作将完全消除这些威胁。")]),v._v(" "),t("p",[v._v("了解哨兵节点架构的更多信息请看"),t("a",{attrs:{href:"https://forum.cosmos.network/t/sentry-node-architecture-overview/454",target:"_blank",rel:"noopener noreferrer"}},[v._v("这里"),t("OutboundLink")],1),v._v("。")])])}),[],!1,null,null,null);_.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/192.4a3b252d.js b/main/assets/js/193.e1ebb07f.js similarity index 99% rename from main/assets/js/192.4a3b252d.js rename to main/assets/js/193.e1ebb07f.js index 659492f7e33..5751ec0cd7b 100644 --- a/main/assets/js/192.4a3b252d.js +++ b/main/assets/js/193.e1ebb07f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{624:function(t,a,v){"use strict";v.r(a);var e=v(1),s=Object(e.a)({},(function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"在主网上运行一个验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#在主网上运行一个验证人"}},[t._v("#")]),t._v(" 在主网上运行一个验证人")]),t._v(" "),v("p",[t._v("::: 提示\n加入主网所需的信息("),v("code",[t._v("genesis.json")]),t._v("和种子节点)在"),v("a",{attrs:{href:"https://github.com/cosmos/launch/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[v("code",[t._v("lauch")]),t._v(" repo"),v("OutboundLink")],1),t._v("中可以找到。\n:::")]),t._v(" "),v("p",[t._v("在启动你验证人节点前,确定你已经完成了"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动全节点")]),t._v("教程。")],1),t._v(" "),v("h2",{attrs:{id:"什么是验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[t._v("#")]),t._v(" 什么是验证人?")]),t._v(" "),v("p",[v("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人")]),t._v("负责通过投票来向区块链提交新区块。如果验证人不可访问或者对多个相同高度的区块签名,将会遭受到削减处罚。如果变得不可用或者在同一高度上签名,则会被削减。请阅读有关Sentry节点架构的信息,以保护您的节点免受DDOS攻击并确保高可用性。请阅读"),v("a",{attrs:{href:""}},[t._v("哨兵节点网络架构")]),t._v("来保护你的节点免于DDOS攻击并保证高的可访问性。")],1),t._v(" "),v("p",[t._v("::: 警告\n如果你想要成为Cosmos Hub主网的验证人,你应该"),v("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("安全研究")]),t._v("。\n:::")],1),t._v(" "),v("p",[t._v("如果你已经"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动了一个全节点")]),t._v(",可以跳过下一节的内容。")],1),t._v(" "),v("h2",{attrs:{id:"创建你的验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建你的验证人"}},[t._v("#")]),t._v(" 创建你的验证人")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。你可以通过运行下面的命令来查看你的验证人公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("使用下面的命令创建你的验证人:")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tbWluLXNlbGYtZGVsZWdhdGlvbj0mcXVvdDsxMDAwMDAwJnF1b3Q7IFwKICAtLWdhcz0mcXVvdDthdXRvJnF1b3Q7IFwKICAtLWdhcy1wcmljZXM9JnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7Cg=="}}),t._v(" "),v("p",[t._v("::: 提示\n在指定commission参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于度量"),v("code",[t._v("commission-rate")]),t._v("的百分比点数的变化。比如,1%到2%增长了100%,但反映到"),v("code",[t._v("commission-rate")]),t._v("上只有1个百分点。\n:::")]),t._v(" "),v("p",[t._v("::: 提示\n如果没有指定,"),v("code",[t._v("consensus_pubkey")]),t._v("将默认为"),v("code",[t._v("gaiad tendermint show-validator")]),t._v("命令的输出。"),v("code",[t._v("key_name")]),t._v("是将用于对交易进行签名的私钥的名称。\n:::")]),t._v(" "),v("p",[t._v("你可以在第三方区块链浏览器上确定你是否处于验证人行列。")]),t._v(" "),v("h2",{attrs:{id:"以初始验证人的形式加入到genesis文件"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#以初始验证人的形式加入到genesis文件"}},[t._v("#")]),t._v(" 以初始验证人的形式加入到genesis文件")]),t._v(" "),v("p",[t._v("::: 警告\n这一节内容只针对想要在Cosmos Hub主网启动前就作为初始验证人身份的节点。如果主网已经启动,请跳过这一节。\n:::")]),t._v(" "),v("p",[t._v("如果你想作为初始验证人被写入到genesis.json文件,你需要证明你在创世状态中有一些权益代币,创建一个(或多个)交易以将股权与你的验证人地址联系起来,并将此交易包含在genesis文件中。")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。运行如下命令来获取你的验证人节点公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("然后执行"),v("code",[t._v("gaiad gentx")]),t._v("命令:")]),t._v(" "),v("p",[t._v("::: 提示\n"),v("code",[t._v("gentx")]),t._v("是持有self-delegation的JSON文件。所有的创世交易会被"),v("code",[t._v("创世协调员")]),t._v("收集起来验证并初始化成一个"),v("code",[t._v("genesis.json")]),t._v("\n:::")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbl91YXRvbSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),v("p",[t._v("::: 提示\n在指定佣金相关的参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于标识"),v("code",[t._v("commission-rate")]),t._v("每日变动的最大百分点数。比如从1%到2%按比率是增长了100%,但只增加了1个百分点。\n:::")]),t._v(" "),v("p",[t._v("你可以提交你的"),v("code",[t._v("gentx")]),t._v("到"),v("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("launch repository"),v("OutboundLink")],1),t._v(". 这些"),v("code",[t._v("gentx")]),t._v("将会组成最终的genesis.json.")]),t._v(" "),v("h2",{attrs:{id:"编辑验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#编辑验证人的描述信息"}},[t._v("#")]),t._v(" 编辑验证人的描述信息")]),t._v(" "),v("p",[t._v("你可以编辑验证人的公开说明。此信息用于标识你的验证人节点,委托人将根据此信息来决定要委托的验证人节点。确保为下面的每个标识提供输入,否则该字段将默认为空( "),v("code",[t._v("--moniker")]),t._v("默认为机器名称)。")]),t._v(" "),v("p",[t._v("指定你要编辑的验证人。如果你选择不包含此标识,记住必须要含有--from标识来指定你要更新的验证人。")]),t._v(" "),v("p",[v("code",[t._v("--identity")]),t._v("可用于验证和Keybase或UPort这样的系统一起验证身份。与Keybase一起使用时,"),v("code",[t._v("--identity")]),t._v("应使用由一个"),v("a",{attrs:{href:"https://keybase.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),v("OutboundLink")],1),t._v("帐户生成的16位字符串。它是一种加密安全的方法,可以跨多个在线网络验证您的身份。 Keybase API允许我们检索你的Keybase头像。这是你可以在验证人配置文件中添加徽标的方法。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),v("p",[v("strong",[t._v("注意")]),t._v(" : "),v("code",[t._v("commission-rate")]),t._v("的值必须符合如下的不变量检查:")]),t._v(" "),v("ul",[v("li",[t._v("必须在 0 和 验证人的"),v("code",[t._v("commission-max-rate")]),t._v(" 之间")]),t._v(" "),v("li",[t._v("不得超过 验证人的"),v("code",[t._v("commission-max-change-rate")]),t._v(", 该参数标识"),v("strong",[t._v("每日")]),t._v("最大的百分点变化数。也就是,一个验证人在"),v("code",[t._v("commission-max-change-rate")]),t._v("的界限内每日一次可调整的最大佣金变化。")])]),t._v(" "),v("h2",{attrs:{id:"查看验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看验证人的描述信息"}},[t._v("#")]),t._v(" 查看验证人的描述信息")]),t._v(" "),v("p",[t._v("通过该命令查看验证人的描述信息:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"跟踪验证人的签名信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#跟踪验证人的签名信息"}},[t._v("#")]),t._v(" 跟踪验证人的签名信息")]),t._v(" "),v("p",[t._v("你可以通过"),v("code",[t._v("signing-info")]),t._v("命令跟踪过往的验证人签名:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),v("h2",{attrs:{id:"unjail验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#unjail验证人"}},[t._v("#")]),t._v(" unjail验证人")]),t._v(" "),v("p",[t._v('当验证人因停机而"jailed"(入狱)时,你必须用节点操作人帐户提交一笔'),v("code",[t._v("Unjail")]),t._v("交易,使其再次能够获得区块提交的奖励(奖励多少取决于分区的fee分配)。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"确认你的验证人节点正在运行"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#确认你的验证人节点正在运行"}},[t._v("#")]),t._v(" 确认你的验证人节点正在运行")]),t._v(" "),v("p",[t._v("如果下面的命令返回有内容就证明你的验证人正处于活跃状态:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),v("p",[t._v("你必须要在"),v("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("区块浏览器"),v("OutboundLink")],1),t._v("中看见你的验证人节点信息。你可以在"),v("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v("文件中找到"),v("code",[t._v("bech32")]),t._v("编码格式的"),v("code",[t._v("address")]),t._v("。")]),t._v(" "),v("div",{staticClass:"custom-block warning"},[v("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),v("p",[t._v("为了能进入验证人集合,你的权重必须超过第100名的验证人。")])]),t._v(" "),v("h2",{attrs:{id:"常见问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#常见问题"}},[t._v("#")]),t._v(" 常见问题")]),t._v(" "),v("h3",{attrs:{id:"问题-1-我的验证人的voting-power-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-1-我的验证人的voting-power-0"}},[t._v("#")]),t._v(" 问题 #1 : 我的验证人的"),v("code",[t._v("voting_power: 0")])]),t._v(" "),v("p",[t._v("你的验证人已经是jailed状态。如果验证人在最近"),v("code",[t._v("10000")]),t._v("个区块中有超过"),v("code",[t._v("500")]),t._v("个区块没有进行投票,或者被发现双签,就会被jail掉。")]),t._v(" "),v("p",[t._v("如果被因为掉线而遭到jail,你可以重获你的投票股权以重回验证人队伍。首先,如果"),v("code",[t._v("gaiad")]),t._v("没有运行,请再次启动:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),v("p",[t._v("等待你的全节点追赶上最新的区块高度。然后,运行如下命令。接着,你可以"),v("a",{attrs:{href:""}},[t._v("unjail你的验证人")]),t._v("。")]),t._v(" "),v("p",[t._v("最后,检查你的验证人看看投票股权是否恢复:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),v("p",[t._v("你可能会注意到你的投票权比之前要少。这是由于你的下线受到的削减处罚!")]),t._v(" "),v("h3",{attrs:{id:"问题-2-我的gaiad由于too-many-open-files而崩溃"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-2-我的gaiad由于too-many-open-files而崩溃"}},[t._v("#")]),t._v(" 问题 #2 : 我的"),v("code",[t._v("gaiad")]),t._v("由于"),v("code",[t._v("too many open files")]),t._v("而崩溃")]),t._v(" "),v("p",[t._v("Linux可以打开的默认文件数(每个进程)是1024。已知"),v("code",[t._v("gaiad")]),t._v("可以打开超过1024个文件。这会导致进程崩溃。快速修复运行"),v("code",[t._v("ulimit -n 4096")]),t._v("(增加允许的打开文件数)来快速修复,然后使用"),v("code",[t._v("gaiad start")]),t._v("重新启动进程。如果你使用"),v("code",[t._v("systemd")]),t._v("或其他进程管理器来启动"),v("code",[t._v("gaiad")]),t._v(",则可能需要在该级别进行一些配置。解决此问题的示例"),v("code",[t._v("systemd")]),t._v("文件如下:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[193],{541:function(t,a,v){"use strict";v.r(a);var e=v(1),s=Object(e.a)({},(function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"在主网上运行一个验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#在主网上运行一个验证人"}},[t._v("#")]),t._v(" 在主网上运行一个验证人")]),t._v(" "),v("p",[t._v("::: 提示\n加入主网所需的信息("),v("code",[t._v("genesis.json")]),t._v("和种子节点)在"),v("a",{attrs:{href:"https://github.com/cosmos/launch/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[v("code",[t._v("lauch")]),t._v(" repo"),v("OutboundLink")],1),t._v("中可以找到。\n:::")]),t._v(" "),v("p",[t._v("在启动你验证人节点前,确定你已经完成了"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动全节点")]),t._v("教程。")],1),t._v(" "),v("h2",{attrs:{id:"什么是验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[t._v("#")]),t._v(" 什么是验证人?")]),t._v(" "),v("p",[v("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人")]),t._v("负责通过投票来向区块链提交新区块。如果验证人不可访问或者对多个相同高度的区块签名,将会遭受到削减处罚。如果变得不可用或者在同一高度上签名,则会被削减。请阅读有关Sentry节点架构的信息,以保护您的节点免受DDOS攻击并确保高可用性。请阅读"),v("a",{attrs:{href:""}},[t._v("哨兵节点网络架构")]),t._v("来保护你的节点免于DDOS攻击并保证高的可访问性。")],1),t._v(" "),v("p",[t._v("::: 警告\n如果你想要成为Cosmos Hub主网的验证人,你应该"),v("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("安全研究")]),t._v("。\n:::")],1),t._v(" "),v("p",[t._v("如果你已经"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动了一个全节点")]),t._v(",可以跳过下一节的内容。")],1),t._v(" "),v("h2",{attrs:{id:"创建你的验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建你的验证人"}},[t._v("#")]),t._v(" 创建你的验证人")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。你可以通过运行下面的命令来查看你的验证人公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("使用下面的命令创建你的验证人:")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tbWluLXNlbGYtZGVsZWdhdGlvbj0mcXVvdDsxMDAwMDAwJnF1b3Q7IFwKICAtLWdhcz0mcXVvdDthdXRvJnF1b3Q7IFwKICAtLWdhcy1wcmljZXM9JnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7Cg=="}}),t._v(" "),v("p",[t._v("::: 提示\n在指定commission参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于度量"),v("code",[t._v("commission-rate")]),t._v("的百分比点数的变化。比如,1%到2%增长了100%,但反映到"),v("code",[t._v("commission-rate")]),t._v("上只有1个百分点。\n:::")]),t._v(" "),v("p",[t._v("::: 提示\n如果没有指定,"),v("code",[t._v("consensus_pubkey")]),t._v("将默认为"),v("code",[t._v("gaiad tendermint show-validator")]),t._v("命令的输出。"),v("code",[t._v("key_name")]),t._v("是将用于对交易进行签名的私钥的名称。\n:::")]),t._v(" "),v("p",[t._v("你可以在第三方区块链浏览器上确定你是否处于验证人行列。")]),t._v(" "),v("h2",{attrs:{id:"以初始验证人的形式加入到genesis文件"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#以初始验证人的形式加入到genesis文件"}},[t._v("#")]),t._v(" 以初始验证人的形式加入到genesis文件")]),t._v(" "),v("p",[t._v("::: 警告\n这一节内容只针对想要在Cosmos Hub主网启动前就作为初始验证人身份的节点。如果主网已经启动,请跳过这一节。\n:::")]),t._v(" "),v("p",[t._v("如果你想作为初始验证人被写入到genesis.json文件,你需要证明你在创世状态中有一些权益代币,创建一个(或多个)交易以将股权与你的验证人地址联系起来,并将此交易包含在genesis文件中。")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。运行如下命令来获取你的验证人节点公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("然后执行"),v("code",[t._v("gaiad gentx")]),t._v("命令:")]),t._v(" "),v("p",[t._v("::: 提示\n"),v("code",[t._v("gentx")]),t._v("是持有self-delegation的JSON文件。所有的创世交易会被"),v("code",[t._v("创世协调员")]),t._v("收集起来验证并初始化成一个"),v("code",[t._v("genesis.json")]),t._v("\n:::")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbl91YXRvbSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),v("p",[t._v("::: 提示\n在指定佣金相关的参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于标识"),v("code",[t._v("commission-rate")]),t._v("每日变动的最大百分点数。比如从1%到2%按比率是增长了100%,但只增加了1个百分点。\n:::")]),t._v(" "),v("p",[t._v("你可以提交你的"),v("code",[t._v("gentx")]),t._v("到"),v("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("launch repository"),v("OutboundLink")],1),t._v(". 这些"),v("code",[t._v("gentx")]),t._v("将会组成最终的genesis.json.")]),t._v(" "),v("h2",{attrs:{id:"编辑验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#编辑验证人的描述信息"}},[t._v("#")]),t._v(" 编辑验证人的描述信息")]),t._v(" "),v("p",[t._v("你可以编辑验证人的公开说明。此信息用于标识你的验证人节点,委托人将根据此信息来决定要委托的验证人节点。确保为下面的每个标识提供输入,否则该字段将默认为空( "),v("code",[t._v("--moniker")]),t._v("默认为机器名称)。")]),t._v(" "),v("p",[t._v("指定你要编辑的验证人。如果你选择不包含此标识,记住必须要含有--from标识来指定你要更新的验证人。")]),t._v(" "),v("p",[v("code",[t._v("--identity")]),t._v("可用于验证和Keybase或UPort这样的系统一起验证身份。与Keybase一起使用时,"),v("code",[t._v("--identity")]),t._v("应使用由一个"),v("a",{attrs:{href:"https://keybase.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),v("OutboundLink")],1),t._v("帐户生成的16位字符串。它是一种加密安全的方法,可以跨多个在线网络验证您的身份。 Keybase API允许我们检索你的Keybase头像。这是你可以在验证人配置文件中添加徽标的方法。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),v("p",[v("strong",[t._v("注意")]),t._v(" : "),v("code",[t._v("commission-rate")]),t._v("的值必须符合如下的不变量检查:")]),t._v(" "),v("ul",[v("li",[t._v("必须在 0 和 验证人的"),v("code",[t._v("commission-max-rate")]),t._v(" 之间")]),t._v(" "),v("li",[t._v("不得超过 验证人的"),v("code",[t._v("commission-max-change-rate")]),t._v(", 该参数标识"),v("strong",[t._v("每日")]),t._v("最大的百分点变化数。也就是,一个验证人在"),v("code",[t._v("commission-max-change-rate")]),t._v("的界限内每日一次可调整的最大佣金变化。")])]),t._v(" "),v("h2",{attrs:{id:"查看验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看验证人的描述信息"}},[t._v("#")]),t._v(" 查看验证人的描述信息")]),t._v(" "),v("p",[t._v("通过该命令查看验证人的描述信息:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"跟踪验证人的签名信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#跟踪验证人的签名信息"}},[t._v("#")]),t._v(" 跟踪验证人的签名信息")]),t._v(" "),v("p",[t._v("你可以通过"),v("code",[t._v("signing-info")]),t._v("命令跟踪过往的验证人签名:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),v("h2",{attrs:{id:"unjail验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#unjail验证人"}},[t._v("#")]),t._v(" unjail验证人")]),t._v(" "),v("p",[t._v('当验证人因停机而"jailed"(入狱)时,你必须用节点操作人帐户提交一笔'),v("code",[t._v("Unjail")]),t._v("交易,使其再次能够获得区块提交的奖励(奖励多少取决于分区的fee分配)。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"确认你的验证人节点正在运行"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#确认你的验证人节点正在运行"}},[t._v("#")]),t._v(" 确认你的验证人节点正在运行")]),t._v(" "),v("p",[t._v("如果下面的命令返回有内容就证明你的验证人正处于活跃状态:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),v("p",[t._v("你必须要在"),v("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("区块浏览器"),v("OutboundLink")],1),t._v("中看见你的验证人节点信息。你可以在"),v("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v("文件中找到"),v("code",[t._v("bech32")]),t._v("编码格式的"),v("code",[t._v("address")]),t._v("。")]),t._v(" "),v("div",{staticClass:"custom-block warning"},[v("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),v("p",[t._v("为了能进入验证人集合,你的权重必须超过第100名的验证人。")])]),t._v(" "),v("h2",{attrs:{id:"常见问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#常见问题"}},[t._v("#")]),t._v(" 常见问题")]),t._v(" "),v("h3",{attrs:{id:"问题-1-我的验证人的voting-power-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-1-我的验证人的voting-power-0"}},[t._v("#")]),t._v(" 问题 #1 : 我的验证人的"),v("code",[t._v("voting_power: 0")])]),t._v(" "),v("p",[t._v("你的验证人已经是jailed状态。如果验证人在最近"),v("code",[t._v("10000")]),t._v("个区块中有超过"),v("code",[t._v("500")]),t._v("个区块没有进行投票,或者被发现双签,就会被jail掉。")]),t._v(" "),v("p",[t._v("如果被因为掉线而遭到jail,你可以重获你的投票股权以重回验证人队伍。首先,如果"),v("code",[t._v("gaiad")]),t._v("没有运行,请再次启动:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),v("p",[t._v("等待你的全节点追赶上最新的区块高度。然后,运行如下命令。接着,你可以"),v("a",{attrs:{href:""}},[t._v("unjail你的验证人")]),t._v("。")]),t._v(" "),v("p",[t._v("最后,检查你的验证人看看投票股权是否恢复:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),v("p",[t._v("你可能会注意到你的投票权比之前要少。这是由于你的下线受到的削减处罚!")]),t._v(" "),v("h3",{attrs:{id:"问题-2-我的gaiad由于too-many-open-files而崩溃"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-2-我的gaiad由于too-many-open-files而崩溃"}},[t._v("#")]),t._v(" 问题 #2 : 我的"),v("code",[t._v("gaiad")]),t._v("由于"),v("code",[t._v("too many open files")]),t._v("而崩溃")]),t._v(" "),v("p",[t._v("Linux可以打开的默认文件数(每个进程)是1024。已知"),v("code",[t._v("gaiad")]),t._v("可以打开超过1024个文件。这会导致进程崩溃。快速修复运行"),v("code",[t._v("ulimit -n 4096")]),t._v("(增加允许的打开文件数)来快速修复,然后使用"),v("code",[t._v("gaiad start")]),t._v("重新启动进程。如果你使用"),v("code",[t._v("systemd")]),t._v("或其他进程管理器来启动"),v("code",[t._v("gaiad")]),t._v(",则可能需要在该级别进行一些配置。解决此问题的示例"),v("code",[t._v("systemd")]),t._v("文件如下:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/22.0b07be8f.js b/main/assets/js/22.72993d08.js similarity index 98% rename from main/assets/js/22.0b07be8f.js rename to main/assets/js/22.72993d08.js index 1ed7d249c33..cc430ab6f6b 100644 --- a/main/assets/js/22.0b07be8f.js +++ b/main/assets/js/22.72993d08.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{415:function(t,e,i){},444:function(t,e,i){"use strict";i(415)},448:function(t,e,i){"use strict";i.r(e);i(57);var n=i(10),r=i(14),o=i.n(r),a={name:"tm-sidebar-tree",props:["value","title","tree","level"],data:function(){return{show:null}},mounted(){Object(n.find)(this.value,["key",this.$page.key])&&this.$emit("active",this.title)},watch:{$route(t,e){Object(n.find)(this.value,["key",t.name])&&this.revealParent(this.title)}},methods:{hide(t){const e=this.indexFile(t),i=t.frontmatter&&!1===t.frontmatter.order;return e&&e.frontmatter&&e.frontmatter.parent&&!1===e.frontmatter.parent.order||i},iconCollapsed(t){return!(!t.directory||this.iconExpanded(t))||!t.path&&this.show!=t.title&&(t.children||t.directory)},iconExpanded(t){return this.show==t.title&&!t.key},iconActive(t){return""!==this.$page.path&&(t.path==this.$page.path||t.key==this.$page.key)},outboundLink:t=>/^[a-z]+:/i.test(t),isInternalLink(t){return t.path&&!t.directory&&!t.static&&!this.outboundLink(t.path)},isOutboundLink(t){return t.path&&this.outboundLink(t.path)||t.static},handleEnter(t){console.log("enter"),this.revealChild(t.title)},componentName(t){return this.isInternalLink(t)?"router-link":(this.isOutboundLink(t),"a")},indexFile:t=>!!t.children&&Object(n.find)(t.children,t=>{const e=t.relativePath;return!!e&&(e.toLowerCase().match(/index.md$/i)||e.toLowerCase().match(/readme.md$/i))}),setHeight(t){t.style.setProperty("--max-height",t.scrollHeight+"px")},titleFormatted:t=>`
${new o.a({html:!0,linkify:!0}).renderInline(t)}
`,titleText(t){const e=this.indexFile(t);return t.frontmatter?t.frontmatter.title||t.title:e?e.frontmatter&&e.frontmatter.parent&&e.frontmatter.parent.title?e.frontmatter.parent.title:e.title.match(/readme\.md/i)||e.title.match(/index\.md/i)?t.title:e.title:t.title},revealChild(t){this.show=this.show==t?null:t},revealParent(t){this.show=t,this.$emit("active",this.title)},directoryChildren(t){if(!0===t.directory){let e=t.path&&t.path.split("/").filter(t=>""!=t);return e=e.reduce((t,e)=>Object(n.find)(t.children||t,["title",e]),this.tree),e.children||[]}return[]}}},l=(i(444),i(1)),s=Object(l.a)(a,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",t._l(t.value,(function(e){return i("div",[t.hide(e)?t._e():i(t.componentName(e),{tag:"component",staticClass:"item",class:[t.level>0&&"item__child",{item__dir:!e.path}],style:{"--vline":t.level<1?"hidden":"visible","--vline-color":!t.iconActive(e)&&!t.iconExpanded(e)||t.iconExpanded(e)?"rgba(0,0,0,0.1)":"var(--color-primary)"},attrs:{to:e.path,target:t.outboundLink(e.path)&&"_blank",rel:t.outboundLink(e.path)&&"noreferrer noopener",href:t.outboundLink(e.path)||e.static?e.path:"#",tag:"a",role:!e.path&&"button"},on:{keydown:function(i){return!i.type.indexOf("key")&&t._k(i.keyCode,"enter",13,i.key,"Enter")?null:t.handleEnter(e)},click:function(i){!t.outboundLink(e.path)&&t.revealChild(e.title)}}},[t.iconExpanded(e)&&t.level<1?i("tm-icon-hex",{staticClass:"item__icon item__icon__expanded",staticStyle:{"--icon-color":"var(--color-primary, blue)"}}):t._e(),t.iconCollapsed(e)&&t.level<1?i("tm-icon-hex",{staticClass:"item__icon item__icon__collapsed",staticStyle:{"--icon-color":"rgba(0,0,0,0.18)"}}):!t.outboundLink(e.path)&&t.level<1&&!t.iconExpanded(e)?i("tm-icon-hex",{staticClass:"item__icon item__icon__internal"}):t.outboundLink(e.path)||e.static?i("tm-icon-outbound",{staticClass:"item__icon item__icon__outbound"}):t._e(),i("div",{class:{item__selected:t.iconActive(e)||t.iconExpanded(e),item__selected__dir:t.iconCollapsed(e),item__selected__alt:t.iconExpanded(e)},style:{"padding-left":1*t.level+"rem"},domProps:{innerHTML:t._s(t.titleFormatted(t.titleText(e)))}})],1),(e.children||t.directoryChildren(e),i("div",[i("transition",{attrs:{name:"reveal"},on:{enter:t.setHeight,leave:t.setHeight}},[t.hide(e)?t._e():i("tm-sidebar-tree",{directives:[{name:"show",rawName:"v-show",value:e.title==t.show,expression:"item.title == show"}],attrs:{level:t.level+1,value:e.children||t.directoryChildren(e)||[],title:e.title},on:{active:function(e){return t.revealParent(e)}}})],1)],1))],1)})),0)}),[],!1,null,"15b24446",null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{415:function(t,e,i){},444:function(t,e,i){"use strict";i(415)},460:function(t,e,i){"use strict";i.r(e);i(57);var n=i(10),r=i(14),o=i.n(r),a={name:"tm-sidebar-tree",props:["value","title","tree","level"],data:function(){return{show:null}},mounted(){Object(n.find)(this.value,["key",this.$page.key])&&this.$emit("active",this.title)},watch:{$route(t,e){Object(n.find)(this.value,["key",t.name])&&this.revealParent(this.title)}},methods:{hide(t){const e=this.indexFile(t),i=t.frontmatter&&!1===t.frontmatter.order;return e&&e.frontmatter&&e.frontmatter.parent&&!1===e.frontmatter.parent.order||i},iconCollapsed(t){return!(!t.directory||this.iconExpanded(t))||!t.path&&this.show!=t.title&&(t.children||t.directory)},iconExpanded(t){return this.show==t.title&&!t.key},iconActive(t){return""!==this.$page.path&&(t.path==this.$page.path||t.key==this.$page.key)},outboundLink:t=>/^[a-z]+:/i.test(t),isInternalLink(t){return t.path&&!t.directory&&!t.static&&!this.outboundLink(t.path)},isOutboundLink(t){return t.path&&this.outboundLink(t.path)||t.static},handleEnter(t){console.log("enter"),this.revealChild(t.title)},componentName(t){return this.isInternalLink(t)?"router-link":(this.isOutboundLink(t),"a")},indexFile:t=>!!t.children&&Object(n.find)(t.children,t=>{const e=t.relativePath;return!!e&&(e.toLowerCase().match(/index.md$/i)||e.toLowerCase().match(/readme.md$/i))}),setHeight(t){t.style.setProperty("--max-height",t.scrollHeight+"px")},titleFormatted:t=>`
${new o.a({html:!0,linkify:!0}).renderInline(t)}
`,titleText(t){const e=this.indexFile(t);return t.frontmatter?t.frontmatter.title||t.title:e?e.frontmatter&&e.frontmatter.parent&&e.frontmatter.parent.title?e.frontmatter.parent.title:e.title.match(/readme\.md/i)||e.title.match(/index\.md/i)?t.title:e.title:t.title},revealChild(t){this.show=this.show==t?null:t},revealParent(t){this.show=t,this.$emit("active",this.title)},directoryChildren(t){if(!0===t.directory){let e=t.path&&t.path.split("/").filter(t=>""!=t);return e=e.reduce((t,e)=>Object(n.find)(t.children||t,["title",e]),this.tree),e.children||[]}return[]}}},l=(i(444),i(1)),s=Object(l.a)(a,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",t._l(t.value,(function(e){return i("div",[t.hide(e)?t._e():i(t.componentName(e),{tag:"component",staticClass:"item",class:[t.level>0&&"item__child",{item__dir:!e.path}],style:{"--vline":t.level<1?"hidden":"visible","--vline-color":!t.iconActive(e)&&!t.iconExpanded(e)||t.iconExpanded(e)?"rgba(0,0,0,0.1)":"var(--color-primary)"},attrs:{to:e.path,target:t.outboundLink(e.path)&&"_blank",rel:t.outboundLink(e.path)&&"noreferrer noopener",href:t.outboundLink(e.path)||e.static?e.path:"#",tag:"a",role:!e.path&&"button"},on:{keydown:function(i){return!i.type.indexOf("key")&&t._k(i.keyCode,"enter",13,i.key,"Enter")?null:t.handleEnter(e)},click:function(i){!t.outboundLink(e.path)&&t.revealChild(e.title)}}},[t.iconExpanded(e)&&t.level<1?i("tm-icon-hex",{staticClass:"item__icon item__icon__expanded",staticStyle:{"--icon-color":"var(--color-primary, blue)"}}):t._e(),t.iconCollapsed(e)&&t.level<1?i("tm-icon-hex",{staticClass:"item__icon item__icon__collapsed",staticStyle:{"--icon-color":"rgba(0,0,0,0.18)"}}):!t.outboundLink(e.path)&&t.level<1&&!t.iconExpanded(e)?i("tm-icon-hex",{staticClass:"item__icon item__icon__internal"}):t.outboundLink(e.path)||e.static?i("tm-icon-outbound",{staticClass:"item__icon item__icon__outbound"}):t._e(),i("div",{class:{item__selected:t.iconActive(e)||t.iconExpanded(e),item__selected__dir:t.iconCollapsed(e),item__selected__alt:t.iconExpanded(e)},style:{"padding-left":1*t.level+"rem"},domProps:{innerHTML:t._s(t.titleFormatted(t.titleText(e)))}})],1),(e.children||t.directoryChildren(e),i("div",[i("transition",{attrs:{name:"reveal"},on:{enter:t.setHeight,leave:t.setHeight}},[t.hide(e)?t._e():i("tm-sidebar-tree",{directives:[{name:"show",rawName:"v-show",value:e.title==t.show,expression:"item.title == show"}],attrs:{level:t.level+1,value:e.children||t.directoryChildren(e)||[],title:e.title},on:{active:function(e){return t.revealParent(e)}}})],1)],1))],1)})),0)}),[],!1,null,"15b24446",null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/23.8a6e8ece.js b/main/assets/js/23.fa476110.js similarity index 91% rename from main/assets/js/23.8a6e8ece.js rename to main/assets/js/23.fa476110.js index 905151e2c9f..c61a7ff3c1f 100644 --- a/main/assets/js/23.8a6e8ece.js +++ b/main/assets/js/23.fa476110.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{416:function(t,e,i){},445:function(t,e,i){"use strict";i(416)},470:function(t,e,i){"use strict";i.r(e);var n={methods:{goto(t){location.replace("#"+t),location.replace("#"+t),this.$emit("visible",!1),this.$emit("toc",!1)}}},s=(i(445),i(1)),c=Object(s.a)(n,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("div",{staticClass:"menu__item__modal__title"},[t._v("On this page")]),t._l(t.$page.headers,(function(e){return e.title.match(/{hide}/i)?t._e():i("div",{staticClass:"menu__item__modal__item",attrs:{tabindex:"0"},on:{click:function(i){return t.goto(e.slug)}}},[t._v(t._s(e.title))])}))],2)}),[],!1,null,"1919b5c7",null);e.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{416:function(t,e,i){},445:function(t,e,i){"use strict";i(416)},448:function(t,e,i){"use strict";i.r(e);var n={methods:{goto(t){location.replace("#"+t),location.replace("#"+t),this.$emit("visible",!1),this.$emit("toc",!1)}}},s=(i(445),i(1)),c=Object(s.a)(n,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("div",{staticClass:"menu__item__modal__title"},[t._v("On this page")]),t._l(t.$page.headers,(function(e){return e.title.match(/{hide}/i)?t._e():i("div",{staticClass:"menu__item__modal__item",attrs:{tabindex:"0"},on:{click:function(i){return t.goto(e.slug)}}},[t._v(t._s(e.title))])}))],2)}),[],!1,null,"1919b5c7",null);e.default=c.exports}}]); \ No newline at end of file diff --git a/main/assets/js/24.ea5052f5.js b/main/assets/js/24.d4dfe19d.js similarity index 95% rename from main/assets/js/24.ea5052f5.js rename to main/assets/js/24.d4dfe19d.js index 49b1c57a67f..61c3e462fb9 100644 --- a/main/assets/js/24.ea5052f5.js +++ b/main/assets/js/24.d4dfe19d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{417:function(e,t,n){},446:function(e,t,n){"use strict";n(417)},458:function(e,t,n){"use strict";n.r(t);var s=n(56),r={props:["topBanner"],data:()=>({show:null}),mounted(){s.a("top-banner-hidden",!1)?this.show=!1:this.show=!0},methods:{close(){this.show=!1,s.b("top-banner-hidden",!0,{expires:"7D"})},beforeLeave(e){e.style.marginTop=`-${e.offsetHeight}px`}}},o=(n(446),n(1)),a=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.$themeConfig.topbar.banner&&!0===e.$themeConfig.topbar.banner&&!e.$themeConfig.custom?n("div",[n("transition",{attrs:{name:"fade",appear:""},on:{"before-leave":e.beforeLeave}},[e.show?n("div",{staticClass:"banner"},[n("a",{staticClass:"banner__content",attrs:{href:e.topBanner.url,target:"_blank",rel:"noreferrer noopener"},domProps:{innerHTML:e._s(e.md(e.topBanner.content))}}),n("a",{staticClass:"banner__dismiss",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.close(t)}}},[n("div",{staticClass:"banner__dismiss__icon"},[n("svg",{attrs:{width:"16",height:"16",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1.66669 1.66669L12.3334 12.3334M12.3334 1.66669L1.66664 12.3334",stroke:"black","stroke-width":"1.5","stroke-linecap":"round"}})])])])]):e._e()])],1):e._e()}),[],!1,null,"1f736804",null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{417:function(e,t,n){},446:function(e,t,n){"use strict";n(417)},470:function(e,t,n){"use strict";n.r(t);var s=n(56),r={props:["topBanner"],data:()=>({show:null}),mounted(){s.a("top-banner-hidden",!1)?this.show=!1:this.show=!0},methods:{close(){this.show=!1,s.b("top-banner-hidden",!0,{expires:"7D"})},beforeLeave(e){e.style.marginTop=`-${e.offsetHeight}px`}}},o=(n(446),n(1)),a=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.$themeConfig.topbar.banner&&!0===e.$themeConfig.topbar.banner&&!e.$themeConfig.custom?n("div",[n("transition",{attrs:{name:"fade",appear:""},on:{"before-leave":e.beforeLeave}},[e.show?n("div",{staticClass:"banner"},[n("a",{staticClass:"banner__content",attrs:{href:e.topBanner.url,target:"_blank",rel:"noreferrer noopener"},domProps:{innerHTML:e._s(e.md(e.topBanner.content))}}),n("a",{staticClass:"banner__dismiss",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.close(t)}}},[n("div",{staticClass:"banner__dismiss__icon"},[n("svg",{attrs:{width:"16",height:"16",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1.66669 1.66669L12.3334 12.3334M12.3334 1.66669L1.66664 12.3334",stroke:"black","stroke-width":"1.5","stroke-linecap":"round"}})])])])]):e._e()])],1):e._e()}),[],!1,null,"1f736804",null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/25.1ed3f45c.js b/main/assets/js/25.b887fb63.js similarity index 94% rename from main/assets/js/25.1ed3f45c.js rename to main/assets/js/25.b887fb63.js index 5992cd72b3e..22f0a0fcd87 100644 --- a/main/assets/js/25.1ed3f45c.js +++ b/main/assets/js/25.b887fb63.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{418:function(t,s,i){},447:function(t,s,i){"use strict";i(418)},507:function(t,s,i){"use strict";i.r(s);i(447);var o=i(1),a=Object(o.a)({},(function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",[i("div",{staticClass:"container"},[i("div",{staticClass:"menu",on:{click:function(s){return t.$emit("sidebar",!0)}}},[i("div",{staticClass:"menu__icon"},[i("tm-icon-menu",{attrs:{stroke:"#888"}})],1)]),i("div",{staticClass:"logo"},[i("router-link",{staticClass:"logo__wrapper",attrs:{to:"/",tag:"div"}},[t.$themeConfig.logo&&t.$themeConfig.logo.src?i("div",{staticClass:"logo__image__custom"},[i("img",{staticClass:"logo__image__custom__img",attrs:{src:t.$themeConfig.logo.src}})]):i("div",{staticClass:"logo__image"},[i("tm-logo-"+(t.$themeConfig.label||"sdk"),{tag:"component"})],1),t.$themeConfig.logo?t._e():i("div",{staticClass:"logo__text"},[t._v(t._s(t.$site.title))])])],1),i("div",{staticClass:"toolbar",on:{click:function(s){return t.$emit("search",!0)}}},[i("div",{staticClass:"toolbar__item"},[i("div",{staticClass:"toolbar__item__icon"},[i("icon-search",{attrs:{fill:"#888"}})],1)])])])])}),[],!1,null,"19189c02",null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{418:function(t,s,i){},447:function(t,s,i){"use strict";i(418)},611:function(t,s,i){"use strict";i.r(s);i(447);var o=i(1),a=Object(o.a)({},(function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",[i("div",{staticClass:"container"},[i("div",{staticClass:"menu",on:{click:function(s){return t.$emit("sidebar",!0)}}},[i("div",{staticClass:"menu__icon"},[i("tm-icon-menu",{attrs:{stroke:"#888"}})],1)]),i("div",{staticClass:"logo"},[i("router-link",{staticClass:"logo__wrapper",attrs:{to:"/",tag:"div"}},[t.$themeConfig.logo&&t.$themeConfig.logo.src?i("div",{staticClass:"logo__image__custom"},[i("img",{staticClass:"logo__image__custom__img",attrs:{src:t.$themeConfig.logo.src}})]):i("div",{staticClass:"logo__image"},[i("tm-logo-"+(t.$themeConfig.label||"sdk"),{tag:"component"})],1),t.$themeConfig.logo?t._e():i("div",{staticClass:"logo__text"},[t._v(t._s(t.$site.title))])])],1),i("div",{staticClass:"toolbar",on:{click:function(s){return t.$emit("search",!0)}}},[i("div",{staticClass:"toolbar__item"},[i("div",{staticClass:"toolbar__item__icon"},[i("icon-search",{attrs:{fill:"#888"}})],1)])])])])}),[],!1,null,"19189c02",null);s.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/26.3e9e428e.js b/main/assets/js/26.3e9e428e.js new file mode 100644 index 00000000000..c607dcedefd --- /dev/null +++ b/main/assets/js/26.3e9e428e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{421:function(e,t,r){e.exports=r.p+"assets/img/cosmos-hub-image.37c9b2c3.jpg"},584:function(e,t,r){"use strict";r.r(t);var o=r(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("div",{staticClass:"custom-block warning"},[o("h3",{attrs:{id:"v12-upgrade"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#v12-upgrade"}},[e._v("#")]),e._v(" "),o("strong",[e._v("v12 Upgrade")])]),e._v(" "),o("p",[e._v("Cosmos Hub will be upgraded to "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v12"),o("OutboundLink")],1),e._v(" at block height: "),o("strong",[o("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/16985500",target:"_blank",rel:"noopener noreferrer"}},[e._v("16,985,500"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("To upgrade from v11 check the "),o("RouterLink",{attrs:{to:"/migration/cosmoshub-4-v12-upgrade.html"}},[o("strong",[e._v("upgrade guide")])])],1)]),e._v(" "),o("p",[o("img",{attrs:{src:r(421),alt:"Welcome to the Cosmos Hub"}})]),e._v(" "),o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("The Cosmos Hub is the first of "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("thousands of interconnected blockchains"),o("OutboundLink")],1),e._v(" that will eventually comprise the "),o("strong",[e._v("Cosmos Network")]),e._v(". The primary token of the Cosmos Hub is the "),o("strong",[e._v("ATOM")]),e._v(", but the Hub will support many tokens in the future.")]),e._v(" "),o("h2",{attrs:{id:"the-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-atom"}},[e._v("#")]),e._v(" The ATOM")]),e._v(" "),o("p",[e._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.")]),e._v(" "),o("p",[e._v("Learn more about "),o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("being a delegator")]),e._v(", learn about "),o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[e._v("the security risks")]),e._v(", and start participating with one of the following wallets.")],1),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-wallets"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-wallets"}},[e._v("#")]),e._v(" Cosmos Hub Wallets")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._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.")])]),e._v(" "),o("p",[e._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.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomicwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Atomic Wallet"),o("OutboundLink")],1),e._v(" - Android, Linux, macOS, Windows")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://citadel.one/#mobile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel.One"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cobo.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cobo"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.cosmostation.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmostation"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://crypto.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto.com"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.huobiwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Huobi Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://app.shapeshift.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ShapeShift Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://token.im/",target:"_blank",rel:"noopener noreferrer"}},[e._v("imToken"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://wallet.keplr.app",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),o("OutboundLink")],1),e._v(" - Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.ledger.com/cosmos-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger"),o("OutboundLink")],1),e._v(" - Hardware")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),o("OutboundLink")],1),e._v(" - Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.mathwallet.org/en/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Math Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS, Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.rainbow.one",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rainbow Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://trustwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Trust Wallet"),o("OutboundLink")],1),e._v(" Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.wetez.io/pc/homepage",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wetez"),o("OutboundLink")],1),e._v(" - Android, iOS")])]),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-explorers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-explorers"}},[e._v("#")]),e._v(" Cosmos Hub Explorers")]),e._v(" "),o("p",[e._v("These block explorers allow you to search, view and analyze Cosmos Hub data—like blocks, transactions, validators, etc.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://anthem.chorus.one",target:"_blank",rel:"noopener noreferrer"}},[e._v("Anthem"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://atomscan.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("ATOMScan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://genesislab.net",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Overview"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoscan.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmoscan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoshub.iobscan.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IOBScan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.ping.pub",target:"_blank",rel:"noopener noreferrer"}},[e._v("LOOK Explorer"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://mintscan.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://union.market/token/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Union Market"),o("OutboundLink")],1)])]),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-cli"}},[e._v("#")]),e._v(" Cosmos Hub CLI")]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(" is a command-line interface that lets you interact with the Cosmos Hub. "),o("code",[e._v("gaiad")]),e._v(" is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about "),o("code",[e._v("gaiad")]),e._v(" with the "),o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("delegator's CLI guide")]),e._v(".")],1),e._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"}},[e._v("#")]),e._v(" Running a full-node on the Cosmos Hub Mainnet")]),e._v(" "),o("p",[e._v("In order to run a full-node for the Cosmos Hub mainnet, you must first "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("install "),o("code",[e._v("gaiad")])]),e._v(". Then, follow "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("the guide")]),e._v(".")],1),e._v(" "),o("p",[e._v("If you are looking to run a validator node, follow the "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("validator setup guide")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"join-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the Community")]),e._v(" "),o("p",[e._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"}},[e._v("latest events"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Discord"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Telegram"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Governance Working Group Telegram"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos on Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._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"}},[e._v("cosmos.network"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/26.cf12e4aa.js b/main/assets/js/26.cf12e4aa.js deleted file mode 100644 index cd3fe079168..00000000000 --- a/main/assets/js/26.cf12e4aa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{421:function(e,t,r){e.exports=r.p+"assets/img/cosmos-hub-image.37c9b2c3.jpg"},579:function(e,t,r){"use strict";r.r(t);var o=r(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("div",{staticClass:"custom-block warning"},[o("h3",{attrs:{id:"v11-upgrade"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#v11-upgrade"}},[e._v("#")]),e._v(" "),o("strong",[e._v("v11 Upgrade")])]),e._v(" "),o("p",[e._v("Cosmos Hub will be upgraded to "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11"),o("OutboundLink")],1),e._v(" at block height: "),o("strong",[e._v("16,596,000")])]),e._v(" "),o("p",[e._v("To upgrade from v10 check the "),o("RouterLink",{attrs:{to:"/migration/cosmoshub-4-v11-upgrade.html"}},[o("strong",[e._v("upgrade guide")])])],1)]),e._v(" "),o("p",[o("img",{attrs:{src:r(421),alt:"Welcome to the Cosmos Hub"}})]),e._v(" "),o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("The Cosmos Hub is the first of "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("thousands of interconnected blockchains"),o("OutboundLink")],1),e._v(" that will eventually comprise the "),o("strong",[e._v("Cosmos Network")]),e._v(". The primary token of the Cosmos Hub is the "),o("strong",[e._v("ATOM")]),e._v(", but the Hub will support many tokens in the future.")]),e._v(" "),o("h2",{attrs:{id:"the-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-atom"}},[e._v("#")]),e._v(" The ATOM")]),e._v(" "),o("p",[e._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 125 validators on the Cosmos Hub blockchain to earn more ATOM through Proof-of-Stake. You can also vote with your ATOM to influence the future of the Cosmos Hub through on-chain governance proposals.")]),e._v(" "),o("p",[e._v("Learn more about "),o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("being a delegator")]),e._v(", learn about "),o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[e._v("the security risks")]),e._v(", and start participating with one of the following wallets.")],1),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-wallets"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-wallets"}},[e._v("#")]),e._v(" Cosmos Hub Wallets")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._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.")])]),e._v(" "),o("p",[e._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.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomicwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Atomic Wallet"),o("OutboundLink")],1),e._v(" - Android, Linux, macOS, Windows")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://citadel.one/#mobile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel.One"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cobo.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cobo"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.cosmostation.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmostation"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://crypto.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crypto.com"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.huobiwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Huobi Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://app.shapeshift.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ShapeShift Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://token.im/",target:"_blank",rel:"noopener noreferrer"}},[e._v("imToken"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://wallet.keplr.app",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),o("OutboundLink")],1),e._v(" - Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.ledger.com/cosmos-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger"),o("OutboundLink")],1),e._v(" - Hardware")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),o("OutboundLink")],1),e._v(" - Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.mathwallet.org/en/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Math Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS, Web")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.rainbow.one",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rainbow Wallet"),o("OutboundLink")],1),e._v(" - Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://trustwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Trust Wallet"),o("OutboundLink")],1),e._v(" Android, iOS")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://www.wetez.io/pc/homepage",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wetez"),o("OutboundLink")],1),e._v(" - Android, iOS")])]),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-explorers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-explorers"}},[e._v("#")]),e._v(" Cosmos Hub Explorers")]),e._v(" "),o("p",[e._v("These block explorers allow you to search, view and analyze Cosmos Hub data—like blocks, transactions, validators, etc.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://anthem.chorus.one",target:"_blank",rel:"noopener noreferrer"}},[e._v("Anthem"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://atomscan.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("ATOMScan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://genesislab.net",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Overview"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoscan.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmoscan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoshub.iobscan.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IOBScan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.ping.pub",target:"_blank",rel:"noopener noreferrer"}},[e._v("LOOK Explorer"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://mintscan.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://union.market/token/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Union Market"),o("OutboundLink")],1)])]),e._v(" "),o("h2",{attrs:{id:"cosmos-hub-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-cli"}},[e._v("#")]),e._v(" Cosmos Hub CLI")]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(" is a command-line interface that lets you interact with the Cosmos Hub. "),o("code",[e._v("gaiad")]),e._v(" is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about "),o("code",[e._v("gaiad")]),e._v(" with the "),o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("delegator's CLI guide")]),e._v(".")],1),e._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"}},[e._v("#")]),e._v(" Running a full-node on the Cosmos Hub Mainnet")]),e._v(" "),o("p",[e._v("In order to run a full-node for the Cosmos Hub mainnet, you must first "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("install "),o("code",[e._v("gaiad")])]),e._v(". Then, follow "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("the guide")]),e._v(".")],1),e._v(" "),o("p",[e._v("If you are looking to run a validator node, follow the "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("validator setup guide")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"join-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the Community")]),e._v(" "),o("p",[e._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"}},[e._v("latest events"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Discord"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Community Telegram"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Governance Working Group Telegram"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos on Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._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"}},[e._v("cosmos.network"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/28.4a6fa868.js b/main/assets/js/28.b89fba5f.js similarity index 74% rename from main/assets/js/28.4a6fa868.js rename to main/assets/js/28.b89fba5f.js index 749e70b1a75..96e3a3e2557 100644 --- a/main/assets/js/28.4a6fa868.js +++ b/main/assets/js/28.b89fba5f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{525:function(n,t,e){"use strict";e.r(t);var l=e(1),s=Object(l.a)({},(function(){var n=this.$createElement;return(this._self._c||n)("Content")}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{631:function(n,t,e){"use strict";e.r(t);var l=e(1),s=Object(l.a)({},(function(){var n=this.$createElement;return(this._self._c||n)("Content")}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/29.792f7af7.js b/main/assets/js/29.e12a2466.js similarity index 93% rename from main/assets/js/29.792f7af7.js rename to main/assets/js/29.e12a2466.js index 0216b0389b6..a4c05a41a7c 100644 --- a/main/assets/js/29.792f7af7.js +++ b/main/assets/js/29.e12a2466.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{478:function(t,e,n){"use strict";n.r(e);var s=n(1),w=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M0.836491 13.7697C0.543598 14.0626 0.543598 14.5374 0.836492 14.8303C1.12939 15.1232 1.60426 15.1232 1.89715 14.8303L0.836491 13.7697ZM14.7729 1.95457C15.0658 1.66168 15.0658 1.1868 14.7729 0.893912C14.48 0.601019 14.0051 0.601019 13.7122 0.893913L14.7729 1.95457ZM14.6668 1H15.4168V0.25H14.6668V1ZM4.48498 0.25C4.07077 0.25 3.73498 0.585786 3.73498 1C3.73498 1.41421 4.07077 1.75 4.48498 1.75V0.25ZM13.9168 11.1818C13.9168 11.596 14.2526 11.9318 14.6668 11.9318C15.081 11.9318 15.4168 11.596 15.4168 11.1818H13.9168ZM1.89715 14.8303L14.7729 1.95457L13.7122 0.893913L0.836491 13.7697L1.89715 14.8303ZM14.6668 0.25H4.48498V1.75H14.6668V0.25ZM15.4168 11.1818V1H13.9168V11.1818H15.4168Z"}})])}),[],!1,null,null,null);e.default=w.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{479:function(t,e,n){"use strict";n.r(e);var s=n(1),w=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M0.836491 13.7697C0.543598 14.0626 0.543598 14.5374 0.836492 14.8303C1.12939 15.1232 1.60426 15.1232 1.89715 14.8303L0.836491 13.7697ZM14.7729 1.95457C15.0658 1.66168 15.0658 1.1868 14.7729 0.893912C14.48 0.601019 14.0051 0.601019 13.7122 0.893913L14.7729 1.95457ZM14.6668 1H15.4168V0.25H14.6668V1ZM4.48498 0.25C4.07077 0.25 3.73498 0.585786 3.73498 1C3.73498 1.41421 4.07077 1.75 4.48498 1.75V0.25ZM13.9168 11.1818C13.9168 11.596 14.2526 11.9318 14.6668 11.9318C15.081 11.9318 15.4168 11.596 15.4168 11.1818H13.9168ZM1.89715 14.8303L14.7729 1.95457L13.7122 0.893913L0.836491 13.7697L1.89715 14.8303ZM14.6668 0.25H4.48498V1.75H14.6668V0.25ZM15.4168 11.1818V1H13.9168V11.1818H15.4168Z"}})])}),[],!1,null,null,null);e.default=w.exports}}]); \ No newline at end of file diff --git a/main/assets/js/3.d9d939fb.js b/main/assets/js/3.c70eddda.js similarity index 90% rename from main/assets/js/3.d9d939fb.js rename to main/assets/js/3.c70eddda.js index 78097f8ba48..8159f0cb707 100644 --- a/main/assets/js/3.d9d939fb.js +++ b/main/assets/js/3.c70eddda.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{396:function(t,s,e){},419:function(t,s,e){t.exports=e.p+"assets/img/lost_cosmonaut.cff1e2f6.jpg"},420:function(t,s,e){"use strict";e(396)},637:function(t,s,e){"use strict";e.r(s);e(420);var o=e(1),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("div",[s("img",{attrs:{src:e(419)}}),s("center",[s("div",{staticClass:"h1"},[this._v("Error 404 : You seem lost fellow cosmonaut,")]),s("div",{staticClass:"h1"},[this._v("Let us take you "),s("a",{attrs:{href:"/"}},[this._v("Back to Home")])])])],1)}),[],!1,null,"08694257",null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{396:function(t,s,e){},419:function(t,s,e){t.exports=e.p+"assets/img/lost_cosmonaut.cff1e2f6.jpg"},420:function(t,s,e){"use strict";e(396)},628:function(t,s,e){"use strict";e.r(s);e(420);var o=e(1),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("div",[s("img",{attrs:{src:e(419)}}),s("center",[s("div",{staticClass:"h1"},[this._v("Error 404 : You seem lost fellow cosmonaut,")]),s("div",{staticClass:"h1"},[this._v("Let us take you "),s("a",{attrs:{href:"/"}},[this._v("Back to Home")])])])],1)}),[],!1,null,"08694257",null);s.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/30.1ac87b20.js b/main/assets/js/30.d6f0f95c.js similarity index 88% rename from main/assets/js/30.1ac87b20.js rename to main/assets/js/30.d6f0f95c.js index 8487f2f8341..753206bd539 100644 --- a/main/assets/js/30.1ac87b20.js +++ b/main/assets/js/30.d6f0f95c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{477:function(t,e,s){"use strict";s.r(e);var r=s(1),n=Object(r.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"}},[e("circle",{attrs:{cx:"10",cy:"10",r:"10"}}),this._v(" "),e("path",{attrs:{d:"M5.55566 5.55555L14.4446 14.4444M14.4446 5.55555L5.55563 14.4445",stroke:"white","stroke-width":"1.5","stroke-linecap":"round"}})])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{478:function(t,e,s){"use strict";s.r(e);var r=s(1),n=Object(r.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"}},[e("circle",{attrs:{cx:"10",cy:"10",r:"10"}}),this._v(" "),e("path",{attrs:{d:"M5.55566 5.55555L14.4446 14.4444M14.4446 5.55555L5.55563 14.4445",stroke:"white","stroke-width":"1.5","stroke-linecap":"round"}})])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/31.4ddb523f.js b/main/assets/js/31.81293c2d.js similarity index 93% rename from main/assets/js/31.4ddb523f.js rename to main/assets/js/31.81293c2d.js index 854d742c981..80aa33fa523 100644 --- a/main/assets/js/31.4ddb523f.js +++ b/main/assets/js/31.81293c2d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{476:function(t,e,n){"use strict";n.r(e);var l=n(1),s=Object(l.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.5 2.75C6.66751 2.75 2.75 6.66751 2.75 11.5C2.75 16.3325 6.66751 20.25 11.5 20.25C13.6462 20.25 15.612 19.4773 17.1342 18.1949L22.6697 23.7303C22.9626 24.0232 23.4374 24.0232 23.7303 23.7303C24.0232 23.4374 24.0232 22.9626 23.7303 22.6697L18.1949 17.1342C19.4773 15.612 20.25 13.6462 20.25 11.5C20.25 6.66751 16.3325 2.75 11.5 2.75ZM16.6923 16.5599C17.9656 15.2535 18.75 13.4684 18.75 11.5C18.75 7.49594 15.5041 4.25 11.5 4.25C7.49594 4.25 4.25 7.49594 4.25 11.5C4.25 15.5041 7.49594 18.75 11.5 18.75C13.4684 18.75 15.2535 17.9656 16.5599 16.6923C16.5789 16.6679 16.5996 16.6444 16.622 16.622C16.6444 16.5996 16.6679 16.5789 16.6923 16.5599Z"}})])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{477:function(t,e,n){"use strict";n.r(e);var l=n(1),s=Object(l.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.5 2.75C6.66751 2.75 2.75 6.66751 2.75 11.5C2.75 16.3325 6.66751 20.25 11.5 20.25C13.6462 20.25 15.612 19.4773 17.1342 18.1949L22.6697 23.7303C22.9626 24.0232 23.4374 24.0232 23.7303 23.7303C24.0232 23.4374 24.0232 22.9626 23.7303 22.6697L18.1949 17.1342C19.4773 15.612 20.25 13.6462 20.25 11.5C20.25 6.66751 16.3325 2.75 11.5 2.75ZM16.6923 16.5599C17.9656 15.2535 18.75 13.4684 18.75 11.5C18.75 7.49594 15.5041 4.25 11.5 4.25C7.49594 4.25 4.25 7.49594 4.25 11.5C4.25 15.5041 7.49594 18.75 11.5 18.75C13.4684 18.75 15.2535 17.9656 16.5599 16.6923C16.5789 16.6679 16.5996 16.6444 16.622 16.622C16.6444 16.5996 16.6679 16.5789 16.6923 16.5599Z"}})])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/32.f0128e48.js b/main/assets/js/32.482b9561.js similarity index 98% rename from main/assets/js/32.f0128e48.js rename to main/assets/js/32.482b9561.js index 44698d34a91..349f545a9c9 100644 --- a/main/assets/js/32.f0128e48.js +++ b/main/assets/js/32.482b9561.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{475:function(t,e,r){"use strict";r.r(e);var s=r(1),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 150 230",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M129.04 81.9366L135.681 58.78L125.153 20.3152L95.8426 47.3566L89.2025 70.5132L105.801 87.8034L129.04 81.9366Z",fill:"url(#paint0_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M122.412 105.051L129.028 81.9786L112.418 64.7302L89.1905 70.5552L82.5745 93.6277L99.1854 110.876L122.412 105.051Z",fill:"url(#paint1_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M96.9404 193.882L115.64 128.671L98.9611 111.437L75.6844 117.214L56.5251 182.294L76.9628 188.154L96.9404 193.882Z",fill:"url(#paint2_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.0642 201.869L93.0233 133.456L51.5928 127.542L12.0095 178.467L42.0642 201.869Z",fill:"url(#paint3_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M98.6275 218.088L92.8579 134.032L131.018 150.902L135.385 214.524L98.6275 218.088Z",fill:"url(#paint4_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M35.4626 196.23L99.4743 110.96L58.1472 105.081L5.50019 172.841L35.4626 196.23Z",stroke:"url(#paint5_linear)","stroke-width":"0.7"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M106.575 217.245L99.4741 110.959L137.392 127.801L143.167 213.533L106.575 217.245Z",stroke:"url(#paint6_linear)","stroke-width":"0.7"}}),t._v(" "),r("defs",[r("linearGradient",{attrs:{id:"paint0_linear",x1:"127.81",y1:"45.3403",x2:"166.704",y2:"94.5326",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint1_linear",x1:"117.107",y1:"82.6653",x2:"141.785",y2:"129.845",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint2_linear",x1:"100.64",y1:"139.499",x2:"144.213",y2:"188.995",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint3_linear",x1:"68.6015",y1:"154.034",x2:"110.557",y2:"229.491",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint4_linear",x1:"129.742",y1:"171.983",x2:"171.85",y2:"245.124",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint5_linear",x1:"64.2552",y1:"100.861",x2:"36.7986",y2:"196.613",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint6_linear",x1:"133.25",y1:"120.644",x2:"105.628",y2:"216.973",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1)],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{476:function(t,e,r){"use strict";r.r(e);var s=r(1),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 150 230",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M129.04 81.9366L135.681 58.78L125.153 20.3152L95.8426 47.3566L89.2025 70.5132L105.801 87.8034L129.04 81.9366Z",fill:"url(#paint0_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M122.412 105.051L129.028 81.9786L112.418 64.7302L89.1905 70.5552L82.5745 93.6277L99.1854 110.876L122.412 105.051Z",fill:"url(#paint1_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M96.9404 193.882L115.64 128.671L98.9611 111.437L75.6844 117.214L56.5251 182.294L76.9628 188.154L96.9404 193.882Z",fill:"url(#paint2_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.0642 201.869L93.0233 133.456L51.5928 127.542L12.0095 178.467L42.0642 201.869Z",fill:"url(#paint3_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M98.6275 218.088L92.8579 134.032L131.018 150.902L135.385 214.524L98.6275 218.088Z",fill:"url(#paint4_linear)"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M35.4626 196.23L99.4743 110.96L58.1472 105.081L5.50019 172.841L35.4626 196.23Z",stroke:"url(#paint5_linear)","stroke-width":"0.7"}}),t._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M106.575 217.245L99.4741 110.959L137.392 127.801L143.167 213.533L106.575 217.245Z",stroke:"url(#paint6_linear)","stroke-width":"0.7"}}),t._v(" "),r("defs",[r("linearGradient",{attrs:{id:"paint0_linear",x1:"127.81",y1:"45.3403",x2:"166.704",y2:"94.5326",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint1_linear",x1:"117.107",y1:"82.6653",x2:"141.785",y2:"129.845",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint2_linear",x1:"100.64",y1:"139.499",x2:"144.213",y2:"188.995",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint3_linear",x1:"68.6015",y1:"154.034",x2:"110.557",y2:"229.491",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint4_linear",x1:"129.742",y1:"171.983",x2:"171.85",y2:"245.124",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#4154E0","stop-opacity":"0.910609"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ABB3ED"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint5_linear",x1:"64.2552",y1:"100.861",x2:"36.7986",y2:"196.613",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"paint6_linear",x1:"133.25",y1:"120.644",x2:"105.628",y2:"216.973",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1)],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/33.232d0ebd.js b/main/assets/js/33.3526190a.js similarity index 98% rename from main/assets/js/33.232d0ebd.js rename to main/assets/js/33.3526190a.js index e809a51c56b..a81d6a25efb 100644 --- a/main/assets/js/33.232d0ebd.js +++ b/main/assets/js/33.3526190a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{474:function(t,r,e){"use strict";e.r(r);var s=e(1),a=Object(s.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 165 140",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("rect",{attrs:{x:"15.2",y:"0.399879",width:"135.6",height:"115.2",rx:"4.8",stroke:"url(#paint0_linear)","stroke-width":"0.6"}}),t._v(" "),e("rect",{attrs:{x:"0.199982",y:"46.5999",width:"145.2",height:"94.8",transform:"rotate(-15 0.199982 46.5999)",fill:"#5062E1"}}),t._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87.4269 40.4409C88.0849 40.5195 88.5547 41.1167 88.4761 41.7747L81.1977 102.735C81.1192 103.393 80.522 103.863 79.8639 103.784C79.2059 103.706 78.7361 103.109 78.8147 102.451L86.0931 41.4902C86.1716 40.8321 86.7688 40.3624 87.4269 40.4409ZM60.8853 56.9452C61.4443 57.3012 61.6089 58.0429 61.253 58.6019L46.1657 82.2944L71.0008 95.0057C71.5907 95.3076 71.8242 96.0307 71.5223 96.6206C71.2203 97.2106 70.4973 97.4441 69.9073 97.1421L43.8986 83.8301L42.7249 83.2294L43.4331 82.1173L59.2286 57.3128C59.5846 56.7538 60.3263 56.5892 60.8853 56.9452ZM94.2871 47.9121C93.6966 47.6112 92.9739 47.8459 92.673 48.4364C92.3721 49.0269 92.6068 49.7495 93.1973 50.0504L118.014 62.6977L102.942 86.455C102.587 87.0146 102.753 87.7561 103.313 88.1111C103.872 88.4661 104.614 88.3003 104.969 87.7406L120.747 62.8701L121.453 61.7568L120.278 61.1581L94.2871 47.9121Z",fill:"#8997FF"}}),t._v(" "),e("path",{attrs:{d:"M34.1 14.7999C34.1 17.2852 32.0853 19.2999 29.6 19.2999V19.8999C32.4167 19.8999 34.7 17.6165 34.7 14.7999H34.1ZM29.6 10.2999C32.0853 10.2999 34.1 12.3146 34.1 14.7999H34.7C34.7 11.9832 32.4167 9.69988 29.6 9.69988V10.2999ZM25.1 14.7999C25.1 12.3146 27.1147 10.2999 29.6 10.2999V9.69988C26.7834 9.69988 24.5 11.9832 24.5 14.7999H25.1ZM29.6 19.2999C27.1147 19.2999 25.1 17.2852 25.1 14.7999H24.5C24.5 17.6165 26.7834 19.8999 29.6 19.8999V19.2999ZM48.4999 14.7999C48.4999 17.2852 46.4852 19.2999 43.9999 19.2999V19.8999C46.8166 19.8999 49.0999 17.6165 49.0999 14.7999H48.4999ZM43.9999 10.2999C46.4852 10.2999 48.4999 12.3146 48.4999 14.7999H49.0999C49.0999 11.9832 46.8166 9.69988 43.9999 9.69988V10.2999ZM39.4999 14.7999C39.4999 12.3146 41.5147 10.2999 43.9999 10.2999V9.69988C41.1833 9.69988 38.8999 11.9832 38.8999 14.7999H39.4999ZM43.9999 19.2999C41.5147 19.2999 39.4999 17.2852 39.4999 14.7999H38.8999C38.8999 17.6165 41.1833 19.8999 43.9999 19.8999V19.2999ZM58.4 19.8999C61.2167 19.8999 63.5 17.6165 63.5 14.7999H62.9C62.9 17.2852 60.8853 19.2999 58.4 19.2999V19.8999ZM53.3 14.7999C53.3 17.6165 55.5834 19.8999 58.4 19.8999V19.2999C55.9147 19.2999 53.9 17.2852 53.9 14.7999H53.3ZM58.4 9.69988C55.5834 9.69988 53.3 11.9832 53.3 14.7999H53.9C53.9 12.3146 55.9147 10.2999 58.4 10.2999V9.69988ZM63.5 14.7999C63.5 11.9832 61.2167 9.69988 58.4 9.69988V10.2999C60.8853 10.2999 62.9 12.3146 62.9 14.7999H63.5Z",fill:"url(#paint1_linear)"}}),t._v(" "),e("path",{attrs:{d:"M15.2 29.1999H150.8",stroke:"url(#paint2_linear)","stroke-width":"0.6"}}),t._v(" "),e("defs",[e("linearGradient",{attrs:{id:"paint0_linear",x1:"83",y1:"0.399879",x2:"83",y2:"115.6",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),e("linearGradient",{attrs:{id:"paint1_linear",x1:"44",y1:"9.99988",x2:"44",y2:"35.1999",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),e("linearGradient",{attrs:{id:"paint2_linear",x1:"82.9997",y1:"5.19988",x2:"82.9997",y2:"101.2",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1)],1)])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{475:function(t,r,e){"use strict";e.r(r);var s=e(1),a=Object(s.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 165 140",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("rect",{attrs:{x:"15.2",y:"0.399879",width:"135.6",height:"115.2",rx:"4.8",stroke:"url(#paint0_linear)","stroke-width":"0.6"}}),t._v(" "),e("rect",{attrs:{x:"0.199982",y:"46.5999",width:"145.2",height:"94.8",transform:"rotate(-15 0.199982 46.5999)",fill:"#5062E1"}}),t._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87.4269 40.4409C88.0849 40.5195 88.5547 41.1167 88.4761 41.7747L81.1977 102.735C81.1192 103.393 80.522 103.863 79.8639 103.784C79.2059 103.706 78.7361 103.109 78.8147 102.451L86.0931 41.4902C86.1716 40.8321 86.7688 40.3624 87.4269 40.4409ZM60.8853 56.9452C61.4443 57.3012 61.6089 58.0429 61.253 58.6019L46.1657 82.2944L71.0008 95.0057C71.5907 95.3076 71.8242 96.0307 71.5223 96.6206C71.2203 97.2106 70.4973 97.4441 69.9073 97.1421L43.8986 83.8301L42.7249 83.2294L43.4331 82.1173L59.2286 57.3128C59.5846 56.7538 60.3263 56.5892 60.8853 56.9452ZM94.2871 47.9121C93.6966 47.6112 92.9739 47.8459 92.673 48.4364C92.3721 49.0269 92.6068 49.7495 93.1973 50.0504L118.014 62.6977L102.942 86.455C102.587 87.0146 102.753 87.7561 103.313 88.1111C103.872 88.4661 104.614 88.3003 104.969 87.7406L120.747 62.8701L121.453 61.7568L120.278 61.1581L94.2871 47.9121Z",fill:"#8997FF"}}),t._v(" "),e("path",{attrs:{d:"M34.1 14.7999C34.1 17.2852 32.0853 19.2999 29.6 19.2999V19.8999C32.4167 19.8999 34.7 17.6165 34.7 14.7999H34.1ZM29.6 10.2999C32.0853 10.2999 34.1 12.3146 34.1 14.7999H34.7C34.7 11.9832 32.4167 9.69988 29.6 9.69988V10.2999ZM25.1 14.7999C25.1 12.3146 27.1147 10.2999 29.6 10.2999V9.69988C26.7834 9.69988 24.5 11.9832 24.5 14.7999H25.1ZM29.6 19.2999C27.1147 19.2999 25.1 17.2852 25.1 14.7999H24.5C24.5 17.6165 26.7834 19.8999 29.6 19.8999V19.2999ZM48.4999 14.7999C48.4999 17.2852 46.4852 19.2999 43.9999 19.2999V19.8999C46.8166 19.8999 49.0999 17.6165 49.0999 14.7999H48.4999ZM43.9999 10.2999C46.4852 10.2999 48.4999 12.3146 48.4999 14.7999H49.0999C49.0999 11.9832 46.8166 9.69988 43.9999 9.69988V10.2999ZM39.4999 14.7999C39.4999 12.3146 41.5147 10.2999 43.9999 10.2999V9.69988C41.1833 9.69988 38.8999 11.9832 38.8999 14.7999H39.4999ZM43.9999 19.2999C41.5147 19.2999 39.4999 17.2852 39.4999 14.7999H38.8999C38.8999 17.6165 41.1833 19.8999 43.9999 19.8999V19.2999ZM58.4 19.8999C61.2167 19.8999 63.5 17.6165 63.5 14.7999H62.9C62.9 17.2852 60.8853 19.2999 58.4 19.2999V19.8999ZM53.3 14.7999C53.3 17.6165 55.5834 19.8999 58.4 19.8999V19.2999C55.9147 19.2999 53.9 17.2852 53.9 14.7999H53.3ZM58.4 9.69988C55.5834 9.69988 53.3 11.9832 53.3 14.7999H53.9C53.9 12.3146 55.9147 10.2999 58.4 10.2999V9.69988ZM63.5 14.7999C63.5 11.9832 61.2167 9.69988 58.4 9.69988V10.2999C60.8853 10.2999 62.9 12.3146 62.9 14.7999H63.5Z",fill:"url(#paint1_linear)"}}),t._v(" "),e("path",{attrs:{d:"M15.2 29.1999H150.8",stroke:"url(#paint2_linear)","stroke-width":"0.6"}}),t._v(" "),e("defs",[e("linearGradient",{attrs:{id:"paint0_linear",x1:"83",y1:"0.399879",x2:"83",y2:"115.6",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),e("linearGradient",{attrs:{id:"paint1_linear",x1:"44",y1:"9.99988",x2:"44",y2:"35.1999",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1),t._v(" "),e("linearGradient",{attrs:{id:"paint2_linear",x1:"82.9997",y1:"5.19988",x2:"82.9997",y2:"101.2",gradientUnits:"userSpaceOnUse"}},[e("stop",{attrs:{"stop-color":"#8997FF"}}),t._v(" "),e("stop",{attrs:{offset:"1","stop-color":"#505EFF"}})],1)],1)])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/34.becb670b.js b/main/assets/js/34.2d8dff1f.js similarity index 97% rename from main/assets/js/34.becb670b.js rename to main/assets/js/34.2d8dff1f.js index 04d03a135e7..971af7f5fed 100644 --- a/main/assets/js/34.becb670b.js +++ b/main/assets/js/34.2d8dff1f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{473:function(l,e,r){"use strict";r.r(e);var L=r(1),d=Object(L.a)({},(function(){var l=this,e=l.$createElement,r=l._self._c||e;return r("svg",{attrs:{width:"80",height:"52",viewBox:"0 0 80 52",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 0H1H79H80V1V51V52H79H1H0V51V1V0ZM2 50V3.19376L27.8755 25.6786V23.029L3.67537 2H76.3246L52.1242 23.0293V25.6789L78 3.19377V50H2Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0001 12.9699L28.7157 19.485V32.515L40.0001 39.0301L51.2844 32.515V19.485L40.0001 12.9699ZM52.1244 19L40.0001 12L27.8757 19V33L40.0001 40L52.1244 33V19Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0001 24.1233L38.4152 25.0383V26.8684L40.0001 27.7834L41.5849 26.8684V25.0383L40.0001 24.1233ZM42.4249 24.5533L40.0001 23.1533L37.5752 24.5533V27.3533L40.0001 28.7533L42.4249 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.7067 28.8366L41.1219 29.7516V31.5817L42.7067 32.4967L44.2916 31.5817V29.7516L42.7067 28.8366ZM45.1316 29.2667L42.7067 27.8667L40.2819 29.2667V32.0667L42.7067 33.4667L45.1316 32.0667V29.2667Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M45.4134 24.1233L43.8285 25.0383V26.8684L45.4134 27.7834L46.9983 26.8684V25.0383L45.4134 24.1233ZM47.8383 24.5533L45.4134 23.1533L42.9885 24.5533V27.3533L45.4134 28.7533L47.8383 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.5867 24.1233L33.0019 25.0383V26.8684L34.5867 27.7834L36.1716 26.8684V25.0383L34.5867 24.1233ZM37.0116 24.5533L34.5867 23.1533L32.1619 24.5533V27.3533L34.5867 28.7533L37.0116 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M37.2934 28.8366L35.7085 29.7516V31.5817L37.2934 32.4967L38.8783 31.5817V29.7516L37.2934 28.8366ZM39.7183 29.2667L37.2934 27.8667L34.8685 29.2667V32.0667L37.2934 33.4667L39.7183 32.0667V29.2667Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.7067 19.5033L41.1219 20.4183V22.2484L42.7067 23.1634L44.2916 22.2484V20.4183L42.7067 19.5033ZM45.1316 19.9333L42.7067 18.5333L40.2819 19.9333V22.7333L42.7067 24.1333L45.1316 22.7333V19.9333Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M37.2934 19.5033L35.7085 20.4183V22.2484L37.2934 23.1634L38.8783 22.2484V20.4183L37.2934 19.5033ZM39.7183 19.9333L37.2934 18.5333L34.8685 19.9333V22.7333L37.2934 24.1333L39.7183 22.7333V19.9333Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);e.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{474:function(l,e,r){"use strict";r.r(e);var L=r(1),d=Object(L.a)({},(function(){var l=this,e=l.$createElement,r=l._self._c||e;return r("svg",{attrs:{width:"80",height:"52",viewBox:"0 0 80 52",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 0H1H79H80V1V51V52H79H1H0V51V1V0ZM2 50V3.19376L27.8755 25.6786V23.029L3.67537 2H76.3246L52.1242 23.0293V25.6789L78 3.19377V50H2Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0001 12.9699L28.7157 19.485V32.515L40.0001 39.0301L51.2844 32.515V19.485L40.0001 12.9699ZM52.1244 19L40.0001 12L27.8757 19V33L40.0001 40L52.1244 33V19Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0001 24.1233L38.4152 25.0383V26.8684L40.0001 27.7834L41.5849 26.8684V25.0383L40.0001 24.1233ZM42.4249 24.5533L40.0001 23.1533L37.5752 24.5533V27.3533L40.0001 28.7533L42.4249 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.7067 28.8366L41.1219 29.7516V31.5817L42.7067 32.4967L44.2916 31.5817V29.7516L42.7067 28.8366ZM45.1316 29.2667L42.7067 27.8667L40.2819 29.2667V32.0667L42.7067 33.4667L45.1316 32.0667V29.2667Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M45.4134 24.1233L43.8285 25.0383V26.8684L45.4134 27.7834L46.9983 26.8684V25.0383L45.4134 24.1233ZM47.8383 24.5533L45.4134 23.1533L42.9885 24.5533V27.3533L45.4134 28.7533L47.8383 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.5867 24.1233L33.0019 25.0383V26.8684L34.5867 27.7834L36.1716 26.8684V25.0383L34.5867 24.1233ZM37.0116 24.5533L34.5867 23.1533L32.1619 24.5533V27.3533L34.5867 28.7533L37.0116 27.3533V24.5533Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M37.2934 28.8366L35.7085 29.7516V31.5817L37.2934 32.4967L38.8783 31.5817V29.7516L37.2934 28.8366ZM39.7183 29.2667L37.2934 27.8667L34.8685 29.2667V32.0667L37.2934 33.4667L39.7183 32.0667V29.2667Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M42.7067 19.5033L41.1219 20.4183V22.2484L42.7067 23.1634L44.2916 22.2484V20.4183L42.7067 19.5033ZM45.1316 19.9333L42.7067 18.5333L40.2819 19.9333V22.7333L42.7067 24.1333L45.1316 22.7333V19.9333Z",fill:"var(--color-primary, blue)"}}),l._v(" "),r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M37.2934 19.5033L35.7085 20.4183V22.2484L37.2934 23.1634L38.8783 22.2484V20.4183L37.2934 19.5033ZM39.7183 19.9333L37.2934 18.5333L34.8685 19.9333V22.7333L37.2934 24.1333L39.7183 22.7333V19.9333Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);e.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/35.ceca81d9.js b/main/assets/js/35.16dd2bcf.js similarity index 97% rename from main/assets/js/35.ceca81d9.js rename to main/assets/js/35.16dd2bcf.js index 7e055b6c922..273faa7e681 100644 --- a/main/assets/js/35.ceca81d9.js +++ b/main/assets/js/35.16dd2bcf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{471:function(l,e,C){"use strict";C.r(e);var t=C(1),i=Object(t.a)({},(function(){var l=this.$createElement,e=this._self._c||l;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("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:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.521 80.989C112.693 78.6912 106.416 77.4911 100.076 77.4911C86.7528 77.4911 74.2205 82.7219 64.7884 92.2196C55.3971 101.676 50.1795 114.236 50.0956 127.588L50.0845 129.381L51.6424 130.267C59.151 134.539 67.6423 136.787 76.2468 136.787C76.4834 136.787 76.7219 136.785 76.9591 136.782C84.4596 136.674 91.8801 134.87 98.6072 131.541C96.486 130.355 94.4533 129.019 92.5209 127.546C80.7952 132.165 67.5061 131.595 56.2598 125.81C57.3537 102.38 76.6441 83.6116 100.076 83.6116C106.594 83.6116 113.031 85.0533 118.845 87.7928C118.92 85.5246 118.812 83.2511 118.521 80.989Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M150.057 127.172C149.879 110.572 141.795 95.4272 128.321 86.2016C128.331 88.6306 128.169 91.0582 127.835 93.4714C137.41 101.289 143.247 112.801 143.885 125.413C123.232 136.055 97.4756 128.602 85.743 108.266C82.574 102.772 80.6311 96.6307 80.0601 90.3552C78.0668 91.4421 76.163 92.6927 74.3657 94.0948C75.3134 100.134 77.3729 105.999 80.4462 111.326C87.1202 122.894 97.85 131.188 110.658 134.678C115.004 135.863 119.422 136.449 123.816 136.449C132.377 136.449 140.847 134.224 148.51 129.866L150.076 128.975L150.057 127.172Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.843 42.9061L100.298 42L98.7531 42.9047C91.1194 47.3722 84.7773 53.7773 80.4121 61.4272C76.6426 68.0338 74.413 75.4344 73.8901 82.9885C75.9799 81.7463 78.1569 80.6541 80.4079 79.7207C82.347 67.2679 89.5887 56.0133 100.295 49.1357C119.96 61.7797 126.427 87.9954 114.615 108.469C111.416 114.013 107.043 118.807 101.861 122.488C103.796 123.668 105.829 124.693 107.94 125.549C112.731 121.666 116.809 116.908 119.912 111.529C133.703 87.6254 125.597 56.8415 101.843 42.9061Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100.268 95.1374C97.4504 95.1374 95.1588 97.431 95.1588 100.25C95.1588 103.069 97.4504 105.363 100.268 105.363C103.085 105.363 105.377 103.069 105.377 100.25C105.377 97.431 103.085 95.1374 100.268 95.1374ZM100.268 111.483C94.0779 111.483 89.0427 106.444 89.0427 100.25C89.0427 94.056 94.0779 89.0169 100.268 89.0169C106.457 89.0169 111.493 94.056 111.493 100.25C111.493 106.444 106.457 111.483 100.268 111.483Z",fill:"#00BB00"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{472:function(l,e,C){"use strict";C.r(e);var t=C(1),i=Object(t.a)({},(function(){var l=this.$createElement,e=this._self._c||l;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("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:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.521 80.989C112.693 78.6912 106.416 77.4911 100.076 77.4911C86.7528 77.4911 74.2205 82.7219 64.7884 92.2196C55.3971 101.676 50.1795 114.236 50.0956 127.588L50.0845 129.381L51.6424 130.267C59.151 134.539 67.6423 136.787 76.2468 136.787C76.4834 136.787 76.7219 136.785 76.9591 136.782C84.4596 136.674 91.8801 134.87 98.6072 131.541C96.486 130.355 94.4533 129.019 92.5209 127.546C80.7952 132.165 67.5061 131.595 56.2598 125.81C57.3537 102.38 76.6441 83.6116 100.076 83.6116C106.594 83.6116 113.031 85.0533 118.845 87.7928C118.92 85.5246 118.812 83.2511 118.521 80.989Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M150.057 127.172C149.879 110.572 141.795 95.4272 128.321 86.2016C128.331 88.6306 128.169 91.0582 127.835 93.4714C137.41 101.289 143.247 112.801 143.885 125.413C123.232 136.055 97.4756 128.602 85.743 108.266C82.574 102.772 80.6311 96.6307 80.0601 90.3552C78.0668 91.4421 76.163 92.6927 74.3657 94.0948C75.3134 100.134 77.3729 105.999 80.4462 111.326C87.1202 122.894 97.85 131.188 110.658 134.678C115.004 135.863 119.422 136.449 123.816 136.449C132.377 136.449 140.847 134.224 148.51 129.866L150.076 128.975L150.057 127.172Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.843 42.9061L100.298 42L98.7531 42.9047C91.1194 47.3722 84.7773 53.7773 80.4121 61.4272C76.6426 68.0338 74.413 75.4344 73.8901 82.9885C75.9799 81.7463 78.1569 80.6541 80.4079 79.7207C82.347 67.2679 89.5887 56.0133 100.295 49.1357C119.96 61.7797 126.427 87.9954 114.615 108.469C111.416 114.013 107.043 118.807 101.861 122.488C103.796 123.668 105.829 124.693 107.94 125.549C112.731 121.666 116.809 116.908 119.912 111.529C133.703 87.6254 125.597 56.8415 101.843 42.9061Z",fill:"#00BB00"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100.268 95.1374C97.4504 95.1374 95.1588 97.431 95.1588 100.25C95.1588 103.069 97.4504 105.363 100.268 105.363C103.085 105.363 105.377 103.069 105.377 100.25C105.377 97.431 103.085 95.1374 100.268 95.1374ZM100.268 111.483C94.0779 111.483 89.0427 106.444 89.0427 100.25C89.0427 94.056 94.0779 89.0169 100.268 89.0169C106.457 89.0169 111.493 94.056 111.493 100.25C111.493 106.444 106.457 111.483 100.268 111.483Z",fill:"#00BB00"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/36.0c566279.js b/main/assets/js/36.0a65c887.js similarity index 98% rename from main/assets/js/36.0c566279.js rename to main/assets/js/36.0a65c887.js index dffc4756b7b..5fe8e311ce4 100644 --- a/main/assets/js/36.0c566279.js +++ b/main/assets/js/36.0a65c887.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{638:function(C,V,e){"use strict";e.r(V);var t=e(1),l=Object(t.a)({},(function(){var C=this.$createElement,V=this._self._c||C;return V("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 142 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[V("path",{attrs:{d:"M33.5369 19.2904H35.9969V7.57038H40.4569V5.29038H29.0769V7.57038H33.5369V19.2904ZM45.3214 19.5304C47.2614 19.5304 48.6414 18.7504 49.6414 17.5504L48.2214 16.2904C47.3814 17.1104 46.5414 17.5504 45.3614 17.5504C43.8014 17.5504 42.5814 16.5904 42.3214 14.8704H50.0814C50.1014 14.6304 50.1214 14.4104 50.1214 14.1904C50.1214 11.1504 48.4214 8.51038 45.0614 8.51038C42.0414 8.51038 39.9014 10.9904 39.9014 14.0104V14.0504C39.9014 17.3104 42.2614 19.5304 45.3214 19.5304ZM42.3014 13.2704C42.5214 11.6304 43.5614 10.4904 45.0414 10.4904C46.6414 10.4904 47.5614 11.7104 47.7214 13.2704H42.3014ZM52.5317 19.2904H54.9717V13.3304C54.9717 11.6904 55.9517 10.7104 57.3517 10.7104C58.7917 10.7104 59.6117 11.6504 59.6117 13.2904V19.2904H62.0317V12.5504C62.0317 10.1104 60.6517 8.51038 58.2717 8.51038C56.6317 8.51038 55.6517 9.37038 54.9717 10.3504V8.73038H52.5317V19.2904ZM69.3141 19.5104C71.0341 19.5104 72.1341 18.6304 72.9141 17.5304V19.2904H75.3341V4.69038H72.9141V10.3704C72.1541 9.37038 71.0541 8.51038 69.3141 8.51038C66.7941 8.51038 64.4141 10.4904 64.4141 13.9904V14.0304C64.4141 17.5304 66.8341 19.5104 69.3141 19.5104ZM69.8941 17.4104C68.2541 17.4104 66.8541 16.0704 66.8541 14.0304V13.9904C66.8541 11.9104 68.2341 10.6104 69.8941 10.6104C71.5141 10.6104 72.9541 11.9504 72.9541 13.9904V14.0304C72.9541 16.0504 71.5141 17.4104 69.8941 17.4104ZM83.212 19.5304C85.152 19.5304 86.532 18.7504 87.532 17.5504L86.112 16.2904C85.272 17.1104 84.432 17.5504 83.252 17.5504C81.692 17.5504 80.472 16.5904 80.212 14.8704H87.972C87.992 14.6304 88.012 14.4104 88.012 14.1904C88.012 11.1504 86.312 8.51038 82.952 8.51038C79.932 8.51038 77.792 10.9904 77.792 14.0104V14.0504C77.792 17.3104 80.152 19.5304 83.212 19.5304ZM80.192 13.2704C80.412 11.6304 81.452 10.4904 82.932 10.4904C84.532 10.4904 85.452 11.7104 85.612 13.2704H80.192ZM90.4223 19.2904H92.8623V15.2704C92.8623 12.4704 94.3423 11.0904 96.4623 11.0904H96.6023V8.53038C94.7423 8.45038 93.5223 9.53038 92.8623 11.1104V8.73038H90.4223V19.2904ZM98.6841 19.2904H101.124V13.3304C101.124 11.7104 102.044 10.7104 103.384 10.7104C104.724 10.7104 105.524 11.6304 105.524 13.2704V19.2904H107.944V13.3304C107.944 11.6304 108.884 10.7104 110.204 10.7104C111.564 10.7104 112.344 11.6104 112.344 13.2904V19.2904H114.764V12.5504C114.764 9.97038 113.364 8.51038 111.064 8.51038C109.464 8.51038 108.344 9.25038 107.504 10.3704C106.944 9.25038 105.864 8.51038 104.344 8.51038C102.724 8.51038 101.804 9.39038 101.124 10.3304V8.73038H98.6841V19.2904ZM117.728 7.11038H120.328V4.81038H117.728V7.11038ZM117.808 19.2904H120.248V8.73038H117.808V19.2904ZM123.391 19.2904H125.831V13.3304C125.831 11.6904 126.811 10.7104 128.211 10.7104C129.651 10.7104 130.471 11.6504 130.471 13.2904V19.2904H132.891V12.5504C132.891 10.1104 131.511 8.51038 129.131 8.51038C127.491 8.51038 126.511 9.37038 125.831 10.3504V8.73038H123.391V19.2904ZM139.353 19.4704C140.273 19.4704 140.933 19.2704 141.533 18.9304V16.9504C141.053 17.1904 140.573 17.3104 140.033 17.3104C139.213 17.3104 138.733 16.9304 138.733 15.9904V10.8104H141.573V8.73038H138.733V5.83038H136.313V8.73038H134.973V10.8104H136.313V16.3704C136.313 18.6904 137.573 19.4704 139.353 19.4704Z"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.8359 8.62449C13.6297 8.17373 12.3308 7.93828 11.0189 7.93828C8.26156 7.93828 5.66799 8.96445 3.71603 10.8277C1.77253 12.6827 0.692757 15.1469 0.675382 17.7662L0.67308 18.1179L0.995493 18.2917C2.54939 19.1298 4.30666 19.5708 6.08735 19.5708C6.13631 19.5708 6.18567 19.5704 6.23475 19.5697C7.78697 19.5486 9.32263 19.1947 10.7148 18.5417C10.2758 18.3089 9.85515 18.0468 9.45524 17.7578C7.02864 18.664 4.27847 18.5523 1.95105 17.4173C2.17744 12.8209 6.16956 9.13899 11.0189 9.13899C12.3676 9.13899 13.6998 9.42181 14.903 9.95924C14.9185 9.51427 14.8962 9.06826 14.8359 8.62449"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M21.3623 17.6846C21.3253 14.4281 19.6525 11.4569 16.864 9.64708C16.8661 10.1236 16.8325 10.5998 16.7635 11.0733C18.7449 12.6069 19.9528 14.8652 20.085 17.3394C15.8109 19.4271 10.4806 17.965 8.05257 13.9755C7.39676 12.8979 6.99466 11.693 6.87649 10.4619C6.46399 10.6752 6.07001 10.9205 5.69806 11.1956C5.89419 12.3803 6.32039 13.5309 6.95641 14.5759C8.33758 16.8453 10.5581 18.4723 13.2087 19.1571C14.108 19.3895 15.0224 19.5045 15.9317 19.5045C17.7034 19.5045 19.4562 19.068 21.0421 18.213L21.3662 18.0382L21.3623 17.6846Z"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.3845 1.1535L11.0648 0.975742L10.745 1.15323C9.16521 2.02964 7.85272 3.28619 6.94934 4.78692C6.16925 6.08298 5.70784 7.5348 5.59962 9.01676C6.0321 8.77307 6.48263 8.55879 6.94848 8.37569C7.34977 5.93272 8.84843 3.72483 11.0642 2.37561C15.1338 4.85607 16.4721 9.999 14.0276 14.0154C13.3657 15.1031 12.4605 16.0436 11.3882 16.7656C11.7887 16.9971 12.2093 17.1981 12.6463 17.3662C13.6376 16.6043 14.4816 15.671 15.1238 14.6157C17.9778 9.92641 16.3003 3.88731 11.3845 1.1535"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.0584 11.4001C10.4754 11.4001 10.0012 11.85 10.0012 12.4031C10.0012 12.9561 10.4754 13.4061 11.0584 13.4061C11.6415 13.4061 12.1158 12.9561 12.1158 12.4031C12.1158 11.85 11.6415 11.4001 11.0584 11.4001M11.0584 14.6068C9.77747 14.6068 8.73544 13.6183 8.73544 12.4031C8.73544 11.188 9.77747 10.1994 11.0584 10.1994C12.3394 10.1994 13.3815 11.188 13.3815 12.4031C13.3815 13.6183 12.3394 14.6068 11.0584 14.6068"}})])}),[],!1,null,null,null);V.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{471:function(C,V,e){"use strict";e.r(V);var t=e(1),l=Object(t.a)({},(function(){var C=this.$createElement,V=this._self._c||C;return V("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 142 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[V("path",{attrs:{d:"M33.5369 19.2904H35.9969V7.57038H40.4569V5.29038H29.0769V7.57038H33.5369V19.2904ZM45.3214 19.5304C47.2614 19.5304 48.6414 18.7504 49.6414 17.5504L48.2214 16.2904C47.3814 17.1104 46.5414 17.5504 45.3614 17.5504C43.8014 17.5504 42.5814 16.5904 42.3214 14.8704H50.0814C50.1014 14.6304 50.1214 14.4104 50.1214 14.1904C50.1214 11.1504 48.4214 8.51038 45.0614 8.51038C42.0414 8.51038 39.9014 10.9904 39.9014 14.0104V14.0504C39.9014 17.3104 42.2614 19.5304 45.3214 19.5304ZM42.3014 13.2704C42.5214 11.6304 43.5614 10.4904 45.0414 10.4904C46.6414 10.4904 47.5614 11.7104 47.7214 13.2704H42.3014ZM52.5317 19.2904H54.9717V13.3304C54.9717 11.6904 55.9517 10.7104 57.3517 10.7104C58.7917 10.7104 59.6117 11.6504 59.6117 13.2904V19.2904H62.0317V12.5504C62.0317 10.1104 60.6517 8.51038 58.2717 8.51038C56.6317 8.51038 55.6517 9.37038 54.9717 10.3504V8.73038H52.5317V19.2904ZM69.3141 19.5104C71.0341 19.5104 72.1341 18.6304 72.9141 17.5304V19.2904H75.3341V4.69038H72.9141V10.3704C72.1541 9.37038 71.0541 8.51038 69.3141 8.51038C66.7941 8.51038 64.4141 10.4904 64.4141 13.9904V14.0304C64.4141 17.5304 66.8341 19.5104 69.3141 19.5104ZM69.8941 17.4104C68.2541 17.4104 66.8541 16.0704 66.8541 14.0304V13.9904C66.8541 11.9104 68.2341 10.6104 69.8941 10.6104C71.5141 10.6104 72.9541 11.9504 72.9541 13.9904V14.0304C72.9541 16.0504 71.5141 17.4104 69.8941 17.4104ZM83.212 19.5304C85.152 19.5304 86.532 18.7504 87.532 17.5504L86.112 16.2904C85.272 17.1104 84.432 17.5504 83.252 17.5504C81.692 17.5504 80.472 16.5904 80.212 14.8704H87.972C87.992 14.6304 88.012 14.4104 88.012 14.1904C88.012 11.1504 86.312 8.51038 82.952 8.51038C79.932 8.51038 77.792 10.9904 77.792 14.0104V14.0504C77.792 17.3104 80.152 19.5304 83.212 19.5304ZM80.192 13.2704C80.412 11.6304 81.452 10.4904 82.932 10.4904C84.532 10.4904 85.452 11.7104 85.612 13.2704H80.192ZM90.4223 19.2904H92.8623V15.2704C92.8623 12.4704 94.3423 11.0904 96.4623 11.0904H96.6023V8.53038C94.7423 8.45038 93.5223 9.53038 92.8623 11.1104V8.73038H90.4223V19.2904ZM98.6841 19.2904H101.124V13.3304C101.124 11.7104 102.044 10.7104 103.384 10.7104C104.724 10.7104 105.524 11.6304 105.524 13.2704V19.2904H107.944V13.3304C107.944 11.6304 108.884 10.7104 110.204 10.7104C111.564 10.7104 112.344 11.6104 112.344 13.2904V19.2904H114.764V12.5504C114.764 9.97038 113.364 8.51038 111.064 8.51038C109.464 8.51038 108.344 9.25038 107.504 10.3704C106.944 9.25038 105.864 8.51038 104.344 8.51038C102.724 8.51038 101.804 9.39038 101.124 10.3304V8.73038H98.6841V19.2904ZM117.728 7.11038H120.328V4.81038H117.728V7.11038ZM117.808 19.2904H120.248V8.73038H117.808V19.2904ZM123.391 19.2904H125.831V13.3304C125.831 11.6904 126.811 10.7104 128.211 10.7104C129.651 10.7104 130.471 11.6504 130.471 13.2904V19.2904H132.891V12.5504C132.891 10.1104 131.511 8.51038 129.131 8.51038C127.491 8.51038 126.511 9.37038 125.831 10.3504V8.73038H123.391V19.2904ZM139.353 19.4704C140.273 19.4704 140.933 19.2704 141.533 18.9304V16.9504C141.053 17.1904 140.573 17.3104 140.033 17.3104C139.213 17.3104 138.733 16.9304 138.733 15.9904V10.8104H141.573V8.73038H138.733V5.83038H136.313V8.73038H134.973V10.8104H136.313V16.3704C136.313 18.6904 137.573 19.4704 139.353 19.4704Z"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.8359 8.62449C13.6297 8.17373 12.3308 7.93828 11.0189 7.93828C8.26156 7.93828 5.66799 8.96445 3.71603 10.8277C1.77253 12.6827 0.692757 15.1469 0.675382 17.7662L0.67308 18.1179L0.995493 18.2917C2.54939 19.1298 4.30666 19.5708 6.08735 19.5708C6.13631 19.5708 6.18567 19.5704 6.23475 19.5697C7.78697 19.5486 9.32263 19.1947 10.7148 18.5417C10.2758 18.3089 9.85515 18.0468 9.45524 17.7578C7.02864 18.664 4.27847 18.5523 1.95105 17.4173C2.17744 12.8209 6.16956 9.13899 11.0189 9.13899C12.3676 9.13899 13.6998 9.42181 14.903 9.95924C14.9185 9.51427 14.8962 9.06826 14.8359 8.62449"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M21.3623 17.6846C21.3253 14.4281 19.6525 11.4569 16.864 9.64708C16.8661 10.1236 16.8325 10.5998 16.7635 11.0733C18.7449 12.6069 19.9528 14.8652 20.085 17.3394C15.8109 19.4271 10.4806 17.965 8.05257 13.9755C7.39676 12.8979 6.99466 11.693 6.87649 10.4619C6.46399 10.6752 6.07001 10.9205 5.69806 11.1956C5.89419 12.3803 6.32039 13.5309 6.95641 14.5759C8.33758 16.8453 10.5581 18.4723 13.2087 19.1571C14.108 19.3895 15.0224 19.5045 15.9317 19.5045C17.7034 19.5045 19.4562 19.068 21.0421 18.213L21.3662 18.0382L21.3623 17.6846Z"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.3845 1.1535L11.0648 0.975742L10.745 1.15323C9.16521 2.02964 7.85272 3.28619 6.94934 4.78692C6.16925 6.08298 5.70784 7.5348 5.59962 9.01676C6.0321 8.77307 6.48263 8.55879 6.94848 8.37569C7.34977 5.93272 8.84843 3.72483 11.0642 2.37561C15.1338 4.85607 16.4721 9.999 14.0276 14.0154C13.3657 15.1031 12.4605 16.0436 11.3882 16.7656C11.7887 16.9971 12.2093 17.1981 12.6463 17.3662C13.6376 16.6043 14.4816 15.671 15.1238 14.6157C17.9778 9.92641 16.3003 3.88731 11.3845 1.1535"}}),this._v(" "),V("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.0584 11.4001C10.4754 11.4001 10.0012 11.85 10.0012 12.4031C10.0012 12.9561 10.4754 13.4061 11.0584 13.4061C11.6415 13.4061 12.1158 12.9561 12.1158 12.4031C12.1158 11.85 11.6415 11.4001 11.0584 11.4001M11.0584 14.6068C9.77747 14.6068 8.73544 13.6183 8.73544 12.4031C8.73544 11.188 9.77747 10.1994 11.0584 10.1994C12.3394 10.1994 13.3815 11.188 13.3815 12.4031C13.3815 13.6183 12.3394 14.6068 11.0584 14.6068"}})])}),[],!1,null,null,null);V.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/37.b8810696.js b/main/assets/js/37.bcbad381.js similarity index 98% rename from main/assets/js/37.b8810696.js rename to main/assets/js/37.bcbad381.js index 79b7941d90b..3c20e7e9388 100644 --- a/main/assets/js/37.b8810696.js +++ b/main/assets/js/37.bcbad381.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{542:function(l,C,e){"use strict";e.r(C);var t=e(1),d=Object(t.a)({},(function(){var l=this,C=l.$createElement,e=l._self._c||C;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 174 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87 6.9282L6.39746 53.4641V146.536L87 193.072L167.603 146.536V53.4641L87 6.9282ZM173.603 50L87 0L0.397461 50V150L87 200L173.603 150V50Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.9655 64.135C80.7752 64.135 75.7396 59.0957 75.7396 52.9009C75.7396 46.7063 80.7752 41.6667 86.9655 41.6667C93.1557 41.6667 98.1919 46.7063 98.1919 52.9009C98.1919 59.0957 93.1557 64.135 86.9655 64.135ZM86.9655 47.7878C84.1479 47.7878 81.8562 50.0816 81.8562 52.9009C81.8562 55.7202 84.1479 58.0139 86.9655 58.0139C89.783 58.0139 92.0753 55.7202 92.0753 52.9009C92.0753 50.0816 89.783 47.7878 86.9655 47.7878Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M84.0729 65.9932C85.0373 66.2158 86.0415 66.3334 87.0726 66.3334C88.1039 66.3334 89.1082 66.2157 90.0729 65.9931V87.0071C89.1082 86.7845 88.1039 86.6668 87.0725 86.6668C86.0415 86.6668 85.0373 86.7844 84.0729 87.007V65.9932Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M77.3273 90.9094L59.122 80.3985C58.8325 81.3453 58.4322 82.2739 57.9165 83.167C57.401 84.06 56.7971 84.8708 56.1221 85.5947L74.3207 96.1017C74.9211 94.1416 75.9619 92.3722 77.3273 90.9094Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M74.3207 103.898L56.122 114.406C56.7971 115.13 57.4012 115.941 57.9169 116.834C58.4324 117.727 58.8326 118.655 59.1221 119.602L77.3272 109.091C75.9618 107.628 74.921 105.859 74.3207 103.898Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M84.0729 112.993V134.007C85.0375 133.784 86.0419 133.667 87.0732 133.667C88.1043 133.667 89.1085 133.784 90.0729 134.007V112.993C89.1082 113.216 88.1039 113.333 87.0725 113.333C86.0415 113.333 85.0373 113.216 84.0729 112.993Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M96.8183 109.091L115.024 119.602C115.313 118.655 115.714 117.726 116.229 116.833C116.745 115.94 117.349 115.129 118.024 114.405L99.825 103.898C99.2246 105.859 98.1838 107.628 96.8183 109.091Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M99.825 96.1018L118.024 85.5947C117.349 84.8706 116.745 84.0597 116.229 83.1665C115.713 82.2735 115.313 81.3451 115.024 80.3986L96.8183 90.9095C98.1837 92.3723 99.2246 94.1417 99.825 96.1018Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.9591 82.1606C52.864 87.5215 45.982 89.3628 40.6171 86.2654C35.2525 83.1682 33.4059 76.2874 36.501 70.9265C39.5962 65.5655 46.4787 63.7239 51.8433 66.8211C57.2081 69.9185 59.0542 76.7997 55.9591 82.1606ZM41.802 73.987C40.3933 76.4271 41.2338 79.5587 43.6754 80.9683C46.117 82.378 49.2493 81.5401 50.6581 79.1001C52.0668 76.66 51.2266 73.5279 48.785 72.1183C46.3434 70.7086 43.2108 71.547 41.802 73.987Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M56.0665 118.026C59.1617 123.387 57.3153 130.267 51.9504 133.365C46.5858 136.462 39.7036 134.621 36.6085 129.26C33.5133 123.899 35.3597 117.018 40.7243 113.92C46.0891 110.823 52.9714 112.665 56.0665 118.026ZM41.9095 126.199C43.3182 128.639 46.4506 129.477 48.8921 128.068C51.3337 126.658 52.1743 123.526 50.7655 121.086C49.3568 118.646 46.2242 117.808 43.7826 119.217C41.341 120.627 40.5007 123.759 41.9095 126.199Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87.1803 135.865C93.3706 135.865 98.4062 140.905 98.4062 147.099C98.4062 153.294 93.3706 158.333 87.1803 158.333C80.9901 158.333 75.9539 153.294 75.9539 147.099C75.9539 140.905 80.9901 135.865 87.1803 135.865ZM87.1803 152.212C89.9979 152.212 92.2896 149.919 92.2896 147.099C92.2896 144.28 89.9979 141.986 87.1803 141.986C84.3628 141.986 82.0705 144.28 82.0705 147.099C82.0705 149.919 84.3628 152.212 87.1803 152.212Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.187 117.84C121.282 112.479 128.164 110.637 133.529 113.735C138.893 116.832 140.74 123.713 137.645 129.074C134.55 134.435 127.667 136.276 122.303 133.179C116.938 130.082 115.092 123.201 118.187 117.84ZM132.344 126.013C133.753 123.573 132.912 120.442 130.47 119.032C128.029 117.622 124.896 118.46 123.488 120.9C122.079 123.34 122.919 126.472 125.361 127.882C127.802 129.292 130.935 128.453 132.344 126.013Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.079 81.9745C114.984 76.6136 116.83 69.7329 122.195 66.6355C127.56 63.5383 134.442 65.3795 137.537 70.7404C140.632 76.1013 138.786 82.9826 133.422 86.0799C128.057 89.1773 121.174 87.3355 118.079 81.9745ZM132.236 73.8009C130.828 71.3609 127.695 70.523 125.254 71.9327C122.812 73.3423 121.972 76.4739 123.38 78.914C124.789 81.354 127.922 82.1924 130.363 80.7827C132.805 79.3731 133.645 76.241 132.236 73.8009Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.9654 94.7879C84.1479 94.7879 81.8561 97.0816 81.8561 99.9009C81.8561 102.72 84.1479 105.014 86.9654 105.014C89.783 105.014 92.0753 102.72 92.0753 99.9009C92.0753 97.0816 89.783 94.7879 86.9654 94.7879ZM86.9654 111.135C80.7752 111.135 75.7395 106.096 75.7395 99.9009C75.7395 93.7064 80.7752 88.6668 86.9654 88.6668C93.1557 88.6668 98.1919 93.7064 98.1919 99.9009C98.1919 106.096 93.1557 111.135 86.9654 111.135Z",fill:"#BA3FD9"}})])}),[],!1,null,null,null);C.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{639:function(l,C,e){"use strict";e.r(C);var t=e(1),d=Object(t.a)({},(function(){var l=this,C=l.$createElement,e=l._self._c||C;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 174 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87 6.9282L6.39746 53.4641V146.536L87 193.072L167.603 146.536V53.4641L87 6.9282ZM173.603 50L87 0L0.397461 50V150L87 200L173.603 150V50Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.9655 64.135C80.7752 64.135 75.7396 59.0957 75.7396 52.9009C75.7396 46.7063 80.7752 41.6667 86.9655 41.6667C93.1557 41.6667 98.1919 46.7063 98.1919 52.9009C98.1919 59.0957 93.1557 64.135 86.9655 64.135ZM86.9655 47.7878C84.1479 47.7878 81.8562 50.0816 81.8562 52.9009C81.8562 55.7202 84.1479 58.0139 86.9655 58.0139C89.783 58.0139 92.0753 55.7202 92.0753 52.9009C92.0753 50.0816 89.783 47.7878 86.9655 47.7878Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M84.0729 65.9932C85.0373 66.2158 86.0415 66.3334 87.0726 66.3334C88.1039 66.3334 89.1082 66.2157 90.0729 65.9931V87.0071C89.1082 86.7845 88.1039 86.6668 87.0725 86.6668C86.0415 86.6668 85.0373 86.7844 84.0729 87.007V65.9932Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M77.3273 90.9094L59.122 80.3985C58.8325 81.3453 58.4322 82.2739 57.9165 83.167C57.401 84.06 56.7971 84.8708 56.1221 85.5947L74.3207 96.1017C74.9211 94.1416 75.9619 92.3722 77.3273 90.9094Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M74.3207 103.898L56.122 114.406C56.7971 115.13 57.4012 115.941 57.9169 116.834C58.4324 117.727 58.8326 118.655 59.1221 119.602L77.3272 109.091C75.9618 107.628 74.921 105.859 74.3207 103.898Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M84.0729 112.993V134.007C85.0375 133.784 86.0419 133.667 87.0732 133.667C88.1043 133.667 89.1085 133.784 90.0729 134.007V112.993C89.1082 113.216 88.1039 113.333 87.0725 113.333C86.0415 113.333 85.0373 113.216 84.0729 112.993Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M96.8183 109.091L115.024 119.602C115.313 118.655 115.714 117.726 116.229 116.833C116.745 115.94 117.349 115.129 118.024 114.405L99.825 103.898C99.2246 105.859 98.1838 107.628 96.8183 109.091Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{d:"M99.825 96.1018L118.024 85.5947C117.349 84.8706 116.745 84.0597 116.229 83.1665C115.713 82.2735 115.313 81.3451 115.024 80.3986L96.8183 90.9095C98.1837 92.3723 99.2246 94.1417 99.825 96.1018Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.9591 82.1606C52.864 87.5215 45.982 89.3628 40.6171 86.2654C35.2525 83.1682 33.4059 76.2874 36.501 70.9265C39.5962 65.5655 46.4787 63.7239 51.8433 66.8211C57.2081 69.9185 59.0542 76.7997 55.9591 82.1606ZM41.802 73.987C40.3933 76.4271 41.2338 79.5587 43.6754 80.9683C46.117 82.378 49.2493 81.5401 50.6581 79.1001C52.0668 76.66 51.2266 73.5279 48.785 72.1183C46.3434 70.7086 43.2108 71.547 41.802 73.987Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M56.0665 118.026C59.1617 123.387 57.3153 130.267 51.9504 133.365C46.5858 136.462 39.7036 134.621 36.6085 129.26C33.5133 123.899 35.3597 117.018 40.7243 113.92C46.0891 110.823 52.9714 112.665 56.0665 118.026ZM41.9095 126.199C43.3182 128.639 46.4506 129.477 48.8921 128.068C51.3337 126.658 52.1743 123.526 50.7655 121.086C49.3568 118.646 46.2242 117.808 43.7826 119.217C41.341 120.627 40.5007 123.759 41.9095 126.199Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M87.1803 135.865C93.3706 135.865 98.4062 140.905 98.4062 147.099C98.4062 153.294 93.3706 158.333 87.1803 158.333C80.9901 158.333 75.9539 153.294 75.9539 147.099C75.9539 140.905 80.9901 135.865 87.1803 135.865ZM87.1803 152.212C89.9979 152.212 92.2896 149.919 92.2896 147.099C92.2896 144.28 89.9979 141.986 87.1803 141.986C84.3628 141.986 82.0705 144.28 82.0705 147.099C82.0705 149.919 84.3628 152.212 87.1803 152.212Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.187 117.84C121.282 112.479 128.164 110.637 133.529 113.735C138.893 116.832 140.74 123.713 137.645 129.074C134.55 134.435 127.667 136.276 122.303 133.179C116.938 130.082 115.092 123.201 118.187 117.84ZM132.344 126.013C133.753 123.573 132.912 120.442 130.47 119.032C128.029 117.622 124.896 118.46 123.488 120.9C122.079 123.34 122.919 126.472 125.361 127.882C127.802 129.292 130.935 128.453 132.344 126.013Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.079 81.9745C114.984 76.6136 116.83 69.7329 122.195 66.6355C127.56 63.5383 134.442 65.3795 137.537 70.7404C140.632 76.1013 138.786 82.9826 133.422 86.0799C128.057 89.1773 121.174 87.3355 118.079 81.9745ZM132.236 73.8009C130.828 71.3609 127.695 70.523 125.254 71.9327C122.812 73.3423 121.972 76.4739 123.38 78.914C124.789 81.354 127.922 82.1924 130.363 80.7827C132.805 79.3731 133.645 76.241 132.236 73.8009Z",fill:"#BA3FD9"}}),l._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.9654 94.7879C84.1479 94.7879 81.8561 97.0816 81.8561 99.9009C81.8561 102.72 84.1479 105.014 86.9654 105.014C89.783 105.014 92.0753 102.72 92.0753 99.9009C92.0753 97.0816 89.783 94.7879 86.9654 94.7879ZM86.9654 111.135C80.7752 111.135 75.7395 106.096 75.7395 99.9009C75.7395 93.7064 80.7752 88.6668 86.9654 88.6668C93.1557 88.6668 98.1919 93.7064 98.1919 99.9009C98.1919 106.096 93.1557 111.135 86.9654 111.135Z",fill:"#BA3FD9"}})])}),[],!1,null,null,null);C.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/38.dd868fa6.js b/main/assets/js/38.18bcb933.js similarity index 99% rename from main/assets/js/38.dd868fa6.js rename to main/assets/js/38.18bcb933.js index 518fe089074..b730b16c085 100644 --- a/main/assets/js/38.dd868fa6.js +++ b/main/assets/js/38.18bcb933.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{522:function(C,l,e){"use strict";e.r(l);var t=e(1),d=Object(t.a)({},(function(){var C=this.$createElement,l=this._self._c||C;return l("svg",{attrs:{width:"144",height:"28",viewBox:"0 0 144 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16 20.0202L14.0251 18.0202C13.275 18.72 12.5167 19.2745 11.7497 19.6829C10.9834 20.091 10.0666 20.2951 9.00008 20.2951C8.16662 20.2951 7.3959 20.1329 6.68758 19.8077C5.97926 19.4826 5.36673 19.0371 4.84999 18.4701C4.33325 17.9035 3.93355 17.2411 3.64989 16.4829C3.36656 15.7247 3.22523 14.9118 3.22523 14.0457C3.22523 13.1789 3.36656 12.3705 3.64989 11.6204C3.93355 10.8706 4.33325 10.2166 4.84999 9.65808C5.36673 9.09989 5.97926 8.6584 6.68758 8.33326C7.3959 8.00846 8.16662 7.8459 9.00008 7.8459C9.99983 7.8459 10.8916 8.0459 11.6748 8.44591C12.4584 8.84558 13.2001 9.37072 13.8997 10.0207L15.8749 7.74606C15.4583 7.34605 15.0168 6.97944 14.55 6.64587C14.0835 6.31264 13.5752 6.02494 13.025 5.78345C12.4749 5.54163 11.8708 5.35444 11.2124 5.22122C10.554 5.08765 9.82477 5.02087 9.02504 5.02087C7.69171 5.02087 6.47508 5.25865 5.37516 5.73354C4.2749 6.20842 3.32507 6.85835 2.525 7.68333C1.72493 8.50831 1.10431 9.47056 0.66245 10.5707C0.220592 11.6706 0 12.8457 0 14.0956C0 15.3621 0.224977 16.5453 0.67493 17.6455C1.12488 18.745 1.74585 19.6991 2.53748 20.5076C3.32912 21.3157 4.26646 21.9531 5.34986 22.4199C6.43326 22.8867 7.61683 23.1198 8.89991 23.1198C9.71684 23.1198 10.4626 23.0489 11.1375 22.9073C11.8125 22.7656 12.4334 22.5575 13.0001 22.2827C13.5667 22.0074 14.096 21.6823 14.5877 21.3076C15.0792 20.9325 15.55 20.5032 16 20.0202",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.6691 9.97591C55.6691 9.39376 55.9177 8.8991 56.4152 8.49193C56.9123 8.08409 57.6087 7.88051 58.5037 7.88051C59.2995 7.88051 60.0868 8.03462 60.8657 8.34219C61.645 8.64975 62.4323 9.09461 63.2277 9.67642L64.8688 7.35691C63.9741 6.64184 63.0167 6.09737 61.9972 5.72352C60.9774 5.34933 59.8298 5.16223 58.5534 5.16223C57.6916 5.16223 56.8959 5.2827 56.1706 5.52397C55.4413 5.76491 54.82 6.10982 54.3018 6.55872C53.7838 7.00795 53.3776 7.544 53.0793 8.16754C52.7851 8.79108 52.6359 9.48529 52.6359 10.2502C52.6359 11.0648 52.7643 11.755 53.0213 12.3203C53.2783 12.8857 53.6553 13.3679 54.1444 13.767C54.6332 14.1661 55.2424 14.4985 55.9633 14.7647C56.6886 15.0309 57.5135 15.2715 58.4457 15.4878C59.2582 15.6874 59.9167 15.8785 60.4266 16.0612C60.9322 16.2443 61.33 16.4398 61.6242 16.6474C61.914 16.8554 62.1133 17.0839 62.221 17.3332C62.3287 17.5829 62.3824 17.8652 62.3824 18.1812C62.3824 18.8633 62.1049 19.4037 61.5497 19.8025C60.9942 20.2019 60.2441 20.4011 59.2995 20.4011C58.2055 20.4011 57.2273 20.2056 56.3655 19.8149C55.5034 19.4243 54.65 18.8633 53.8043 18.1314L51.9646 20.3264C53.0089 21.274 54.1444 21.9766 55.3709 22.4339C56.5977 22.8912 57.8821 23.1197 59.2247 23.1197C60.1364 23.1197 60.9738 23.0033 61.7363 22.7708C62.4944 22.5376 63.1492 22.1967 63.688 21.7478C64.2307 21.2989 64.6534 20.7504 64.96 20.102C65.2626 19.4535 65.4159 18.7136 65.4159 17.8821C65.4159 17.1505 65.2958 16.5145 65.0553 15.9741C64.8148 15.4337 64.4585 14.9602 63.9946 14.5524C63.5303 14.1452 62.9419 13.7999 62.2374 13.5173C61.5333 13.2349 60.7208 12.9772 59.809 12.7443C58.9761 12.5448 58.2924 12.3533 57.7496 12.1706C57.2109 11.9879 56.7882 11.7883 56.4772 11.5719C56.1706 11.3559 55.9596 11.1231 55.8432 10.8737C55.7275 10.624 55.6691 10.3249 55.6691 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.7054 10.223V22.6955H92.7433V5.30359H89.4809L84.1768 13.5276L78.8726 5.30359H75.6106V22.6955H78.6485V10.2726L84.1019 18.4221H84.2017L89.7054 10.223Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.268 14.0956C118.268 14.9455 118.122 15.7496 117.831 16.5081C117.54 17.2663 117.137 17.9244 116.621 18.4825C116.105 19.0407 115.486 19.4826 114.762 19.8077C114.038 20.1328 113.244 20.2951 112.379 20.2951C111.514 20.2951 110.715 20.1284 109.983 19.7952C109.252 19.4617 108.623 19.0117 108.099 18.4454C107.576 17.8785 107.168 17.2161 106.877 16.4579C106.586 15.6997 106.44 14.8953 106.44 14.0457C106.44 13.1954 106.586 12.3913 106.877 11.6331C107.168 10.8746 107.571 10.2166 108.087 9.65806C108.603 9.09986 109.223 8.65837 109.946 8.33324C110.67 8.00844 111.464 7.84587 112.329 7.84587C113.194 7.84587 113.993 8.01249 114.725 8.34605C115.456 8.67928 116.085 9.12921 116.608 9.69583C117.133 10.2621 117.54 10.9249 117.831 11.6831C118.122 12.4413 118.268 13.2457 118.268 14.0956ZM121.487 14.0457C121.487 12.8123 121.262 11.6456 120.813 10.5455C120.364 9.44593 119.74 8.4874 118.942 7.67085C118.143 6.85397 117.187 6.20842 116.072 5.73354C114.957 5.25865 113.727 5.02087 112.379 5.02087C111.032 5.02087 109.801 5.2627 108.686 5.74602C107.571 6.22933 106.606 6.88331 105.791 7.70829C104.976 8.53327 104.344 9.49585 103.895 10.5957C103.446 11.6956 103.221 12.8622 103.221 14.0956C103.221 15.3287 103.446 16.495 103.895 17.5952C104.344 18.6954 104.968 19.6536 105.766 20.4701C106.565 21.2867 107.521 21.9326 108.636 22.4074C109.75 22.8823 110.981 23.1198 112.329 23.1198C113.676 23.1198 114.908 22.8779 116.022 22.395C117.137 21.9117 118.101 21.2577 118.917 20.4324C119.732 19.6077 120.364 18.6451 120.813 17.5453C121.262 16.4454 121.487 15.2788 121.487 14.0457V14.0457Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M134.253 9.97591C134.253 9.39376 134.502 8.8991 134.999 8.49193C135.496 8.08409 136.192 7.88051 137.088 7.88051C137.883 7.88051 138.671 8.03462 139.45 8.34219C140.229 8.64975 141.016 9.09461 141.812 9.67642L143.453 7.35691C142.558 6.64184 141.6 6.09737 140.581 5.72352C139.562 5.34933 138.414 5.16223 137.137 5.16223C136.276 5.16223 135.48 5.2827 134.755 5.52397C134.025 5.76491 133.404 6.10982 132.886 6.55872C132.368 7.00795 131.962 7.544 131.663 8.16754C131.369 8.79108 131.22 9.48529 131.22 10.2502C131.22 11.0648 131.348 11.755 131.605 12.3203C131.862 12.8857 132.239 13.3679 132.728 13.767C133.217 14.1661 133.826 14.4985 134.548 14.7647C135.273 15.0309 136.097 15.2715 137.03 15.4878C137.842 15.6874 138.501 15.8785 139.011 16.0612C139.516 16.2443 139.914 16.4398 140.208 16.6474C140.498 16.8554 140.697 17.0839 140.805 17.3332C140.913 17.5829 140.967 17.8652 140.967 18.1812C140.967 18.8633 140.689 19.4037 140.134 19.8025C139.578 20.2019 138.828 20.4011 137.883 20.4011C136.789 20.4011 135.811 20.2056 134.949 19.8149C134.088 19.4243 133.234 18.8633 132.388 18.1314L130.549 20.3264C131.593 21.274 132.728 21.9766 133.955 22.4339C135.181 22.8912 136.466 23.1197 137.809 23.1197C138.72 23.1197 139.557 23.0033 140.32 22.7708C141.078 22.5376 141.733 22.1967 142.272 21.7478C142.815 21.2989 143.237 20.7504 143.544 20.102C143.846 19.4535 144 18.7136 144 17.8821C144 17.1505 143.879 16.5145 143.639 15.9741C143.399 15.4337 143.043 14.9602 142.578 14.5524C142.114 14.1452 141.526 13.7999 140.821 13.5173C140.117 13.2349 139.304 12.9772 138.393 12.7443C137.56 12.5448 136.876 12.3533 136.334 12.1706C135.795 11.9879 135.372 11.7883 135.061 11.5719C134.755 11.3559 134.543 11.1231 134.427 10.8737C134.311 10.624 134.253 10.3249 134.253 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M36.8401 8.78536L28.5159 17.0984C28.4086 16.8904 28.3117 16.6737 28.2249 16.4489C27.9342 15.6936 27.7888 14.8922 27.7888 14.0458C27.7888 13.1987 27.9342 12.3977 28.2249 11.6424C28.5159 10.8867 28.919 10.2312 29.4345 9.67476C29.9499 9.11868 30.5694 8.67885 31.2924 8.35495C32.0158 8.03138 32.8095 7.86942 33.6739 7.86942C34.5386 7.86942 35.3367 8.03541 36.0679 8.36771C36.3397 8.49103 36.5971 8.63013 36.8401 8.78536ZM36.1056 19.786C35.3822 20.1099 34.5884 20.2715 33.7241 20.2715C32.8593 20.2715 32.0613 20.1055 31.3298 19.7736C31.0582 19.6499 30.8008 19.5108 30.5583 19.3552L38.8821 11.0429C38.9894 11.2505 39.0863 11.4669 39.1731 11.692C39.4638 12.4474 39.6092 13.2487 39.6092 14.0955C39.6092 14.9422 39.4638 15.7432 39.1731 16.4989C38.8821 17.2542 38.479 17.9098 37.9635 18.4658C37.4481 19.0219 36.829 19.4621 36.1056 19.786ZM37.365 22.3635C38.479 21.882 39.4433 21.2305 40.2579 20.4083C41.0725 19.5868 41.704 18.6278 42.1529 17.5321C42.602 16.4364 42.8265 15.2742 42.8265 14.0458C42.8265 12.817 42.602 11.6548 42.1529 10.5588C41.8867 9.90893 41.559 9.30883 41.17 8.75813L46.5841 3.35152L44.4328 1.20312L39.0022 6.62619C38.5147 6.29422 37.9854 6.00728 37.4148 5.76502C36.3007 5.29193 35.0706 5.05505 33.7241 5.05505C32.3772 5.05505 31.1471 5.29596 30.033 5.77745C28.919 6.25894 27.9547 6.91045 27.1401 7.73231C26.3255 8.55417 25.6936 9.51312 25.2448 10.6088C24.7959 11.7045 24.5715 12.8668 24.5715 14.0955C24.5715 15.3239 24.7959 16.4858 25.2448 17.5819C25.5113 18.232 25.839 18.8321 26.2279 19.3832L20.8142 24.7891L22.9656 26.9375L28.3958 21.5148C28.8833 21.8467 29.4126 22.1337 29.9832 22.3759C31.0973 22.849 32.3274 23.0856 33.6739 23.0856C35.0208 23.0856 36.2509 22.8447 37.365 22.3635V22.3635Z",fill:"#2E3148"}})])}),[],!1,null,null,null);l.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{626:function(C,l,e){"use strict";e.r(l);var t=e(1),d=Object(t.a)({},(function(){var C=this.$createElement,l=this._self._c||C;return l("svg",{attrs:{width:"144",height:"28",viewBox:"0 0 144 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16 20.0202L14.0251 18.0202C13.275 18.72 12.5167 19.2745 11.7497 19.6829C10.9834 20.091 10.0666 20.2951 9.00008 20.2951C8.16662 20.2951 7.3959 20.1329 6.68758 19.8077C5.97926 19.4826 5.36673 19.0371 4.84999 18.4701C4.33325 17.9035 3.93355 17.2411 3.64989 16.4829C3.36656 15.7247 3.22523 14.9118 3.22523 14.0457C3.22523 13.1789 3.36656 12.3705 3.64989 11.6204C3.93355 10.8706 4.33325 10.2166 4.84999 9.65808C5.36673 9.09989 5.97926 8.6584 6.68758 8.33326C7.3959 8.00846 8.16662 7.8459 9.00008 7.8459C9.99983 7.8459 10.8916 8.0459 11.6748 8.44591C12.4584 8.84558 13.2001 9.37072 13.8997 10.0207L15.8749 7.74606C15.4583 7.34605 15.0168 6.97944 14.55 6.64587C14.0835 6.31264 13.5752 6.02494 13.025 5.78345C12.4749 5.54163 11.8708 5.35444 11.2124 5.22122C10.554 5.08765 9.82477 5.02087 9.02504 5.02087C7.69171 5.02087 6.47508 5.25865 5.37516 5.73354C4.2749 6.20842 3.32507 6.85835 2.525 7.68333C1.72493 8.50831 1.10431 9.47056 0.66245 10.5707C0.220592 11.6706 0 12.8457 0 14.0956C0 15.3621 0.224977 16.5453 0.67493 17.6455C1.12488 18.745 1.74585 19.6991 2.53748 20.5076C3.32912 21.3157 4.26646 21.9531 5.34986 22.4199C6.43326 22.8867 7.61683 23.1198 8.89991 23.1198C9.71684 23.1198 10.4626 23.0489 11.1375 22.9073C11.8125 22.7656 12.4334 22.5575 13.0001 22.2827C13.5667 22.0074 14.096 21.6823 14.5877 21.3076C15.0792 20.9325 15.55 20.5032 16 20.0202",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.6691 9.97591C55.6691 9.39376 55.9177 8.8991 56.4152 8.49193C56.9123 8.08409 57.6087 7.88051 58.5037 7.88051C59.2995 7.88051 60.0868 8.03462 60.8657 8.34219C61.645 8.64975 62.4323 9.09461 63.2277 9.67642L64.8688 7.35691C63.9741 6.64184 63.0167 6.09737 61.9972 5.72352C60.9774 5.34933 59.8298 5.16223 58.5534 5.16223C57.6916 5.16223 56.8959 5.2827 56.1706 5.52397C55.4413 5.76491 54.82 6.10982 54.3018 6.55872C53.7838 7.00795 53.3776 7.544 53.0793 8.16754C52.7851 8.79108 52.6359 9.48529 52.6359 10.2502C52.6359 11.0648 52.7643 11.755 53.0213 12.3203C53.2783 12.8857 53.6553 13.3679 54.1444 13.767C54.6332 14.1661 55.2424 14.4985 55.9633 14.7647C56.6886 15.0309 57.5135 15.2715 58.4457 15.4878C59.2582 15.6874 59.9167 15.8785 60.4266 16.0612C60.9322 16.2443 61.33 16.4398 61.6242 16.6474C61.914 16.8554 62.1133 17.0839 62.221 17.3332C62.3287 17.5829 62.3824 17.8652 62.3824 18.1812C62.3824 18.8633 62.1049 19.4037 61.5497 19.8025C60.9942 20.2019 60.2441 20.4011 59.2995 20.4011C58.2055 20.4011 57.2273 20.2056 56.3655 19.8149C55.5034 19.4243 54.65 18.8633 53.8043 18.1314L51.9646 20.3264C53.0089 21.274 54.1444 21.9766 55.3709 22.4339C56.5977 22.8912 57.8821 23.1197 59.2247 23.1197C60.1364 23.1197 60.9738 23.0033 61.7363 22.7708C62.4944 22.5376 63.1492 22.1967 63.688 21.7478C64.2307 21.2989 64.6534 20.7504 64.96 20.102C65.2626 19.4535 65.4159 18.7136 65.4159 17.8821C65.4159 17.1505 65.2958 16.5145 65.0553 15.9741C64.8148 15.4337 64.4585 14.9602 63.9946 14.5524C63.5303 14.1452 62.9419 13.7999 62.2374 13.5173C61.5333 13.2349 60.7208 12.9772 59.809 12.7443C58.9761 12.5448 58.2924 12.3533 57.7496 12.1706C57.2109 11.9879 56.7882 11.7883 56.4772 11.5719C56.1706 11.3559 55.9596 11.1231 55.8432 10.8737C55.7275 10.624 55.6691 10.3249 55.6691 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.7054 10.223V22.6955H92.7433V5.30359H89.4809L84.1768 13.5276L78.8726 5.30359H75.6106V22.6955H78.6485V10.2726L84.1019 18.4221H84.2017L89.7054 10.223Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.268 14.0956C118.268 14.9455 118.122 15.7496 117.831 16.5081C117.54 17.2663 117.137 17.9244 116.621 18.4825C116.105 19.0407 115.486 19.4826 114.762 19.8077C114.038 20.1328 113.244 20.2951 112.379 20.2951C111.514 20.2951 110.715 20.1284 109.983 19.7952C109.252 19.4617 108.623 19.0117 108.099 18.4454C107.576 17.8785 107.168 17.2161 106.877 16.4579C106.586 15.6997 106.44 14.8953 106.44 14.0457C106.44 13.1954 106.586 12.3913 106.877 11.6331C107.168 10.8746 107.571 10.2166 108.087 9.65806C108.603 9.09986 109.223 8.65837 109.946 8.33324C110.67 8.00844 111.464 7.84587 112.329 7.84587C113.194 7.84587 113.993 8.01249 114.725 8.34605C115.456 8.67928 116.085 9.12921 116.608 9.69583C117.133 10.2621 117.54 10.9249 117.831 11.6831C118.122 12.4413 118.268 13.2457 118.268 14.0956ZM121.487 14.0457C121.487 12.8123 121.262 11.6456 120.813 10.5455C120.364 9.44593 119.74 8.4874 118.942 7.67085C118.143 6.85397 117.187 6.20842 116.072 5.73354C114.957 5.25865 113.727 5.02087 112.379 5.02087C111.032 5.02087 109.801 5.2627 108.686 5.74602C107.571 6.22933 106.606 6.88331 105.791 7.70829C104.976 8.53327 104.344 9.49585 103.895 10.5957C103.446 11.6956 103.221 12.8622 103.221 14.0956C103.221 15.3287 103.446 16.495 103.895 17.5952C104.344 18.6954 104.968 19.6536 105.766 20.4701C106.565 21.2867 107.521 21.9326 108.636 22.4074C109.75 22.8823 110.981 23.1198 112.329 23.1198C113.676 23.1198 114.908 22.8779 116.022 22.395C117.137 21.9117 118.101 21.2577 118.917 20.4324C119.732 19.6077 120.364 18.6451 120.813 17.5453C121.262 16.4454 121.487 15.2788 121.487 14.0457V14.0457Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M134.253 9.97591C134.253 9.39376 134.502 8.8991 134.999 8.49193C135.496 8.08409 136.192 7.88051 137.088 7.88051C137.883 7.88051 138.671 8.03462 139.45 8.34219C140.229 8.64975 141.016 9.09461 141.812 9.67642L143.453 7.35691C142.558 6.64184 141.6 6.09737 140.581 5.72352C139.562 5.34933 138.414 5.16223 137.137 5.16223C136.276 5.16223 135.48 5.2827 134.755 5.52397C134.025 5.76491 133.404 6.10982 132.886 6.55872C132.368 7.00795 131.962 7.544 131.663 8.16754C131.369 8.79108 131.22 9.48529 131.22 10.2502C131.22 11.0648 131.348 11.755 131.605 12.3203C131.862 12.8857 132.239 13.3679 132.728 13.767C133.217 14.1661 133.826 14.4985 134.548 14.7647C135.273 15.0309 136.097 15.2715 137.03 15.4878C137.842 15.6874 138.501 15.8785 139.011 16.0612C139.516 16.2443 139.914 16.4398 140.208 16.6474C140.498 16.8554 140.697 17.0839 140.805 17.3332C140.913 17.5829 140.967 17.8652 140.967 18.1812C140.967 18.8633 140.689 19.4037 140.134 19.8025C139.578 20.2019 138.828 20.4011 137.883 20.4011C136.789 20.4011 135.811 20.2056 134.949 19.8149C134.088 19.4243 133.234 18.8633 132.388 18.1314L130.549 20.3264C131.593 21.274 132.728 21.9766 133.955 22.4339C135.181 22.8912 136.466 23.1197 137.809 23.1197C138.72 23.1197 139.557 23.0033 140.32 22.7708C141.078 22.5376 141.733 22.1967 142.272 21.7478C142.815 21.2989 143.237 20.7504 143.544 20.102C143.846 19.4535 144 18.7136 144 17.8821C144 17.1505 143.879 16.5145 143.639 15.9741C143.399 15.4337 143.043 14.9602 142.578 14.5524C142.114 14.1452 141.526 13.7999 140.821 13.5173C140.117 13.2349 139.304 12.9772 138.393 12.7443C137.56 12.5448 136.876 12.3533 136.334 12.1706C135.795 11.9879 135.372 11.7883 135.061 11.5719C134.755 11.3559 134.543 11.1231 134.427 10.8737C134.311 10.624 134.253 10.3249 134.253 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M36.8401 8.78536L28.5159 17.0984C28.4086 16.8904 28.3117 16.6737 28.2249 16.4489C27.9342 15.6936 27.7888 14.8922 27.7888 14.0458C27.7888 13.1987 27.9342 12.3977 28.2249 11.6424C28.5159 10.8867 28.919 10.2312 29.4345 9.67476C29.9499 9.11868 30.5694 8.67885 31.2924 8.35495C32.0158 8.03138 32.8095 7.86942 33.6739 7.86942C34.5386 7.86942 35.3367 8.03541 36.0679 8.36771C36.3397 8.49103 36.5971 8.63013 36.8401 8.78536ZM36.1056 19.786C35.3822 20.1099 34.5884 20.2715 33.7241 20.2715C32.8593 20.2715 32.0613 20.1055 31.3298 19.7736C31.0582 19.6499 30.8008 19.5108 30.5583 19.3552L38.8821 11.0429C38.9894 11.2505 39.0863 11.4669 39.1731 11.692C39.4638 12.4474 39.6092 13.2487 39.6092 14.0955C39.6092 14.9422 39.4638 15.7432 39.1731 16.4989C38.8821 17.2542 38.479 17.9098 37.9635 18.4658C37.4481 19.0219 36.829 19.4621 36.1056 19.786ZM37.365 22.3635C38.479 21.882 39.4433 21.2305 40.2579 20.4083C41.0725 19.5868 41.704 18.6278 42.1529 17.5321C42.602 16.4364 42.8265 15.2742 42.8265 14.0458C42.8265 12.817 42.602 11.6548 42.1529 10.5588C41.8867 9.90893 41.559 9.30883 41.17 8.75813L46.5841 3.35152L44.4328 1.20312L39.0022 6.62619C38.5147 6.29422 37.9854 6.00728 37.4148 5.76502C36.3007 5.29193 35.0706 5.05505 33.7241 5.05505C32.3772 5.05505 31.1471 5.29596 30.033 5.77745C28.919 6.25894 27.9547 6.91045 27.1401 7.73231C26.3255 8.55417 25.6936 9.51312 25.2448 10.6088C24.7959 11.7045 24.5715 12.8668 24.5715 14.0955C24.5715 15.3239 24.7959 16.4858 25.2448 17.5819C25.5113 18.232 25.839 18.8321 26.2279 19.3832L20.8142 24.7891L22.9656 26.9375L28.3958 21.5148C28.8833 21.8467 29.4126 22.1337 29.9832 22.3759C31.0973 22.849 32.3274 23.0856 33.6739 23.0856C35.0208 23.0856 36.2509 22.8447 37.365 22.3635V22.3635Z",fill:"#2E3148"}})])}),[],!1,null,null,null);l.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/39.ee5eaa8d.js b/main/assets/js/39.8604af16.js similarity index 97% rename from main/assets/js/39.ee5eaa8d.js rename to main/assets/js/39.8604af16.js index bcc1d0c00fc..4b676148a32 100644 --- a/main/assets/js/39.ee5eaa8d.js +++ b/main/assets/js/39.8604af16.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{520: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/4.bb48967f.js b/main/assets/js/4.6acb97a1.js similarity index 99% rename from main/assets/js/4.bb48967f.js rename to main/assets/js/4.6acb97a1.js index cc9037c2d73..3f0baa1c2b7 100644 --- a/main/assets/js/4.bb48967f.js +++ b/main/assets/js/4.6acb97a1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{422:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-manager.ebc7a475.png"},423:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-search.bb886e41.png"},424:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-dev-mode.9eb97345.png"},505:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ledger-nano-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano-support"}},[e._v("#")]),e._v(" Ledger Nano Support")]),e._v(" "),a("p",[e._v("Using a hardware wallet to store your keys greatly improves the security of your crypto assets. The Ledger device acts as an enclave of the seed and private keys, and the process of signing transaction takes place within it. No private information ever leaves the Ledger device. The following is a short tutorial on using the Cosmos Ledger app with the Gaia CLI or the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),a("OutboundLink")],1),e._v(" wallet extension.")]),e._v(" "),a("p",[e._v("At the core of a Ledger device there is a mnemonic seed phrase that is used to generate private keys. This phrase is generated when you initialize your Ledger. The mnemonic is compatible with Cosmos and can be used to seed new accounts.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])]),e._v(" "),a("h2",{attrs:{id:"install-the-cosmos-ledger-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("#")]),e._v(" Install the Cosmos Ledger application")]),e._v(" "),a("p",[e._v("Installing the "),a("code",[e._v("Cosmos")]),e._v(" application on your ledger device is required before you can use either "),a("a",{attrs:{href:"#keplr-+-ledger-nano"}},[e._v("Keplr")]),e._v(" or "),a("a",{attrs:{href:"#gaia-cli-+-ledger-nano"}},[a("code",[e._v("gaiad")])]),e._v(". To do so, you need to:")]),e._v(" "),a("ol",[a("li",[e._v("Install "),a("a",{attrs:{href:"https://shop.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger Live"),a("OutboundLink")],1),e._v(" on your machine.\n")]),e._v(" "),a("li",[e._v("Using Ledger Live, "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("update your Ledger Nano S with the latest firmware"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("li",[e._v("On the Ledger Live application, navigate to the "),a("code",[e._v("Manager")]),e._v(" menu .\n"),a("img",{attrs:{src:o(422),alt:"manager"}})]),e._v(" "),a("li",[e._v("Connect your Ledger Nano device and allow Ledger Manager from it.")]),e._v(" "),a("li",[e._v("On the Ledger Live application, Search for "),a("code",[e._v("Cosmos")]),e._v(".\n"),a("img",{attrs:{src:o(423),alt:"search"}})]),e._v(" "),a("li",[e._v("Install the Cosmos application by clicking on "),a("code",[e._v("Install")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To see the "),a("code",[e._v("Cosmos")]),e._v(" application when you search for it, you might need to activate the "),a("code",[e._v("Developer Mode")]),e._v(", located in the Experimental features tab of the Ledger Live application.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(424),alt:"Devmode"}})]),e._v(" "),a("h2",{attrs:{id:"keplr-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keplr-ledger-nano"}},[e._v("#")]),e._v(" Keplr + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before following this section")])]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger device to your computer, unlock it with the PIN and open the Cosmos app.")]),e._v(" "),a("li",[e._v("Install the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr browser extension"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Click on the Keplr extension icon and select "),a("code",[e._v("Import Ledger")]),e._v(" and choose an account name and password.")]),e._v(" "),a("li",[e._v("Make sure your Ledger device is unlocked and has the Cosmos app open and then follow the instructions on the Keplr pop-up.")])]),e._v(" "),a("p",[e._v("That's it! You can now use Keplr with your Ledger Nano S. You can use the "),a("a",{attrs:{href:"https://wallet.keplr.app/#/dashboard",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr web app"),a("OutboundLink")],1),e._v(" to get a more detailed overview of your Cosmos account.")]),e._v(" "),a("p",[a("strong",[e._v("Note: Each time you will send a transaction, you will need to confirm it on your Ledger device. Indication will be prompted from the Keplr interface")])]),e._v(" "),a("h3",{attrs:{id:"optional-confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#optional-confirm-your-address"}},[e._v("#")]),e._v(" (Optional) Confirm your address")]),e._v(" "),a("p",[e._v("You can double check that Keplr is displaying the correct address directly on your Ledger Nano device. To do so:")]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger to your computer and open the Cosmos application on the device.")]),e._v(" "),a("li",[e._v("Once the Cosmos app is open, click on the right button to access the "),a("code",[e._v("Show Address")]),e._v(" option.")]),e._v(" "),a("li",[e._v("Click on both button, then select "),a("code",[e._v("Account 0")]),e._v(" and "),a("code",[e._v("Index 0")]),e._v(".")])]),e._v(" "),a("p",[e._v("You should now see the same address that is displayed on the Keplr extension.")]),e._v(" "),a("p",[e._v("To learn more about using Keplr, we suggest you have a look at their "),a("a",{attrs:{href:"https://keplr.crunch.help",target:"_blank",rel:"noopener noreferrer"}},[e._v("support documentation"),a("OutboundLink")],1),e._v(".\n"),e._v("\nYou can also have a look at the "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/4411149814417?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger support page"),a("OutboundLink")],1),e._v(" for more details.\n")]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before using following this section")])]),e._v(" "),a("p",[e._v("The tool used to generate addresses and transactions on the Cosmos Hub network is "),a("code",[e._v("gaiad")]),e._v(". Here is how to get started. If using a CLI tool is unfamiliar to you, scroll down and follow instructions for using the Keplr wallet instead.")]),e._v(" "),a("h3",{attrs:{id:"before-you-begin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#before-you-begin"}},[e._v("#")]),e._v(" Before you Begin")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Golang"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("Install Gaia")])],1)]),e._v(" "),a("p",[e._v("Verify that gaiad is installed correctly with the following command")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQK"}}),e._v(" "),a("h3",{attrs:{id:"add-your-ledger-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-your-ledger-key"}},[e._v("#")]),e._v(" Add your Ledger key")]),e._v(" "),a("ul",[a("li",[e._v("Connect and unlock your Ledger device.")]),e._v(" "),a("li",[e._v("Open the Cosmos app on your Ledger.")]),e._v(" "),a("li",[e._v("Create an account in gaiad from your ledger key.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to change the "),a("em",[e._v("keyName")]),e._v(" parameter to be a meaningful name. The "),a("code",[e._v("ledger")]),e._v(" flag tells "),a("code",[e._v("gaiad")]),e._v(" to use your Ledger to seed the account.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("Cosmos uses "),a("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(". This means you can setup many accounts using the same Ledger seed. To create another account from your Ledger device, run (change the integer i to some value >= 0 to choose the account for HD derivation):")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3NlY29uZEtleU5hbWUmZ3Q7IC0tbGVkZ2VyIC0tYWNjb3VudCAmbHQ7aSZndDsK"}}),e._v(" "),a("h3",{attrs:{id:"confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-address"}},[e._v("#")]),e._v(" Confirm your address")]),e._v(" "),a("p",[e._v("Run this command to display your address on the device. Use the "),a("code",[e._v("keyName")]),e._v(" you gave your ledger key. The "),a("code",[e._v("-d")]),e._v(" flag is supported in version "),a("code",[e._v("1.5.0")]),e._v(" and higher.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("Confirm that the address displayed on the device matches that displayed when you added the key.")]),e._v(" "),a("h3",{attrs:{id:"connect-to-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-full-node"}},[e._v("#")]),e._v(" Connect to a full node")]),e._v(" "),a("p",[e._v("Next, you need to configure gaiad with the URL of a Cosmos full node and the appropriate "),a("code",[e._v("chain_id")]),e._v(". In this example we connect to the public load balanced full node operated by Chorus One on the "),a("code",[e._v("cosmoshub-2")]),e._v(" chain. But you can point your "),a("code",[e._v("gaiad")]),e._v(" to any Cosmos full node. Be sure that the "),a("code",[e._v("chain-id")]),e._v(" is set to the same chain as the full node.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("Test your connection with a query such as:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To run your own full node locally "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("read more here.")]),e._v(".")],1)]),e._v(" "),a("h3",{attrs:{id:"sign-a-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-a-transaction"}},[e._v("#")]),e._v(" Sign a transaction")]),e._v(" "),a("p",[e._v("You are now ready to start signing and sending transactions. Send a transaction with gaiad using the "),a("code",[e._v("tx send")]),e._v(" command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to unlock your device with the PIN and open the Cosmos app before trying to run these commands")])]),e._v(" "),a("p",[e._v("Use the "),a("code",[e._v("keyName")]),e._v(" you set for your Ledger key and gaia will connect with the Cosmos Ledger app to then sign your transaction.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtrZXlOYW1lJmd0OyAmbHQ7ZGVzdGluYXRpb25BZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbWluYXRpb24mZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("When prompted with "),a("code",[e._v("confirm transaction before signing")]),e._v(", Answer "),a("code",[e._v("Y")]),e._v(".")]),e._v(" "),a("p",[e._v("Next you will be prompted to review and approve the transaction on your Ledger device. Be sure to inspect the transaction JSON displayed on the screen. You can scroll through each field and each message. Scroll down to read more about the data fields of a standard transaction object.")]),e._v(" "),a("p",[e._v("Now, you are all set to start "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v("sending transactions on the network")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"receive-funds"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receive-funds"}},[e._v("#")]),e._v(" Receive funds")]),e._v(" "),a("p",[e._v("To receive funds to the Cosmos account on your Ledger device, retrieve the address for your Ledger account (the ones with "),a("code",[e._v("TYPE ledger")]),e._v(") with this command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"further-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#further-documentation"}},[e._v("#")]),e._v(" Further documentation")]),e._v(" "),a("p",[e._v("Not sure what "),a("code",[e._v("gaiad")]),e._v(" can do? Simply run the command without arguments to output documentation for the commands in supports.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("The "),a("code",[e._v("gaiad")]),e._v(" help commands are nested. So "),a("code",[e._v("$ gaiad")]),e._v(" will output docs for the top level commands (status, config, query, and tx). You can access documentation for sub commands with further help commands.")]),e._v(" "),a("p",[e._v("For example, to print the "),a("code",[e._v("query")]),e._v(" commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("Or to print the "),a("code",[e._v("tx")]),e._v(" (transaction) commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}})],1),e._v(" "),a("h2",{attrs:{id:"the-cosmos-standard-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-standard-transaction"}},[e._v("#")]),e._v(" The Cosmos Standard Transaction")]),e._v(" "),a("p",[e._v("Transactions in Cosmos embed the "),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standard Transaction type"),a("OutboundLink")],1),e._v(" from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": The chain to which you are broadcasting the tx, such as the "),a("code",[e._v("gaia-13003")]),e._v(" testnet or "),a("code",[e._v("cosmoshub-2")]),e._v(": mainnet.")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": The global id of the sending account assigned when the account receives funds for the first time.")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": The nonce for this account, incremented with each transaction.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": JSON object describing the transaction fee, its gas amount and coin denomination")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": optional text field used in various ways to tag transactions.")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": The array of messages included in the transaction. Double click to drill down into nested fields of the JSON.")])]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[e._v("For further support, start by looking over the posts in our "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Feel welcome to reach out in our "),a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram channel"),a("OutboundLink")],1),e._v(" to ask for help.")]),e._v(" "),a("p",[e._v("Here are a few relevant and helpful tutorials from the wonderful Cosmos community:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://catdotfish.medium.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Catdotfish"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/chainapsis/how-to-use-keplr-wallet-40afc80907f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to use the Keplr Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{422:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-manager.ebc7a475.png"},423:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-search.bb886e41.png"},424:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-dev-mode.9eb97345.png"},506:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ledger-nano-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano-support"}},[e._v("#")]),e._v(" Ledger Nano Support")]),e._v(" "),a("p",[e._v("Using a hardware wallet to store your keys greatly improves the security of your crypto assets. The Ledger device acts as an enclave of the seed and private keys, and the process of signing transaction takes place within it. No private information ever leaves the Ledger device. The following is a short tutorial on using the Cosmos Ledger app with the Gaia CLI or the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),a("OutboundLink")],1),e._v(" wallet extension.")]),e._v(" "),a("p",[e._v("At the core of a Ledger device there is a mnemonic seed phrase that is used to generate private keys. This phrase is generated when you initialize your Ledger. The mnemonic is compatible with Cosmos and can be used to seed new accounts.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])]),e._v(" "),a("h2",{attrs:{id:"install-the-cosmos-ledger-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("#")]),e._v(" Install the Cosmos Ledger application")]),e._v(" "),a("p",[e._v("Installing the "),a("code",[e._v("Cosmos")]),e._v(" application on your ledger device is required before you can use either "),a("a",{attrs:{href:"#keplr-+-ledger-nano"}},[e._v("Keplr")]),e._v(" or "),a("a",{attrs:{href:"#gaia-cli-+-ledger-nano"}},[a("code",[e._v("gaiad")])]),e._v(". To do so, you need to:")]),e._v(" "),a("ol",[a("li",[e._v("Install "),a("a",{attrs:{href:"https://shop.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger Live"),a("OutboundLink")],1),e._v(" on your machine.\n")]),e._v(" "),a("li",[e._v("Using Ledger Live, "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("update your Ledger Nano S with the latest firmware"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("li",[e._v("On the Ledger Live application, navigate to the "),a("code",[e._v("Manager")]),e._v(" menu .\n"),a("img",{attrs:{src:o(422),alt:"manager"}})]),e._v(" "),a("li",[e._v("Connect your Ledger Nano device and allow Ledger Manager from it.")]),e._v(" "),a("li",[e._v("On the Ledger Live application, Search for "),a("code",[e._v("Cosmos")]),e._v(".\n"),a("img",{attrs:{src:o(423),alt:"search"}})]),e._v(" "),a("li",[e._v("Install the Cosmos application by clicking on "),a("code",[e._v("Install")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To see the "),a("code",[e._v("Cosmos")]),e._v(" application when you search for it, you might need to activate the "),a("code",[e._v("Developer Mode")]),e._v(", located in the Experimental features tab of the Ledger Live application.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(424),alt:"Devmode"}})]),e._v(" "),a("h2",{attrs:{id:"keplr-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keplr-ledger-nano"}},[e._v("#")]),e._v(" Keplr + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before following this section")])]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger device to your computer, unlock it with the PIN and open the Cosmos app.")]),e._v(" "),a("li",[e._v("Install the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr browser extension"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Click on the Keplr extension icon and select "),a("code",[e._v("Import Ledger")]),e._v(" and choose an account name and password.")]),e._v(" "),a("li",[e._v("Make sure your Ledger device is unlocked and has the Cosmos app open and then follow the instructions on the Keplr pop-up.")])]),e._v(" "),a("p",[e._v("That's it! You can now use Keplr with your Ledger Nano S. You can use the "),a("a",{attrs:{href:"https://wallet.keplr.app/#/dashboard",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr web app"),a("OutboundLink")],1),e._v(" to get a more detailed overview of your Cosmos account.")]),e._v(" "),a("p",[a("strong",[e._v("Note: Each time you will send a transaction, you will need to confirm it on your Ledger device. Indication will be prompted from the Keplr interface")])]),e._v(" "),a("h3",{attrs:{id:"optional-confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#optional-confirm-your-address"}},[e._v("#")]),e._v(" (Optional) Confirm your address")]),e._v(" "),a("p",[e._v("You can double check that Keplr is displaying the correct address directly on your Ledger Nano device. To do so:")]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger to your computer and open the Cosmos application on the device.")]),e._v(" "),a("li",[e._v("Once the Cosmos app is open, click on the right button to access the "),a("code",[e._v("Show Address")]),e._v(" option.")]),e._v(" "),a("li",[e._v("Click on both button, then select "),a("code",[e._v("Account 0")]),e._v(" and "),a("code",[e._v("Index 0")]),e._v(".")])]),e._v(" "),a("p",[e._v("You should now see the same address that is displayed on the Keplr extension.")]),e._v(" "),a("p",[e._v("To learn more about using Keplr, we suggest you have a look at their "),a("a",{attrs:{href:"https://keplr.crunch.help",target:"_blank",rel:"noopener noreferrer"}},[e._v("support documentation"),a("OutboundLink")],1),e._v(".\n"),e._v("\nYou can also have a look at the "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/4411149814417?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger support page"),a("OutboundLink")],1),e._v(" for more details.\n")]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before using following this section")])]),e._v(" "),a("p",[e._v("The tool used to generate addresses and transactions on the Cosmos Hub network is "),a("code",[e._v("gaiad")]),e._v(". Here is how to get started. If using a CLI tool is unfamiliar to you, scroll down and follow instructions for using the Keplr wallet instead.")]),e._v(" "),a("h3",{attrs:{id:"before-you-begin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#before-you-begin"}},[e._v("#")]),e._v(" Before you Begin")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Golang"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("Install Gaia")])],1)]),e._v(" "),a("p",[e._v("Verify that gaiad is installed correctly with the following command")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQK"}}),e._v(" "),a("h3",{attrs:{id:"add-your-ledger-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-your-ledger-key"}},[e._v("#")]),e._v(" Add your Ledger key")]),e._v(" "),a("ul",[a("li",[e._v("Connect and unlock your Ledger device.")]),e._v(" "),a("li",[e._v("Open the Cosmos app on your Ledger.")]),e._v(" "),a("li",[e._v("Create an account in gaiad from your ledger key.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to change the "),a("em",[e._v("keyName")]),e._v(" parameter to be a meaningful name. The "),a("code",[e._v("ledger")]),e._v(" flag tells "),a("code",[e._v("gaiad")]),e._v(" to use your Ledger to seed the account.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("Cosmos uses "),a("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(". This means you can setup many accounts using the same Ledger seed. To create another account from your Ledger device, run (change the integer i to some value >= 0 to choose the account for HD derivation):")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3NlY29uZEtleU5hbWUmZ3Q7IC0tbGVkZ2VyIC0tYWNjb3VudCAmbHQ7aSZndDsK"}}),e._v(" "),a("h3",{attrs:{id:"confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-address"}},[e._v("#")]),e._v(" Confirm your address")]),e._v(" "),a("p",[e._v("Run this command to display your address on the device. Use the "),a("code",[e._v("keyName")]),e._v(" you gave your ledger key. The "),a("code",[e._v("-d")]),e._v(" flag is supported in version "),a("code",[e._v("1.5.0")]),e._v(" and higher.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("Confirm that the address displayed on the device matches that displayed when you added the key.")]),e._v(" "),a("h3",{attrs:{id:"connect-to-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-full-node"}},[e._v("#")]),e._v(" Connect to a full node")]),e._v(" "),a("p",[e._v("Next, you need to configure gaiad with the URL of a Cosmos full node and the appropriate "),a("code",[e._v("chain_id")]),e._v(". In this example we connect to the public load balanced full node operated by Chorus One on the "),a("code",[e._v("cosmoshub-2")]),e._v(" chain. But you can point your "),a("code",[e._v("gaiad")]),e._v(" to any Cosmos full node. Be sure that the "),a("code",[e._v("chain-id")]),e._v(" is set to the same chain as the full node.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("Test your connection with a query such as:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To run your own full node locally "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("read more here.")]),e._v(".")],1)]),e._v(" "),a("h3",{attrs:{id:"sign-a-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-a-transaction"}},[e._v("#")]),e._v(" Sign a transaction")]),e._v(" "),a("p",[e._v("You are now ready to start signing and sending transactions. Send a transaction with gaiad using the "),a("code",[e._v("tx send")]),e._v(" command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to unlock your device with the PIN and open the Cosmos app before trying to run these commands")])]),e._v(" "),a("p",[e._v("Use the "),a("code",[e._v("keyName")]),e._v(" you set for your Ledger key and gaia will connect with the Cosmos Ledger app to then sign your transaction.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtrZXlOYW1lJmd0OyAmbHQ7ZGVzdGluYXRpb25BZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbWluYXRpb24mZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("When prompted with "),a("code",[e._v("confirm transaction before signing")]),e._v(", Answer "),a("code",[e._v("Y")]),e._v(".")]),e._v(" "),a("p",[e._v("Next you will be prompted to review and approve the transaction on your Ledger device. Be sure to inspect the transaction JSON displayed on the screen. You can scroll through each field and each message. Scroll down to read more about the data fields of a standard transaction object.")]),e._v(" "),a("p",[e._v("Now, you are all set to start "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v("sending transactions on the network")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"receive-funds"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receive-funds"}},[e._v("#")]),e._v(" Receive funds")]),e._v(" "),a("p",[e._v("To receive funds to the Cosmos account on your Ledger device, retrieve the address for your Ledger account (the ones with "),a("code",[e._v("TYPE ledger")]),e._v(") with this command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"further-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#further-documentation"}},[e._v("#")]),e._v(" Further documentation")]),e._v(" "),a("p",[e._v("Not sure what "),a("code",[e._v("gaiad")]),e._v(" can do? Simply run the command without arguments to output documentation for the commands in supports.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("The "),a("code",[e._v("gaiad")]),e._v(" help commands are nested. So "),a("code",[e._v("$ gaiad")]),e._v(" will output docs for the top level commands (status, config, query, and tx). You can access documentation for sub commands with further help commands.")]),e._v(" "),a("p",[e._v("For example, to print the "),a("code",[e._v("query")]),e._v(" commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("Or to print the "),a("code",[e._v("tx")]),e._v(" (transaction) commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}})],1),e._v(" "),a("h2",{attrs:{id:"the-cosmos-standard-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-standard-transaction"}},[e._v("#")]),e._v(" The Cosmos Standard Transaction")]),e._v(" "),a("p",[e._v("Transactions in Cosmos embed the "),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standard Transaction type"),a("OutboundLink")],1),e._v(" from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": The chain to which you are broadcasting the tx, such as the "),a("code",[e._v("gaia-13003")]),e._v(" testnet or "),a("code",[e._v("cosmoshub-2")]),e._v(": mainnet.")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": The global id of the sending account assigned when the account receives funds for the first time.")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": The nonce for this account, incremented with each transaction.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": JSON object describing the transaction fee, its gas amount and coin denomination")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": optional text field used in various ways to tag transactions.")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": The array of messages included in the transaction. Double click to drill down into nested fields of the JSON.")])]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[e._v("For further support, start by looking over the posts in our "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Feel welcome to reach out in our "),a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram channel"),a("OutboundLink")],1),e._v(" to ask for help.")]),e._v(" "),a("p",[e._v("Here are a few relevant and helpful tutorials from the wonderful Cosmos community:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://catdotfish.medium.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Catdotfish"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/chainapsis/how-to-use-keplr-wallet-40afc80907f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to use the Keplr Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/40.e45488f0.js b/main/assets/js/40.4f975f70.js similarity index 99% rename from main/assets/js/40.e45488f0.js rename to main/assets/js/40.4f975f70.js index 411da210ead..da424725170 100644 --- a/main/assets/js/40.e45488f0.js +++ b/main/assets/js/40.4f975f70.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{519:function(C,l,e){"use strict";e.r(l);var t=e(1),d=Object(t.a)({},(function(){var C=this.$createElement,l=this._self._c||C;return l("svg",{attrs:{width:"144",height:"28",viewBox:"0 0 144 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16 20.0202L14.0251 18.0202C13.275 18.72 12.5167 19.2745 11.7497 19.6829C10.9834 20.091 10.0666 20.2951 9.00008 20.2951C8.16662 20.2951 7.3959 20.1329 6.68758 19.8077C5.97926 19.4826 5.36673 19.0371 4.84999 18.4701C4.33325 17.9035 3.93355 17.2411 3.64989 16.4829C3.36656 15.7247 3.22523 14.9118 3.22523 14.0457C3.22523 13.1789 3.36656 12.3705 3.64989 11.6204C3.93355 10.8706 4.33325 10.2166 4.84999 9.65808C5.36673 9.09989 5.97926 8.6584 6.68758 8.33326C7.3959 8.00846 8.16662 7.8459 9.00008 7.8459C9.99983 7.8459 10.8916 8.0459 11.6748 8.44591C12.4584 8.84558 13.2001 9.37072 13.8997 10.0207L15.8749 7.74606C15.4583 7.34605 15.0168 6.97944 14.55 6.64587C14.0835 6.31264 13.5752 6.02494 13.025 5.78345C12.4749 5.54163 11.8708 5.35444 11.2124 5.22122C10.554 5.08765 9.82477 5.02087 9.02504 5.02087C7.69171 5.02087 6.47508 5.25865 5.37516 5.73354C4.2749 6.20842 3.32507 6.85835 2.525 7.68333C1.72493 8.50831 1.10431 9.47056 0.66245 10.5707C0.220592 11.6706 0 12.8457 0 14.0956C0 15.3621 0.224977 16.5453 0.67493 17.6455C1.12488 18.745 1.74585 19.6991 2.53748 20.5076C3.32912 21.3157 4.26646 21.9531 5.34986 22.4199C6.43326 22.8867 7.61683 23.1198 8.89991 23.1198C9.71684 23.1198 10.4626 23.0489 11.1375 22.9073C11.8125 22.7656 12.4334 22.5575 13.0001 22.2827C13.5667 22.0074 14.096 21.6823 14.5877 21.3076C15.0792 20.9325 15.55 20.5032 16 20.0202",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.6691 9.97591C55.6691 9.39376 55.9177 8.8991 56.4152 8.49193C56.9123 8.08409 57.6087 7.88051 58.5037 7.88051C59.2995 7.88051 60.0868 8.03462 60.8657 8.34219C61.645 8.64975 62.4323 9.09461 63.2277 9.67642L64.8688 7.35691C63.9741 6.64184 63.0167 6.09737 61.9972 5.72352C60.9774 5.34933 59.8298 5.16223 58.5534 5.16223C57.6916 5.16223 56.8959 5.2827 56.1706 5.52397C55.4413 5.76491 54.82 6.10982 54.3018 6.55872C53.7838 7.00795 53.3776 7.544 53.0793 8.16754C52.7851 8.79108 52.6359 9.48529 52.6359 10.2502C52.6359 11.0648 52.7643 11.755 53.0213 12.3203C53.2783 12.8857 53.6553 13.3679 54.1444 13.767C54.6332 14.1661 55.2424 14.4985 55.9633 14.7647C56.6886 15.0309 57.5135 15.2715 58.4457 15.4878C59.2582 15.6874 59.9167 15.8785 60.4266 16.0612C60.9322 16.2443 61.33 16.4398 61.6242 16.6474C61.914 16.8554 62.1133 17.0839 62.221 17.3332C62.3287 17.5829 62.3824 17.8652 62.3824 18.1812C62.3824 18.8633 62.1049 19.4037 61.5497 19.8025C60.9942 20.2019 60.2441 20.4011 59.2995 20.4011C58.2055 20.4011 57.2273 20.2056 56.3655 19.8149C55.5034 19.4243 54.65 18.8633 53.8043 18.1314L51.9646 20.3264C53.0089 21.274 54.1444 21.9766 55.3709 22.4339C56.5977 22.8912 57.8821 23.1197 59.2247 23.1197C60.1364 23.1197 60.9738 23.0033 61.7363 22.7708C62.4944 22.5376 63.1492 22.1967 63.688 21.7478C64.2307 21.2989 64.6534 20.7504 64.96 20.102C65.2626 19.4535 65.4159 18.7136 65.4159 17.8821C65.4159 17.1505 65.2958 16.5145 65.0553 15.9741C64.8148 15.4337 64.4585 14.9602 63.9946 14.5524C63.5303 14.1452 62.9419 13.7999 62.2374 13.5173C61.5333 13.2349 60.7208 12.9772 59.809 12.7443C58.9761 12.5448 58.2924 12.3533 57.7496 12.1706C57.2109 11.9879 56.7882 11.7883 56.4772 11.5719C56.1706 11.3559 55.9596 11.1231 55.8432 10.8737C55.7275 10.624 55.6691 10.3249 55.6691 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.7054 10.223V22.6955H92.7433V5.30359H89.4809L84.1768 13.5276L78.8726 5.30359H75.6106V22.6955H78.6485V10.2726L84.1019 18.4221H84.2017L89.7054 10.223Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.268 14.0956C118.268 14.9455 118.122 15.7496 117.831 16.5081C117.54 17.2663 117.137 17.9244 116.621 18.4825C116.105 19.0407 115.486 19.4826 114.762 19.8077C114.038 20.1328 113.244 20.2951 112.379 20.2951C111.514 20.2951 110.715 20.1284 109.983 19.7952C109.252 19.4617 108.623 19.0117 108.099 18.4454C107.576 17.8785 107.168 17.2161 106.877 16.4579C106.586 15.6997 106.44 14.8953 106.44 14.0457C106.44 13.1954 106.586 12.3913 106.877 11.6331C107.168 10.8746 107.571 10.2166 108.087 9.65806C108.603 9.09986 109.223 8.65837 109.946 8.33324C110.67 8.00844 111.464 7.84587 112.329 7.84587C113.194 7.84587 113.993 8.01249 114.725 8.34605C115.456 8.67928 116.085 9.12921 116.608 9.69583C117.133 10.2621 117.54 10.9249 117.831 11.6831C118.122 12.4413 118.268 13.2457 118.268 14.0956ZM121.487 14.0457C121.487 12.8123 121.262 11.6456 120.813 10.5455C120.364 9.44593 119.74 8.4874 118.942 7.67085C118.143 6.85397 117.187 6.20842 116.072 5.73354C114.957 5.25865 113.727 5.02087 112.379 5.02087C111.032 5.02087 109.801 5.2627 108.686 5.74602C107.571 6.22933 106.606 6.88331 105.791 7.70829C104.976 8.53327 104.344 9.49585 103.895 10.5957C103.446 11.6956 103.221 12.8622 103.221 14.0956C103.221 15.3287 103.446 16.495 103.895 17.5952C104.344 18.6954 104.968 19.6536 105.766 20.4701C106.565 21.2867 107.521 21.9326 108.636 22.4074C109.75 22.8823 110.981 23.1198 112.329 23.1198C113.676 23.1198 114.908 22.8779 116.022 22.395C117.137 21.9117 118.101 21.2577 118.917 20.4324C119.732 19.6077 120.364 18.6451 120.813 17.5453C121.262 16.4454 121.487 15.2788 121.487 14.0457V14.0457Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M134.253 9.97591C134.253 9.39376 134.502 8.8991 134.999 8.49193C135.496 8.08409 136.192 7.88051 137.088 7.88051C137.883 7.88051 138.671 8.03462 139.45 8.34219C140.229 8.64975 141.016 9.09461 141.812 9.67642L143.453 7.35691C142.558 6.64184 141.6 6.09737 140.581 5.72352C139.562 5.34933 138.414 5.16223 137.137 5.16223C136.276 5.16223 135.48 5.2827 134.755 5.52397C134.025 5.76491 133.404 6.10982 132.886 6.55872C132.368 7.00795 131.962 7.544 131.663 8.16754C131.369 8.79108 131.22 9.48529 131.22 10.2502C131.22 11.0648 131.348 11.755 131.605 12.3203C131.862 12.8857 132.239 13.3679 132.728 13.767C133.217 14.1661 133.826 14.4985 134.548 14.7647C135.273 15.0309 136.097 15.2715 137.03 15.4878C137.842 15.6874 138.501 15.8785 139.011 16.0612C139.516 16.2443 139.914 16.4398 140.208 16.6474C140.498 16.8554 140.697 17.0839 140.805 17.3332C140.913 17.5829 140.967 17.8652 140.967 18.1812C140.967 18.8633 140.689 19.4037 140.134 19.8025C139.578 20.2019 138.828 20.4011 137.883 20.4011C136.789 20.4011 135.811 20.2056 134.949 19.8149C134.088 19.4243 133.234 18.8633 132.388 18.1314L130.549 20.3264C131.593 21.274 132.728 21.9766 133.955 22.4339C135.181 22.8912 136.466 23.1197 137.809 23.1197C138.72 23.1197 139.557 23.0033 140.32 22.7708C141.078 22.5376 141.733 22.1967 142.272 21.7478C142.815 21.2989 143.237 20.7504 143.544 20.102C143.846 19.4535 144 18.7136 144 17.8821C144 17.1505 143.879 16.5145 143.639 15.9741C143.399 15.4337 143.043 14.9602 142.578 14.5524C142.114 14.1452 141.526 13.7999 140.821 13.5173C140.117 13.2349 139.304 12.9772 138.393 12.7443C137.56 12.5448 136.876 12.3533 136.334 12.1706C135.795 11.9879 135.372 11.7883 135.061 11.5719C134.755 11.3559 134.543 11.1231 134.427 10.8737C134.311 10.624 134.253 10.3249 134.253 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M36.8401 8.78536L28.5159 17.0984C28.4086 16.8904 28.3117 16.6737 28.2249 16.4489C27.9342 15.6936 27.7888 14.8922 27.7888 14.0458C27.7888 13.1987 27.9342 12.3977 28.2249 11.6424C28.5159 10.8867 28.919 10.2312 29.4345 9.67476C29.9499 9.11868 30.5694 8.67885 31.2924 8.35495C32.0158 8.03138 32.8095 7.86942 33.6739 7.86942C34.5386 7.86942 35.3367 8.03541 36.0679 8.36771C36.3397 8.49103 36.5971 8.63013 36.8401 8.78536ZM36.1056 19.786C35.3822 20.1099 34.5884 20.2715 33.7241 20.2715C32.8593 20.2715 32.0613 20.1055 31.3298 19.7736C31.0582 19.6499 30.8008 19.5108 30.5583 19.3552L38.8821 11.0429C38.9894 11.2505 39.0863 11.4669 39.1731 11.692C39.4638 12.4474 39.6092 13.2487 39.6092 14.0955C39.6092 14.9422 39.4638 15.7432 39.1731 16.4989C38.8821 17.2542 38.479 17.9098 37.9635 18.4658C37.4481 19.0219 36.829 19.4621 36.1056 19.786ZM37.365 22.3635C38.479 21.882 39.4433 21.2305 40.2579 20.4083C41.0725 19.5868 41.704 18.6278 42.1529 17.5321C42.602 16.4364 42.8265 15.2742 42.8265 14.0458C42.8265 12.817 42.602 11.6548 42.1529 10.5588C41.8867 9.90893 41.559 9.30883 41.17 8.75813L46.5841 3.35152L44.4328 1.20312L39.0022 6.62619C38.5147 6.29422 37.9854 6.00728 37.4148 5.76502C36.3007 5.29193 35.0706 5.05505 33.7241 5.05505C32.3772 5.05505 31.1471 5.29596 30.033 5.77745C28.919 6.25894 27.9547 6.91045 27.1401 7.73231C26.3255 8.55417 25.6936 9.51312 25.2448 10.6088C24.7959 11.7045 24.5715 12.8668 24.5715 14.0955C24.5715 15.3239 24.7959 16.4858 25.2448 17.5819C25.5113 18.232 25.839 18.8321 26.2279 19.3832L20.8142 24.7891L22.9656 26.9375L28.3958 21.5148C28.8833 21.8467 29.4126 22.1337 29.9832 22.3759C31.0973 22.849 32.3274 23.0856 33.6739 23.0856C35.0208 23.0856 36.2509 22.8447 37.365 22.3635V22.3635Z",fill:"#2E3148"}})])}),[],!1,null,null,null);l.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{623:function(C,l,e){"use strict";e.r(l);var t=e(1),d=Object(t.a)({},(function(){var C=this.$createElement,l=this._self._c||C;return l("svg",{attrs:{width:"144",height:"28",viewBox:"0 0 144 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16 20.0202L14.0251 18.0202C13.275 18.72 12.5167 19.2745 11.7497 19.6829C10.9834 20.091 10.0666 20.2951 9.00008 20.2951C8.16662 20.2951 7.3959 20.1329 6.68758 19.8077C5.97926 19.4826 5.36673 19.0371 4.84999 18.4701C4.33325 17.9035 3.93355 17.2411 3.64989 16.4829C3.36656 15.7247 3.22523 14.9118 3.22523 14.0457C3.22523 13.1789 3.36656 12.3705 3.64989 11.6204C3.93355 10.8706 4.33325 10.2166 4.84999 9.65808C5.36673 9.09989 5.97926 8.6584 6.68758 8.33326C7.3959 8.00846 8.16662 7.8459 9.00008 7.8459C9.99983 7.8459 10.8916 8.0459 11.6748 8.44591C12.4584 8.84558 13.2001 9.37072 13.8997 10.0207L15.8749 7.74606C15.4583 7.34605 15.0168 6.97944 14.55 6.64587C14.0835 6.31264 13.5752 6.02494 13.025 5.78345C12.4749 5.54163 11.8708 5.35444 11.2124 5.22122C10.554 5.08765 9.82477 5.02087 9.02504 5.02087C7.69171 5.02087 6.47508 5.25865 5.37516 5.73354C4.2749 6.20842 3.32507 6.85835 2.525 7.68333C1.72493 8.50831 1.10431 9.47056 0.66245 10.5707C0.220592 11.6706 0 12.8457 0 14.0956C0 15.3621 0.224977 16.5453 0.67493 17.6455C1.12488 18.745 1.74585 19.6991 2.53748 20.5076C3.32912 21.3157 4.26646 21.9531 5.34986 22.4199C6.43326 22.8867 7.61683 23.1198 8.89991 23.1198C9.71684 23.1198 10.4626 23.0489 11.1375 22.9073C11.8125 22.7656 12.4334 22.5575 13.0001 22.2827C13.5667 22.0074 14.096 21.6823 14.5877 21.3076C15.0792 20.9325 15.55 20.5032 16 20.0202",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.6691 9.97591C55.6691 9.39376 55.9177 8.8991 56.4152 8.49193C56.9123 8.08409 57.6087 7.88051 58.5037 7.88051C59.2995 7.88051 60.0868 8.03462 60.8657 8.34219C61.645 8.64975 62.4323 9.09461 63.2277 9.67642L64.8688 7.35691C63.9741 6.64184 63.0167 6.09737 61.9972 5.72352C60.9774 5.34933 59.8298 5.16223 58.5534 5.16223C57.6916 5.16223 56.8959 5.2827 56.1706 5.52397C55.4413 5.76491 54.82 6.10982 54.3018 6.55872C53.7838 7.00795 53.3776 7.544 53.0793 8.16754C52.7851 8.79108 52.6359 9.48529 52.6359 10.2502C52.6359 11.0648 52.7643 11.755 53.0213 12.3203C53.2783 12.8857 53.6553 13.3679 54.1444 13.767C54.6332 14.1661 55.2424 14.4985 55.9633 14.7647C56.6886 15.0309 57.5135 15.2715 58.4457 15.4878C59.2582 15.6874 59.9167 15.8785 60.4266 16.0612C60.9322 16.2443 61.33 16.4398 61.6242 16.6474C61.914 16.8554 62.1133 17.0839 62.221 17.3332C62.3287 17.5829 62.3824 17.8652 62.3824 18.1812C62.3824 18.8633 62.1049 19.4037 61.5497 19.8025C60.9942 20.2019 60.2441 20.4011 59.2995 20.4011C58.2055 20.4011 57.2273 20.2056 56.3655 19.8149C55.5034 19.4243 54.65 18.8633 53.8043 18.1314L51.9646 20.3264C53.0089 21.274 54.1444 21.9766 55.3709 22.4339C56.5977 22.8912 57.8821 23.1197 59.2247 23.1197C60.1364 23.1197 60.9738 23.0033 61.7363 22.7708C62.4944 22.5376 63.1492 22.1967 63.688 21.7478C64.2307 21.2989 64.6534 20.7504 64.96 20.102C65.2626 19.4535 65.4159 18.7136 65.4159 17.8821C65.4159 17.1505 65.2958 16.5145 65.0553 15.9741C64.8148 15.4337 64.4585 14.9602 63.9946 14.5524C63.5303 14.1452 62.9419 13.7999 62.2374 13.5173C61.5333 13.2349 60.7208 12.9772 59.809 12.7443C58.9761 12.5448 58.2924 12.3533 57.7496 12.1706C57.2109 11.9879 56.7882 11.7883 56.4772 11.5719C56.1706 11.3559 55.9596 11.1231 55.8432 10.8737C55.7275 10.624 55.6691 10.3249 55.6691 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.7054 10.223V22.6955H92.7433V5.30359H89.4809L84.1768 13.5276L78.8726 5.30359H75.6106V22.6955H78.6485V10.2726L84.1019 18.4221H84.2017L89.7054 10.223Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M118.268 14.0956C118.268 14.9455 118.122 15.7496 117.831 16.5081C117.54 17.2663 117.137 17.9244 116.621 18.4825C116.105 19.0407 115.486 19.4826 114.762 19.8077C114.038 20.1328 113.244 20.2951 112.379 20.2951C111.514 20.2951 110.715 20.1284 109.983 19.7952C109.252 19.4617 108.623 19.0117 108.099 18.4454C107.576 17.8785 107.168 17.2161 106.877 16.4579C106.586 15.6997 106.44 14.8953 106.44 14.0457C106.44 13.1954 106.586 12.3913 106.877 11.6331C107.168 10.8746 107.571 10.2166 108.087 9.65806C108.603 9.09986 109.223 8.65837 109.946 8.33324C110.67 8.00844 111.464 7.84587 112.329 7.84587C113.194 7.84587 113.993 8.01249 114.725 8.34605C115.456 8.67928 116.085 9.12921 116.608 9.69583C117.133 10.2621 117.54 10.9249 117.831 11.6831C118.122 12.4413 118.268 13.2457 118.268 14.0956ZM121.487 14.0457C121.487 12.8123 121.262 11.6456 120.813 10.5455C120.364 9.44593 119.74 8.4874 118.942 7.67085C118.143 6.85397 117.187 6.20842 116.072 5.73354C114.957 5.25865 113.727 5.02087 112.379 5.02087C111.032 5.02087 109.801 5.2627 108.686 5.74602C107.571 6.22933 106.606 6.88331 105.791 7.70829C104.976 8.53327 104.344 9.49585 103.895 10.5957C103.446 11.6956 103.221 12.8622 103.221 14.0956C103.221 15.3287 103.446 16.495 103.895 17.5952C104.344 18.6954 104.968 19.6536 105.766 20.4701C106.565 21.2867 107.521 21.9326 108.636 22.4074C109.75 22.8823 110.981 23.1198 112.329 23.1198C113.676 23.1198 114.908 22.8779 116.022 22.395C117.137 21.9117 118.101 21.2577 118.917 20.4324C119.732 19.6077 120.364 18.6451 120.813 17.5453C121.262 16.4454 121.487 15.2788 121.487 14.0457V14.0457Z",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M134.253 9.97591C134.253 9.39376 134.502 8.8991 134.999 8.49193C135.496 8.08409 136.192 7.88051 137.088 7.88051C137.883 7.88051 138.671 8.03462 139.45 8.34219C140.229 8.64975 141.016 9.09461 141.812 9.67642L143.453 7.35691C142.558 6.64184 141.6 6.09737 140.581 5.72352C139.562 5.34933 138.414 5.16223 137.137 5.16223C136.276 5.16223 135.48 5.2827 134.755 5.52397C134.025 5.76491 133.404 6.10982 132.886 6.55872C132.368 7.00795 131.962 7.544 131.663 8.16754C131.369 8.79108 131.22 9.48529 131.22 10.2502C131.22 11.0648 131.348 11.755 131.605 12.3203C131.862 12.8857 132.239 13.3679 132.728 13.767C133.217 14.1661 133.826 14.4985 134.548 14.7647C135.273 15.0309 136.097 15.2715 137.03 15.4878C137.842 15.6874 138.501 15.8785 139.011 16.0612C139.516 16.2443 139.914 16.4398 140.208 16.6474C140.498 16.8554 140.697 17.0839 140.805 17.3332C140.913 17.5829 140.967 17.8652 140.967 18.1812C140.967 18.8633 140.689 19.4037 140.134 19.8025C139.578 20.2019 138.828 20.4011 137.883 20.4011C136.789 20.4011 135.811 20.2056 134.949 19.8149C134.088 19.4243 133.234 18.8633 132.388 18.1314L130.549 20.3264C131.593 21.274 132.728 21.9766 133.955 22.4339C135.181 22.8912 136.466 23.1197 137.809 23.1197C138.72 23.1197 139.557 23.0033 140.32 22.7708C141.078 22.5376 141.733 22.1967 142.272 21.7478C142.815 21.2989 143.237 20.7504 143.544 20.102C143.846 19.4535 144 18.7136 144 17.8821C144 17.1505 143.879 16.5145 143.639 15.9741C143.399 15.4337 143.043 14.9602 142.578 14.5524C142.114 14.1452 141.526 13.7999 140.821 13.5173C140.117 13.2349 139.304 12.9772 138.393 12.7443C137.56 12.5448 136.876 12.3533 136.334 12.1706C135.795 11.9879 135.372 11.7883 135.061 11.5719C134.755 11.3559 134.543 11.1231 134.427 10.8737C134.311 10.624 134.253 10.3249 134.253 9.97591",fill:"#2E3148"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M36.8401 8.78536L28.5159 17.0984C28.4086 16.8904 28.3117 16.6737 28.2249 16.4489C27.9342 15.6936 27.7888 14.8922 27.7888 14.0458C27.7888 13.1987 27.9342 12.3977 28.2249 11.6424C28.5159 10.8867 28.919 10.2312 29.4345 9.67476C29.9499 9.11868 30.5694 8.67885 31.2924 8.35495C32.0158 8.03138 32.8095 7.86942 33.6739 7.86942C34.5386 7.86942 35.3367 8.03541 36.0679 8.36771C36.3397 8.49103 36.5971 8.63013 36.8401 8.78536ZM36.1056 19.786C35.3822 20.1099 34.5884 20.2715 33.7241 20.2715C32.8593 20.2715 32.0613 20.1055 31.3298 19.7736C31.0582 19.6499 30.8008 19.5108 30.5583 19.3552L38.8821 11.0429C38.9894 11.2505 39.0863 11.4669 39.1731 11.692C39.4638 12.4474 39.6092 13.2487 39.6092 14.0955C39.6092 14.9422 39.4638 15.7432 39.1731 16.4989C38.8821 17.2542 38.479 17.9098 37.9635 18.4658C37.4481 19.0219 36.829 19.4621 36.1056 19.786ZM37.365 22.3635C38.479 21.882 39.4433 21.2305 40.2579 20.4083C41.0725 19.5868 41.704 18.6278 42.1529 17.5321C42.602 16.4364 42.8265 15.2742 42.8265 14.0458C42.8265 12.817 42.602 11.6548 42.1529 10.5588C41.8867 9.90893 41.559 9.30883 41.17 8.75813L46.5841 3.35152L44.4328 1.20312L39.0022 6.62619C38.5147 6.29422 37.9854 6.00728 37.4148 5.76502C36.3007 5.29193 35.0706 5.05505 33.7241 5.05505C32.3772 5.05505 31.1471 5.29596 30.033 5.77745C28.919 6.25894 27.9547 6.91045 27.1401 7.73231C26.3255 8.55417 25.6936 9.51312 25.2448 10.6088C24.7959 11.7045 24.5715 12.8668 24.5715 14.0955C24.5715 15.3239 24.7959 16.4858 25.2448 17.5819C25.5113 18.232 25.839 18.8321 26.2279 19.3832L20.8142 24.7891L22.9656 26.9375L28.3958 21.5148C28.8833 21.8467 29.4126 22.1337 29.9832 22.3759C31.0973 22.849 32.3274 23.0856 33.6739 23.0856C35.0208 23.0856 36.2509 22.8447 37.365 22.3635V22.3635Z",fill:"#2E3148"}})])}),[],!1,null,null,null);l.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/41.efa6d498.js b/main/assets/js/41.9289ea0c.js similarity index 97% rename from main/assets/js/41.efa6d498.js rename to main/assets/js/41.9289ea0c.js index 8ebe725caed..249947e9fd7 100644 --- a/main/assets/js/41.efa6d498.js +++ b/main/assets/js/41.9289ea0c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{508:function(L,C,t){"use strict";t.r(C);var e=t(1),l=Object(e.a)({},(function(){var L=this.$createElement,C=this._self._c||L;return C("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[C("path",{attrs:{d:"M2.40002 36.8C2.4047 36.8375 2.41221 36.8746 2.42249 36.9111C2.42763 36.9688 2.43915 37.0258 2.45682 37.0811C2.47704 37.1268 2.50167 37.1704 2.53035 37.2114C2.55481 37.257 2.58379 37.3 2.61687 37.3397C2.65738 37.379 2.70197 37.4138 2.74988 37.4435C2.77873 37.4699 2.80961 37.494 2.84222 37.5156L23.6422 47.9156C23.6492 47.9191 23.6575 47.9175 23.6646 47.9209C23.8758 48.0263 24.1243 48.0263 24.3354 47.9209C24.3425 47.9175 24.3508 47.9191 24.3578 47.9156L45.1578 37.5156C45.1904 37.494 45.2213 37.4699 45.2502 37.4435C45.2981 37.4138 45.3427 37.379 45.3832 37.3397C45.4433 37.2579 45.4968 37.1714 45.5432 37.0811C45.5609 37.0258 45.5724 36.9688 45.5775 36.9111C45.5878 36.8746 45.5953 36.8375 45.6 36.8V11.2C45.6 11.1915 45.5954 11.1844 45.5952 11.176C45.591 11.1349 45.5836 11.0942 45.5731 11.0542C45.5672 11.0083 45.5572 10.963 45.5433 10.9189C45.5365 10.9009 45.5303 10.8838 45.5223 10.8666C45.5186 10.8586 45.5196 10.85 45.5157 10.8422C45.4983 10.8168 45.4793 10.7925 45.4589 10.7694C45.4369 10.7309 45.4115 10.6944 45.3832 10.6603C45.369 10.645 45.3552 10.6311 45.3399 10.6169C45.3058 10.5886 45.2694 10.5634 45.2309 10.5414C45.2078 10.5209 45.1834 10.5018 45.1579 10.4844L24.3579 0.084375C24.1326 -0.028125 23.8675 -0.028125 23.6422 0.084375L2.84223 10.4844C2.81679 10.5018 2.79246 10.5208 2.76938 10.5413C2.73081 10.5633 2.69425 10.5886 2.6601 10.617C2.6449 10.6312 2.63105 10.645 2.6169 10.6603C2.58857 10.6944 2.56325 10.7309 2.54122 10.7694C2.52082 10.7925 2.50186 10.8168 2.48442 10.8422C2.48052 10.8501 2.4815 10.8586 2.47783 10.8666C2.46983 10.8838 2.46362 10.901 2.45683 10.9189C2.44291 10.963 2.43293 11.0083 2.427 11.0542C2.41645 11.0942 2.40903 11.1349 2.40482 11.176C2.40462 11.1844 2.40002 11.1915 2.40002 11.2V36.8ZM25.9578 21.5156L44 12.4945V36.3054L24.8 45.9054V22.0945L25.9578 21.5156ZM16.1891 42.4L23.2 38.8945V41.1054L18.4 43.5054L16.1891 42.4ZM12.1891 40.4L23.2 34.8945V37.1054L14.4 41.5054L12.1891 40.4ZM8.18909 38.4L23.2 30.8945V33.1054L10.4 39.5054L8.18909 38.4ZM4.18909 36.4L23.2 26.8945V29.1054L6.40002 37.5054L4.18909 36.4ZM23.2 25.1054L4.00002 34.7054V32.4945L23.2 22.8945V25.1054ZM23.2 42.8945V45.9054L20.1891 44.4L23.2 42.8945ZM4.00002 30.7054V28.4945L20 20.4945L22.211 21.6L4.00002 30.7054ZM4.00002 26.7054V24.4945L16 18.4945L18.211 19.6L4.00002 26.7054ZM4.00002 22.7054V20.4945L12 16.4945L14.211 17.6L4.00002 22.7054ZM4.00002 18.7054V16.4945L8.00002 14.4945L10.211 15.6L4.00002 18.7054ZM4.00002 14.7054V12.4945L6.21096 13.6L4.00002 14.7054ZM24 1.6945L43.011 11.2L25.2422 20.0844L24 20.7054L4.98909 11.2L24 1.6945Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);C.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{612:function(L,C,t){"use strict";t.r(C);var e=t(1),l=Object(e.a)({},(function(){var L=this.$createElement,C=this._self._c||L;return C("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[C("path",{attrs:{d:"M2.40002 36.8C2.4047 36.8375 2.41221 36.8746 2.42249 36.9111C2.42763 36.9688 2.43915 37.0258 2.45682 37.0811C2.47704 37.1268 2.50167 37.1704 2.53035 37.2114C2.55481 37.257 2.58379 37.3 2.61687 37.3397C2.65738 37.379 2.70197 37.4138 2.74988 37.4435C2.77873 37.4699 2.80961 37.494 2.84222 37.5156L23.6422 47.9156C23.6492 47.9191 23.6575 47.9175 23.6646 47.9209C23.8758 48.0263 24.1243 48.0263 24.3354 47.9209C24.3425 47.9175 24.3508 47.9191 24.3578 47.9156L45.1578 37.5156C45.1904 37.494 45.2213 37.4699 45.2502 37.4435C45.2981 37.4138 45.3427 37.379 45.3832 37.3397C45.4433 37.2579 45.4968 37.1714 45.5432 37.0811C45.5609 37.0258 45.5724 36.9688 45.5775 36.9111C45.5878 36.8746 45.5953 36.8375 45.6 36.8V11.2C45.6 11.1915 45.5954 11.1844 45.5952 11.176C45.591 11.1349 45.5836 11.0942 45.5731 11.0542C45.5672 11.0083 45.5572 10.963 45.5433 10.9189C45.5365 10.9009 45.5303 10.8838 45.5223 10.8666C45.5186 10.8586 45.5196 10.85 45.5157 10.8422C45.4983 10.8168 45.4793 10.7925 45.4589 10.7694C45.4369 10.7309 45.4115 10.6944 45.3832 10.6603C45.369 10.645 45.3552 10.6311 45.3399 10.6169C45.3058 10.5886 45.2694 10.5634 45.2309 10.5414C45.2078 10.5209 45.1834 10.5018 45.1579 10.4844L24.3579 0.084375C24.1326 -0.028125 23.8675 -0.028125 23.6422 0.084375L2.84223 10.4844C2.81679 10.5018 2.79246 10.5208 2.76938 10.5413C2.73081 10.5633 2.69425 10.5886 2.6601 10.617C2.6449 10.6312 2.63105 10.645 2.6169 10.6603C2.58857 10.6944 2.56325 10.7309 2.54122 10.7694C2.52082 10.7925 2.50186 10.8168 2.48442 10.8422C2.48052 10.8501 2.4815 10.8586 2.47783 10.8666C2.46983 10.8838 2.46362 10.901 2.45683 10.9189C2.44291 10.963 2.43293 11.0083 2.427 11.0542C2.41645 11.0942 2.40903 11.1349 2.40482 11.176C2.40462 11.1844 2.40002 11.1915 2.40002 11.2V36.8ZM25.9578 21.5156L44 12.4945V36.3054L24.8 45.9054V22.0945L25.9578 21.5156ZM16.1891 42.4L23.2 38.8945V41.1054L18.4 43.5054L16.1891 42.4ZM12.1891 40.4L23.2 34.8945V37.1054L14.4 41.5054L12.1891 40.4ZM8.18909 38.4L23.2 30.8945V33.1054L10.4 39.5054L8.18909 38.4ZM4.18909 36.4L23.2 26.8945V29.1054L6.40002 37.5054L4.18909 36.4ZM23.2 25.1054L4.00002 34.7054V32.4945L23.2 22.8945V25.1054ZM23.2 42.8945V45.9054L20.1891 44.4L23.2 42.8945ZM4.00002 30.7054V28.4945L20 20.4945L22.211 21.6L4.00002 30.7054ZM4.00002 26.7054V24.4945L16 18.4945L18.211 19.6L4.00002 26.7054ZM4.00002 22.7054V20.4945L12 16.4945L14.211 17.6L4.00002 22.7054ZM4.00002 18.7054V16.4945L8.00002 14.4945L10.211 15.6L4.00002 18.7054ZM4.00002 14.7054V12.4945L6.21096 13.6L4.00002 14.7054ZM24 1.6945L43.011 11.2L25.2422 20.0844L24 20.7054L4.98909 11.2L24 1.6945Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);C.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/42.d85a722b.js b/main/assets/js/42.9ba798cd.js similarity index 98% rename from main/assets/js/42.d85a722b.js rename to main/assets/js/42.9ba798cd.js index aa9cf13cfc7..6ef769e1cc6 100644 --- a/main/assets/js/42.d85a722b.js +++ b/main/assets/js/42.9ba798cd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{481:function(C,t,L){"use strict";L.r(t);var e=L(1),l=Object(e.a)({},(function(){var C=this.$createElement,t=this._self._c||C;return t("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M2.40002 36.7999C2.40002 36.8085 2.40462 36.8155 2.40482 36.8239C2.41894 36.9102 2.43626 36.996 2.45673 37.081C2.46356 37.099 2.46977 37.1162 2.47782 37.1336C2.48144 37.1414 2.48046 37.15 2.48437 37.1577C2.50869 37.2012 2.53712 37.2423 2.56928 37.2803C2.58134 37.2962 2.58945 37.3136 2.60273 37.3287C2.61113 37.3381 2.61923 37.3474 2.62802 37.3564C2.63916 37.3678 2.65288 37.3754 2.66465 37.3861C2.71238 37.4305 2.76542 37.4689 2.82256 37.5003C2.83013 37.5044 2.83447 37.5117 2.84219 37.5155L23.6422 47.9155C23.8675 48.028 24.1325 48.028 24.3578 47.9155L45.1578 37.5155C45.1656 37.5116 45.17 37.5042 45.1776 37.5001C45.2341 37.469 45.2865 37.4312 45.3338 37.3873C45.3463 37.376 45.3607 37.368 45.3725 37.3559C45.381 37.3471 45.3889 37.3381 45.397 37.3289C45.4106 37.3135 45.4188 37.2958 45.4311 37.2796C45.4631 37.2417 45.4914 37.2009 45.5156 37.1577C45.5195 37.1501 45.5185 37.1417 45.5221 37.1339C45.5302 37.1163 45.5365 37.0989 45.5434 37.0807C45.5638 36.9958 45.581 36.9101 45.5952 36.8239C45.5954 36.8155 45.6 36.8084 45.6 36.7999V11.1999C45.6 11.1914 45.5954 11.1844 45.5952 11.1759C45.581 11.0898 45.5638 11.0041 45.5434 10.9192C45.5365 10.9009 45.5302 10.8835 45.5221 10.8659C45.5185 10.8582 45.5194 10.8498 45.5156 10.8422C45.4983 10.817 45.4795 10.793 45.4593 10.7702C45.4373 10.7315 45.412 10.6949 45.3837 10.6606C45.369 10.6447 45.3544 10.6304 45.3384 10.6157C45.3054 10.5887 45.2703 10.5645 45.2333 10.5433C45.2094 10.5221 45.1842 10.5024 45.1578 10.4844L24.3578 0.084375C24.1325 -0.028125 23.8675 -0.028125 23.6422 0.084375L2.84219 10.4844C2.81678 10.5018 2.79247 10.5208 2.76939 10.5412C2.73093 10.5631 2.69445 10.5884 2.66036 10.6166C2.64488 10.6309 2.63092 10.6449 2.61666 10.6604C2.5884 10.6945 2.56315 10.7309 2.54117 10.7693C2.52076 10.7924 2.50179 10.8167 2.48437 10.8422C2.48051 10.8499 2.48149 10.8584 2.47787 10.8662C2.46982 10.8836 2.46362 10.9008 2.45673 10.919C2.44283 10.963 2.43286 11.0083 2.42694 11.0542C2.41641 11.0941 2.40901 11.1348 2.40482 11.1759C2.40462 11.1844 2.40002 11.1914 2.40002 11.1999V36.7999ZM44 35.5054L32.1865 29.5985C33.5777 26.0884 32.5519 22.0816 29.6449 19.672L44 12.4945V35.5054ZM28.0484 20.4703C30.0107 21.8078 31.1892 24.0252 31.2 26.3999C31.2048 27.518 30.943 28.6212 30.4364 29.6179C29.2187 32.0588 26.7252 33.6009 23.9974 33.5999C21.2696 33.5989 18.7772 32.055 17.5614 29.6132C17.056 28.6178 16.795 27.5163 16.8 26.3999C16.8108 24.0252 17.9894 21.8078 19.9517 20.4703L23.6422 22.3156C23.8675 22.4281 24.1326 22.4281 24.3578 22.3156L28.0484 20.4703ZM15.2 26.3999C15.203 27.4951 15.411 28.58 15.8134 29.5985L4.00002 35.5054V12.4945L18.3551 19.672C16.365 21.3414 15.2109 23.8024 15.2 26.3999ZM24 46.3054L4.98909 36.7999L16.5398 31.0244C18.1314 33.6187 20.9565 35.1999 24.0001 35.1999C27.0438 35.2 29.8689 33.6188 31.4605 31.0245L43.011 36.7999L24 46.3054ZM24 1.69447L43.011 11.1999L24 20.7054L4.98909 11.1999L24 1.69447Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{543:function(C,t,L){"use strict";L.r(t);var e=L(1),l=Object(e.a)({},(function(){var C=this.$createElement,t=this._self._c||C;return t("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M2.40002 36.7999C2.40002 36.8085 2.40462 36.8155 2.40482 36.8239C2.41894 36.9102 2.43626 36.996 2.45673 37.081C2.46356 37.099 2.46977 37.1162 2.47782 37.1336C2.48144 37.1414 2.48046 37.15 2.48437 37.1577C2.50869 37.2012 2.53712 37.2423 2.56928 37.2803C2.58134 37.2962 2.58945 37.3136 2.60273 37.3287C2.61113 37.3381 2.61923 37.3474 2.62802 37.3564C2.63916 37.3678 2.65288 37.3754 2.66465 37.3861C2.71238 37.4305 2.76542 37.4689 2.82256 37.5003C2.83013 37.5044 2.83447 37.5117 2.84219 37.5155L23.6422 47.9155C23.8675 48.028 24.1325 48.028 24.3578 47.9155L45.1578 37.5155C45.1656 37.5116 45.17 37.5042 45.1776 37.5001C45.2341 37.469 45.2865 37.4312 45.3338 37.3873C45.3463 37.376 45.3607 37.368 45.3725 37.3559C45.381 37.3471 45.3889 37.3381 45.397 37.3289C45.4106 37.3135 45.4188 37.2958 45.4311 37.2796C45.4631 37.2417 45.4914 37.2009 45.5156 37.1577C45.5195 37.1501 45.5185 37.1417 45.5221 37.1339C45.5302 37.1163 45.5365 37.0989 45.5434 37.0807C45.5638 36.9958 45.581 36.9101 45.5952 36.8239C45.5954 36.8155 45.6 36.8084 45.6 36.7999V11.1999C45.6 11.1914 45.5954 11.1844 45.5952 11.1759C45.581 11.0898 45.5638 11.0041 45.5434 10.9192C45.5365 10.9009 45.5302 10.8835 45.5221 10.8659C45.5185 10.8582 45.5194 10.8498 45.5156 10.8422C45.4983 10.817 45.4795 10.793 45.4593 10.7702C45.4373 10.7315 45.412 10.6949 45.3837 10.6606C45.369 10.6447 45.3544 10.6304 45.3384 10.6157C45.3054 10.5887 45.2703 10.5645 45.2333 10.5433C45.2094 10.5221 45.1842 10.5024 45.1578 10.4844L24.3578 0.084375C24.1325 -0.028125 23.8675 -0.028125 23.6422 0.084375L2.84219 10.4844C2.81678 10.5018 2.79247 10.5208 2.76939 10.5412C2.73093 10.5631 2.69445 10.5884 2.66036 10.6166C2.64488 10.6309 2.63092 10.6449 2.61666 10.6604C2.5884 10.6945 2.56315 10.7309 2.54117 10.7693C2.52076 10.7924 2.50179 10.8167 2.48437 10.8422C2.48051 10.8499 2.48149 10.8584 2.47787 10.8662C2.46982 10.8836 2.46362 10.9008 2.45673 10.919C2.44283 10.963 2.43286 11.0083 2.42694 11.0542C2.41641 11.0941 2.40901 11.1348 2.40482 11.1759C2.40462 11.1844 2.40002 11.1914 2.40002 11.1999V36.7999ZM44 35.5054L32.1865 29.5985C33.5777 26.0884 32.5519 22.0816 29.6449 19.672L44 12.4945V35.5054ZM28.0484 20.4703C30.0107 21.8078 31.1892 24.0252 31.2 26.3999C31.2048 27.518 30.943 28.6212 30.4364 29.6179C29.2187 32.0588 26.7252 33.6009 23.9974 33.5999C21.2696 33.5989 18.7772 32.055 17.5614 29.6132C17.056 28.6178 16.795 27.5163 16.8 26.3999C16.8108 24.0252 17.9894 21.8078 19.9517 20.4703L23.6422 22.3156C23.8675 22.4281 24.1326 22.4281 24.3578 22.3156L28.0484 20.4703ZM15.2 26.3999C15.203 27.4951 15.411 28.58 15.8134 29.5985L4.00002 35.5054V12.4945L18.3551 19.672C16.365 21.3414 15.2109 23.8024 15.2 26.3999ZM24 46.3054L4.98909 36.7999L16.5398 31.0244C18.1314 33.6187 20.9565 35.1999 24.0001 35.1999C27.0438 35.2 29.8689 33.6188 31.4605 31.0245L43.011 36.7999L24 46.3054ZM24 1.69447L43.011 11.1999L24 20.7054L4.98909 11.1999L24 1.69447Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/43.59659a51.js b/main/assets/js/43.ceecc951.js similarity index 84% rename from main/assets/js/43.59659a51.js rename to main/assets/js/43.ceecc951.js index 957bb520bfd..9c6344fe315 100644 --- a/main/assets/js/43.59659a51.js +++ b/main/assets/js/43.ceecc951.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{472:function(t,e,n){"use strict";n.r(e);var s=n(1),i=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"12",height:"12",viewBox:"0 0 12 2",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("line",{attrs:{y1:"1",x2:"12",y2:"1",stroke:"#ccc","stroke-width":"2"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{482:function(t,e,n){"use strict";n.r(e);var s=n(1),i=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"12",height:"12",viewBox:"0 0 12 2",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("line",{attrs:{y1:"1",x2:"12",y2:"1",stroke:"#ccc","stroke-width":"2"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/44.84ed60fb.js b/main/assets/js/44.145bdfe7.js similarity index 86% rename from main/assets/js/44.84ed60fb.js rename to main/assets/js/44.145bdfe7.js index cc5f5d98835..7144c66f313 100644 --- a/main/assets/js/44.84ed60fb.js +++ b/main/assets/js/44.145bdfe7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{515:function(t,n,e){"use strict";e.r(n);var s=e(1),l=Object(s.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1.30385 3.28868L6 0.57735L10.6962 3.28868L10.6962 8.71132L6 11.4226L1.30385 8.71132L1.30385 3.28868Z"}})])}),[],!1,null,null,null);n.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{622:function(t,n,e){"use strict";e.r(n);var s=e(1),l=Object(s.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1.30385 3.28868L6 0.57735L10.6962 3.28868L10.6962 8.71132L6 11.4226L1.30385 8.71132L1.30385 3.28868Z"}})])}),[],!1,null,null,null);n.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/45.f6c400dc.js b/main/assets/js/45.1a10caaf.js similarity index 98% rename from main/assets/js/45.f6c400dc.js rename to main/assets/js/45.1a10caaf.js index 1a1b0579c02..6f6f27c5ad1 100644 --- a/main/assets/js/45.f6c400dc.js +++ b/main/assets/js/45.1a10caaf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{514:function(L,C,t){"use strict";t.r(C);var e=t(1),l=Object(e.a)({},(function(){var L=this.$createElement,C=this._self._c||L;return C("svg",{attrs:{width:"44",height:"48",viewBox:"0 0 44 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[C("path",{attrs:{d:"M43.5734 11.0565C43.5646 10.9508 43.5244 10.8502 43.4579 10.7676C43.4384 10.7323 43.4162 10.6986 43.3915 10.6668C43.3864 10.6611 43.3842 10.6532 43.3789 10.6477L43.3773 10.6461C43.3273 10.5883 43.2646 10.5427 43.1942 10.5128C43.1805 10.5049 43.1722 10.4915 43.1578 10.4844L22.3578 0.0843626C22.351 0.0809546 22.3429 0.0823946 22.336 0.0791946C22.1245 -0.0263982 21.8757 -0.0263982 21.6642 0.0791946C21.6572 0.0823946 21.6491 0.0809066 21.6422 0.0843706L0.842247 10.4844L0.835215 10.4898C0.815215 10.5001 0.794935 10.51 0.775839 10.5218C0.741487 10.5464 0.709216 10.5738 0.679351 10.6037C0.660063 10.6206 0.639351 10.634 0.621831 10.6525C0.613727 10.6611 0.603567 10.6677 0.595903 10.6766C0.588775 10.6848 0.585255 10.6948 0.578519 10.7033C0.538188 10.7516 0.503718 10.8045 0.475831 10.8609L0.469431 10.8786C0.465183 10.8882 0.462839 10.898 0.458983 10.9078L0.451855 10.9276C0.447359 10.94 0.442623 10.9516 0.438719 10.9642C0.434719 10.9772 0.428415 10.989 0.425047 11.0023L0.424247 11.0039V11.0055C0.419665 11.041 0.417463 11.0768 0.417655 11.1127C0.410063 11.1414 0.404186 11.1706 0.400055 11.2V36.8C0.400055 36.8088 0.404791 36.8161 0.405087 36.8248C0.405527 36.839 0.401959 36.8529 0.403183 36.8672C0.410525 36.9452 0.429467 37.0217 0.459383 37.0941C0.466319 37.1116 0.476183 37.1264 0.484287 37.1433C0.517537 37.2126 0.560751 37.2768 0.612559 37.3337C0.625743 37.3482 0.636559 37.3635 0.650743 37.377C0.707331 37.4325 0.771875 37.4792 0.842247 37.5156L21.6422 47.9156C21.6478 47.9185 21.6545 47.9172 21.6602 47.9199C21.7659 47.9712 21.8817 47.9986 21.9993 48L21.9998 47.9999L22.0001 48L22.0005 47.9999C22.048 48 22.0955 47.9958 22.1422 47.9875L22.1438 47.9867H22.1462L22.1493 47.9859C22.1861 47.9788 22.2223 47.9694 22.2579 47.9578V47.957H22.2595L22.2603 47.9562H22.2619L22.2635 47.9554H22.2643L22.2651 47.9546H22.2667L22.2675 47.9538H22.2691L22.2715 47.9522H22.2731L22.2747 47.9514L22.277 47.9506L22.2786 47.9498H22.2794L22.2802 47.949H22.2818L22.2834 47.9482H22.2842L22.2858 47.9474L22.2874 47.9466H22.2882C22.3034 47.9407 22.3157 47.9287 22.3306 47.9219C22.3395 47.9179 22.3497 47.9197 22.3585 47.9153L43.1585 37.5153L43.1602 37.514L43.1632 37.513C43.2454 37.469 43.3193 37.4109 43.3814 37.3413C43.3989 37.322 43.4154 37.3019 43.4309 37.281C43.4758 37.2224 43.5122 37.1578 43.5392 37.0891C43.5461 37.0715 43.556 37.0561 43.5617 37.0381C43.5865 36.9612 43.5995 36.8809 43.6001 36.8V11.2047C43.6001 11.1945 43.6001 11.1844 43.5993 11.1742C43.5938 11.1343 43.5851 11.095 43.5734 11.0565ZM22.8001 12H39.411L22.8001 20.3055V12ZM21.2001 20.3055L4.58912 12H21.2001V20.3055ZM22.8001 23.1758L31.3477 29.4219L22.8001 44.2164V23.1758ZM23.5321 21.7289L40.7743 13.1078L32.1532 28.0289L23.5321 21.7289ZM42.0001 14.1836V35.2242L33.4524 28.9781L42.0001 14.1836ZM22.8001 10.4V2.09452L39.411 10.4H22.8001ZM21.2001 10.4H4.58912L21.2001 2.09452V10.4ZM2.00005 14.1843L10.5479 28.978L2.00005 35.2245V14.1843ZM3.22584 13.1078L20.4682 21.7286L11.847 28.0287L3.22584 13.1078ZM21.2001 23.1755V44.2164L12.652 29.422L21.2001 23.1755ZM32.6469 30.3711L41.2681 36.6714L24.0263 45.2923L32.6469 30.3711ZM11.3529 30.3714L19.9744 45.2926L2.73205 36.6711L11.3529 30.3714Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);C.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{619:function(L,C,t){"use strict";t.r(C);var e=t(1),l=Object(e.a)({},(function(){var L=this.$createElement,C=this._self._c||L;return C("svg",{attrs:{width:"44",height:"48",viewBox:"0 0 44 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[C("path",{attrs:{d:"M43.5734 11.0565C43.5646 10.9508 43.5244 10.8502 43.4579 10.7676C43.4384 10.7323 43.4162 10.6986 43.3915 10.6668C43.3864 10.6611 43.3842 10.6532 43.3789 10.6477L43.3773 10.6461C43.3273 10.5883 43.2646 10.5427 43.1942 10.5128C43.1805 10.5049 43.1722 10.4915 43.1578 10.4844L22.3578 0.0843626C22.351 0.0809546 22.3429 0.0823946 22.336 0.0791946C22.1245 -0.0263982 21.8757 -0.0263982 21.6642 0.0791946C21.6572 0.0823946 21.6491 0.0809066 21.6422 0.0843706L0.842247 10.4844L0.835215 10.4898C0.815215 10.5001 0.794935 10.51 0.775839 10.5218C0.741487 10.5464 0.709216 10.5738 0.679351 10.6037C0.660063 10.6206 0.639351 10.634 0.621831 10.6525C0.613727 10.6611 0.603567 10.6677 0.595903 10.6766C0.588775 10.6848 0.585255 10.6948 0.578519 10.7033C0.538188 10.7516 0.503718 10.8045 0.475831 10.8609L0.469431 10.8786C0.465183 10.8882 0.462839 10.898 0.458983 10.9078L0.451855 10.9276C0.447359 10.94 0.442623 10.9516 0.438719 10.9642C0.434719 10.9772 0.428415 10.989 0.425047 11.0023L0.424247 11.0039V11.0055C0.419665 11.041 0.417463 11.0768 0.417655 11.1127C0.410063 11.1414 0.404186 11.1706 0.400055 11.2V36.8C0.400055 36.8088 0.404791 36.8161 0.405087 36.8248C0.405527 36.839 0.401959 36.8529 0.403183 36.8672C0.410525 36.9452 0.429467 37.0217 0.459383 37.0941C0.466319 37.1116 0.476183 37.1264 0.484287 37.1433C0.517537 37.2126 0.560751 37.2768 0.612559 37.3337C0.625743 37.3482 0.636559 37.3635 0.650743 37.377C0.707331 37.4325 0.771875 37.4792 0.842247 37.5156L21.6422 47.9156C21.6478 47.9185 21.6545 47.9172 21.6602 47.9199C21.7659 47.9712 21.8817 47.9986 21.9993 48L21.9998 47.9999L22.0001 48L22.0005 47.9999C22.048 48 22.0955 47.9958 22.1422 47.9875L22.1438 47.9867H22.1462L22.1493 47.9859C22.1861 47.9788 22.2223 47.9694 22.2579 47.9578V47.957H22.2595L22.2603 47.9562H22.2619L22.2635 47.9554H22.2643L22.2651 47.9546H22.2667L22.2675 47.9538H22.2691L22.2715 47.9522H22.2731L22.2747 47.9514L22.277 47.9506L22.2786 47.9498H22.2794L22.2802 47.949H22.2818L22.2834 47.9482H22.2842L22.2858 47.9474L22.2874 47.9466H22.2882C22.3034 47.9407 22.3157 47.9287 22.3306 47.9219C22.3395 47.9179 22.3497 47.9197 22.3585 47.9153L43.1585 37.5153L43.1602 37.514L43.1632 37.513C43.2454 37.469 43.3193 37.4109 43.3814 37.3413C43.3989 37.322 43.4154 37.3019 43.4309 37.281C43.4758 37.2224 43.5122 37.1578 43.5392 37.0891C43.5461 37.0715 43.556 37.0561 43.5617 37.0381C43.5865 36.9612 43.5995 36.8809 43.6001 36.8V11.2047C43.6001 11.1945 43.6001 11.1844 43.5993 11.1742C43.5938 11.1343 43.5851 11.095 43.5734 11.0565ZM22.8001 12H39.411L22.8001 20.3055V12ZM21.2001 20.3055L4.58912 12H21.2001V20.3055ZM22.8001 23.1758L31.3477 29.4219L22.8001 44.2164V23.1758ZM23.5321 21.7289L40.7743 13.1078L32.1532 28.0289L23.5321 21.7289ZM42.0001 14.1836V35.2242L33.4524 28.9781L42.0001 14.1836ZM22.8001 10.4V2.09452L39.411 10.4H22.8001ZM21.2001 10.4H4.58912L21.2001 2.09452V10.4ZM2.00005 14.1843L10.5479 28.978L2.00005 35.2245V14.1843ZM3.22584 13.1078L20.4682 21.7286L11.847 28.0287L3.22584 13.1078ZM21.2001 23.1755V44.2164L12.652 29.422L21.2001 23.1755ZM32.6469 30.3711L41.2681 36.6714L24.0263 45.2923L32.6469 30.3711ZM11.3529 30.3714L19.9744 45.2926L2.73205 36.6711L11.3529 30.3714Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);C.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/46.26fc2a59.js b/main/assets/js/46.17170989.js similarity index 97% rename from main/assets/js/46.26fc2a59.js rename to main/assets/js/46.17170989.js index 0c5009064bb..000908dfd59 100644 --- a/main/assets/js/46.26fc2a59.js +++ b/main/assets/js/46.17170989.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{513:function(l,e,r){"use strict";r.r(e);var L=r(1),i=Object(L.a)({},(function(){var l=this.$createElement,e=this._self._c||l;return e("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M24 1.66277L4.65539 12.8314V35.1686L24 46.3372L43.3446 35.1686V12.8314L24 1.66277ZM44.7846 12L24 0L3.21539 12V36L24 48L44.7846 36V12Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M24 20.783L21.2831 22.3516V25.4888L24 27.0574L26.7169 25.4888V22.3516L24 20.783ZM28.1569 21.5202L24 19.1202L19.8431 21.5202V26.3202L24 28.7202L28.1569 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.64 28.863L25.9231 30.4316V33.5688L28.64 35.1374L31.3569 33.5688V30.4316L28.64 28.863ZM32.7969 29.6002L28.64 27.2002L24.4831 29.6002V34.4002L28.64 36.8002L32.7969 34.4002V29.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.28 20.783L30.5631 22.3516V25.4888L33.28 27.0574L35.9969 25.4888V22.3516L33.28 20.783ZM37.4369 21.5202L33.28 19.1202L29.1231 21.5202V26.3202L33.28 28.7202L37.4369 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.72 20.783L12.0031 22.3516V25.4888L14.72 27.0574L17.4369 25.4888V22.3516L14.72 20.783ZM18.8769 21.5202L14.72 19.1202L10.5631 21.5202V26.3202L14.72 28.7202L18.8769 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.36 28.863L16.6431 30.4316V33.5688L19.36 35.1374L22.0769 33.5688V30.4316L19.36 28.863ZM23.5169 29.6002L19.36 27.2002L15.2031 29.6002V34.4002L19.36 36.8002L23.5169 34.4002V29.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.64 12.863L25.9231 14.4316V17.5688L28.64 19.1374L31.3569 17.5688V14.4316L28.64 12.863ZM32.7969 13.6002L28.64 11.2002L24.4831 13.6002V18.4002L28.64 20.8002L32.7969 18.4002V13.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.36 12.863L16.6431 14.4316V17.5688L19.36 19.1374L22.0769 17.5688V14.4316L19.36 12.863ZM23.5169 13.6002L19.36 11.2002L15.2031 13.6002V18.4002L19.36 20.8002L23.5169 18.4002V13.6002Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{618:function(l,e,r){"use strict";r.r(e);var L=r(1),i=Object(L.a)({},(function(){var l=this.$createElement,e=this._self._c||l;return e("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M24 1.66277L4.65539 12.8314V35.1686L24 46.3372L43.3446 35.1686V12.8314L24 1.66277ZM44.7846 12L24 0L3.21539 12V36L24 48L44.7846 36V12Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M24 20.783L21.2831 22.3516V25.4888L24 27.0574L26.7169 25.4888V22.3516L24 20.783ZM28.1569 21.5202L24 19.1202L19.8431 21.5202V26.3202L24 28.7202L28.1569 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.64 28.863L25.9231 30.4316V33.5688L28.64 35.1374L31.3569 33.5688V30.4316L28.64 28.863ZM32.7969 29.6002L28.64 27.2002L24.4831 29.6002V34.4002L28.64 36.8002L32.7969 34.4002V29.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.28 20.783L30.5631 22.3516V25.4888L33.28 27.0574L35.9969 25.4888V22.3516L33.28 20.783ZM37.4369 21.5202L33.28 19.1202L29.1231 21.5202V26.3202L33.28 28.7202L37.4369 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.72 20.783L12.0031 22.3516V25.4888L14.72 27.0574L17.4369 25.4888V22.3516L14.72 20.783ZM18.8769 21.5202L14.72 19.1202L10.5631 21.5202V26.3202L14.72 28.7202L18.8769 26.3202V21.5202Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.36 28.863L16.6431 30.4316V33.5688L19.36 35.1374L22.0769 33.5688V30.4316L19.36 28.863ZM23.5169 29.6002L19.36 27.2002L15.2031 29.6002V34.4002L19.36 36.8002L23.5169 34.4002V29.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.64 12.863L25.9231 14.4316V17.5688L28.64 19.1374L31.3569 17.5688V14.4316L28.64 12.863ZM32.7969 13.6002L28.64 11.2002L24.4831 13.6002V18.4002L28.64 20.8002L32.7969 18.4002V13.6002Z",fill:"var(--color-primary, blue)"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.36 12.863L16.6431 14.4316V17.5688L19.36 19.1374L22.0769 17.5688V14.4316L19.36 12.863ZM23.5169 13.6002L19.36 11.2002L15.2031 13.6002V18.4002L19.36 20.8002L23.5169 18.4002V13.6002Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/47.840cd72e.js b/main/assets/js/47.bebd1a92.js similarity index 85% rename from main/assets/js/47.840cd72e.js rename to main/assets/js/47.bebd1a92.js index 529f286240d..11cffdcfdbd 100644 --- a/main/assets/js/47.840cd72e.js +++ b/main/assets/js/47.bebd1a92.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{512:function(t,e,n){"use strict";n.r(e);var s=n(1),r=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M2 5H22M2 12H22M2 19H22","stroke-width":"1.5","stroke-linecap":"round"}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{617:function(t,e,n){"use strict";n.r(e);var s=n(1),r=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M2 5H22M2 12H22M2 19H22","stroke-width":"1.5","stroke-linecap":"round"}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/48.289c4b6f.js b/main/assets/js/48.a4c5bbdc.js similarity index 98% rename from main/assets/js/48.289c4b6f.js rename to main/assets/js/48.a4c5bbdc.js index 542f7a1602a..5d9995a2941 100644 --- a/main/assets/js/48.289c4b6f.js +++ b/main/assets/js/48.a4c5bbdc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{511:function(C,L,V){"use strict";V.r(L);var t=V(1),e=Object(t.a)({},(function(){var C=this.$createElement,L=this._self._c||C;return L("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{d:"M47.94 38.113C47.9124 38.0416 47.8746 37.9747 47.8278 37.9142C47.8161 37.899 47.8071 37.8831 47.7942 37.8687C47.7438 37.8108 47.6852 37.7605 47.6203 37.7193C47.607 37.711 47.5919 37.7075 47.5782 37.7001C47.5703 37.6959 47.5659 37.6882 47.5578 37.6842L42.7578 35.2842C42.5325 35.1717 42.2675 35.1717 42.0422 35.2842L38.4878 37.0613L29.6 32.4169V27.1998C29.5989 27.1206 29.586 27.0421 29.5617 26.9668C29.5559 26.9479 29.5471 26.9313 29.54 26.913C29.5124 26.8416 29.4746 26.7747 29.4278 26.7142C29.4161 26.699 29.4071 26.6831 29.3942 26.6687C29.3438 26.6108 29.2852 26.5605 29.2203 26.5193C29.207 26.5111 29.192 26.5076 29.1784 26.5002C29.1704 26.4959 29.1659 26.4882 29.1578 26.4842L24.8 24.3052V12.4943L29.1578 10.3154C29.4288 10.1798 29.6 9.90278 29.6 9.59976V3.99976C29.5989 3.92062 29.586 3.84207 29.5617 3.76676C29.5559 3.74791 29.5471 3.73131 29.54 3.71295C29.5124 3.64164 29.4746 3.5747 29.4278 3.51422C29.4161 3.49902 29.4071 3.48312 29.3942 3.46872C29.3438 3.41079 29.2852 3.36047 29.2203 3.3193C29.207 3.31095 29.1919 3.30753 29.1782 3.3001C29.1703 3.29585 29.1659 3.28819 29.1578 3.28418L24.3578 0.88418C24.1325 0.77168 23.8675 0.77168 23.6422 0.88418L18.8422 3.28418C18.8341 3.28824 18.8295 3.29595 18.8216 3.30024C18.808 3.30767 18.793 3.31108 18.7797 3.31933C18.7149 3.36048 18.6563 3.41077 18.6058 3.46865C18.5929 3.48316 18.5838 3.49917 18.5721 3.51445C18.5254 3.57482 18.4876 3.64162 18.4601 3.71279C18.4529 3.73129 18.4441 3.74799 18.4382 3.76694C18.4139 3.8422 18.401 3.92068 18.4 3.99976V9.59976C18.4 9.90278 18.5712 10.1798 18.8422 10.3154L23.2 12.4943V24.3052L18.8422 26.4841C18.8341 26.4882 18.8295 26.4959 18.8216 26.5002C18.808 26.5076 18.793 26.511 18.7797 26.5193C18.7149 26.5604 18.6563 26.6107 18.6058 26.6686C18.5929 26.6831 18.5838 26.6991 18.5721 26.7144C18.5254 26.7748 18.4876 26.8416 18.4601 26.9128C18.4529 26.9313 18.4441 26.948 18.4382 26.9669C18.4139 27.0422 18.401 27.1207 18.4 27.1998V32.4169L9.51216 37.0613L5.95782 35.2841C5.73254 35.1716 5.46747 35.1716 5.24219 35.2841L0.442192 37.6841C0.434088 37.6882 0.429544 37.6959 0.421632 37.7002C0.408032 37.7076 0.392968 37.711 0.379688 37.7193C0.31486 37.7604 0.256312 37.8107 0.205856 37.8686C0.19292 37.8831 0.183832 37.8991 0.172064 37.9144C0.125368 37.9748 0.0876449 38.0416 0.060064 38.1128C0.052864 38.1313 0.044064 38.148 0.03824 38.1669C0.013915 38.2422 0.00102473 38.3207 0 38.3998V43.9998C3.51818e-05 44.3028 0.1712 44.5798 0.442184 44.7154L5.24218 47.1154C5.24912 47.1189 5.25722 47.1173 5.26421 47.1206C5.47563 47.2262 5.72441 47.2262 5.93584 47.1206C5.94282 47.1174 5.95088 47.1189 5.95782 47.1154L10.7578 44.7154C11.0288 44.5798 11.2 44.3028 11.2 43.9998V38.3998C11.1989 38.3206 11.186 38.2421 11.1617 38.1668C11.1559 38.1479 11.1471 38.1313 11.14 38.113C11.1307 38.0858 11.12 38.0592 11.1079 38.0332L19.3079 33.7483L23.6422 35.9154C23.6491 35.9189 23.6572 35.9173 23.6642 35.9206C23.8756 36.0262 24.1244 36.0262 24.3358 35.9206C24.3428 35.9174 24.3509 35.9189 24.3578 35.9154L28.6922 33.7483L36.8922 38.0332C36.8801 38.0591 36.8694 38.0857 36.8602 38.1128C36.853 38.1313 36.8442 38.148 36.8383 38.1669C36.814 38.2422 36.8011 38.3207 36.8 38.3998V43.9998C36.8 44.3028 36.9712 44.5798 37.2422 44.7154L42.0422 47.1154C42.0491 47.1189 42.0572 47.1173 42.0642 47.1206C42.2756 47.2262 42.5244 47.2262 42.7358 47.1206C42.7428 47.1174 42.7509 47.1189 42.7578 47.1154L47.5578 44.7154C47.8288 44.5798 48 44.3028 48 43.9998V38.3998C47.9989 38.3206 47.986 38.2421 47.9617 38.1668C47.9559 38.1479 47.9471 38.1313 47.94 38.113ZM42.4 36.8943L45.4109 38.3998L42.4 39.9052L39.3891 38.3998L42.4 36.8943ZM24 25.6943L27.0109 27.1998L24 28.7052L20.9891 27.1998L24 25.6943ZM20 32.3052V28.4943L23.2 30.0943V33.9052L20 32.3052ZM24.8 30.3998V30.0943L28 28.4943V32.3052L24.8 33.9052V30.3998ZM28 9.10524L24.8 10.7052V6.89429L28 5.29429V9.10524ZM24 2.49429L27.0109 3.99976L24 5.50524L20.9891 3.99976L24 2.49429ZM20 9.10523V5.29429L23.2 6.89429V10.7052L20 9.10523ZM5.6 36.8943L8.61094 38.3998L5.6 39.9052L2.58906 38.3998L5.6 36.8943ZM1.6 39.6943L4.8 41.2943V45.1052L1.6 43.5052V39.6943ZM9.6 43.5052L6.4 45.1052V41.2943L9.6 39.6943V43.5052ZM38.4 39.6943L41.6 41.2943V45.1052L38.4 43.5052V39.6943ZM46.4 43.5052L43.2 45.1052V41.2943L46.4 39.6943V43.5052Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);L.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{616:function(C,L,V){"use strict";V.r(L);var t=V(1),e=Object(t.a)({},(function(){var C=this.$createElement,L=this._self._c||C;return L("svg",{attrs:{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{d:"M47.94 38.113C47.9124 38.0416 47.8746 37.9747 47.8278 37.9142C47.8161 37.899 47.8071 37.8831 47.7942 37.8687C47.7438 37.8108 47.6852 37.7605 47.6203 37.7193C47.607 37.711 47.5919 37.7075 47.5782 37.7001C47.5703 37.6959 47.5659 37.6882 47.5578 37.6842L42.7578 35.2842C42.5325 35.1717 42.2675 35.1717 42.0422 35.2842L38.4878 37.0613L29.6 32.4169V27.1998C29.5989 27.1206 29.586 27.0421 29.5617 26.9668C29.5559 26.9479 29.5471 26.9313 29.54 26.913C29.5124 26.8416 29.4746 26.7747 29.4278 26.7142C29.4161 26.699 29.4071 26.6831 29.3942 26.6687C29.3438 26.6108 29.2852 26.5605 29.2203 26.5193C29.207 26.5111 29.192 26.5076 29.1784 26.5002C29.1704 26.4959 29.1659 26.4882 29.1578 26.4842L24.8 24.3052V12.4943L29.1578 10.3154C29.4288 10.1798 29.6 9.90278 29.6 9.59976V3.99976C29.5989 3.92062 29.586 3.84207 29.5617 3.76676C29.5559 3.74791 29.5471 3.73131 29.54 3.71295C29.5124 3.64164 29.4746 3.5747 29.4278 3.51422C29.4161 3.49902 29.4071 3.48312 29.3942 3.46872C29.3438 3.41079 29.2852 3.36047 29.2203 3.3193C29.207 3.31095 29.1919 3.30753 29.1782 3.3001C29.1703 3.29585 29.1659 3.28819 29.1578 3.28418L24.3578 0.88418C24.1325 0.77168 23.8675 0.77168 23.6422 0.88418L18.8422 3.28418C18.8341 3.28824 18.8295 3.29595 18.8216 3.30024C18.808 3.30767 18.793 3.31108 18.7797 3.31933C18.7149 3.36048 18.6563 3.41077 18.6058 3.46865C18.5929 3.48316 18.5838 3.49917 18.5721 3.51445C18.5254 3.57482 18.4876 3.64162 18.4601 3.71279C18.4529 3.73129 18.4441 3.74799 18.4382 3.76694C18.4139 3.8422 18.401 3.92068 18.4 3.99976V9.59976C18.4 9.90278 18.5712 10.1798 18.8422 10.3154L23.2 12.4943V24.3052L18.8422 26.4841C18.8341 26.4882 18.8295 26.4959 18.8216 26.5002C18.808 26.5076 18.793 26.511 18.7797 26.5193C18.7149 26.5604 18.6563 26.6107 18.6058 26.6686C18.5929 26.6831 18.5838 26.6991 18.5721 26.7144C18.5254 26.7748 18.4876 26.8416 18.4601 26.9128C18.4529 26.9313 18.4441 26.948 18.4382 26.9669C18.4139 27.0422 18.401 27.1207 18.4 27.1998V32.4169L9.51216 37.0613L5.95782 35.2841C5.73254 35.1716 5.46747 35.1716 5.24219 35.2841L0.442192 37.6841C0.434088 37.6882 0.429544 37.6959 0.421632 37.7002C0.408032 37.7076 0.392968 37.711 0.379688 37.7193C0.31486 37.7604 0.256312 37.8107 0.205856 37.8686C0.19292 37.8831 0.183832 37.8991 0.172064 37.9144C0.125368 37.9748 0.0876449 38.0416 0.060064 38.1128C0.052864 38.1313 0.044064 38.148 0.03824 38.1669C0.013915 38.2422 0.00102473 38.3207 0 38.3998V43.9998C3.51818e-05 44.3028 0.1712 44.5798 0.442184 44.7154L5.24218 47.1154C5.24912 47.1189 5.25722 47.1173 5.26421 47.1206C5.47563 47.2262 5.72441 47.2262 5.93584 47.1206C5.94282 47.1174 5.95088 47.1189 5.95782 47.1154L10.7578 44.7154C11.0288 44.5798 11.2 44.3028 11.2 43.9998V38.3998C11.1989 38.3206 11.186 38.2421 11.1617 38.1668C11.1559 38.1479 11.1471 38.1313 11.14 38.113C11.1307 38.0858 11.12 38.0592 11.1079 38.0332L19.3079 33.7483L23.6422 35.9154C23.6491 35.9189 23.6572 35.9173 23.6642 35.9206C23.8756 36.0262 24.1244 36.0262 24.3358 35.9206C24.3428 35.9174 24.3509 35.9189 24.3578 35.9154L28.6922 33.7483L36.8922 38.0332C36.8801 38.0591 36.8694 38.0857 36.8602 38.1128C36.853 38.1313 36.8442 38.148 36.8383 38.1669C36.814 38.2422 36.8011 38.3207 36.8 38.3998V43.9998C36.8 44.3028 36.9712 44.5798 37.2422 44.7154L42.0422 47.1154C42.0491 47.1189 42.0572 47.1173 42.0642 47.1206C42.2756 47.2262 42.5244 47.2262 42.7358 47.1206C42.7428 47.1174 42.7509 47.1189 42.7578 47.1154L47.5578 44.7154C47.8288 44.5798 48 44.3028 48 43.9998V38.3998C47.9989 38.3206 47.986 38.2421 47.9617 38.1668C47.9559 38.1479 47.9471 38.1313 47.94 38.113ZM42.4 36.8943L45.4109 38.3998L42.4 39.9052L39.3891 38.3998L42.4 36.8943ZM24 25.6943L27.0109 27.1998L24 28.7052L20.9891 27.1998L24 25.6943ZM20 32.3052V28.4943L23.2 30.0943V33.9052L20 32.3052ZM24.8 30.3998V30.0943L28 28.4943V32.3052L24.8 33.9052V30.3998ZM28 9.10524L24.8 10.7052V6.89429L28 5.29429V9.10524ZM24 2.49429L27.0109 3.99976L24 5.50524L20.9891 3.99976L24 2.49429ZM20 9.10523V5.29429L23.2 6.89429V10.7052L20 9.10523ZM5.6 36.8943L8.61094 38.3998L5.6 39.9052L2.58906 38.3998L5.6 36.8943ZM1.6 39.6943L4.8 41.2943V45.1052L1.6 43.5052V39.6943ZM9.6 43.5052L6.4 45.1052V41.2943L9.6 39.6943V43.5052ZM38.4 39.6943L41.6 41.2943V45.1052L38.4 43.5052V39.6943ZM46.4 43.5052L43.2 45.1052V41.2943L46.4 39.6943V43.5052Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);L.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/49.3d43c17f.js b/main/assets/js/49.37a7d42b.js similarity index 92% rename from main/assets/js/49.3d43c17f.js rename to main/assets/js/49.37a7d42b.js index 04264282b6c..cd18cf62112 100644 --- a/main/assets/js/49.3d43c17f.js +++ b/main/assets/js/49.37a7d42b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{510:function(t,n,e){"use strict";e.r(n);var s=e(1),l=Object(s.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("svg",{attrs:{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M0.21967 10.7197C-0.0732233 11.0126 -0.0732233 11.4874 0.21967 11.7803C0.512563 12.0732 0.987437 12.0732 1.28033 11.7803L0.21967 10.7197ZM11.25 0.75H12C12 0.335786 11.6642 0 11.25 0V0.75ZM6.61364 0C6.19942 0 5.86364 0.335786 5.86364 0.75C5.86364 1.16421 6.19942 1.5 6.61364 1.5V0ZM10.5 5.38636C10.5 5.80058 10.8358 6.13636 11.25 6.13636C11.6642 6.13636 12 5.80058 12 5.38636H10.5ZM1.28033 11.7803L11.7803 1.28033L10.7197 0.21967L0.21967 10.7197L1.28033 11.7803ZM11.25 0H6.61364V1.5H11.25V0ZM12 5.38636V0.75H10.5V5.38636H12Z"}})])}),[],!1,null,null,null);n.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{615:function(t,n,e){"use strict";e.r(n);var s=e(1),l=Object(s.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("svg",{attrs:{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M0.21967 10.7197C-0.0732233 11.0126 -0.0732233 11.4874 0.21967 11.7803C0.512563 12.0732 0.987437 12.0732 1.28033 11.7803L0.21967 10.7197ZM11.25 0.75H12C12 0.335786 11.6642 0 11.25 0V0.75ZM6.61364 0C6.19942 0 5.86364 0.335786 5.86364 0.75C5.86364 1.16421 6.19942 1.5 6.61364 1.5V0ZM10.5 5.38636C10.5 5.80058 10.8358 6.13636 11.25 6.13636C11.6642 6.13636 12 5.80058 12 5.38636H10.5ZM1.28033 11.7803L11.7803 1.28033L10.7197 0.21967L0.21967 10.7197L1.28033 11.7803ZM11.25 0H6.61364V1.5H11.25V0ZM12 5.38636V0.75H10.5V5.38636H12Z"}})])}),[],!1,null,null,null);n.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/5.6c22831a.js b/main/assets/js/5.915ce0fc.js similarity index 96% rename from main/assets/js/5.6c22831a.js rename to main/assets/js/5.915ce0fc.js index baf55ead156..6254ae98a40 100644 --- a/main/assets/js/5.6c22831a.js +++ b/main/assets/js/5.915ce0fc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{397:function(t,s,i){},425:function(t,s,i){"use strict";i(397)},480:function(t,s,i){"use strict";i.r(s);i(425);var e=i(1),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("div",[s("div",{staticClass:"container"},[s("icon-arrow",{staticClass:"icon"}),s("div",{staticClass:"image"},[s("svg",{attrs:{width:"41",height:"44",viewBox:"0 0 41 44",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[s("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M4 1.8999H32C33.3807 1.8999 34.5 3.01919 34.5 4.3999V10.997L36 9.497V4.3999C36 2.19076 34.2091 0.399902 32 0.399902H4C1.79086 0.399902 0 2.19077 0 4.39991V39.5999C0 41.809 1.79086 43.5999 4 43.5999H32C34.2091 43.5999 36 41.809 36 39.5999V20.2096L34.5 21.7096V39.5999C34.5 40.9806 33.3807 42.0999 32 42.0999H4C2.61929 42.0999 1.5 40.9806 1.5 39.5999V4.39991C1.5 3.01919 2.61929 1.8999 4 1.8999ZM7.2 19.1999H26.2971L24.2971 21.1999H7.2V19.1999ZM7.2 15.7999H28.8V13.7999H7.2V15.7999ZM7.2 26.5999H16.2V24.5999H7.2V26.5999ZM20.8638 25.7372L20.7386 25.8624L20.6826 26.0303L18.9855 31.1215L18.4792 32.6406L19.9704 32.0571L24.8494 30.1479L24.9955 30.0908L25.1064 29.9798L37.9799 17.1063L39.7831 15.3032C40.9546 14.1316 40.9546 12.2321 39.7831 11.0606C38.6115 9.88898 36.712 9.88898 35.5404 11.0606L20.8638 25.7372ZM20.9149 30.0767L22.0496 26.6726L36.6011 12.1212C37.1869 11.5354 38.1366 11.5354 38.7224 12.1212C39.3082 12.707 39.3082 13.6567 38.7224 14.2425L37.4496 15.5153L36.2465 14.3122C35.9536 14.0193 35.4787 14.0193 35.1858 14.3122C34.8929 14.6051 34.8929 15.08 35.1858 15.3729L36.3889 16.576L24.5761 28.3888L23.6215 27.4342C23.3286 27.1413 22.8537 27.1413 22.5608 27.4342C22.2679 27.7271 22.2679 28.202 22.5608 28.4949L23.2349 29.1689L20.9149 30.0767Z",fill:"var(--color-primary, blue)"}})])]),s("div",{staticClass:"h1"},[this._v("Found an Issue?")]),s("div",{staticClass:"h2"},[this._v("Help us improve this page by suggesting edits on GitHub.")])],1)])}),[],!1,null,"31935645",null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{397:function(t,s,i){},425:function(t,s,i){"use strict";i(397)},481:function(t,s,i){"use strict";i.r(s);i(425);var e=i(1),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("div",[s("div",{staticClass:"container"},[s("icon-arrow",{staticClass:"icon"}),s("div",{staticClass:"image"},[s("svg",{attrs:{width:"41",height:"44",viewBox:"0 0 41 44",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[s("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M4 1.8999H32C33.3807 1.8999 34.5 3.01919 34.5 4.3999V10.997L36 9.497V4.3999C36 2.19076 34.2091 0.399902 32 0.399902H4C1.79086 0.399902 0 2.19077 0 4.39991V39.5999C0 41.809 1.79086 43.5999 4 43.5999H32C34.2091 43.5999 36 41.809 36 39.5999V20.2096L34.5 21.7096V39.5999C34.5 40.9806 33.3807 42.0999 32 42.0999H4C2.61929 42.0999 1.5 40.9806 1.5 39.5999V4.39991C1.5 3.01919 2.61929 1.8999 4 1.8999ZM7.2 19.1999H26.2971L24.2971 21.1999H7.2V19.1999ZM7.2 15.7999H28.8V13.7999H7.2V15.7999ZM7.2 26.5999H16.2V24.5999H7.2V26.5999ZM20.8638 25.7372L20.7386 25.8624L20.6826 26.0303L18.9855 31.1215L18.4792 32.6406L19.9704 32.0571L24.8494 30.1479L24.9955 30.0908L25.1064 29.9798L37.9799 17.1063L39.7831 15.3032C40.9546 14.1316 40.9546 12.2321 39.7831 11.0606C38.6115 9.88898 36.712 9.88898 35.5404 11.0606L20.8638 25.7372ZM20.9149 30.0767L22.0496 26.6726L36.6011 12.1212C37.1869 11.5354 38.1366 11.5354 38.7224 12.1212C39.3082 12.707 39.3082 13.6567 38.7224 14.2425L37.4496 15.5153L36.2465 14.3122C35.9536 14.0193 35.4787 14.0193 35.1858 14.3122C34.8929 14.6051 34.8929 15.08 35.1858 15.3729L36.3889 16.576L24.5761 28.3888L23.6215 27.4342C23.3286 27.1413 22.8537 27.1413 22.5608 27.4342C22.2679 27.7271 22.2679 28.202 22.5608 28.4949L23.2349 29.1689L20.9149 30.0767Z",fill:"var(--color-primary, blue)"}})])]),s("div",{staticClass:"h1"},[this._v("Found an Issue?")]),s("div",{staticClass:"h2"},[this._v("Help us improve this page by suggesting edits on GitHub.")])],1)])}),[],!1,null,"31935645",null);s.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/50.1230e0e4.js b/main/assets/js/50.5893565e.js similarity index 95% rename from main/assets/js/50.1230e0e4.js rename to main/assets/js/50.5893565e.js index 5feeda3bf88..df9a404e7c0 100644 --- a/main/assets/js/50.1230e0e4.js +++ b/main/assets/js/50.5893565e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{459:function(l,L,t){"use strict";t.r(L);var e={props:["fill"]},n=t(1),i=Object(n.a)(e,(function(){var l=this.$createElement,L=this._self._c||l;return L("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14 6H66C67.1046 6 68 6.89543 68 8V21.1617L70 19.1617V8C70 5.79086 68.2091 4 66 4H14C11.7909 4 10 5.79086 10 8V72C10 74.2091 11.7909 76 14 76H66C68.2091 76 70 74.2091 70 72V37.0161L68 39.0161V72C68 73.1046 67.1046 74 66 74H14C12.8954 74 12 73.1046 12 72V8C12 6.89543 12.8954 6 14 6ZM54 35V35.1617L50.1617 39H22V35H54ZM22 30H58V26H22V30ZM22 48H37V44H22V48ZM44.9497 46.4056L44.7828 46.5725L44.7082 46.7964L41.8797 55.2817L41.2046 57.3072L43.1928 56.5292L51.3246 53.3472L51.5194 53.271L51.6673 53.1231L73.1231 31.6672L76.1283 28.662C77.9833 26.8071 77.9833 23.7995 76.1283 21.9445C74.2733 20.0895 71.2658 20.0895 69.4108 21.9445L44.9497 46.4056ZM44.4523 53.8887L46.5309 47.6529L70.825 23.3587C71.8989 22.2848 73.6401 22.2848 74.7141 23.3587C75.788 24.4327 75.788 26.1739 74.7141 27.2478L72.416 29.5459L70.234 27.3639C69.8435 26.9734 69.2103 26.9734 68.8198 27.3639C68.4293 27.7545 68.4293 28.3876 68.8198 28.7782L71.0018 30.9601L50.9602 51.0018L49.1924 49.234C48.8019 48.8435 48.1687 48.8435 47.7782 49.234C47.3876 49.6245 47.3876 50.2577 47.7782 50.6482L49.1719 52.0419L44.4523 53.8887Z",fill:this.fill}})])}),[],!1,null,null,null);L.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{458:function(l,L,t){"use strict";t.r(L);var e={props:["fill"]},n=t(1),i=Object(n.a)(e,(function(){var l=this.$createElement,L=this._self._c||l;return L("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M14 6H66C67.1046 6 68 6.89543 68 8V21.1617L70 19.1617V8C70 5.79086 68.2091 4 66 4H14C11.7909 4 10 5.79086 10 8V72C10 74.2091 11.7909 76 14 76H66C68.2091 76 70 74.2091 70 72V37.0161L68 39.0161V72C68 73.1046 67.1046 74 66 74H14C12.8954 74 12 73.1046 12 72V8C12 6.89543 12.8954 6 14 6ZM54 35V35.1617L50.1617 39H22V35H54ZM22 30H58V26H22V30ZM22 48H37V44H22V48ZM44.9497 46.4056L44.7828 46.5725L44.7082 46.7964L41.8797 55.2817L41.2046 57.3072L43.1928 56.5292L51.3246 53.3472L51.5194 53.271L51.6673 53.1231L73.1231 31.6672L76.1283 28.662C77.9833 26.8071 77.9833 23.7995 76.1283 21.9445C74.2733 20.0895 71.2658 20.0895 69.4108 21.9445L44.9497 46.4056ZM44.4523 53.8887L46.5309 47.6529L70.825 23.3587C71.8989 22.2848 73.6401 22.2848 74.7141 23.3587C75.788 24.4327 75.788 26.1739 74.7141 27.2478L72.416 29.5459L70.234 27.3639C69.8435 26.9734 69.2103 26.9734 68.8198 27.3639C68.4293 27.7545 68.4293 28.3876 68.8198 28.7782L71.0018 30.9601L50.9602 51.0018L49.1924 49.234C48.8019 48.8435 48.1687 48.8435 47.7782 49.234C47.3876 49.6245 47.3876 50.2577 47.7782 50.6482L49.1719 52.0419L44.4523 53.8887Z",fill:this.fill}})])}),[],!1,null,null,null);L.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/51.9ad26172.js b/main/assets/js/51.695f3e04.js similarity index 99% rename from main/assets/js/51.9ad26172.js rename to main/assets/js/51.695f3e04.js index a2e418f7114..5ff4a32c4c1 100644 --- a/main/assets/js/51.9ad26172.js +++ b/main/assets/js/51.695f3e04.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{623:function(C,L,V){"use strict";V.r(L);var M=V(1),Z=Object(M.a)({},(function(){var C=this.$createElement,L=this._self._c||C;return L("svg",{attrs:{width:"44",height:"48",viewBox:"0 0 44 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{d:"M0.400024 16.8V36.8C0.400764 36.8812 0.413954 36.9618 0.439136 37.0391C0.443776 37.0538 0.451296 37.0666 0.456808 37.0811C0.465496 37.1041 0.476008 37.1248 0.486792 37.1468C0.509996 37.1946 0.537987 37.24 0.570336 37.2822C0.585536 37.3021 0.59968 37.3212 0.616872 37.3397C0.627032 37.3507 0.634744 37.3628 0.645488 37.3732C0.703381 37.4305 0.769732 37.4785 0.842216 37.5156L5.64222 39.9156L16.8422 45.5156L21.6422 47.9156C21.6492 47.9191 21.6575 47.9175 21.6646 47.9209C21.8758 48.0263 22.1243 48.0263 22.3354 47.9209C22.3425 47.9175 22.3508 47.9191 22.3578 47.9156L27.1578 45.5156L38.3578 39.9156L43.1578 37.5156C43.2303 37.4785 43.2966 37.4305 43.3545 37.3732C43.3653 37.3628 43.373 37.3507 43.3832 37.3397C43.4003 37.3212 43.4145 37.3021 43.4297 37.2822C43.462 37.24 43.49 37.1946 43.5132 37.1468C43.524 37.1248 43.5345 37.1041 43.5432 37.0811C43.5487 37.0666 43.5563 37.0538 43.5609 37.0391C43.5861 36.9618 43.5993 36.8812 43.6 36.8V11.2C43.6 11.1895 43.5965 11.1796 43.5961 11.1692C43.5953 11.1497 43.5908 11.1313 43.5886 11.1118C43.5842 11.0628 43.5752 11.0142 43.5617 10.9668C43.5566 10.9501 43.5494 10.9352 43.5432 10.9189C43.5365 10.9009 43.5302 10.8838 43.5222 10.8665C43.5186 10.8586 43.5196 10.85 43.5156 10.8422C43.5135 10.8378 43.5093 10.8355 43.5071 10.8312C43.484 10.7896 43.4572 10.7501 43.4271 10.7132C43.4158 10.6986 43.4072 10.6832 43.3948 10.6694C43.3863 10.6599 43.379 10.6499 43.37 10.6408C43.3622 10.6329 43.3526 10.6277 43.3445 10.6201L43.3381 10.6148C43.3213 10.5994 43.3042 10.5866 43.2863 10.5728C43.2654 10.5539 43.2435 10.5361 43.2207 10.5195C43.2073 10.5113 43.1921 10.5079 43.1784 10.5005C43.1704 10.4962 43.1659 10.4884 43.1578 10.4844L38.3578 8.08437L27.1578 2.48437L22.3578 0.084375C22.1325 -0.028125 21.8674 -0.028125 21.6422 0.084375L16.8422 2.48437L5.64217 8.08437L0.842168 10.4844C0.834016 10.4884 0.829472 10.4962 0.821512 10.5005C0.807792 10.5079 0.792656 10.5113 0.779272 10.5195C0.756644 10.536 0.734917 10.5536 0.714184 10.5724C0.69592 10.5865 0.678488 10.5995 0.661384 10.6152L0.655424 10.62C0.64732 10.6276 0.637752 10.6328 0.629936 10.6407C0.621 10.6498 0.613624 10.6598 0.605136 10.6693C0.592784 10.6832 0.584192 10.6985 0.572864 10.7132C0.542732 10.7501 0.515959 10.7895 0.492864 10.8312C0.490616 10.8355 0.486464 10.8378 0.48432 10.8421C0.480416 10.85 0.481392 10.8586 0.477728 10.8665C0.469728 10.8838 0.46352 10.9009 0.456728 10.9189C0.450528 10.9352 0.4434 10.9501 0.438272 10.9668C0.424809 11.0142 0.415786 11.0627 0.41132 11.1118C0.40912 11.1313 0.404632 11.1497 0.403896 11.1692C0.403592 11.1796 0.400024 11.1895 0.400024 11.2V16.8ZM22.8 6.09453L26 4.49453V8.30546L22.8 9.90546V6.09453ZM21.2 9.90546L18 8.30546V4.49453L21.2 6.09453V9.90546ZM16.8422 9.51562L21.6422 11.9156C21.6492 11.9191 21.6575 11.9176 21.6646 11.9209C21.8758 12.0264 22.1242 12.0264 22.3354 11.9209C22.3425 11.9176 22.3508 11.9191 22.3578 11.9156L27.1578 9.51562C27.4289 9.38011 27.6001 9.10305 27.6 8.8V4.49453L36.211 8.8L32.8422 10.4844C32.8341 10.4884 32.8295 10.4961 32.8216 10.5004C32.8079 10.5078 32.7927 10.5113 32.7793 10.5195C32.7143 10.5608 32.6557 10.6113 32.6052 10.6694C32.5928 10.6832 32.5842 10.6986 32.5729 10.7132C32.5257 10.7741 32.4876 10.8416 32.4598 10.9135C32.4528 10.9317 32.4441 10.9481 32.4383 10.9668C32.414 11.0422 32.4011 11.1208 32.4 11.2V15.5055L26.8 18.3055L22.3578 16.0844C22.1326 15.9719 21.8675 15.9719 21.6422 16.0844L17.2 18.3055L11.6 15.5055V11.2C11.599 11.1208 11.5861 11.0422 11.5617 10.9668C11.556 10.9481 11.5473 10.9317 11.5402 10.9135C11.5124 10.8416 11.4743 10.7741 11.4271 10.7132C11.4158 10.6986 11.4072 10.6832 11.3948 10.6694C11.3444 10.6113 11.2857 10.5608 11.2207 10.5195C11.2074 10.5113 11.1922 10.5079 11.1784 10.5005C11.1705 10.4962 11.166 10.4884 11.1578 10.4844L7.78909 8.8L16.4 4.49453V8.8C16.4 9.10304 16.5712 9.3801 16.8422 9.51562ZM6.80002 34.0945L10 32.4945V36.3055L6.80002 37.9055V34.0945ZM6.00002 32.7055L2.98909 31.2L6.00002 29.6945L9.01096 31.2L6.00002 32.7055ZM11.1578 37.5156C11.4289 37.3801 11.6001 37.103 11.6 36.8V31.2C11.599 31.1208 11.5861 31.0422 11.5617 30.9668C11.556 30.9481 11.5473 30.9317 11.5402 30.9135C11.5124 30.8416 11.4743 30.7741 11.4271 30.7132C11.4158 30.6986 11.4072 30.6832 11.3948 30.6694C11.3444 30.6113 11.2857 30.5608 11.2207 30.5195C11.2072 30.5112 11.192 30.5077 11.1782 30.5002C11.1703 30.496 11.1658 30.4884 11.1578 30.4844L6.35784 28.0844C6.13256 27.9719 5.86749 27.9719 5.64222 28.0844L2.00002 29.9055V18.0945L5.64221 19.9156C5.64924 19.9191 5.65749 19.9176 5.66461 19.9209C5.87577 20.0264 6.12424 20.0264 6.33541 19.9209C6.34254 19.9176 6.35079 19.9191 6.35781 19.9156L11.1578 17.5156C11.2864 17.4508 11.3951 17.3523 11.4723 17.2307L16.4 19.6945V24.8C16.4 25.103 16.5712 25.3801 16.8422 25.5156L21.2 27.6945V36.3055L16.8422 38.4844C16.8341 38.4884 16.8296 38.4961 16.8217 38.5004C16.8079 38.5078 16.7928 38.5113 16.7793 38.5195C16.7143 38.5608 16.6557 38.6112 16.6052 38.6694C16.5928 38.6832 16.5842 38.6986 16.5729 38.7132C16.5257 38.7741 16.4876 38.8416 16.4598 38.9135C16.4527 38.9317 16.4441 38.9481 16.4383 38.9668C16.414 39.0422 16.4011 39.1208 16.4 39.2V43.5055L7.78909 39.2L11.1578 37.5156ZM6.80002 14.8945L9.81096 16.4L6.80002 17.9055V14.8945ZM18 20.4945L21.2 22.0945V25.9055L18 24.3055V20.4945ZM22.8 22.0945L26 20.4945V24.3055L22.8 25.9055V22.0945ZM22 20.7055L18.9891 19.2L22 17.6945L25.011 19.2L22 20.7055ZM21.2 38.0945V40.3055L18.9891 39.2L21.2 38.0945ZM22.8 38.0945L25.011 39.2L22.8 40.3055V38.0945ZM27.5617 38.9668C27.556 38.9481 27.5473 38.9317 27.5402 38.9135C27.5124 38.8416 27.4743 38.7741 27.4271 38.7132C27.4158 38.6986 27.4072 38.6832 27.3948 38.6694C27.3444 38.6112 27.2857 38.5608 27.2207 38.5195C27.2073 38.5113 27.1921 38.5077 27.1783 38.5003C27.1705 38.496 27.1659 38.4884 27.1579 38.4843L22.8 36.3055V27.6945L27.1578 25.5156C27.4289 25.3801 27.6001 25.103 27.6 24.8V19.6945L32.5278 17.2307C32.6049 17.3523 32.7136 17.4508 32.8422 17.5156L37.6422 19.9156C37.6492 19.9191 37.6575 19.9176 37.6646 19.9209C37.8758 20.0264 38.1242 20.0264 38.3354 19.9209C38.3425 19.9176 38.3508 19.9191 38.3578 19.9156L42 18.0945V29.9055L38.3578 28.0844C38.1326 27.9719 37.8675 27.9719 37.6422 28.0844L32.8422 30.4844C32.8342 30.4884 32.8297 30.496 32.8219 30.5002C32.8081 30.5077 32.7928 30.5112 32.7793 30.5195C32.7143 30.5608 32.6557 30.6113 32.6052 30.6694C32.5929 30.6832 32.5843 30.6986 32.5729 30.7132C32.5257 30.7741 32.4876 30.8416 32.4598 30.9135C32.4528 30.9317 32.4441 30.9481 32.4384 30.9668C32.414 31.0422 32.4011 31.1208 32.4 31.2V36.8C32.4 37.103 32.5712 37.3801 32.8422 37.5156L36.211 39.2L27.6 43.5055V39.2C27.599 39.1208 27.5861 39.0422 27.5617 38.9668V38.9668ZM37.2 17.9055L34.1891 16.4L37.2 14.8945V17.9055ZM34 32.4945L37.2 34.0945V37.9055L34 36.3055V32.4945ZM38 32.7055L34.9891 31.2L38 29.6945L41.011 31.2L38 32.7055ZM38.8 34.0945L42 32.4945V36.3055L38.8 37.9055V34.0945ZM42 16.3055L38.8 17.9055V14.0945L42 12.4945V16.3055ZM34 14.7055V12.4945L36.211 13.6L34 14.7055ZM10 14.7055L7.78909 13.6L10 12.4945V14.7055ZM5.20002 17.9055L2.00002 16.3055V12.4945L5.20002 14.0945V17.9055ZM2.00002 32.4945L5.20002 34.0945V37.9055L2.00002 36.3055V32.4945ZM18 40.4945L21.2 42.0945V45.9055L18 44.3055V40.4945ZM22.8 45.9055V42.0945L26 40.4945V44.3055L22.8 45.9055ZM41.011 11.2L38 12.7055L34.9891 11.2L38 9.69453L41.011 11.2ZM22 1.69453L25.011 3.2L22 4.70547L18.9891 3.2L22 1.69453ZM6.00002 9.69453L9.01096 11.2L6.00002 12.7055L2.98909 11.2L6.00002 9.69453Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);L.default=Z.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{613:function(C,L,V){"use strict";V.r(L);var M=V(1),Z=Object(M.a)({},(function(){var C=this.$createElement,L=this._self._c||C;return L("svg",{attrs:{width:"44",height:"48",viewBox:"0 0 44 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{d:"M0.400024 16.8V36.8C0.400764 36.8812 0.413954 36.9618 0.439136 37.0391C0.443776 37.0538 0.451296 37.0666 0.456808 37.0811C0.465496 37.1041 0.476008 37.1248 0.486792 37.1468C0.509996 37.1946 0.537987 37.24 0.570336 37.2822C0.585536 37.3021 0.59968 37.3212 0.616872 37.3397C0.627032 37.3507 0.634744 37.3628 0.645488 37.3732C0.703381 37.4305 0.769732 37.4785 0.842216 37.5156L5.64222 39.9156L16.8422 45.5156L21.6422 47.9156C21.6492 47.9191 21.6575 47.9175 21.6646 47.9209C21.8758 48.0263 22.1243 48.0263 22.3354 47.9209C22.3425 47.9175 22.3508 47.9191 22.3578 47.9156L27.1578 45.5156L38.3578 39.9156L43.1578 37.5156C43.2303 37.4785 43.2966 37.4305 43.3545 37.3732C43.3653 37.3628 43.373 37.3507 43.3832 37.3397C43.4003 37.3212 43.4145 37.3021 43.4297 37.2822C43.462 37.24 43.49 37.1946 43.5132 37.1468C43.524 37.1248 43.5345 37.1041 43.5432 37.0811C43.5487 37.0666 43.5563 37.0538 43.5609 37.0391C43.5861 36.9618 43.5993 36.8812 43.6 36.8V11.2C43.6 11.1895 43.5965 11.1796 43.5961 11.1692C43.5953 11.1497 43.5908 11.1313 43.5886 11.1118C43.5842 11.0628 43.5752 11.0142 43.5617 10.9668C43.5566 10.9501 43.5494 10.9352 43.5432 10.9189C43.5365 10.9009 43.5302 10.8838 43.5222 10.8665C43.5186 10.8586 43.5196 10.85 43.5156 10.8422C43.5135 10.8378 43.5093 10.8355 43.5071 10.8312C43.484 10.7896 43.4572 10.7501 43.4271 10.7132C43.4158 10.6986 43.4072 10.6832 43.3948 10.6694C43.3863 10.6599 43.379 10.6499 43.37 10.6408C43.3622 10.6329 43.3526 10.6277 43.3445 10.6201L43.3381 10.6148C43.3213 10.5994 43.3042 10.5866 43.2863 10.5728C43.2654 10.5539 43.2435 10.5361 43.2207 10.5195C43.2073 10.5113 43.1921 10.5079 43.1784 10.5005C43.1704 10.4962 43.1659 10.4884 43.1578 10.4844L38.3578 8.08437L27.1578 2.48437L22.3578 0.084375C22.1325 -0.028125 21.8674 -0.028125 21.6422 0.084375L16.8422 2.48437L5.64217 8.08437L0.842168 10.4844C0.834016 10.4884 0.829472 10.4962 0.821512 10.5005C0.807792 10.5079 0.792656 10.5113 0.779272 10.5195C0.756644 10.536 0.734917 10.5536 0.714184 10.5724C0.69592 10.5865 0.678488 10.5995 0.661384 10.6152L0.655424 10.62C0.64732 10.6276 0.637752 10.6328 0.629936 10.6407C0.621 10.6498 0.613624 10.6598 0.605136 10.6693C0.592784 10.6832 0.584192 10.6985 0.572864 10.7132C0.542732 10.7501 0.515959 10.7895 0.492864 10.8312C0.490616 10.8355 0.486464 10.8378 0.48432 10.8421C0.480416 10.85 0.481392 10.8586 0.477728 10.8665C0.469728 10.8838 0.46352 10.9009 0.456728 10.9189C0.450528 10.9352 0.4434 10.9501 0.438272 10.9668C0.424809 11.0142 0.415786 11.0627 0.41132 11.1118C0.40912 11.1313 0.404632 11.1497 0.403896 11.1692C0.403592 11.1796 0.400024 11.1895 0.400024 11.2V16.8ZM22.8 6.09453L26 4.49453V8.30546L22.8 9.90546V6.09453ZM21.2 9.90546L18 8.30546V4.49453L21.2 6.09453V9.90546ZM16.8422 9.51562L21.6422 11.9156C21.6492 11.9191 21.6575 11.9176 21.6646 11.9209C21.8758 12.0264 22.1242 12.0264 22.3354 11.9209C22.3425 11.9176 22.3508 11.9191 22.3578 11.9156L27.1578 9.51562C27.4289 9.38011 27.6001 9.10305 27.6 8.8V4.49453L36.211 8.8L32.8422 10.4844C32.8341 10.4884 32.8295 10.4961 32.8216 10.5004C32.8079 10.5078 32.7927 10.5113 32.7793 10.5195C32.7143 10.5608 32.6557 10.6113 32.6052 10.6694C32.5928 10.6832 32.5842 10.6986 32.5729 10.7132C32.5257 10.7741 32.4876 10.8416 32.4598 10.9135C32.4528 10.9317 32.4441 10.9481 32.4383 10.9668C32.414 11.0422 32.4011 11.1208 32.4 11.2V15.5055L26.8 18.3055L22.3578 16.0844C22.1326 15.9719 21.8675 15.9719 21.6422 16.0844L17.2 18.3055L11.6 15.5055V11.2C11.599 11.1208 11.5861 11.0422 11.5617 10.9668C11.556 10.9481 11.5473 10.9317 11.5402 10.9135C11.5124 10.8416 11.4743 10.7741 11.4271 10.7132C11.4158 10.6986 11.4072 10.6832 11.3948 10.6694C11.3444 10.6113 11.2857 10.5608 11.2207 10.5195C11.2074 10.5113 11.1922 10.5079 11.1784 10.5005C11.1705 10.4962 11.166 10.4884 11.1578 10.4844L7.78909 8.8L16.4 4.49453V8.8C16.4 9.10304 16.5712 9.3801 16.8422 9.51562ZM6.80002 34.0945L10 32.4945V36.3055L6.80002 37.9055V34.0945ZM6.00002 32.7055L2.98909 31.2L6.00002 29.6945L9.01096 31.2L6.00002 32.7055ZM11.1578 37.5156C11.4289 37.3801 11.6001 37.103 11.6 36.8V31.2C11.599 31.1208 11.5861 31.0422 11.5617 30.9668C11.556 30.9481 11.5473 30.9317 11.5402 30.9135C11.5124 30.8416 11.4743 30.7741 11.4271 30.7132C11.4158 30.6986 11.4072 30.6832 11.3948 30.6694C11.3444 30.6113 11.2857 30.5608 11.2207 30.5195C11.2072 30.5112 11.192 30.5077 11.1782 30.5002C11.1703 30.496 11.1658 30.4884 11.1578 30.4844L6.35784 28.0844C6.13256 27.9719 5.86749 27.9719 5.64222 28.0844L2.00002 29.9055V18.0945L5.64221 19.9156C5.64924 19.9191 5.65749 19.9176 5.66461 19.9209C5.87577 20.0264 6.12424 20.0264 6.33541 19.9209C6.34254 19.9176 6.35079 19.9191 6.35781 19.9156L11.1578 17.5156C11.2864 17.4508 11.3951 17.3523 11.4723 17.2307L16.4 19.6945V24.8C16.4 25.103 16.5712 25.3801 16.8422 25.5156L21.2 27.6945V36.3055L16.8422 38.4844C16.8341 38.4884 16.8296 38.4961 16.8217 38.5004C16.8079 38.5078 16.7928 38.5113 16.7793 38.5195C16.7143 38.5608 16.6557 38.6112 16.6052 38.6694C16.5928 38.6832 16.5842 38.6986 16.5729 38.7132C16.5257 38.7741 16.4876 38.8416 16.4598 38.9135C16.4527 38.9317 16.4441 38.9481 16.4383 38.9668C16.414 39.0422 16.4011 39.1208 16.4 39.2V43.5055L7.78909 39.2L11.1578 37.5156ZM6.80002 14.8945L9.81096 16.4L6.80002 17.9055V14.8945ZM18 20.4945L21.2 22.0945V25.9055L18 24.3055V20.4945ZM22.8 22.0945L26 20.4945V24.3055L22.8 25.9055V22.0945ZM22 20.7055L18.9891 19.2L22 17.6945L25.011 19.2L22 20.7055ZM21.2 38.0945V40.3055L18.9891 39.2L21.2 38.0945ZM22.8 38.0945L25.011 39.2L22.8 40.3055V38.0945ZM27.5617 38.9668C27.556 38.9481 27.5473 38.9317 27.5402 38.9135C27.5124 38.8416 27.4743 38.7741 27.4271 38.7132C27.4158 38.6986 27.4072 38.6832 27.3948 38.6694C27.3444 38.6112 27.2857 38.5608 27.2207 38.5195C27.2073 38.5113 27.1921 38.5077 27.1783 38.5003C27.1705 38.496 27.1659 38.4884 27.1579 38.4843L22.8 36.3055V27.6945L27.1578 25.5156C27.4289 25.3801 27.6001 25.103 27.6 24.8V19.6945L32.5278 17.2307C32.6049 17.3523 32.7136 17.4508 32.8422 17.5156L37.6422 19.9156C37.6492 19.9191 37.6575 19.9176 37.6646 19.9209C37.8758 20.0264 38.1242 20.0264 38.3354 19.9209C38.3425 19.9176 38.3508 19.9191 38.3578 19.9156L42 18.0945V29.9055L38.3578 28.0844C38.1326 27.9719 37.8675 27.9719 37.6422 28.0844L32.8422 30.4844C32.8342 30.4884 32.8297 30.496 32.8219 30.5002C32.8081 30.5077 32.7928 30.5112 32.7793 30.5195C32.7143 30.5608 32.6557 30.6113 32.6052 30.6694C32.5929 30.6832 32.5843 30.6986 32.5729 30.7132C32.5257 30.7741 32.4876 30.8416 32.4598 30.9135C32.4528 30.9317 32.4441 30.9481 32.4384 30.9668C32.414 31.0422 32.4011 31.1208 32.4 31.2V36.8C32.4 37.103 32.5712 37.3801 32.8422 37.5156L36.211 39.2L27.6 43.5055V39.2C27.599 39.1208 27.5861 39.0422 27.5617 38.9668V38.9668ZM37.2 17.9055L34.1891 16.4L37.2 14.8945V17.9055ZM34 32.4945L37.2 34.0945V37.9055L34 36.3055V32.4945ZM38 32.7055L34.9891 31.2L38 29.6945L41.011 31.2L38 32.7055ZM38.8 34.0945L42 32.4945V36.3055L38.8 37.9055V34.0945ZM42 16.3055L38.8 17.9055V14.0945L42 12.4945V16.3055ZM34 14.7055V12.4945L36.211 13.6L34 14.7055ZM10 14.7055L7.78909 13.6L10 12.4945V14.7055ZM5.20002 17.9055L2.00002 16.3055V12.4945L5.20002 14.0945V17.9055ZM2.00002 32.4945L5.20002 34.0945V37.9055L2.00002 36.3055V32.4945ZM18 40.4945L21.2 42.0945V45.9055L18 44.3055V40.4945ZM22.8 45.9055V42.0945L26 40.4945V44.3055L22.8 45.9055ZM41.011 11.2L38 12.7055L34.9891 11.2L38 9.69453L41.011 11.2ZM22 1.69453L25.011 3.2L22 4.70547L18.9891 3.2L22 1.69453ZM6.00002 9.69453L9.01096 11.2L6.00002 12.7055L2.98909 11.2L6.00002 9.69453Z",fill:"var(--color-primary, blue)"}})])}),[],!1,null,null,null);L.default=Z.exports}}]); \ No newline at end of file diff --git a/main/assets/js/52.8e8f2c55.js b/main/assets/js/52.21d357c6.js similarity index 95% rename from main/assets/js/52.8e8f2c55.js rename to main/assets/js/52.21d357c6.js index af4059567be..c5e3366d237 100644 --- a/main/assets/js/52.8e8f2c55.js +++ b/main/assets/js/52.21d357c6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{523:function(t,e,l){"use strict";l.r(e);var c=l(1),n=Object(c.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24","fill-rule":"evenodd","clip-rule":"evenodd"}},[e("path",{attrs:{d:"M19.54 0c1.356 0 2.46 1.104 2.46 2.472v21.528l-2.58-2.28-1.452-1.344-1.536-1.428.636 2.22h-13.608c-1.356 0-2.46-1.104-2.46-2.472v-16.224c0-1.368 1.104-2.472 2.46-2.472h16.08zm-4.632 15.672c2.652-.084 3.672-1.824 3.672-1.824 0-3.864-1.728-6.996-1.728-6.996-1.728-1.296-3.372-1.26-3.372-1.26l-.168.192c2.04.624 2.988 1.524 2.988 1.524-1.248-.684-2.472-1.02-3.612-1.152-.864-.096-1.692-.072-2.424.024l-.204.024c-.42.036-1.44.192-2.724.756-.444.204-.708.348-.708.348s.996-.948 3.156-1.572l-.12-.144s-1.644-.036-3.372 1.26c0 0-1.728 3.132-1.728 6.996 0 0 1.008 1.74 3.66 1.824 0 0 .444-.54.804-.996-1.524-.456-2.1-1.416-2.1-1.416l.336.204.048.036.047.027.014.006.047.027c.3.168.6.3.876.408.492.192 1.08.384 1.764.516.9.168 1.956.228 3.108.012.564-.096 1.14-.264 1.74-.516.42-.156.888-.384 1.38-.708 0 0-.6.984-2.172 1.428.36.456.792.972.792.972zm-5.58-5.604c-.684 0-1.224.6-1.224 1.332 0 .732.552 1.332 1.224 1.332.684 0 1.224-.6 1.224-1.332.012-.732-.54-1.332-1.224-1.332zm4.38 0c-.684 0-1.224.6-1.224 1.332 0 .732.552 1.332 1.224 1.332.684 0 1.224-.6 1.224-1.332 0-.732-.54-1.332-1.224-1.332z"}})])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{627:function(t,e,l){"use strict";l.r(e);var c=l(1),n=Object(c.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{attrs:{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24","fill-rule":"evenodd","clip-rule":"evenodd"}},[e("path",{attrs:{d:"M19.54 0c1.356 0 2.46 1.104 2.46 2.472v21.528l-2.58-2.28-1.452-1.344-1.536-1.428.636 2.22h-13.608c-1.356 0-2.46-1.104-2.46-2.472v-16.224c0-1.368 1.104-2.472 2.46-2.472h16.08zm-4.632 15.672c2.652-.084 3.672-1.824 3.672-1.824 0-3.864-1.728-6.996-1.728-6.996-1.728-1.296-3.372-1.26-3.372-1.26l-.168.192c2.04.624 2.988 1.524 2.988 1.524-1.248-.684-2.472-1.02-3.612-1.152-.864-.096-1.692-.072-2.424.024l-.204.024c-.42.036-1.44.192-2.724.756-.444.204-.708.348-.708.348s.996-.948 3.156-1.572l-.12-.144s-1.644-.036-3.372 1.26c0 0-1.728 3.132-1.728 6.996 0 0 1.008 1.74 3.66 1.824 0 0 .444-.54.804-.996-1.524-.456-2.1-1.416-2.1-1.416l.336.204.048.036.047.027.014.006.047.027c.3.168.6.3.876.408.492.192 1.08.384 1.764.516.9.168 1.956.228 3.108.012.564-.096 1.14-.264 1.74-.516.42-.156.888-.384 1.38-.708 0 0-.6.984-2.172 1.428.36.456.792.972.792.972zm-5.58-5.604c-.684 0-1.224.6-1.224 1.332 0 .732.552 1.332 1.224 1.332.684 0 1.224-.6 1.224-1.332.012-.732-.54-1.332-1.224-1.332zm4.38 0c-.684 0-1.224.6-1.224 1.332 0 .732.552 1.332 1.224 1.332.684 0 1.224-.6 1.224-1.332 0-.732-.54-1.332-1.224-1.332z"}})])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/54.5f180535.js b/main/assets/js/54.79d66660.js similarity index 98% rename from main/assets/js/54.5f180535.js rename to main/assets/js/54.79d66660.js index f7112b6bb86..f0c9713a89a 100644 --- a/main/assets/js/54.5f180535.js +++ b/main/assets/js/54.79d66660.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{521: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.f0422648.js b/main/assets/js/58.4c5ebfc7.js similarity index 97% rename from main/assets/js/58.f0422648.js rename to main/assets/js/58.4c5ebfc7.js index fba63cf2780..5eef89abdac 100644 --- a/main/assets/js/58.f0422648.js +++ b/main/assets/js/58.4c5ebfc7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{517: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],{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 diff --git a/main/assets/js/59.ff601393.js b/main/assets/js/59.2b1aecb3.js similarity index 99% rename from main/assets/js/59.ff601393.js rename to main/assets/js/59.2b1aecb3.js index da2619d4028..c166c276e4b 100644 --- a/main/assets/js/59.ff601393.js +++ b/main/assets/js/59.2b1aecb3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{526:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"updating-the-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#updating-the-docs"}},[e._v("#")]),e._v(" Updating the docs")]),e._v(" "),o("p",[e._v("If you want to open a PR on Gaia to update the documentation, please follow the guidelines in the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("CONTRIBUTING.md")]),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"internationalization"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#internationalization"}},[e._v("#")]),e._v(" Internationalization")]),e._v(" "),o("ul",[o("li",[e._v("Translations for documentation live in a "),o("code",[e._v("docs//")]),e._v(" folder, where "),o("code",[e._v("")]),e._v(" is the language code for a specific language. For example, "),o("code",[e._v("zh")]),e._v(" for Chinese, "),o("code",[e._v("ko")]),e._v(" for Korean, "),o("code",[e._v("es")]),e._v(" for Spanish, etc.")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must follow the same folder structure within "),o("code",[e._v("docs/")]),e._v(", but only content in the following folders needs to be translated and included in the respective "),o("code",[e._v("docs//")]),e._v(" folder")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must also have a "),o("code",[e._v("README.md")]),e._v(" that includes a translated version of both the layout and content within the root-level "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/README.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("README.md")]),o("OutboundLink")],1),e._v(". The layout defined in the "),o("code",[e._v("README.md")]),e._v(" is used to build the homepage.")]),e._v(" "),o("li",[e._v("For additional configuration options, please see "),o("a",{attrs:{href:"https://vuepress.vuejs.org/guide/i18n.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress Internationalization"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("h2",{attrs:{id:"docs-build-workflow"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#docs-build-workflow"}},[e._v("#")]),e._v(" Docs Build Workflow")]),e._v(" "),o("p",[e._v("The documentation for Gaia is hosted at:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://hub.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://hub.cosmos.network/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("built from the files in this ("),o("code",[e._v("/docs")]),e._v(") directory for "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("main"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-it-works"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-it-works"}},[e._v("#")]),e._v(" How It Works")]),e._v(" "),o("p",[e._v("There is a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/docs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Action"),o("OutboundLink")],1),e._v("\nlistening for changes in the "),o("code",[e._v("/docs")]),e._v(" directory, on the "),o("code",[e._v("main")]),e._v(" branch.\nAny updates to files in this directory on that branch will automatically\ntrigger a website deployment. Under the hood, "),o("code",[e._v("make build-docs")]),e._v(" is run from the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/Makefile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Makefile"),o("OutboundLink")],1),e._v(" in this repo.")]),e._v(" "),o("h2",{attrs:{id:"readme"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#readme"}},[e._v("#")]),e._v(" README")]),e._v(" "),o("p",[e._v("The "),o("RouterLink",{attrs:{to:"/"}},[e._v("README.md")]),e._v(" is also the landing page for the documentation\non the website. During the Jenkins build, the current commit is added to the bottom\nof the README.")],1),e._v(" "),o("h2",{attrs:{id:"links"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),o("p",[o("strong",[e._v("NOTE:")]),e._v(" Strongly consider the existing links - both within this directory\nand to the website docs - when moving or deleting files.")]),e._v(" "),o("p",[e._v("Relative links should be used nearly everywhere, having discovered and weighed the following:")]),e._v(" "),o("h3",{attrs:{id:"relative"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#relative"}},[e._v("#")]),e._v(" Relative")]),e._v(" "),o("p",[e._v("Where is the other file, relative to the current one?")]),e._v(" "),o("ul",[o("li",[e._v("works both on GitHub and for the VuePress build")]),e._v(" "),o("li",[e._v("confusing / annoying to have things like: "),o("code",[e._v("../../../../myfile.md")])]),e._v(" "),o("li",[e._v("requires more updates when files are re-shuffled")])]),e._v(" "),o("h3",{attrs:{id:"absolute"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#absolute"}},[e._v("#")]),e._v(" Absolute")]),e._v(" "),o("p",[e._v("Where is the other file, given the root of the repo?")]),e._v(" "),o("ul",[o("li",[e._v("works on GitHub, doesn't work for the VuePress build")]),e._v(" "),o("li",[e._v("this is much nicer: "),o("code",[e._v("/docs/hereitis/myfile.md")])]),e._v(" "),o("li",[e._v("if you move that file around, the links inside it are preserved (but not to it, of course)")])]),e._v(" "),o("h3",{attrs:{id:"full"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#full"}},[e._v("#")]),e._v(" Full")]),e._v(" "),o("p",[e._v("The full GitHub URL to a file or directory. Used occasionally when it makes sense\nto send users to the GitHub.")]),e._v(" "),o("h2",{attrs:{id:"building-locally"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#building-locally"}},[e._v("#")]),e._v(" Building Locally")]),e._v(" "),o("p",[e._v("To build and serve the documentation locally, make sure you're in the "),o("code",[e._v("docs")]),e._v(" directory and run the following:")]),e._v(" "),o("p",[e._v("Clear "),o("code",[e._v("node_modules")]),e._v(" for a clean install. This is not necessary every time.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gLXJmIG5vZGVfbW9kdWxlcwo="}}),e._v(" "),o("p",[e._v("Install project dependencies")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIGluc3RhbGwK"}}),e._v(" "),o("p",[e._v("Serve the app")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIHJ1biBzZXJ2ZQo="}}),e._v(" "),o("p",[e._v("then navigate to "),o("code",[e._v("localhost:8080")]),e._v(" in your browser.")]),e._v(" "),o("p",[e._v("To build documentation as a static website run "),o("code",[e._v("npm run build")]),e._v(". You will find the website in "),o("code",[e._v(".vuepress/dist")]),e._v(" directory.")]),e._v(" "),o("h2",{attrs:{id:"search"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),o("p",[e._v("We are using "),o("a",{attrs:{href:"https://www.algolia.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Algolia"),o("OutboundLink")],1),e._v(" to power full-text search. This uses a public API search-only key in the "),o("code",[e._v("config.js")]),e._v(" as well as a "),o("a",{attrs:{href:"https://github.com/algolia/docsearch-configs/blob/master/configs/cosmos_network.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos_network.json"),o("OutboundLink")],1),e._v(" configuration file that we can update with PRs.")]),e._v(" "),o("h3",{attrs:{id:"update-and-build-the-rpc-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#update-and-build-the-rpc-docs"}},[e._v("#")]),e._v(" Update and Build the RPC docs")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Execute the following command at the root directory to install the swagger-ui generate tool.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSB0b29scwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Edit API docs")]),e._v(" "),o("ol",[o("li",[e._v("Directly Edit API docs manually: "),o("code",[e._v("cmd/gaiad/swagger-ui/swagger.yaml")]),e._v(".")]),e._v(" "),o("li",[e._v("Edit API docs within the "),o("a",{attrs:{href:"https://editor.swagger.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swagger Editor"),o("OutboundLink")],1),e._v(". Please refer to this "),o("a",{attrs:{href:"https://swagger.io/docs/specification/2-0/basic-structure/",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),o("OutboundLink")],1),e._v(" for the correct structure in "),o("code",[e._v(".yaml")]),e._v(".")])])]),e._v(" "),o("li",[o("p",[e._v("Download "),o("code",[e._v("swagger.yaml")]),e._v(" and replace the old "),o("code",[e._v("swagger.yaml")]),e._v(" under fold "),o("code",[e._v("cmd/gaiad/swagger-ui")]),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Compile gaiad")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSBpbnN0YWxsCg=="}})],1)])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{634:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"updating-the-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#updating-the-docs"}},[e._v("#")]),e._v(" Updating the docs")]),e._v(" "),o("p",[e._v("If you want to open a PR on Gaia to update the documentation, please follow the guidelines in the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("CONTRIBUTING.md")]),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"internationalization"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#internationalization"}},[e._v("#")]),e._v(" Internationalization")]),e._v(" "),o("ul",[o("li",[e._v("Translations for documentation live in a "),o("code",[e._v("docs//")]),e._v(" folder, where "),o("code",[e._v("")]),e._v(" is the language code for a specific language. For example, "),o("code",[e._v("zh")]),e._v(" for Chinese, "),o("code",[e._v("ko")]),e._v(" for Korean, "),o("code",[e._v("es")]),e._v(" for Spanish, etc.")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must follow the same folder structure within "),o("code",[e._v("docs/")]),e._v(", but only content in the following folders needs to be translated and included in the respective "),o("code",[e._v("docs//")]),e._v(" folder")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must also have a "),o("code",[e._v("README.md")]),e._v(" that includes a translated version of both the layout and content within the root-level "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/README.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("README.md")]),o("OutboundLink")],1),e._v(". The layout defined in the "),o("code",[e._v("README.md")]),e._v(" is used to build the homepage.")]),e._v(" "),o("li",[e._v("For additional configuration options, please see "),o("a",{attrs:{href:"https://vuepress.vuejs.org/guide/i18n.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress Internationalization"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("h2",{attrs:{id:"docs-build-workflow"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#docs-build-workflow"}},[e._v("#")]),e._v(" Docs Build Workflow")]),e._v(" "),o("p",[e._v("The documentation for Gaia is hosted at:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://hub.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://hub.cosmos.network/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("built from the files in this ("),o("code",[e._v("/docs")]),e._v(") directory for "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("main"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-it-works"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-it-works"}},[e._v("#")]),e._v(" How It Works")]),e._v(" "),o("p",[e._v("There is a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/docs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Action"),o("OutboundLink")],1),e._v("\nlistening for changes in the "),o("code",[e._v("/docs")]),e._v(" directory, on the "),o("code",[e._v("main")]),e._v(" branch.\nAny updates to files in this directory on that branch will automatically\ntrigger a website deployment. Under the hood, "),o("code",[e._v("make build-docs")]),e._v(" is run from the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/Makefile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Makefile"),o("OutboundLink")],1),e._v(" in this repo.")]),e._v(" "),o("h2",{attrs:{id:"readme"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#readme"}},[e._v("#")]),e._v(" README")]),e._v(" "),o("p",[e._v("The "),o("RouterLink",{attrs:{to:"/"}},[e._v("README.md")]),e._v(" is also the landing page for the documentation\non the website. During the Jenkins build, the current commit is added to the bottom\nof the README.")],1),e._v(" "),o("h2",{attrs:{id:"links"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),o("p",[o("strong",[e._v("NOTE:")]),e._v(" Strongly consider the existing links - both within this directory\nand to the website docs - when moving or deleting files.")]),e._v(" "),o("p",[e._v("Relative links should be used nearly everywhere, having discovered and weighed the following:")]),e._v(" "),o("h3",{attrs:{id:"relative"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#relative"}},[e._v("#")]),e._v(" Relative")]),e._v(" "),o("p",[e._v("Where is the other file, relative to the current one?")]),e._v(" "),o("ul",[o("li",[e._v("works both on GitHub and for the VuePress build")]),e._v(" "),o("li",[e._v("confusing / annoying to have things like: "),o("code",[e._v("../../../../myfile.md")])]),e._v(" "),o("li",[e._v("requires more updates when files are re-shuffled")])]),e._v(" "),o("h3",{attrs:{id:"absolute"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#absolute"}},[e._v("#")]),e._v(" Absolute")]),e._v(" "),o("p",[e._v("Where is the other file, given the root of the repo?")]),e._v(" "),o("ul",[o("li",[e._v("works on GitHub, doesn't work for the VuePress build")]),e._v(" "),o("li",[e._v("this is much nicer: "),o("code",[e._v("/docs/hereitis/myfile.md")])]),e._v(" "),o("li",[e._v("if you move that file around, the links inside it are preserved (but not to it, of course)")])]),e._v(" "),o("h3",{attrs:{id:"full"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#full"}},[e._v("#")]),e._v(" Full")]),e._v(" "),o("p",[e._v("The full GitHub URL to a file or directory. Used occasionally when it makes sense\nto send users to the GitHub.")]),e._v(" "),o("h2",{attrs:{id:"building-locally"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#building-locally"}},[e._v("#")]),e._v(" Building Locally")]),e._v(" "),o("p",[e._v("To build and serve the documentation locally, make sure you're in the "),o("code",[e._v("docs")]),e._v(" directory and run the following:")]),e._v(" "),o("p",[e._v("Clear "),o("code",[e._v("node_modules")]),e._v(" for a clean install. This is not necessary every time.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gLXJmIG5vZGVfbW9kdWxlcwo="}}),e._v(" "),o("p",[e._v("Install project dependencies")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIGluc3RhbGwK"}}),e._v(" "),o("p",[e._v("Serve the app")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIHJ1biBzZXJ2ZQo="}}),e._v(" "),o("p",[e._v("then navigate to "),o("code",[e._v("localhost:8080")]),e._v(" in your browser.")]),e._v(" "),o("p",[e._v("To build documentation as a static website run "),o("code",[e._v("npm run build")]),e._v(". You will find the website in "),o("code",[e._v(".vuepress/dist")]),e._v(" directory.")]),e._v(" "),o("h2",{attrs:{id:"search"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),o("p",[e._v("We are using "),o("a",{attrs:{href:"https://www.algolia.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Algolia"),o("OutboundLink")],1),e._v(" to power full-text search. This uses a public API search-only key in the "),o("code",[e._v("config.js")]),e._v(" as well as a "),o("a",{attrs:{href:"https://github.com/algolia/docsearch-configs/blob/master/configs/cosmos_network.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos_network.json"),o("OutboundLink")],1),e._v(" configuration file that we can update with PRs.")]),e._v(" "),o("h3",{attrs:{id:"update-and-build-the-rpc-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#update-and-build-the-rpc-docs"}},[e._v("#")]),e._v(" Update and Build the RPC docs")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Execute the following command at the root directory to install the swagger-ui generate tool.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSB0b29scwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Edit API docs")]),e._v(" "),o("ol",[o("li",[e._v("Directly Edit API docs manually: "),o("code",[e._v("cmd/gaiad/swagger-ui/swagger.yaml")]),e._v(".")]),e._v(" "),o("li",[e._v("Edit API docs within the "),o("a",{attrs:{href:"https://editor.swagger.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swagger Editor"),o("OutboundLink")],1),e._v(". Please refer to this "),o("a",{attrs:{href:"https://swagger.io/docs/specification/2-0/basic-structure/",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),o("OutboundLink")],1),e._v(" for the correct structure in "),o("code",[e._v(".yaml")]),e._v(".")])])]),e._v(" "),o("li",[o("p",[e._v("Download "),o("code",[e._v("swagger.yaml")]),e._v(" and replace the old "),o("code",[e._v("swagger.yaml")]),e._v(" under fold "),o("code",[e._v("cmd/gaiad/swagger-ui")]),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Compile gaiad")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSBpbnN0YWxsCg=="}})],1)])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/6.4fed3cd8.js b/main/assets/js/6.db0c2214.js similarity index 98% rename from main/assets/js/6.4fed3cd8.js rename to main/assets/js/6.db0c2214.js index f10fc8e8a2e..87d06403b8f 100644 --- a/main/assets/js/6.4fed3cd8.js +++ b/main/assets/js/6.db0c2214.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{398:function(t,s,i){},426:function(t,s,i){"use strict";i(398)},479:function(t,s,i){"use strict";i.r(s);i(426);var a=i(1),e=Object(a.a)({},(function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",[i("div",{staticClass:"search__container"},[i("div",{staticClass:"search__container__right"},[i("tm-select-version"),t.$themeConfig.algolia?i("div",{staticClass:"search",on:{click:function(s){return t.$emit("search",!0)}}},[i("div",{staticClass:"search__icon"},[i("icon-search")],1),i("div",{staticClass:"search__text"},[t._v("Search")])]):t._e()],1)]),i("div",{staticClass:"h1"},[t._v(t._s(t.$frontmatter.title))]),i("div",{staticClass:"intro"},[i("div",{staticClass:"p"},[t._v(t._s(t.$frontmatter.description))])]),i("div",{staticClass:"h2"},[t._v("Getting Started")]),i("div",{staticClass:"p__alt"},[t._v("Read all about the SDK or dive straight into the code with tutorials.")]),i("div",{staticClass:"features"},[i("router-link",{staticClass:"features__item features__item__light",attrs:{to:"/intro/overview.html"}},[i("div",{staticClass:"features__item__image"},[i("icon-spaceship",{staticClass:"features__item__image__img"})],1),i("div",{staticClass:"features__item__text"},[i("div",{staticClass:"features__item__text__h2"},[t._v("read")]),i("div",{staticClass:"features__item__text__h1"},[t._v("Introduction to Cosmos SDK")]),i("div",{staticClass:"features__item__text__p"},[t._v("Learn about all the parts of the Cosmos SDK.")])])]),i("a",{staticClass:"features__item features__item__dark",attrs:{href:"https://tutorials.cosmos.network",target:"_blank",rel:"noopener"}},[i("icon-arrow",{staticClass:"features__item__icon"}),i("div",{staticClass:"features__item__image"},[i("icon-window",{staticClass:"features__item__image__img"})],1),t._m(0)],1)],1),i("div",{staticClass:"sections__wrapper"},[i("div",{staticClass:"h2"},[t._v("Explore the SDK")]),i("div",{staticClass:"p__alt"},[t._v("Get familiar with the SDK and explore its main concepts.")]),i("div",{staticClass:"sections"},t._l(t.$frontmatter.sections,(function(s){return i("router-link",{staticClass:"sections__item",attrs:{tag:"a",to:s.url}},[i("tm-icon-"+s.icon,{tag:"component",staticClass:"sections__item__icon"}),i("div",{staticClass:"sections__item__wrapper"},[i("div",{staticClass:"sections__item__title"},[t._v(t._s(s.title))]),i("div",{staticClass:"sections__item__desc"},[t._v(t._s(s.desc))])])],1)})),1)]),i("div",{staticClass:"h2"},[t._v("Explore the Stack")]),i("div",{staticClass:"p__alt"},[t._v("Check out the docs for the various parts of the Cosmos stack.")]),i("div",{staticClass:"stack"},t._l(t.$frontmatter.stack,(function(s){return i("a",{staticClass:"stack__item",style:{"--accent":s.color,"--opacity":"5%"},attrs:{href:s.url}},[i("div",{staticClass:"stack__item__wrapper"},[i("tm-logo-"+s.label,{tag:"component",staticClass:"stack__item__logo",attrs:{color:s.color,height:"100px"}}),i("svg",{staticClass:"stack__item__icon",attrs:{width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[i("path",{attrs:{d:"M1.07239 14.4697C0.779499 14.7626 0.779499 15.2374 1.07239 15.5303C1.36529 15.8232 1.84016 15.8232 2.13305 15.5303L1.07239 14.4697ZM15.7088 1.95457C16.0017 1.66168 16.0017 1.18681 15.7088 0.893912C15.4159 0.601019 14.941 0.601019 14.6482 0.893912L15.7088 1.95457ZM15.6027 1H16.3527C16.3527 0.585786 16.0169 0.25 15.6027 0.25V1ZM5.4209 0.25C5.00669 0.25 4.6709 0.585786 4.6709 1C4.6709 1.41421 5.00669 1.75 5.4209 1.75V0.25ZM14.8527 11.1818C14.8527 11.596 15.1885 11.9318 15.6027 11.9318C16.0169 11.9318 16.3527 11.596 16.3527 11.1818H14.8527ZM2.13305 15.5303L15.7088 1.95457L14.6482 0.893912L1.07239 14.4697L2.13305 15.5303ZM15.6027 0.25H5.4209V1.75H15.6027V0.25ZM16.3527 11.1818V1H14.8527V11.1818H16.3527Z",fill:"#000"}})]),i("div",[i("div",{staticClass:"stack__item__h1"},[t._v(t._s(s.title))]),i("div",{staticClass:"stack__item__p"},[t._v(t._s(s.desc))])])],1)])})),0),i("tm-help-support")],1)}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"features__item__text"},[s("div",{staticClass:"features__item__text__h2"},[this._v("use")]),s("div",{staticClass:"features__item__text__h1"},[this._v("SDK Tutorials")]),s("div",{staticClass:"features__item__text__p"},[this._v("Build a complete blockchain application from scratch.")])])}],!1,null,"0e8cb6f4",null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{398:function(t,s,i){},426:function(t,s,i){"use strict";i(398)},480:function(t,s,i){"use strict";i.r(s);i(426);var a=i(1),e=Object(a.a)({},(function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",[i("div",{staticClass:"search__container"},[i("div",{staticClass:"search__container__right"},[i("tm-select-version"),t.$themeConfig.algolia?i("div",{staticClass:"search",on:{click:function(s){return t.$emit("search",!0)}}},[i("div",{staticClass:"search__icon"},[i("icon-search")],1),i("div",{staticClass:"search__text"},[t._v("Search")])]):t._e()],1)]),i("div",{staticClass:"h1"},[t._v(t._s(t.$frontmatter.title))]),i("div",{staticClass:"intro"},[i("div",{staticClass:"p"},[t._v(t._s(t.$frontmatter.description))])]),i("div",{staticClass:"h2"},[t._v("Getting Started")]),i("div",{staticClass:"p__alt"},[t._v("Read all about the SDK or dive straight into the code with tutorials.")]),i("div",{staticClass:"features"},[i("router-link",{staticClass:"features__item features__item__light",attrs:{to:"/intro/overview.html"}},[i("div",{staticClass:"features__item__image"},[i("icon-spaceship",{staticClass:"features__item__image__img"})],1),i("div",{staticClass:"features__item__text"},[i("div",{staticClass:"features__item__text__h2"},[t._v("read")]),i("div",{staticClass:"features__item__text__h1"},[t._v("Introduction to Cosmos SDK")]),i("div",{staticClass:"features__item__text__p"},[t._v("Learn about all the parts of the Cosmos SDK.")])])]),i("a",{staticClass:"features__item features__item__dark",attrs:{href:"https://tutorials.cosmos.network",target:"_blank",rel:"noopener"}},[i("icon-arrow",{staticClass:"features__item__icon"}),i("div",{staticClass:"features__item__image"},[i("icon-window",{staticClass:"features__item__image__img"})],1),t._m(0)],1)],1),i("div",{staticClass:"sections__wrapper"},[i("div",{staticClass:"h2"},[t._v("Explore the SDK")]),i("div",{staticClass:"p__alt"},[t._v("Get familiar with the SDK and explore its main concepts.")]),i("div",{staticClass:"sections"},t._l(t.$frontmatter.sections,(function(s){return i("router-link",{staticClass:"sections__item",attrs:{tag:"a",to:s.url}},[i("tm-icon-"+s.icon,{tag:"component",staticClass:"sections__item__icon"}),i("div",{staticClass:"sections__item__wrapper"},[i("div",{staticClass:"sections__item__title"},[t._v(t._s(s.title))]),i("div",{staticClass:"sections__item__desc"},[t._v(t._s(s.desc))])])],1)})),1)]),i("div",{staticClass:"h2"},[t._v("Explore the Stack")]),i("div",{staticClass:"p__alt"},[t._v("Check out the docs for the various parts of the Cosmos stack.")]),i("div",{staticClass:"stack"},t._l(t.$frontmatter.stack,(function(s){return i("a",{staticClass:"stack__item",style:{"--accent":s.color,"--opacity":"5%"},attrs:{href:s.url}},[i("div",{staticClass:"stack__item__wrapper"},[i("tm-logo-"+s.label,{tag:"component",staticClass:"stack__item__logo",attrs:{color:s.color,height:"100px"}}),i("svg",{staticClass:"stack__item__icon",attrs:{width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[i("path",{attrs:{d:"M1.07239 14.4697C0.779499 14.7626 0.779499 15.2374 1.07239 15.5303C1.36529 15.8232 1.84016 15.8232 2.13305 15.5303L1.07239 14.4697ZM15.7088 1.95457C16.0017 1.66168 16.0017 1.18681 15.7088 0.893912C15.4159 0.601019 14.941 0.601019 14.6482 0.893912L15.7088 1.95457ZM15.6027 1H16.3527C16.3527 0.585786 16.0169 0.25 15.6027 0.25V1ZM5.4209 0.25C5.00669 0.25 4.6709 0.585786 4.6709 1C4.6709 1.41421 5.00669 1.75 5.4209 1.75V0.25ZM14.8527 11.1818C14.8527 11.596 15.1885 11.9318 15.6027 11.9318C16.0169 11.9318 16.3527 11.596 16.3527 11.1818H14.8527ZM2.13305 15.5303L15.7088 1.95457L14.6482 0.893912L1.07239 14.4697L2.13305 15.5303ZM15.6027 0.25H5.4209V1.75H15.6027V0.25ZM16.3527 11.1818V1H14.8527V11.1818H16.3527Z",fill:"#000"}})]),i("div",[i("div",{staticClass:"stack__item__h1"},[t._v(t._s(s.title))]),i("div",{staticClass:"stack__item__p"},[t._v(t._s(s.desc))])])],1)])})),0),i("tm-help-support")],1)}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"features__item__text"},[s("div",{staticClass:"features__item__text__h2"},[this._v("use")]),s("div",{staticClass:"features__item__text__h1"},[this._v("SDK Tutorials")]),s("div",{staticClass:"features__item__text__p"},[this._v("Build a complete blockchain application from scratch.")])])}],!1,null,"0e8cb6f4",null);s.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/60.6aca670e.js b/main/assets/js/60.66615724.js similarity index 98% rename from main/assets/js/60.6aca670e.js rename to main/assets/js/60.66615724.js index 5ef44f4ed57..4bafc8359e2 100644 --- a/main/assets/js/60.6aca670e.js +++ b/main/assets/js/60.66615724.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{529:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-documentation"}},[t._v("#")]),t._v(" Cosmos Hub Documentation")]),t._v(" "),a("p",[t._v("Welcome to the documentation of the "),a("strong",[t._v("Cosmos Hub application: "),a("code",[t._v("gaia")])]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"what-is-gaia"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-gaia"}},[t._v("#")]),t._v(" What is Gaia?")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/what-is-gaia.html"}},[t._v("Intro to the "),a("code",[t._v("gaia")]),t._v(" software")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[t._v("Interacting with the "),a("code",[t._v("gaiad")]),t._v(" binary")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-mainnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Mainnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Install the "),a("code",[t._v("gaia")]),t._v(" application")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Set up a full node and join the mainnet")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Upgrade to a validator node")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("Join the testnet")])],1)]),t._v(" "),a("h2",{attrs:{id:"setup-your-own-gaia-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup-your-own-gaia-testnet"}},[t._v("#")]),t._v(" Setup Your Own "),a("code",[t._v("gaia")]),t._v(" Testnet")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[t._v("Setup your own "),a("code",[t._v("gaia")]),t._v(" testnet"),a("OutboundLink")],1)])]),t._v(" "),a("h2",{attrs:{id:"additional-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-resources"}},[t._v("#")]),t._v(" Additional Resources")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/validators/"}},[t._v("Validator Resources")]),t._v(": Contains documentation for "),a("code",[t._v("gaia")]),t._v(" validators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/delegators/"}},[t._v("Delegator Resources")]),t._v(": Contains documentation for delegators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/"}},[t._v("Other Resources")]),t._v(": Contains documentation on "),a("code",[t._v("gaiad")]),t._v(", genesis file, service providers, ledger wallets, ...")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/archives.html"}},[t._v("Cosmos Hub Archives")]),t._v(": State archives of past iteration of the Cosmos Hub.")],1)]),t._v(" "),a("h1",{attrs:{id:"contribute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contribute"}},[t._v("#")]),t._v(" Contribute")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/DOCS_README.html"}},[t._v("this file")]),t._v(" for details of the build process and\nconsiderations when making changes.")],1)])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(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/61.81a86b33.js b/main/assets/js/61.4d00c179.js similarity index 98% rename from main/assets/js/61.81a86b33.js rename to main/assets/js/61.4d00c179.js index 68be42757d6..bc0cf4b10c2 100644 --- a/main/assets/js/61.81a86b33.js +++ b/main/assets/js/61.4d00c179.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{528:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"adr-creation-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-creation-process"}},[e._v("#")]),e._v(" ADR Creation Process")]),e._v(" "),a("ol",[a("li",[e._v("Copy the "),a("code",[e._v("adr-template.md")]),e._v(" file. Use the following filename pattern: "),a("code",[e._v("adr-next_number-title.md")])]),e._v(" "),a("li",[e._v("Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback.")]),e._v(" "),a("li",[e._v("Make sure that the problem, the context and a recommended solution is clear and well documented. Be sure to document alternate solution spaces and give reasons why they have been discarded.")]),e._v(" "),a("li",[e._v("Add an entry to a list in the README file "),a("RouterLink",{attrs:{to:"/architecture/#adr-table-of-contents"}},[e._v("Table of Contents")]),e._v(".")],1),e._v(" "),a("li",[e._v("Create a Pull Request to propose a new ADR.")])]),e._v(" "),a("h2",{attrs:{id:"adr-life-cycle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-life-cycle"}},[e._v("#")]),e._v(" ADR life cycle")]),e._v(" "),a("p",[e._v("ADR creation is an "),a("strong",[e._v("iterative")]),e._v(" process. Instead of trying to solve all decisions in a single ADR pull request, we MUST firstly understand the problem and collect feedback through a GitHub Issue.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Every proposal SHOULD start with a new GitHub Issue or be a result of existing Issues. The Issue should contain just a brief proposal summary.")])]),e._v(" "),a("li",[a("p",[e._v("Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the "),a("code",[e._v("adr-template.md")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("An ADR doesn't have to arrive to "),a("code",[e._v("main")]),e._v(" with an "),a("em",[e._v("accepted")]),e._v(" status in a single PR. If the motivation is clear and the solution is sound, we SHOULD be able to merge it and keep a "),a("em",[e._v("proposed")]),e._v(" status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.")])]),e._v(" "),a("li",[a("p",[e._v("If a "),a("em",[e._v("proposed")]),e._v(" ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.")])]),e._v(" "),a("li",[a("p",[e._v("The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a "),a("em",[e._v("rejected")]),e._v(" status. The only time the ADR SHOULD NOT be merged is if the author abandons it.")])]),e._v(" "),a("li",[a("p",[e._v("Merged ADRs SHOULD NOT be deleted.")])])]),e._v(" "),a("h3",{attrs:{id:"adr-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-status"}},[e._v("#")]),e._v(" ADR status")]),e._v(" "),a("p",[e._v("Status has two components:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"e0NPTlNFTlNVUyBTVEFUVVN9IHtJTVBMRU1FTlRBVElPTiBTVEFUVVN9Cg=="}}),e._v(" "),a("p",[e._v("IMPLEMENTATION STATUS is either "),a("code",[e._v("Implemented")]),e._v(" or "),a("code",[e._v("Not Implemented")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"consensus-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus-status"}},[e._v("#")]),e._v(" Consensus Status")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"Zmxvd2NoYXJ0IFRECiAgICBBW0RSQUZUXSAtLSZndDsgQltQUk9QT1NFRF0KICAgIEIgLS0mZ3Q7IENbTEFTVCBDQUxMIFlZWVktTU0tRERdCiAgICBCIC0tJmd0OyBEW0FCQU5ET05FRF0KICAgIEMgLS0mZ3Q7IEVbQUNDRVBURUQgb3IgUkVKRUNURURdCiAgICBFIC0tJmd0OyBGW1NVUEVSU0VERUQgYnkgQURSLXh4eF0K"}}),e._v(" "),a("ul",[a("li",[a("code",[e._v("DRAFT")]),e._v(": [optional] an ADR which is work in progress, not being ready for a general review. This is to present an early work and get an early feedback in a Draft Pull Request form.")]),e._v(" "),a("li",[a("code",[e._v("PROPOSED")]),e._v(": an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet.")]),e._v(" "),a("li",[a("code",[e._v("LAST CALL ")]),e._v(": [optional] clear notify that we are close to accept updates. Changing a status to "),a("code",[e._v("LAST CALL")]),e._v(" means that social consensus (of Cosmos SDK maintainers) has been reached and we still want to give it a time to let the community react or analyze.")]),e._v(" "),a("li",[a("code",[e._v("ACCEPTED")]),e._v(": ADR which will represent a currently implemented or to be implemented architecture design.")]),e._v(" "),a("li",[a("code",[e._v("REJECTED")]),e._v(": ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so.")]),e._v(" "),a("li",[a("code",[e._v("SUPERSEEDED by ADR-xxx")]),e._v(": ADR which has been superseded by a new ADR.")]),e._v(" "),a("li",[a("code",[e._v("ABANDONED")]),e._v(": the ADR is no longer pursued by the original authors.")])]),e._v(" "),a("h2",{attrs:{id:"language-used-in-adr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#language-used-in-adr"}},[e._v("#")]),e._v(" Language used in ADR")]),e._v(" "),a("ul",[a("li",[e._v("The context/background should be written in the present tense.")]),e._v(" "),a("li",[e._v("Avoid using a first, personal form.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{638:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"adr-creation-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-creation-process"}},[e._v("#")]),e._v(" ADR Creation Process")]),e._v(" "),a("ol",[a("li",[e._v("Copy the "),a("code",[e._v("adr-template.md")]),e._v(" file. Use the following filename pattern: "),a("code",[e._v("adr-next_number-title.md")])]),e._v(" "),a("li",[e._v("Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback.")]),e._v(" "),a("li",[e._v("Make sure that the problem, the context and a recommended solution is clear and well documented. Be sure to document alternate solution spaces and give reasons why they have been discarded.")]),e._v(" "),a("li",[e._v("Add an entry to a list in the README file "),a("RouterLink",{attrs:{to:"/architecture/#adr-table-of-contents"}},[e._v("Table of Contents")]),e._v(".")],1),e._v(" "),a("li",[e._v("Create a Pull Request to propose a new ADR.")])]),e._v(" "),a("h2",{attrs:{id:"adr-life-cycle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-life-cycle"}},[e._v("#")]),e._v(" ADR life cycle")]),e._v(" "),a("p",[e._v("ADR creation is an "),a("strong",[e._v("iterative")]),e._v(" process. Instead of trying to solve all decisions in a single ADR pull request, we MUST firstly understand the problem and collect feedback through a GitHub Issue.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Every proposal SHOULD start with a new GitHub Issue or be a result of existing Issues. The Issue should contain just a brief proposal summary.")])]),e._v(" "),a("li",[a("p",[e._v("Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the "),a("code",[e._v("adr-template.md")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("An ADR doesn't have to arrive to "),a("code",[e._v("main")]),e._v(" with an "),a("em",[e._v("accepted")]),e._v(" status in a single PR. If the motivation is clear and the solution is sound, we SHOULD be able to merge it and keep a "),a("em",[e._v("proposed")]),e._v(" status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.")])]),e._v(" "),a("li",[a("p",[e._v("If a "),a("em",[e._v("proposed")]),e._v(" ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.")])]),e._v(" "),a("li",[a("p",[e._v("The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a "),a("em",[e._v("rejected")]),e._v(" status. The only time the ADR SHOULD NOT be merged is if the author abandons it.")])]),e._v(" "),a("li",[a("p",[e._v("Merged ADRs SHOULD NOT be deleted.")])])]),e._v(" "),a("h3",{attrs:{id:"adr-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-status"}},[e._v("#")]),e._v(" ADR status")]),e._v(" "),a("p",[e._v("Status has two components:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"e0NPTlNFTlNVUyBTVEFUVVN9IHtJTVBMRU1FTlRBVElPTiBTVEFUVVN9Cg=="}}),e._v(" "),a("p",[e._v("IMPLEMENTATION STATUS is either "),a("code",[e._v("Implemented")]),e._v(" or "),a("code",[e._v("Not Implemented")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"consensus-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus-status"}},[e._v("#")]),e._v(" Consensus Status")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"Zmxvd2NoYXJ0IFRECiAgICBBW0RSQUZUXSAtLSZndDsgQltQUk9QT1NFRF0KICAgIEIgLS0mZ3Q7IENbTEFTVCBDQUxMIFlZWVktTU0tRERdCiAgICBCIC0tJmd0OyBEW0FCQU5ET05FRF0KICAgIEMgLS0mZ3Q7IEVbQUNDRVBURUQgb3IgUkVKRUNURURdCiAgICBFIC0tJmd0OyBGW1NVUEVSU0VERUQgYnkgQURSLXh4eF0K"}}),e._v(" "),a("ul",[a("li",[a("code",[e._v("DRAFT")]),e._v(": [optional] an ADR which is work in progress, not being ready for a general review. This is to present an early work and get an early feedback in a Draft Pull Request form.")]),e._v(" "),a("li",[a("code",[e._v("PROPOSED")]),e._v(": an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet.")]),e._v(" "),a("li",[a("code",[e._v("LAST CALL ")]),e._v(": [optional] clear notify that we are close to accept updates. Changing a status to "),a("code",[e._v("LAST CALL")]),e._v(" means that social consensus (of Cosmos SDK maintainers) has been reached and we still want to give it a time to let the community react or analyze.")]),e._v(" "),a("li",[a("code",[e._v("ACCEPTED")]),e._v(": ADR which will represent a currently implemented or to be implemented architecture design.")]),e._v(" "),a("li",[a("code",[e._v("REJECTED")]),e._v(": ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so.")]),e._v(" "),a("li",[a("code",[e._v("SUPERSEEDED by ADR-xxx")]),e._v(": ADR which has been superseded by a new ADR.")]),e._v(" "),a("li",[a("code",[e._v("ABANDONED")]),e._v(": the ADR is no longer pursued by the original authors.")])]),e._v(" "),a("h2",{attrs:{id:"language-used-in-adr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#language-used-in-adr"}},[e._v("#")]),e._v(" Language used in ADR")]),e._v(" "),a("ul",[a("li",[e._v("The context/background should be written in the present tense.")]),e._v(" "),a("li",[e._v("Avoid using a first, personal form.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/62.1880f883.js b/main/assets/js/62.d794a5e9.js similarity index 98% rename from main/assets/js/62.1880f883.js rename to main/assets/js/62.d794a5e9.js index 058bca726ae..2ce4ba7c239 100644 --- a/main/assets/js/62.1880f883.js +++ b/main/assets/js/62.d794a5e9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{531: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],{636: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.17d87726.js b/main/assets/js/63.0531c89d.js similarity index 99% rename from main/assets/js/63.17d87726.js rename to main/assets/js/63.0531c89d.js index 37b4ea8a7d1..548f7db2ab5 100644 --- a/main/assets/js/63.17d87726.js +++ b/main/assets/js/63.0531c89d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{532: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],{635: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/64.4b642893.js b/main/assets/js/64.ec07c490.js similarity index 99% rename from main/assets/js/64.4b642893.js rename to main/assets/js/64.ec07c490.js index 19966b5ac19..fa92c9062ea 100644 --- a/main/assets/js/64.4b642893.js +++ b/main/assets/js/64.ec07c490.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{620:function(e,o,s){"use strict";s.r(o);var t=s(1),a=Object(t.a)({},(function(){var e=this,o=e.$createElement,s=e._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"adr-002-globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adr-002-globalfee-module"}},[e._v("#")]),e._v(" ADR 002: Globalfee Module")]),e._v(" "),s("h2",{attrs:{id:"changelog"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),s("ul",[s("li",[e._v("2023-06-12: Initial Draft")])]),e._v(" "),s("h2",{attrs:{id:"status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),s("p",[e._v("ACCEPTED Implemented")]),e._v(" "),s("h2",{attrs:{id:"context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),s("p",[e._v("The globalfee module was created to manage a parameter called "),s("code",[e._v("MinimumGasPricesParam")]),e._v(", which sets a network-wide minimum fee requirement. The intention was to stop random denominations from entering fee collections and to reduce the time validators take to check a long list of transaction fees. To address scenarios where no fee payment is required but the denominations for volunteered paid fees are still restricted, the zero coins was introduced to serve as a means of limiting the denoms. Nevertheless, the initial version of the globalfee module had some issues:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". The "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is of "),s("code",[e._v("sdk.DecCoins")]),e._v(" type. In the Cosmos SDK, "),s("code",[e._v("sdk.DecCoins")]),e._v(" are "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/67f04e629623d4691c4b2e48806f7793a3aa211e/types/dec_coin.go#L160-L177",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitized"),s("OutboundLink")],1),e._v(" to remove zero-value coins. As a result, several methods from "),s("code",[e._v("sdk.Coins")]),e._v(" were "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/890ab3aa2e5788537b0d2ebc9bafdc968340e0e5/x/globalfee/ante/fee_utils.go#L46-L104",target:"_blank",rel:"noopener noreferrer"}},[e._v("redefined in the Gaia fee antehandler"),s("OutboundLink")],1),e._v(".")])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" exists in "),s("code",[e._v("app.toml")]),e._v(", which means each node can define its own value. Thus, it's not clear whether a transaction containing bypass-messages will be exempted from paying a fee.")])]),e._v(" "),s("li",[s("p",[e._v("The fee check logic is only executed in "),s("code",[e._v("CheckTx")]),e._v(". This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.")])])]),e._v(" "),s("h2",{attrs:{id:"decision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),s("p",[e._v("To fix these problems, the following changes are added to the globalfee module:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")]),e._v(":")]),s("br"),e._v("\nRefactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods.")]),e._v(" "),s("li",[s("strong",[e._v("Bypass Message Types:")]),s("br"),e._v(" "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic.")]),e._v(" "),s("li",[s("strong",[e._v("Check Fees in "),s("code",[e._v("DeliverTx")]),e._v(":")]),s("br"),e._v("\nThe fee check is factored to executed in both "),s("code",[e._v("DeliverTx")]),e._v(" and "),s("code",[e._v("CheckTx")]),e._v(". This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is introduced as a globalfee param.")])]),e._v(" "),s("h3",{attrs:{id:"zerocoins-in-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#zerocoins-in-minimumgaspricesparam"}},[e._v("#")]),e._v(" ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("h4",{attrs:{id:"coins-split"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coins-split"}},[e._v("#")]),e._v(" Coins Split")]),e._v(" "),s("p",[s("code",[e._v("CombinedFeeRequirement")]),e._v(" refers to the fee requirement that takes into account both "),s("code",[e._v("globalFees")]),e._v(" ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module) and "),s("code",[e._v("localFees")]),e._v(" ("),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v("). This requirement is calculated as the maximum value between "),s("code",[e._v("globalFees")]),e._v(" and "),s("code",[e._v("localFees")]),e._v(" for denomination exists "),s("code",[e._v("globalFees")]),e._v(".\nThe allowance of zero coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" within the globalfee module implies that "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(" also permits zero coins. Therefore, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" doesn't meet the requirements of certain "),s("code",[e._v("sdk.Coins")]),e._v(" methods. For instance, the "),s("code",[e._v("DenomsSubsetOf")]),e._v(" method requires coins that do not contain zero coins.")]),e._v(" "),s("p",[e._v("To address this issue, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" and "),s("code",[e._v("feeCoins")]),e._v(" are split as shown in the chart below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgUmVxdWlyZW1lbnRzIGFuZCBGZWUgU3BsaXRzCi0tLQpmbG93Y2hhcnQgVEQKCXN1YmdyYXBoIGZlZVJlcQogICAgQVtDb21iaW5lZEZlZVJlcXVpcmVtZW50XS0tJmd0O0JbL1NwbGl0IHplcm8vbm9uemVybyBjb2lucy9dCiAgICBCLS0mZ3Q7fHplcm8gY29pbnN8IENbemVyb0NvaW5GZWVzRGVub21SZXFdOwoJQi0tJmd0O3xub256ZXJvIGNvaW5zfCBEW25vbnplcm9Db2luRmVlc0Rlbm9tUmVxXTsKCgllbmQKCglzdWJncmFwaCBmZWVDb2luCglFW2ZlZUNvaW5zXS0tJmd0O0ZbL1NwbGl0IGJ5IHRoZSBkZW5vbXMgaW4gemVyby9ub256ZXJvIENvaW5GZWVzRGVub21SZXEvXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBHW2ZlZUNvaW5zWmVyb0Rlbm9tXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gbm9uemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBIW2ZlZUNvaW5zTm9uWmVyb0Rlbm9tXQoJZW5kCg=="}}),e._v(" "),s("p",[e._v("The "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" is split into zero and non-zero coins, forming "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(". Similarly, the paid fees (feeCoins) are split into "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(", based on the denominations of "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" as shown in the following code snippet.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CW5vblplcm9Db2luRmVlc1JlcSwgemVyb0NvaW5GZWVzRGVub21SZXEgOj0gZ2V0Tm9uWmVyb0ZlZXMoZmVlUmVxdWlyZWQpCgoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gY29udGFpbnMgbm9uLXplcm8gZGVub21pbmF0aW9ucyBmcm9tIHRoZSBmZWVSZXF1aXJlZAoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgZmVlcyBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgaW1wb3NlZCBieSBub25aZXJvQ29pbkZlZXNSZXEKCS8vIHdoZW4gZmVlQ29pbnMgZG9lcyBub3QgY29udGFpbiB6ZXJvIGNvaW5zJyBkZW5vbXMgaW4gZmVlUmVxdWlyZWQKCWZlZUNvaW5zTm9uWmVyb0Rlbm9tLCBmZWVDb2luc1plcm9EZW5vbSA6PSBzcGxpdENvaW5zQnlEZW5vbXMoZmVlQ29pbnMsIHplcm9Db2luRmVlc0Rlbm9tUmVxKQoK"}}),e._v(" "),s("h4",{attrs:{id:"fee-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks"}},[e._v("#")]),e._v(" Fee Checks")]),e._v(" "),s("p",[e._v("The Workflow of feeCheck is shown below:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgQ2hlY2sKLS0tCmZsb3djaGFydCBURAoKQVtmZWVDb2luc05vblplcm9EZW5vbV0tLSZndDtCWy9EZW5vbXNTdWJzZXRPZl9ub25aZXJvQ29pbkZlZXNSZXEvXTsKQi0tJmd0O3x5ZXN8Q1tpc19ieXBhc3NfbXNnXTsKQi0tJmd0O3xub3xEKChyZWplY3QpKTsKCkMtLSZndDt8eWVzfHBhc3MxKChwYXNzKSk7CkMtLSZndDt8bm98RFsvY29udGFpbl96ZXJvQ29pbkZlZXNEZW5vbVJlcV9kZW5vbS9dOwoKRC0tJmd0O3x5ZXN8cGFzczIoKHBhc3MpKTsKRC0tJmd0O3xub3xFWy9mZWVDb2luc1plcm9EZW5vbV9ub25FbXB0eS9dOwoKCkUtLSZndDt8eWVzfHBhc3MzKChwYXNzKSk7CkUtLSZndDt8bm98RlsvSXNBbnlHVEVfbm9uWmVyb0NvaW5GZWVzRGVub21SZXEvXTsKCkYtLSZndDt8eWVzfHBhc3M0KChwYXNzKSk7CkYtLSZndDt8bm98cmVqZWN0MigocmVqZWN0KSk7Cg=="}}),e._v(" "),s("p",[e._v("The split enable checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against\n"),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" (as shown in the following code snippet). In the check of "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", the Cosmos SDK coins' methods can be used since zero coins are removed from the "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", while in the check "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(", only denoms need to be checked.")]),e._v(" "),s("p",[e._v("Checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(":")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go ",base64:"CWlmICFmZWVDb2luc05vblplcm9EZW5vbS5Jc0FueUdURShub25aZXJvQ29pbkZlZXNSZXEpIHsKCQlyZXR1cm4gY3R4LCBzZGtlcnJvcnMuV3JhcGYoc2RrZXJyb3JzLkVyckluc3VmZmljaWVudEZlZSwgJnF1b3Q7aW5zdWZmaWNpZW50IGZlZXM7IGdvdDogJXMgcmVxdWlyZWQ6ICVzJnF1b3Q7LCBmZWVDb2lucy5TdHJpbmcoKSwgZmVlUmVxdWlyZWQuU3RyaW5nKCkpCgl9Cg=="}}),e._v(" "),s("p",[e._v("Here is an example of how the coins split and checked in fee antehandler:"),s("br"),e._v(" "),s("strong",[e._v("assumption")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("globalfee=[1photon, 0uatom, 1stake]")]),e._v(" and "),s("code",[e._v("local min-gas-prices=[0.5stake]")])]),e._v(" "),s("p",[s("strong",[e._v("fee requirement")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("combinedFeeRequirement=[1photon, 0uatom, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split fee requirement")]),e._v(":"),s("br"),e._v("\nthe "),s("code",[e._v("combinedFeeRequirement")]),e._v(" into "),s("code",[e._v("nonZeroCoinFeesReq=[0uatom]")]),e._v(", and "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split the paid fees")]),e._v(":"),s("br"),e._v("\nif "),s("code",[e._v("paidFee=[1uatom, 0.5photon]")]),e._v(",\nthe "),s("code",[e._v("splitCoinsByDenoms")]),e._v(" splits the paidFee into "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" (the same denom as zero coins in "),s("code",[e._v("combinedFeeRequirement")]),e._v("), and "),s("code",[e._v("feeCoinsNonZeroDenom=[0.5stake]")]),e._v("\nthen "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" is checked by "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")]),e._v(".")]),e._v(" "),s("p",[e._v("Please note that "),s("code",[e._v("feeCoins")]),e._v(" does not contain zero coins. The fee coins are split according to the denoms in "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(". If feeCoins contains coins not in both "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" and "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", the transaction should be rejected. On the contrary, if feeCoins' denoms are in either "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", and "),s("code",[e._v("len(zeroCoinFeesDenomReq)!=0")]),e._v(", the transaction can directly pass, otherwise, the fee amount need to be checked.")]),e._v(" "),s("h3",{attrs:{id:"bypass-message-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bypass-message-types"}},[e._v("#")]),e._v(" Bypass Message Types")]),e._v(" "),s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" was a setup in "),s("code",[e._v("config/app.toml")]),e._v(" before the refactor. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,"),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is also introduced as a globalfee param.")]),e._v(" "),s("h3",{attrs:{id:"fee-checks-in-delivertx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks-in-delivertx"}},[e._v("#")]),e._v(" Fee Checks in "),s("code",[e._v("DeliverTx")])]),e._v(" "),s("p",[e._v("Implementing fee checks within the "),s("code",[e._v("DeliverTx")]),e._v(" function introduces a few requirements:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("Deterministic Minimum Fee Requirement")]),e._v(": For the "),s("code",[e._v("DeliverTx")]),e._v(" process, it is essential to have a deterministic minimum fee requirement. In "),s("code",[e._v("CheckTx")]),e._v(", fee is checked by the "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(", which considers both "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("config/app.toml")]),e._v(" and "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" from the globalfee Params (For more details, see "),s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("globalfee.md")]),e._v("). "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" contains non-deterministic part: "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("app.toml")]),e._v(". Therefore, "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" cannot be used in "),s("code",[e._v("DeliverTx")]),e._v(". In "),s("code",[e._v("DeliverTx")]),e._v(", only "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee Params is used for fee verification. The code implementation is shown below.")],1)]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobWZkIEZlZURlY29yYXRvcikgR2V0VHhGZWVSZXF1aXJlZChjdHggc2RrLkNvbnRleHQsIHR4IHNkay5GZWVUeCkgKHNkay5Db2lucywgZXJyb3IpIHsKCS8vIEdldCByZXF1aXJlZCBnbG9iYWwgZmVlIG1pbiBnYXMgcHJpY2VzCgkvLyBOb3RlIHRoYXQgaXQgc2hvdWxkIG5ldmVyIGJlIGVtcHR5IHNpbmNlIGl0cyBkZWZhdWx0IHZhbHVlIGlzIHNldCB0byBjb2luPXsmcXVvdDtTdGFraW5nQm9uZERlbm9tJnF1b3Q7LCAwfQoJZ2xvYmFsRmVlcywgZXJyIDo9IG1mZC5HZXRHbG9iYWxGZWUoY3R4LCB0eCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBzZGsuQ29pbnN7fSwgZXJyCgl9CgoJLy8gSW4gRGVsaXZlclR4LCB0aGUgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgdGhlIG9ubHkgdHggZmVlIHJlcXVpcmVtZW50cy4KCWlmICFjdHguSXNDaGVja1R4KCkgewoJCXJldHVybiBnbG9iYWxGZWVzLCBuaWwKCX0KCgkvLyBJbiBDaGVja1R4IG1vZGUsIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgY29tYmluZWQKCS8vIHRvIGZvcm0gdGhlIHR4IGZlZSByZXF1aXJlbWVudHMKCgkvLyBHZXQgbG9jYWwgbWluaW11bS1nYXMtcHJpY2VzCglsb2NhbEZlZXMgOj0gR2V0TWluR2FzUHJpY2UoY3R4LCBpbnQ2NCh0eC5HZXRHYXMoKSkpCgoJLy8gUmV0dXJuIGNvbWJpbmVkIGZlZSByZXF1aXJlbWVudHMKCXJldHVybiBDb21iaW5lZEZlZVJlcXVpcmVtZW50KGdsb2JhbEZlZXMsIGxvY2FsRmVlcykKfQo="}}),e._v(" "),s("ul",[s("li",[s("p",[s("strong",[e._v("Deterministic Bypass Parameters")]),e._v(": The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" parameters are moved to a persistent store.")])]),e._v(" "),s("li",[s("p",[s("strong",[e._v("Module Initialization Order")]),e._v(": The genutils module must be initialized before the globalfee module. This is due to the "),s("code",[e._v("DeliverGenTxs")]),e._v(" in the genutils module, is called during "),s("code",[e._v("initGenesis")]),e._v(". This function executes "),s("code",[e._v("DeliverTx")]),e._v(", which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in "),s("code",[e._v("DeliverTx")]),e._v(".\nTo prevent the "),s("code",[e._v("DeliverGenTxs")]),e._v(" go through a fee check, the initialization of the globalfee module should occur after the genutils module. This sequencing ensures that all necessary components are in place when the fee check occurs. See "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/2489",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Issue #2489"),s("OutboundLink")],1),e._v(" for more context.")])])]),e._v(" "),s("h2",{attrs:{id:"consequences"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),s("h3",{attrs:{id:"positive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),s("p",[e._v("This refactor results in code that is easier to maintain. It prevents malicious validators from escaping fee checks and make the bypass messages work at network level.")]),e._v(" "),s("h3",{attrs:{id:"negative"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),s("p",[e._v("The introduction of FeeDecorator has replaced the usage of "),s("code",[e._v("MempoolFeeDecorator")]),e._v(" in the Cosmos SDK. Currently, if both FeeDecorator and MempoolFeeDecorator are added to the AnteDecorator chain, it will result in redundant checks. However, there's potential for FeeDecorator and MempoolFeeDecorator to become incompatible in the future, depending on updates to the Cosmos SDK.")]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Documentation of the globalfee module")])],1)])],1)}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{540:function(e,o,s){"use strict";s.r(o);var t=s(1),a=Object(t.a)({},(function(){var e=this,o=e.$createElement,s=e._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"adr-002-globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adr-002-globalfee-module"}},[e._v("#")]),e._v(" ADR 002: Globalfee Module")]),e._v(" "),s("h2",{attrs:{id:"changelog"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),s("ul",[s("li",[e._v("2023-06-12: Initial Draft")])]),e._v(" "),s("h2",{attrs:{id:"status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),s("p",[e._v("ACCEPTED Implemented")]),e._v(" "),s("h2",{attrs:{id:"context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),s("p",[e._v("The globalfee module was created to manage a parameter called "),s("code",[e._v("MinimumGasPricesParam")]),e._v(", which sets a network-wide minimum fee requirement. The intention was to stop random denominations from entering fee collections and to reduce the time validators take to check a long list of transaction fees. To address scenarios where no fee payment is required but the denominations for volunteered paid fees are still restricted, the zero coins was introduced to serve as a means of limiting the denoms. Nevertheless, the initial version of the globalfee module had some issues:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". The "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is of "),s("code",[e._v("sdk.DecCoins")]),e._v(" type. In the Cosmos SDK, "),s("code",[e._v("sdk.DecCoins")]),e._v(" are "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/67f04e629623d4691c4b2e48806f7793a3aa211e/types/dec_coin.go#L160-L177",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitized"),s("OutboundLink")],1),e._v(" to remove zero-value coins. As a result, several methods from "),s("code",[e._v("sdk.Coins")]),e._v(" were "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/890ab3aa2e5788537b0d2ebc9bafdc968340e0e5/x/globalfee/ante/fee_utils.go#L46-L104",target:"_blank",rel:"noopener noreferrer"}},[e._v("redefined in the Gaia fee antehandler"),s("OutboundLink")],1),e._v(".")])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" exists in "),s("code",[e._v("app.toml")]),e._v(", which means each node can define its own value. Thus, it's not clear whether a transaction containing bypass-messages will be exempted from paying a fee.")])]),e._v(" "),s("li",[s("p",[e._v("The fee check logic is only executed in "),s("code",[e._v("CheckTx")]),e._v(". This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.")])])]),e._v(" "),s("h2",{attrs:{id:"decision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),s("p",[e._v("To fix these problems, the following changes are added to the globalfee module:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")]),e._v(":")]),s("br"),e._v("\nRefactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods.")]),e._v(" "),s("li",[s("strong",[e._v("Bypass Message Types:")]),s("br"),e._v(" "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic.")]),e._v(" "),s("li",[s("strong",[e._v("Check Fees in "),s("code",[e._v("DeliverTx")]),e._v(":")]),s("br"),e._v("\nThe fee check is factored to executed in both "),s("code",[e._v("DeliverTx")]),e._v(" and "),s("code",[e._v("CheckTx")]),e._v(". This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is introduced as a globalfee param.")])]),e._v(" "),s("h3",{attrs:{id:"zerocoins-in-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#zerocoins-in-minimumgaspricesparam"}},[e._v("#")]),e._v(" ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("h4",{attrs:{id:"coins-split"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coins-split"}},[e._v("#")]),e._v(" Coins Split")]),e._v(" "),s("p",[s("code",[e._v("CombinedFeeRequirement")]),e._v(" refers to the fee requirement that takes into account both "),s("code",[e._v("globalFees")]),e._v(" ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module) and "),s("code",[e._v("localFees")]),e._v(" ("),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v("). This requirement is calculated as the maximum value between "),s("code",[e._v("globalFees")]),e._v(" and "),s("code",[e._v("localFees")]),e._v(" for denomination exists "),s("code",[e._v("globalFees")]),e._v(".\nThe allowance of zero coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" within the globalfee module implies that "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(" also permits zero coins. Therefore, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" doesn't meet the requirements of certain "),s("code",[e._v("sdk.Coins")]),e._v(" methods. For instance, the "),s("code",[e._v("DenomsSubsetOf")]),e._v(" method requires coins that do not contain zero coins.")]),e._v(" "),s("p",[e._v("To address this issue, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" and "),s("code",[e._v("feeCoins")]),e._v(" are split as shown in the chart below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgUmVxdWlyZW1lbnRzIGFuZCBGZWUgU3BsaXRzCi0tLQpmbG93Y2hhcnQgVEQKCXN1YmdyYXBoIGZlZVJlcQogICAgQVtDb21iaW5lZEZlZVJlcXVpcmVtZW50XS0tJmd0O0JbL1NwbGl0IHplcm8vbm9uemVybyBjb2lucy9dCiAgICBCLS0mZ3Q7fHplcm8gY29pbnN8IENbemVyb0NvaW5GZWVzRGVub21SZXFdOwoJQi0tJmd0O3xub256ZXJvIGNvaW5zfCBEW25vbnplcm9Db2luRmVlc0Rlbm9tUmVxXTsKCgllbmQKCglzdWJncmFwaCBmZWVDb2luCglFW2ZlZUNvaW5zXS0tJmd0O0ZbL1NwbGl0IGJ5IHRoZSBkZW5vbXMgaW4gemVyby9ub256ZXJvIENvaW5GZWVzRGVub21SZXEvXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBHW2ZlZUNvaW5zWmVyb0Rlbm9tXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gbm9uemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBIW2ZlZUNvaW5zTm9uWmVyb0Rlbm9tXQoJZW5kCg=="}}),e._v(" "),s("p",[e._v("The "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" is split into zero and non-zero coins, forming "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(". Similarly, the paid fees (feeCoins) are split into "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(", based on the denominations of "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" as shown in the following code snippet.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CW5vblplcm9Db2luRmVlc1JlcSwgemVyb0NvaW5GZWVzRGVub21SZXEgOj0gZ2V0Tm9uWmVyb0ZlZXMoZmVlUmVxdWlyZWQpCgoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gY29udGFpbnMgbm9uLXplcm8gZGVub21pbmF0aW9ucyBmcm9tIHRoZSBmZWVSZXF1aXJlZAoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgZmVlcyBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgaW1wb3NlZCBieSBub25aZXJvQ29pbkZlZXNSZXEKCS8vIHdoZW4gZmVlQ29pbnMgZG9lcyBub3QgY29udGFpbiB6ZXJvIGNvaW5zJyBkZW5vbXMgaW4gZmVlUmVxdWlyZWQKCWZlZUNvaW5zTm9uWmVyb0Rlbm9tLCBmZWVDb2luc1plcm9EZW5vbSA6PSBzcGxpdENvaW5zQnlEZW5vbXMoZmVlQ29pbnMsIHplcm9Db2luRmVlc0Rlbm9tUmVxKQoK"}}),e._v(" "),s("h4",{attrs:{id:"fee-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks"}},[e._v("#")]),e._v(" Fee Checks")]),e._v(" "),s("p",[e._v("The Workflow of feeCheck is shown below:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgQ2hlY2sKLS0tCmZsb3djaGFydCBURAoKQVtmZWVDb2luc05vblplcm9EZW5vbV0tLSZndDtCWy9EZW5vbXNTdWJzZXRPZl9ub25aZXJvQ29pbkZlZXNSZXEvXTsKQi0tJmd0O3x5ZXN8Q1tpc19ieXBhc3NfbXNnXTsKQi0tJmd0O3xub3xEKChyZWplY3QpKTsKCkMtLSZndDt8eWVzfHBhc3MxKChwYXNzKSk7CkMtLSZndDt8bm98RFsvY29udGFpbl96ZXJvQ29pbkZlZXNEZW5vbVJlcV9kZW5vbS9dOwoKRC0tJmd0O3x5ZXN8cGFzczIoKHBhc3MpKTsKRC0tJmd0O3xub3xFWy9mZWVDb2luc1plcm9EZW5vbV9ub25FbXB0eS9dOwoKCkUtLSZndDt8eWVzfHBhc3MzKChwYXNzKSk7CkUtLSZndDt8bm98RlsvSXNBbnlHVEVfbm9uWmVyb0NvaW5GZWVzRGVub21SZXEvXTsKCkYtLSZndDt8eWVzfHBhc3M0KChwYXNzKSk7CkYtLSZndDt8bm98cmVqZWN0MigocmVqZWN0KSk7Cg=="}}),e._v(" "),s("p",[e._v("The split enable checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against\n"),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" (as shown in the following code snippet). In the check of "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", the Cosmos SDK coins' methods can be used since zero coins are removed from the "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", while in the check "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(", only denoms need to be checked.")]),e._v(" "),s("p",[e._v("Checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(":")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go ",base64:"CWlmICFmZWVDb2luc05vblplcm9EZW5vbS5Jc0FueUdURShub25aZXJvQ29pbkZlZXNSZXEpIHsKCQlyZXR1cm4gY3R4LCBzZGtlcnJvcnMuV3JhcGYoc2RrZXJyb3JzLkVyckluc3VmZmljaWVudEZlZSwgJnF1b3Q7aW5zdWZmaWNpZW50IGZlZXM7IGdvdDogJXMgcmVxdWlyZWQ6ICVzJnF1b3Q7LCBmZWVDb2lucy5TdHJpbmcoKSwgZmVlUmVxdWlyZWQuU3RyaW5nKCkpCgl9Cg=="}}),e._v(" "),s("p",[e._v("Here is an example of how the coins split and checked in fee antehandler:"),s("br"),e._v(" "),s("strong",[e._v("assumption")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("globalfee=[1photon, 0uatom, 1stake]")]),e._v(" and "),s("code",[e._v("local min-gas-prices=[0.5stake]")])]),e._v(" "),s("p",[s("strong",[e._v("fee requirement")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("combinedFeeRequirement=[1photon, 0uatom, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split fee requirement")]),e._v(":"),s("br"),e._v("\nthe "),s("code",[e._v("combinedFeeRequirement")]),e._v(" into "),s("code",[e._v("nonZeroCoinFeesReq=[0uatom]")]),e._v(", and "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split the paid fees")]),e._v(":"),s("br"),e._v("\nif "),s("code",[e._v("paidFee=[1uatom, 0.5photon]")]),e._v(",\nthe "),s("code",[e._v("splitCoinsByDenoms")]),e._v(" splits the paidFee into "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" (the same denom as zero coins in "),s("code",[e._v("combinedFeeRequirement")]),e._v("), and "),s("code",[e._v("feeCoinsNonZeroDenom=[0.5stake]")]),e._v("\nthen "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" is checked by "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")]),e._v(".")]),e._v(" "),s("p",[e._v("Please note that "),s("code",[e._v("feeCoins")]),e._v(" does not contain zero coins. The fee coins are split according to the denoms in "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(". If feeCoins contains coins not in both "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" and "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", the transaction should be rejected. On the contrary, if feeCoins' denoms are in either "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", and "),s("code",[e._v("len(zeroCoinFeesDenomReq)!=0")]),e._v(", the transaction can directly pass, otherwise, the fee amount need to be checked.")]),e._v(" "),s("h3",{attrs:{id:"bypass-message-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bypass-message-types"}},[e._v("#")]),e._v(" Bypass Message Types")]),e._v(" "),s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" was a setup in "),s("code",[e._v("config/app.toml")]),e._v(" before the refactor. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,"),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is also introduced as a globalfee param.")]),e._v(" "),s("h3",{attrs:{id:"fee-checks-in-delivertx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks-in-delivertx"}},[e._v("#")]),e._v(" Fee Checks in "),s("code",[e._v("DeliverTx")])]),e._v(" "),s("p",[e._v("Implementing fee checks within the "),s("code",[e._v("DeliverTx")]),e._v(" function introduces a few requirements:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("Deterministic Minimum Fee Requirement")]),e._v(": For the "),s("code",[e._v("DeliverTx")]),e._v(" process, it is essential to have a deterministic minimum fee requirement. In "),s("code",[e._v("CheckTx")]),e._v(", fee is checked by the "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(", which considers both "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("config/app.toml")]),e._v(" and "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" from the globalfee Params (For more details, see "),s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("globalfee.md")]),e._v("). "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" contains non-deterministic part: "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("app.toml")]),e._v(". Therefore, "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" cannot be used in "),s("code",[e._v("DeliverTx")]),e._v(". In "),s("code",[e._v("DeliverTx")]),e._v(", only "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee Params is used for fee verification. The code implementation is shown below.")],1)]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobWZkIEZlZURlY29yYXRvcikgR2V0VHhGZWVSZXF1aXJlZChjdHggc2RrLkNvbnRleHQsIHR4IHNkay5GZWVUeCkgKHNkay5Db2lucywgZXJyb3IpIHsKCS8vIEdldCByZXF1aXJlZCBnbG9iYWwgZmVlIG1pbiBnYXMgcHJpY2VzCgkvLyBOb3RlIHRoYXQgaXQgc2hvdWxkIG5ldmVyIGJlIGVtcHR5IHNpbmNlIGl0cyBkZWZhdWx0IHZhbHVlIGlzIHNldCB0byBjb2luPXsmcXVvdDtTdGFraW5nQm9uZERlbm9tJnF1b3Q7LCAwfQoJZ2xvYmFsRmVlcywgZXJyIDo9IG1mZC5HZXRHbG9iYWxGZWUoY3R4LCB0eCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBzZGsuQ29pbnN7fSwgZXJyCgl9CgoJLy8gSW4gRGVsaXZlclR4LCB0aGUgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgdGhlIG9ubHkgdHggZmVlIHJlcXVpcmVtZW50cy4KCWlmICFjdHguSXNDaGVja1R4KCkgewoJCXJldHVybiBnbG9iYWxGZWVzLCBuaWwKCX0KCgkvLyBJbiBDaGVja1R4IG1vZGUsIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgY29tYmluZWQKCS8vIHRvIGZvcm0gdGhlIHR4IGZlZSByZXF1aXJlbWVudHMKCgkvLyBHZXQgbG9jYWwgbWluaW11bS1nYXMtcHJpY2VzCglsb2NhbEZlZXMgOj0gR2V0TWluR2FzUHJpY2UoY3R4LCBpbnQ2NCh0eC5HZXRHYXMoKSkpCgoJLy8gUmV0dXJuIGNvbWJpbmVkIGZlZSByZXF1aXJlbWVudHMKCXJldHVybiBDb21iaW5lZEZlZVJlcXVpcmVtZW50KGdsb2JhbEZlZXMsIGxvY2FsRmVlcykKfQo="}}),e._v(" "),s("ul",[s("li",[s("p",[s("strong",[e._v("Deterministic Bypass Parameters")]),e._v(": The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" parameters are moved to a persistent store.")])]),e._v(" "),s("li",[s("p",[s("strong",[e._v("Module Initialization Order")]),e._v(": The genutils module must be initialized before the globalfee module. This is due to the "),s("code",[e._v("DeliverGenTxs")]),e._v(" in the genutils module, is called during "),s("code",[e._v("initGenesis")]),e._v(". This function executes "),s("code",[e._v("DeliverTx")]),e._v(", which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in "),s("code",[e._v("DeliverTx")]),e._v(".\nTo prevent the "),s("code",[e._v("DeliverGenTxs")]),e._v(" go through a fee check, the initialization of the globalfee module should occur after the genutils module. This sequencing ensures that all necessary components are in place when the fee check occurs. See "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/2489",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Issue #2489"),s("OutboundLink")],1),e._v(" for more context.")])])]),e._v(" "),s("h2",{attrs:{id:"consequences"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),s("h3",{attrs:{id:"positive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),s("p",[e._v("This refactor results in code that is easier to maintain. It prevents malicious validators from escaping fee checks and make the bypass messages work at network level.")]),e._v(" "),s("h3",{attrs:{id:"negative"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),s("p",[e._v("The introduction of FeeDecorator has replaced the usage of "),s("code",[e._v("MempoolFeeDecorator")]),e._v(" in the Cosmos SDK. Currently, if both FeeDecorator and MempoolFeeDecorator are added to the AnteDecorator chain, it will result in redundant checks. However, there's potential for FeeDecorator and MempoolFeeDecorator to become incompatible in the future, depending on updates to the Cosmos SDK.")]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Documentation of the globalfee module")])],1)])],1)}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/65.b075267d.js b/main/assets/js/65.4975f8df.js similarity index 98% rename from main/assets/js/65.b075267d.js rename to main/assets/js/65.4975f8df.js index bb2938daf14..803dbbbae48 100644 --- a/main/assets/js/65.b075267d.js +++ b/main/assets/js/65.4975f8df.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{534: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],{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 diff --git a/main/assets/js/66.47484ddd.js b/main/assets/js/66.38bb058f.js similarity index 93% rename from main/assets/js/66.47484ddd.js rename to main/assets/js/66.38bb058f.js index 195864968e6..e117ec1b884 100644 --- a/main/assets/js/66.47484ddd.js +++ b/main/assets/js/66.38bb058f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{535:function(t,e,o){"use strict";o.r(e);var r=o(1),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"delegators"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegators"}},[t._v("#")]),t._v(" Delegators")]),t._v(" "),o("p",[t._v("This folder contains documentation relevant to delegators of the Cosmos Hub and other "),o("code",[t._v("gaia")]),t._v(" blockchains.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[t._v("Delegator CLI Guide")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[t._v("Delegators FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[t._v("Delegator Security Notice")])],1)])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{632:function(t,e,o){"use strict";o.r(e);var r=o(1),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"delegators"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegators"}},[t._v("#")]),t._v(" Delegators")]),t._v(" "),o("p",[t._v("This folder contains documentation relevant to delegators of the Cosmos Hub and other "),o("code",[t._v("gaia")]),t._v(" blockchains.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[t._v("Delegator CLI Guide")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[t._v("Delegators FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[t._v("Delegator Security Notice")])],1)])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/67.012b364e.js b/main/assets/js/67.daf82afb.js similarity index 99% rename from main/assets/js/67.012b364e.js rename to main/assets/js/67.daf82afb.js index 181f378098b..3d78c72ebde 100644 --- a/main/assets/js/67.012b364e.js +++ b/main/assets/js/67.daf82afb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{617:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"delegator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegator-faq"}},[e._v("#")]),e._v(" Delegator FAQ")]),e._v(" "),a("h2",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("People that cannot or do not want to operate "),a("RouterLink",{attrs:{to:"/validators/overview.html"}},[e._v("validator nodes")]),e._v(" can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 180 addresses with highest stake, they will exit the validator set.")],1),e._v(" "),a("p",[a("strong",[e._v("Delegators share the revenue of their validators, but they also share the risks.")]),e._v(" In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see "),a("a",{attrs:{href:"#choosing-a-validator"}},[e._v("section")]),e._v(" below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see "),a("a",{attrs:{href:"#risks"}},[e._v("Risks")]),e._v(" section.")]),e._v(" "),a("p",[e._v("To become delegators, Atom holders need to send a "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v('"Delegate transaction"')]),e._v(' where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.')],1),e._v(" "),a("p",[e._v("For a practical guide on how to become a delegator, click "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),a("h2",{attrs:{id:"choosing-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-validator"}},[e._v("#")]),e._v(" Choosing a validator")]),e._v(" "),a("p",[e._v("In order to choose their validators, delegators have access to a range of information directly in "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),a("OutboundLink")],1),e._v(" or other Cosmos block explorers.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's moniker")]),e._v(": Name of the validator candidate.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's description")]),e._v(": Description provided by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's website")]),e._v(": Link to the validator's website.")]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on revenue charged to any delegator by the validator (see below for more detail).")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator self-bond amount")]),e._v(": A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.")])]),e._v(" "),a("h2",{attrs:{id:"directives-of-delegators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directives-of-delegators"}},[e._v("#")]),e._v(" Directives of delegators")]),e._v(" "),a("p",[e._v("Being a delegator is not a passive task. Here are the main directives of a delegator:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Perform careful due diligence on validators before delegating.")]),e._v(" If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.")]),e._v(" "),a("li",[a("strong",[e._v("Actively monitor their validator after having delegated.")]),e._v(" Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).")]),e._v(" "),a("li",[a("strong",[e._v("Participate in governance.")]),e._v(" Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.")])]),e._v(" "),a("h2",{attrs:{id:"revenue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#revenue"}},[e._v("#")]),e._v(" Revenue")]),e._v(" "),a("p",[e._v("Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block provisions (Atoms):")]),e._v(" They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees (various tokens):")]),e._v(" Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.")])]),e._v(" "),a("h2",{attrs:{id:"validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-commission"}},[e._v("#")]),e._v(" Validator Commission")]),e._v(" "),a("p",[e._v("Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:")]),e._v(" "),a("p",[e._v("We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:")]),e._v(" "),a("ul",[a("li",[e._v("990 Atoms in block provisions")]),e._v(" "),a("li",[e._v("10 Atoms in transaction fees.")])]),e._v(" "),a("p",[e._v("This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.")]),e._v(" "),a("p",[e._v("Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:")]),e._v(" "),a("ul",[a("li",[e._v("Commission = "),a("code",[e._v("10% * 80% * 100")]),e._v(" Atoms = 8 Atoms")]),e._v(" "),a("li",[e._v("Validator's revenue = "),a("code",[e._v("20% * 100")]),e._v(" Atoms + Commission = 28 Atoms")]),e._v(" "),a("li",[e._v("Delegators' total revenue = "),a("code",[e._v("80% * 100")]),e._v(" Atoms - Commission = 72 Atoms")])]),e._v(" "),a("p",[e._v("Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),a("p",[e._v("The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.")]),e._v(" "),a("p",[e._v("The LSM mitigates liquid staking risks by limiting the total amount of ATOM that can be liquid staked to a percentage of all staked ATOM. As an additional risk-mitigation feature, the LSM introduces a requirement that validators self-bond ATOM to be eligible for delegations from liquid staking providers or to be eligible to mint LSM tokens. This mechanism is called the “validator bond”, and is technically distinct from the current self-bond mechanism, but functions similarly.")]),e._v(" "),a("p",[e._v("At the same time, the LSM introduces the ability for staked ATOM to be instantly liquid staked, without having to wait for the unbonding period.")]),e._v(" "),a("p",[e._v("The LSM enables users to instantly liquid stake their staked ATOM, without having to wait the twenty-one day unbonding period. This is important, because a very large portion of the ATOM supply is currently staked. Liquid staking ATOM that is already staked incurs a switching cost in the form of three weeks’ forfeited staking rewards. The LSM eliminates this switching cost.")]),e._v(" "),a("p",[e._v("A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert her staked ATOM to liquid staked ATOM. It would be as easy as liquid staking unstaked ATOM.")]),e._v(" "),a("p",[e._v("Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked ATOM and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked ATOM is tokenized it can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period.")]),e._v(" "),a("h3",{attrs:{id:"toggling-the-ability-to-tokenize-shares"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#toggling-the-ability-to-tokenize-shares"}},[e._v("#")]),e._v(" Toggling the ability to tokenize shares")]),e._v(" "),a("p",[e._v("Currently the liquid staking module facilitates the immediate conversion of staked assets into liquid staked tokens. Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens).")]),e._v(" "),a("p",[e._v("Tokenization obviates this potential recovery measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, the staking module permit accounts to selectively disable the tokenization of their stake with the "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyBkaXNhYmxlLXRva2VuaXplLXNoYXJlcyAtLWZyb20gbXlrZXkgIAo="}}),e._v(" "),a("p",[e._v("When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.")]),e._v(" "),a("p",[e._v("There is one main slashing condition:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.")])]),e._v(" "),a("p",[e._v("This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{539:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"delegator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegator-faq"}},[e._v("#")]),e._v(" Delegator FAQ")]),e._v(" "),a("h2",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("People that cannot or do not want to operate "),a("RouterLink",{attrs:{to:"/validators/overview.html"}},[e._v("validator nodes")]),e._v(" can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 180 addresses with highest stake, they will exit the validator set.")],1),e._v(" "),a("p",[a("strong",[e._v("Delegators share the revenue of their validators, but they also share the risks.")]),e._v(" In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see "),a("a",{attrs:{href:"#choosing-a-validator"}},[e._v("section")]),e._v(" below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see "),a("a",{attrs:{href:"#risks"}},[e._v("Risks")]),e._v(" section.")]),e._v(" "),a("p",[e._v("To become delegators, Atom holders need to send a "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v('"Delegate transaction"')]),e._v(' where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.')],1),e._v(" "),a("p",[e._v("For a practical guide on how to become a delegator, click "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),a("h2",{attrs:{id:"choosing-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-validator"}},[e._v("#")]),e._v(" Choosing a validator")]),e._v(" "),a("p",[e._v("In order to choose their validators, delegators have access to a range of information directly in "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),a("OutboundLink")],1),e._v(" or other Cosmos block explorers.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's moniker")]),e._v(": Name of the validator candidate.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's description")]),e._v(": Description provided by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's website")]),e._v(": Link to the validator's website.")]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on revenue charged to any delegator by the validator (see below for more detail).")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator self-bond amount")]),e._v(": A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.")])]),e._v(" "),a("h2",{attrs:{id:"directives-of-delegators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directives-of-delegators"}},[e._v("#")]),e._v(" Directives of delegators")]),e._v(" "),a("p",[e._v("Being a delegator is not a passive task. Here are the main directives of a delegator:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Perform careful due diligence on validators before delegating.")]),e._v(" If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.")]),e._v(" "),a("li",[a("strong",[e._v("Actively monitor their validator after having delegated.")]),e._v(" Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).")]),e._v(" "),a("li",[a("strong",[e._v("Participate in governance.")]),e._v(" Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.")])]),e._v(" "),a("h2",{attrs:{id:"revenue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#revenue"}},[e._v("#")]),e._v(" Revenue")]),e._v(" "),a("p",[e._v("Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block provisions (Atoms):")]),e._v(" They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees (various tokens):")]),e._v(" Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.")])]),e._v(" "),a("h2",{attrs:{id:"validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-commission"}},[e._v("#")]),e._v(" Validator Commission")]),e._v(" "),a("p",[e._v("Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:")]),e._v(" "),a("p",[e._v("We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:")]),e._v(" "),a("ul",[a("li",[e._v("990 Atoms in block provisions")]),e._v(" "),a("li",[e._v("10 Atoms in transaction fees.")])]),e._v(" "),a("p",[e._v("This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.")]),e._v(" "),a("p",[e._v("Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:")]),e._v(" "),a("ul",[a("li",[e._v("Commission = "),a("code",[e._v("10% * 80% * 100")]),e._v(" Atoms = 8 Atoms")]),e._v(" "),a("li",[e._v("Validator's revenue = "),a("code",[e._v("20% * 100")]),e._v(" Atoms + Commission = 28 Atoms")]),e._v(" "),a("li",[e._v("Delegators' total revenue = "),a("code",[e._v("80% * 100")]),e._v(" Atoms - Commission = 72 Atoms")])]),e._v(" "),a("p",[e._v("Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),a("p",[e._v("The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.")]),e._v(" "),a("p",[e._v("The LSM mitigates liquid staking risks by limiting the total amount of ATOM that can be liquid staked to a percentage of all staked ATOM. As an additional risk-mitigation feature, the LSM introduces a requirement that validators self-bond ATOM to be eligible for delegations from liquid staking providers or to be eligible to mint LSM tokens. This mechanism is called the “validator bond”, and is technically distinct from the current self-bond mechanism, but functions similarly.")]),e._v(" "),a("p",[e._v("At the same time, the LSM introduces the ability for staked ATOM to be instantly liquid staked, without having to wait for the unbonding period.")]),e._v(" "),a("p",[e._v("The LSM enables users to instantly liquid stake their staked ATOM, without having to wait the twenty-one day unbonding period. This is important, because a very large portion of the ATOM supply is currently staked. Liquid staking ATOM that is already staked incurs a switching cost in the form of three weeks’ forfeited staking rewards. The LSM eliminates this switching cost.")]),e._v(" "),a("p",[e._v("A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert her staked ATOM to liquid staked ATOM. It would be as easy as liquid staking unstaked ATOM.")]),e._v(" "),a("p",[e._v("Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked ATOM and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked ATOM is tokenized it can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period.")]),e._v(" "),a("h3",{attrs:{id:"toggling-the-ability-to-tokenize-shares"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#toggling-the-ability-to-tokenize-shares"}},[e._v("#")]),e._v(" Toggling the ability to tokenize shares")]),e._v(" "),a("p",[e._v("Currently the liquid staking module facilitates the immediate conversion of staked assets into liquid staked tokens. Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens).")]),e._v(" "),a("p",[e._v("Tokenization obviates this potential recovery measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, the staking module permit accounts to selectively disable the tokenization of their stake with the "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyBkaXNhYmxlLXRva2VuaXplLXNoYXJlcyAtLWZyb20gbXlrZXkgIAo="}}),e._v(" "),a("p",[e._v("When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.")]),e._v(" "),a("p",[e._v("There is one main slashing condition:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.")])]),e._v(" "),a("p",[e._v("This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/68.174b16d5.js b/main/assets/js/68.48166480.js similarity index 99% rename from main/assets/js/68.174b16d5.js rename to main/assets/js/68.48166480.js index 918b7e3778c..37b7b1e2d2b 100644 --- a/main/assets/js/68.174b16d5.js +++ b/main/assets/js/68.48166480.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{491: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:"delegator-guide-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-guide-cli"}},[e._v("#")]),e._v(" Delegator Guide (CLI)")]),e._v(" "),o("p",[e._v("This document contains all the necessary information for delegators to interact with the Cosmos Hub through the Command-Line Interface (CLI).")]),e._v(" "),o("p",[e._v("It also contains instructions on how to manage accounts, restore accounts from the fundraiser and use a ledger nano device.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Very Important")]),e._v(": Please assure that you follow the steps described hereinafter\ncarefully, as negligence in this significant process could lead to an indefinite\nloss of your Atoms. Therefore, read through the following instructions in their\nentirety prior to proceeding and reach out to us in case you need support.")]),e._v(" "),o("p",[e._v("Please also note that you are about to interact with the Cosmos Hub, a\nblockchain technology containing highly experimental software. While the\nblockchain has been developed in accordance to the state of the art and audited\nwith utmost care, we can nevertheless expect to have issues, updates and bugs.\nFurthermore, interaction with blockchain technology requires\nadvanced technical skills and always entails risks that are outside our control.\nBy using the software, you confirm that you understand the inherent risks\nassociated with cryptographic software (see also risk section of the\n"),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(') and that the Interchain Foundation and/or\nthe Tendermint Team may not be held liable for potential damages arising out of the use of the\nsoftware. Any use of this open source software released under the Apache 2.0 license is\ndone at your own risk and on a "AS IS" basis, without warranties or conditions\nof any kind.')])]),e._v(" "),o("p",[e._v("Please exercise extreme caution!")]),e._v(" "),o("h2",{attrs:{id:"table-of-contents"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#table-of-contents"}},[e._v("#")]),e._v(" Table of Contents")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#installing-gaiad"}},[e._v("Installing "),o("code",[e._v("gaiad")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#cosmos-accounts"}},[e._v("Cosmos Accounts")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[e._v("Restoring an Account from the Fundraiser")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#creating-an-account"}},[e._v("Creating an Account")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("Accessing the Cosmos Hub Network")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#running-your-own-full-node"}},[e._v("Running Your Own Full-Node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#connecting-to-a-remote-full-node"}},[e._v("Connecting to a Remote Full-Node")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("Setting Up "),o("code",[e._v("gaiad")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#querying-the-state"}},[e._v("Querying the State")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#sending-transactions"}},[e._v("Sending Transactions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#a-note-on-gas-and-fees"}},[e._v("A Note on Gas and Fees")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("Bonding Atoms and Withdrawing Rewards")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#participating-in-governance"}},[e._v("Participating in Governance")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("Signing Transactions from an Offline Computer")])])])])]),e._v(" "),o("h2",{attrs:{id:"installing-gaiad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#installing-gaiad"}},[e._v("#")]),e._v(" Installing "),o("code",[e._v("gaiad")])]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(": This is the command-line interface to interact with a "),o("code",[e._v("gaiad")]),e._v(" full-node.")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Please check that you download the latest stable release of "),o("code",[e._v("gaiad")]),e._v(" that is available")])])]),e._v(" "),o("p",[e._v("["),o("strong",[e._v("Download the binaries")]),e._v("]\nNot available yet.")]),e._v(" "),o("p",[o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[o("strong",[e._v("Install from source")])])],1),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("code",[e._v("gaiad")]),e._v(" is used from a terminal. To open the terminal, follow these steps:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Windows")]),e._v(": "),o("code",[e._v("Start")]),e._v(" > "),o("code",[e._v("All Programs")]),e._v(" > "),o("code",[e._v("Accessories")]),e._v(" > "),o("code",[e._v("Command Prompt")])]),e._v(" "),o("li",[o("strong",[e._v("MacOS")]),e._v(": "),o("code",[e._v("Finder")]),e._v(" > "),o("code",[e._v("Applications")]),e._v(" > "),o("code",[e._v("Utilities")]),e._v(" > "),o("code",[e._v("Terminal")])]),e._v(" "),o("li",[o("strong",[e._v("Linux")]),e._v(": "),o("code",[e._v("Ctrl")]),e._v(" + "),o("code",[e._v("Alt")]),e._v(" + "),o("code",[e._v("T")])])])]),e._v(" "),o("h2",{attrs:{id:"cosmos-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-accounts"}},[e._v("#")]),e._v(" Cosmos Accounts")]),e._v(" "),o("p",[e._v("At the core of every Cosmos account, there is a seed, which takes the form of a 12 or 24-words mnemonic. From this mnemonic, it is possible to create any number of Cosmos accounts, i.e. pairs of private key/public key. This is called an HD wallet (see "),o("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[e._v("BIP32"),o("OutboundLink")],1),e._v(" for more information on the HD wallet specification).")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Do not lose or share your 12 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.")])])]),e._v(" "),o("p",[e._v("The address is a public string with a human-readable prefix (e.g. "),o("code",[e._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),e._v(") that identifies your account. When someone wants to send you funds, they send it to your address. It is computationally infeasible to find the private key associated with a given address.")]),e._v(" "),o("h3",{attrs:{id:"restoring-an-account-from-the-fundraiser"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[e._v("#")]),e._v(" Restoring an Account from the Fundraiser")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("em",[e._v("NOTE: This section only concerns fundraiser participants")])])]),e._v(" "),o("p",[e._v("If you participated in the fundraiser, you should be in possession of a 12-words mnemonic. Newly generated mnemonics use 24 words, but 12-word mnemonics are also compatible with all the Cosmos tools.")]),e._v(" "),o("h4",{attrs:{id:"on-a-ledger-device"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-a-ledger-device"}},[e._v("#")]),e._v(" On a Ledger Device")]),e._v(" "),o("p",[e._v("At the core of a ledger device, there is a mnemonic used to generate accounts on multiple blockchains (including the Cosmos Hub). Usually, you will create a new mnemonic when you initialize your ledger device. However, it is possible to tell the ledger device to use a mnemonic provided by the user instead. Let us go ahead and see how you can input the mnemonic you obtained during the fundraiser as the seed of your ledger device.")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("em",[e._v("NOTE: To do this, "),o("strong",[e._v("it is preferable to use a brand new ledger device.")]),e._v(". Indeed, there can be only one mnemonic per ledger device. If, however, you want to use a ledger that is already initialized with a seed, you can reset it by going in "),o("code",[e._v("Settings")]),e._v(">"),o("code",[e._v("Device")]),e._v(">"),o("code",[e._v("Reset All")]),e._v(". "),o("strong",[e._v("Please note that this will wipe out the seed currently stored on the device. If you have not properly secured the associated mnemonic, you could lose your funds!!!")])])])]),e._v(" "),o("p",[e._v("The following steps need to be performed on an un-initialized ledger device:")]),e._v(" "),o("ol",[o("li",[e._v("Connect your ledger device to the computer via USB")]),e._v(" "),o("li",[e._v("Press both buttons")]),e._v(" "),o("li",[e._v("Do "),o("strong",[e._v("NOT")]),e._v(' choose the "Config as a new device" option. Instead, choose "Restore Configuration"')]),e._v(" "),o("li",[e._v("Choose a PIN")]),e._v(" "),o("li",[e._v("Choose the 12 words option")]),e._v(" "),o("li",[e._v("Input each of the words you got during the fundraiser, in the correct order.")])]),e._v(" "),o("p",[e._v("Your ledger is now correctly set up with your fundraiser mnemonic! Do not lose this mnemonic! If your ledger is compromised, you can always restore a new device again using the same mnemonic.")]),e._v(" "),o("p",[e._v("Next, click "),o("a",{attrs:{href:"#using-a-ledger-device"}},[e._v("here")]),e._v(" to learn how to generate an account.")]),e._v(" "),o("h4",{attrs:{id:"on-a-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-a-computer"}},[e._v("#")]),e._v(" On a Computer")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("NOTE: It is more secure to perform this action on an offline computer")])])]),e._v(" "),o("p",[e._v("To restore an account using a fundraiser mnemonic and store the associated encrypted private key on a computer, use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIK"}}),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("p",[e._v("The private key of account "),o("code",[e._v("0")]),e._v(" will be saved in your operating system's credentials storage.\nEach time you want to send a transaction, you will need to unlock your system's credentials store.\nIf you lose access to your credentials storage, you can always recover the private key with the\nmnemonic.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("You may not be prompted for password each time you send a transaction since most operating systems\nunlock user's credentials store upon login by default. If you want to change your credentials\nstore security policies please refer to your operating system manual.")])])]),e._v(" "),o("h3",{attrs:{id:"creating-an-account"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#creating-an-account"}},[e._v("#")]),e._v(" Creating an Account")]),e._v(" "),o("p",[e._v("To create an account, you just need to have "),o("code",[e._v("gaiad")]),e._v(" installed. Before creating it, you need to know where you intend to store and interact with your private keys. The best options are to store them in an offline dedicated computer or a ledger device. Storing them on your regular online computer involves more risk, since anyone who infiltrates your computer through the internet could exfiltrate your private keys and steal your funds.")]),e._v(" "),o("h4",{attrs:{id:"using-a-ledger-device"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#using-a-ledger-device"}},[e._v("#")]),e._v(" Using a Ledger Device")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Only use Ledger devices that you bought factory new or trust fully")])])]),e._v(" "),o("p",[e._v("When you initialize your ledger, a 24-word mnemonic is generated and stored in the device. This mnemonic is compatible with Cosmos and Cosmos accounts can be derived from it. Therefore, all you have to do is make your ledger compatible with "),o("code",[e._v("gaiad")]),e._v(". To do so, you need to go through the following steps:")]),e._v(" "),o("ol",[o("li",[e._v("Download the Ledger Live app "),o("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("Connect your ledger via USB and update to the latest firmware")]),e._v(" "),o("li",[e._v('Go to the ledger live app store, and download the "Cosmos" application (this can take a while). '),o("strong",[e._v("Note: You may have to enable "),o("code",[e._v("Dev Mode")]),e._v(" in the "),o("code",[e._v("Settings")]),e._v(' of Ledger Live to be able to download the "Cosmos" application')]),e._v(".")]),e._v(" "),o("li",[e._v("Navigate to the Cosmos app on your ledger device")])]),e._v(" "),o("p",[e._v("Then, to create an account, use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJBY2NvdW50TmFtZSZndDsgLS1sZWRnZXIK"}}),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("This command will only work while the Ledger is plugged in and unlocked")])])]),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("h4",{attrs:{id:"using-a-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#using-a-computer"}},[e._v("#")]),e._v(" Using a Computer")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("NOTE: It is more secure to perform this action on an offline computer")])])]),e._v(" "),o("p",[e._v("To generate an account, just use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0Owo="}}),e._v(" "),o("p",[e._v("The command will generate a 24-words mnemonic and save the private and public keys for account "),o("code",[e._v("0")]),e._v("\nat the same time.\nEach time you want to send a transaction, you will need to unlock your system's credentials store.\nIf you lose access to your credentials storage, you can always recover the private key with the\nmnemonic.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("You may not be prompted for password each time you send a transaction since most operating systems\nunlock user's credentials store upon login by default. If you want to change your credentials\nstore security policies please refer to your operating system manual.")])])]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Do not lose or share your 12 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.")])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._v("After you have secured your mnemonic (triple check!), you can delete bash history to ensure no one can retrieve it:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}})],1),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("p",[e._v("You can generate more accounts from the same mnemonic using the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),e._v(" "),o("p",[e._v("This command will prompt you to input a passphrase as well as your mnemonic. Change the account number to generate a different account.")]),e._v(" "),o("h2",{attrs:{id:"accessing-the-cosmos-hub-network"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("#")]),e._v(" Accessing the Cosmos Hub Network")]),e._v(" "),o("p",[e._v("In order to query the state and send transactions, you need a way to access the network. To do so, you can either run your own full-node, or connect to someone else's.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v('NOTE: Do not share your mnemonic (12 or 24 words) with anyone. The only person who should ever need to know it is you. This is especially important if you are ever approached via email or direct message by someone requesting that you share your mnemonic for any kind of blockchain services or support. 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 mnemonic."')]),e._v(".")])]),e._v(" "),o("h3",{attrs:{id:"running-your-own-full-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#running-your-own-full-node"}},[e._v("#")]),e._v(" Running Your Own Full-Node")]),e._v(" "),o("p",[e._v("This is the most secure option, but comes with relatively high resource requirements. In order to run your own full-node, you need good bandwidth and at least 1TB of disk space.")]),e._v(" "),o("p",[e._v("You will find the tutorial on how to install "),o("code",[e._v("gaiad")]),e._v(" "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("here")]),e._v(", and the guide to run a full-node "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),o("h3",{attrs:{id:"connecting-to-a-remote-full-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#connecting-to-a-remote-full-node"}},[e._v("#")]),e._v(" Connecting to a Remote Full-Node")]),e._v(" "),o("p",[e._v("If you do not want or cannot run your own node, you can connect to someone else's full-node. You should pick an operator you trust, because a malicious operator could return incorrect query results or censor your transactions. However, they will never be able to steal your funds, as your private keys are stored locally on your computer or ledger device. Possible options of full-node operators include validators, wallet providers or exchanges.")]),e._v(" "),o("p",[e._v("In order to connect to the full-node, you will need an address of the following form: "),o("code",[e._v("https://77.87.106.33:26657")]),e._v(" ("),o("em",[e._v("Note: This is a placeholder")]),e._v("). This address has to be communicated by the full-node operator you choose to trust. You will use this address in the "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("following section")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"setting-up-gaiad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting Up "),o("code",[e._v("gaiad")])]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before setting up "),o("code",[e._v("gaiad")]),e._v(", make sure you have set up a way to "),o("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("access the Cosmos Hub network")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Please check that you are always using the latest stable release of "),o("code",[e._v("gaiad")])])])]),e._v(" "),o("p",[o("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.")]),e._v(" "),o("p",[e._v("In order to set up "),o("code",[e._v("gaiad")]),e._v(", use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),o("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),e._v(" "),o("p",[e._v("If you run your own full-node, just use "),o("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),o("p",[e._v("Finally, let us set the "),o("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),o("h2",{attrs:{id:"querying-the-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#querying-the-state"}},[e._v("#")]),e._v(" Querying the State")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])])])])]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(" lets you query all relevant information from the blockchain, like account balances, amount of bonded tokens, outstanding rewards, governance proposals and more. Next is a list of the most useful commands for delegator.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gcXVlcnkgYWNjb3VudCBiYWxhbmNlcyBhbmQgb3RoZXIgYWNjb3VudC1yZWxhdGVkIGluZm9ybWF0aW9uCmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O3lvdXJBZGRyZXNzJmd0OwoKLy8gcXVlcnkgdGhlIGxpc3Qgb2YgdmFsaWRhdG9ycwpnYWlhZCBxdWVyeSBzdGFraW5nIHZhbGlkYXRvcnMKCi8vIHF1ZXJ5IHRoZSBpbmZvcm1hdGlvbiBvZiBhIHZhbGlkYXRvciBnaXZlbiB0aGVpciBhZGRyZXNzIChlLmcuIGNvc21vc3ZhbG9wZXIxbjVwZXB2bWdzZmQzcDJ0cXFndnQ1MDVqdnltbXN0ZjZzOWd3MjcpCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9yICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OwoKLy8gcXVlcnkgYWxsIGRlbGVnYXRpb25zIG1hZGUgZnJvbSBhIGRlbGVnYXRvciBnaXZlbiB0aGVpciBhZGRyZXNzIChlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZykKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IGEgc3BlY2lmaWMgZGVsZWdhdGlvbiBtYWRlIGZyb20gYSBkZWxlZ2F0b3IgKGUuZy4gY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKSB0byBhIHZhbGlkYXRvciAoZS5nLiBjb3Ntb3N2YWxvcGVyMW41cGVwdm1nc2ZkM3AydHFxZ3Z0NTA1anZ5bW1zdGY2czlndzI3KSBnaXZlbiB0aGVpciBhZGRyZXNzZXMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IHRoZSByZXdhcmRzIG9mIGEgZGVsZWdhdG9yIGdpdmVuIGEgZGVsZWdhdG9yIGFkZHJlc3MgKGUuZy4gY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKQpnYWlhZCBxdWVyeSBkaXN0cmlidXRpb24gcmV3YXJkcyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IGFsbCBwcm9wb3NhbHMgY3VycmVudGx5IG9wZW4gZm9yIGRlcG9zaXRpbmcKZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZAoKLy8gcXVlcnkgYWxsIHByb3Bvc2FscyBjdXJyZW50bHkgb3BlbiBmb3Igdm90aW5nCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZAoKLy8gcXVlcnkgYSBwcm9wb3NhbCBnaXZlbiBpdHMgcHJvcG9zYWxJRApnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWwgJmx0O3Byb3Bvc2FsSUQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("For more commands, just type:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),e._v(" "),o("p",[e._v("For each command, you can use the "),o("code",[e._v("-h")]),e._v(" or "),o("code",[e._v("--help")]),e._v(" flag to get more information.")]),e._v(" "),o("h2",{attrs:{id:"sending-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-transactions"}},[e._v("#")]),e._v(" Sending Transactions")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._v("On Cosmos Hub mainnet, the accepted denom is "),o("code",[e._v("uatom")]),e._v(", where "),o("code",[e._v("1atom = 1,000,000uatom")])])]),e._v(" "),o("h3",{attrs:{id:"a-note-on-gas-and-fees"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#a-note-on-gas-and-fees"}},[e._v("#")]),e._v(" A Note on Gas and Fees")]),e._v(" "),o("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(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGNlaWwoZ2FzICogZ2FzUHJpY2VzKQo="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gas")]),e._v(" is dependent on the transaction. Different transaction require different amount of "),o("code",[e._v("gas")]),e._v(". The "),o("code",[e._v("gas")]),e._v(" amount for a transaction is calculated as it is being processed, but there is a way to estimate it beforehand by using the "),o("code",[e._v("auto")]),e._v(" value for the "),o("code",[e._v("gas")]),e._v(" flag. Of course, this only gives an estimate. You can adjust this estimate with the flag "),o("code",[e._v("--gas-adjustment")]),e._v(" (default "),o("code",[e._v("1.0")]),e._v(") if you want to be sure you provide enough "),o("code",[e._v("gas")]),e._v(" for the transaction. For the remainder of this tutorial, we will use a "),o("code",[e._v("--gas-adjustment")]),e._v(" of "),o("code",[e._v("1.5")]),e._v(".")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gasPrice")]),e._v(" is the price of each unit of "),o("code",[e._v("gas")]),e._v(". Each validator sets a "),o("code",[e._v("min-gas-price")]),e._v(" value, and will only include transactions that have a "),o("code",[e._v("gasPrice")]),e._v(" greater than their "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("The transaction "),o("code",[e._v("fees")]),e._v(" are the product of "),o("code",[e._v("gas")]),e._v(" and "),o("code",[e._v("gasPrice")]),e._v(". As a user, you have to input 2 out of 3. The higher the "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", the higher the chance that your transaction will get included in a block.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("For mainnet, the recommended "),o("code",[e._v("gas-prices")]),e._v(" is "),o("code",[e._v("0.0025uatom")]),e._v(".")])]),e._v(" "),o("h3",{attrs:{id:"sending-tokens"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-tokens"}},[e._v("#")]),e._v(" Sending Tokens")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])]),e._v(" and "),o("a",{attrs:{href:"#creating-an-account"}},[e._v("create an account")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a Ledger Nano S device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gU2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIHRva2VucyB0byBhbiBhZGRyZXNzCi8vIEV4IHZhbHVlIGZvciBwYXJhbWV0ZXJzIChkbyBub3QgYWN0dWFsbHkgdXNlIHRoZXNlIHZhbHVlcyBpbiB5b3VyIHR4ISEpOiAmbHQ7dG9fYWRkcmVzcyZndDs9Y29zbW9zMTZtOTNmZXpmaWV6aHZuamFqenJmeXN6bWw4cW05MmEwdzY3bnRqaGQzZDAgJmx0O2Ftb3VudCZndDs9MTAwMDAwMHVhdG9tCi8vIEV4IHZhbHVlIGZvciBmbGFnczogJmx0O2dhc1ByaWNlJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),e._v(" "),o("h3",{attrs:{id:"bonding-atoms-and-withdrawing-rewards"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("#")]),e._v(" Bonding Atoms and Withdrawing Rewards")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])]),e._v(" and "),o("a",{attrs:{href:"#creating-an-account"}},[e._v("create an account")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Before bonding Atoms, please read the "),o("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[e._v("delegator faq"),o("OutboundLink")],1),e._v(" to understand the risk and responsibilities involved with delegating")])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a ledger device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gQm9uZCBhIGNlcnRhaW4gYW1vdW50IG9mIEF0b21zIHRvIGEgZ2l2ZW4gdmFsaWRhdG9yCi8vIGV4IHZhbHVlIGZvciBmbGFnczogJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMHVhdG9tLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBzdGFraW5nIGRlbGVnYXRlICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9Cb25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsKCgovLyBSZWRlbGVnYXRlIGEgY2VydGFpbiBhbW91bnQgb2YgQXRvbXMgZnJvbSBhIHZhbGlkYXRvciB0byBhbm90aGVyCi8vIENhbiBvbmx5IGJlIHVzZWQgaWYgYWxyZWFkeSBib25kZWQgdG8gYSB2YWxpZGF0b3IKLy8gUmVkZWxlZ2F0aW9uIHRha2VzIGVmZmVjdCBpbW1lZGlhdGVseSwgdGhlcmUgaXMgbm8gd2FpdGluZyBwZXJpb2QgdG8gcmVkZWxlZ2F0ZQovLyBBZnRlciBhIHJlZGVsZWdhdGlvbiwgbm8gb3RoZXIgcmVkZWxlZ2F0aW9uIGNhbiBiZSBtYWRlIGZyb20gdGhlIGFjY291bnQgZm9yIHRoZSBuZXh0IDMgd2Vla3MKLy8gZXggdmFsdWUgZm9yIGZsYWdzOiAmbHQ7c3RjVmFsaWRhdG9yQWRkcmVzcyZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O2Ftb3VudFRvUmVkZWxlZ2F0ZSZndDs9MTAwMDAwMDAwdWF0b20sICZsdDtnYXNQcmljZSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgcmVkZWxlZ2F0ZSAmbHQ7c3JjVmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Rlc3RWYWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9SZWRlbGVnYXRlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsKCi8vIFdpdGhkcmF3IGFsbCByZXdhcmRzCi8vIGV4IHZhbHVlIGZvciBmbGFnOiAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBkaXN0cmlidXRpb24gd2l0aGRyYXctYWxsLXJld2FyZHMgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7CgoKLy8gVW5ib25kIGEgY2VydGFpbiBhbW91bnQgb2YgQXRvbXMgZnJvbSBhIGdpdmVuIHZhbGlkYXRvcgovLyBZb3Ugd2lsbCBoYXZlIHRvIHdhaXQgMyB3ZWVrcyBiZWZvcmUgeW91ciBBdG9tcyBhcmUgZnVsbHkgdW5ib25kZWQgYW5kIHRyYW5zZmVycmFibGUKLy8gZXggdmFsdWUgZm9yIGZsYWdzOiAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O2Ftb3VudFRvVW5ib3VuZCZndDs9MTAwMDAwMDB1YXRvbSwgJmx0O2dhc1ByaWNlJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyB1bmJvbmQgJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7ICZsdDthbW91bnRUb1VuYm9uZCZndDsgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7Cg=="}}),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("If you use a connected Ledger, you will be asked to confirm the transaction on the device before it is signed and broadcast to the network. Note that the command will only work while the Ledger is plugged in and unlocked.")])])]),e._v(" "),o("p",[e._v("To confirm that your transaction went through, you can use the following queries:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8geW91ciBiYWxhbmNlIHNob3VsZCBjaGFuZ2UgYWZ0ZXIgeW91IGJvbmQgQXRvbXMgb3Igd2l0aGRyYXcgcmV3YXJkcwpnYWlhZCBxdWVyeSBhY2NvdW50CgovLyB5b3Ugc2hvdWxkIGhhdmUgZGVsZWdhdGlvbnMgYWZ0ZXIgeW91IGJvbmQgQXRvbQpnYWlhZCBxdWVyeSBzdGFraW5nIGRlbGVnYXRpb25zICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OwoKLy8gdGhpcyByZXR1cm5zIHlvdXIgdHggaWYgaXQgaGFzIGJlZW4gaW5jbHVkZWQKLy8gdXNlIHRoZSB0eCBoYXNoIHRoYXQgd2FzIGRpc3BsYXllZCB3aGVuIHlvdSBjcmVhdGVkIHRoZSB0eApnYWlhZCBxdWVyeSB0eCAmbHQ7dHhIYXNoJmd0OwoK"}}),e._v(" "),o("p",[e._v("Double check with a block explorer if you interact with the network through a trusted full-node.")]),e._v(" "),o("h2",{attrs:{id:"participating-in-governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#participating-in-governance"}},[e._v("#")]),e._v(" Participating in Governance")]),e._v(" "),o("h4",{attrs:{id:"primer-on-governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#primer-on-governance"}},[e._v("#")]),e._v(" Primer on Governance")]),e._v(" "),o("p",[e._v("The Cosmos Hub has a built-in governance system that lets bonded Atom holders vote on proposals. There are three types of proposal:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("Text Proposals")]),e._v(": These are the most basic type of proposals. They can be used to get the opinion of the network on a given topic.")]),e._v(" "),o("li",[o("code",[e._v("Parameter Proposals")]),e._v(": These are used to update the value of an existing parameter.")]),e._v(" "),o("li",[o("code",[e._v("Software Upgrade Proposal")]),e._v(": These are used to propose an upgrade of the Hub's software.")])]),e._v(" "),o("p",[e._v("Any Atom holder can submit a proposal. In order for the proposal to be open for voting, it needs to come with a "),o("code",[e._v("deposit")]),e._v(" that is greater than a parameter called "),o("code",[e._v("minDeposit")]),e._v(". The "),o("code",[e._v("deposit")]),e._v(" need not be provided in its entirety by the submitter. If the initial proposer's "),o("code",[e._v("deposit")]),e._v(" is not sufficient, the proposal enters the "),o("code",[e._v("deposit_period")]),e._v(" status. Then, any Atom holder can increase the deposit by sending a "),o("code",[e._v("depositTx")]),e._v(".")]),e._v(" "),o("p",[e._v("Once the "),o("code",[e._v("deposit")]),e._v(" reaches "),o("code",[e._v("minDeposit")]),e._v(", the proposal enters the "),o("code",[e._v("voting_period")]),e._v(", which lasts 2 weeks. Any "),o("strong",[e._v("bonded")]),e._v(" Atom holder can then cast a vote on this proposal. The options are "),o("code",[e._v("Yes")]),e._v(", "),o("code",[e._v("No")]),e._v(", "),o("code",[e._v("NoWithVeto")]),e._v(" and "),o("code",[e._v("Abstain")]),e._v(". The weight of the vote is based on the amount of bonded Atoms of the sender. If they don't vote, delegator inherit the vote of their validator. However, delegators can override their validator's vote by sending a vote themselves.")]),e._v(" "),o("p",[e._v("At the end of the voting period, the proposal is accepted if there are more than 50% "),o("code",[e._v("Yes")]),e._v(" votes (excluding "),o("code",[e._v("Abstain")]),e._v(" votes) and less than 33.33% of "),o("code",[e._v("NoWithVeto")]),e._v(" votes (excluding "),o("code",[e._v("Abstain")]),e._v(" votes).")]),e._v(" "),o("h4",{attrs:{id:"in-practice"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#in-practice"}},[e._v("#")]),e._v(" In Practice")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("bond Atoms")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a ledger device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gU3VibWl0IGEgUHJvcG9zYWwKLy8gJmx0O3R5cGUmZ3Q7PXRleHQvcGFyYW1ldGVyX2NoYW5nZS9zb2Z0d2FyZV91cGdyYWRlCi8vIGV4IHZhbHVlIGZvciBmbGFnOiAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBnb3Ygc3VibWl0LXByb3Bvc2FsIC0tdGl0bGUgJnF1b3Q7VGVzdCBQcm9wb3NhbCZxdW90OyAtLWRlc2NyaXB0aW9uICZxdW90O015IGF3ZXNvbWUgcHJvcG9zYWwmcXVvdDsgLS10eXBlICZsdDt0eXBlJmd0OyAtLWRlcG9zaXQ9MTAwMDAwMDB1YXRvbSAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsKCi8vIEluY3JlYXNlIGRlcG9zaXQgb2YgYSBwcm9wb3NhbAovLyBSZXRyaWV2ZSBwcm9wb3NhbElEIGZyb20gJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKLy8gZXggdmFsdWUgZm9yIHBhcmFtZXRlcjogJmx0O2RlcG9zaXQmZ3Q7PTEwMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyBWb3RlIG9uIGEgcHJvcG9zYWwKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIHZvdGluZ19wZXJpb2QKLy8gJmx0O29wdGlvbiZndDs9eWVzL25vL25vX3dpdGhfdmV0by9hYnN0YWluCgpnYWlhZCB0eCBnb3Ygdm90ZSAmbHQ7cHJvcG9zYWxJRCZndDsgJmx0O29wdGlvbiZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7Cg=="}}),e._v(" "),o("h3",{attrs:{id:"signing-transactions-from-an-offline-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("#")]),e._v(" Signing Transactions From an Offline Computer")]),e._v(" "),o("p",[e._v("If you do not have a ledger device and want to interact with your private key on an offline computer, you can use the following procedure. First, generate an unsigned transaction on an "),o("strong",[e._v("online computer")]),e._v(" with the following command (example with a bonding transaction):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gQm9uZCBBdG9tcwovLyBleCB2YWx1ZSBmb3IgZmxhZ3M6ICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMHVhdG9tLCAmbHQ7YmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tLCAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDs9Y29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnCgpnYWlhZCB0eCBzdGFraW5nIGRlbGVnYXRlICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9Cb25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvckFkZHJlc3MmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsgLS1nZW5lcmF0ZS1vbmx5ICZndDsgdW5zaWduZWRUWC5qc29uCg=="}}),e._v(" "),o("p",[e._v("In order to sign, you will also need the "),o("code",[e._v("chain-id")]),e._v(", "),o("code",[e._v("account-number")]),e._v(" and "),o("code",[e._v("sequence")]),e._v(". The "),o("code",[e._v("chain-id")]),e._v(" is a unique identifier for the blockchain on which you are submitting the transaction. The "),o("code",[e._v("account-number")]),e._v(" is an identifier generated when your account first receives funds. The "),o("code",[e._v("sequence")]),e._v(" number is used to keep track of the number of transactions you have sent and prevent replay attacks.")]),e._v(" "),o("p",[e._v("Get the chain-id from the genesis file ("),o("code",[e._v("cosmoshub-2")]),e._v("), and the two other fields using the account query:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7eW91ckFkZHJlc3MmZ3Q7IC0tY2hhaW4taWQgY29zbW9zaHViLTIK"}}),e._v(" "),o("p",[e._v("Then, copy "),o("code",[e._v("unsignedTx.json")]),e._v(" and transfer it (e.g. via USB) to the offline computer. If it is not done already, "),o("a",{attrs:{href:"#using-a-computer"}},[e._v("create an account on the offline computer")]),e._v(". For additional security, you can double check the parameters of your transaction before signing it using the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),e._v(" "),o("p",[e._v("Now, sign the transaction using the following command. You will need the "),o("code",[e._v("chain-id")]),e._v(", "),o("code",[e._v("sequence")]),e._v(" and "),o("code",[e._v("account-number")]),e._v(" obtained earlier:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLW9mZmxpbmUgLS1jaGFpbi1pZCBjb3Ntb3NodWItMiAtLXNlcXVlbmNlICZsdDtzZXF1ZW5jZSZndDsgLS1hY2NvdW50LW51bWJlciAmbHQ7YWNjb3VudC1udW1iZXImZ3Q7ICZndDsgc2lnbmVkVHguanNvbgo="}}),e._v(" "),o("p",[e._v("Copy "),o("code",[e._v("signedTx.json")]),e._v(" and transfer it back to the online computer. Finally, use the following command to broadcast the transaction:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{492: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:"delegator-guide-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-guide-cli"}},[e._v("#")]),e._v(" Delegator Guide (CLI)")]),e._v(" "),o("p",[e._v("This document contains all the necessary information for delegators to interact with the Cosmos Hub through the Command-Line Interface (CLI).")]),e._v(" "),o("p",[e._v("It also contains instructions on how to manage accounts, restore accounts from the fundraiser and use a ledger nano device.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Very Important")]),e._v(": Please assure that you follow the steps described hereinafter\ncarefully, as negligence in this significant process could lead to an indefinite\nloss of your Atoms. Therefore, read through the following instructions in their\nentirety prior to proceeding and reach out to us in case you need support.")]),e._v(" "),o("p",[e._v("Please also note that you are about to interact with the Cosmos Hub, a\nblockchain technology containing highly experimental software. While the\nblockchain has been developed in accordance to the state of the art and audited\nwith utmost care, we can nevertheless expect to have issues, updates and bugs.\nFurthermore, interaction with blockchain technology requires\nadvanced technical skills and always entails risks that are outside our control.\nBy using the software, you confirm that you understand the inherent risks\nassociated with cryptographic software (see also risk section of the\n"),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(') and that the Interchain Foundation and/or\nthe Tendermint Team may not be held liable for potential damages arising out of the use of the\nsoftware. Any use of this open source software released under the Apache 2.0 license is\ndone at your own risk and on a "AS IS" basis, without warranties or conditions\nof any kind.')])]),e._v(" "),o("p",[e._v("Please exercise extreme caution!")]),e._v(" "),o("h2",{attrs:{id:"table-of-contents"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#table-of-contents"}},[e._v("#")]),e._v(" Table of Contents")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#installing-gaiad"}},[e._v("Installing "),o("code",[e._v("gaiad")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#cosmos-accounts"}},[e._v("Cosmos Accounts")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[e._v("Restoring an Account from the Fundraiser")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#creating-an-account"}},[e._v("Creating an Account")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("Accessing the Cosmos Hub Network")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#running-your-own-full-node"}},[e._v("Running Your Own Full-Node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#connecting-to-a-remote-full-node"}},[e._v("Connecting to a Remote Full-Node")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("Setting Up "),o("code",[e._v("gaiad")])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#querying-the-state"}},[e._v("Querying the State")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#sending-transactions"}},[e._v("Sending Transactions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#a-note-on-gas-and-fees"}},[e._v("A Note on Gas and Fees")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("Bonding Atoms and Withdrawing Rewards")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#participating-in-governance"}},[e._v("Participating in Governance")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("Signing Transactions from an Offline Computer")])])])])]),e._v(" "),o("h2",{attrs:{id:"installing-gaiad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#installing-gaiad"}},[e._v("#")]),e._v(" Installing "),o("code",[e._v("gaiad")])]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(": This is the command-line interface to interact with a "),o("code",[e._v("gaiad")]),e._v(" full-node.")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Please check that you download the latest stable release of "),o("code",[e._v("gaiad")]),e._v(" that is available")])])]),e._v(" "),o("p",[e._v("["),o("strong",[e._v("Download the binaries")]),e._v("]\nNot available yet.")]),e._v(" "),o("p",[o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[o("strong",[e._v("Install from source")])])],1),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("code",[e._v("gaiad")]),e._v(" is used from a terminal. To open the terminal, follow these steps:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Windows")]),e._v(": "),o("code",[e._v("Start")]),e._v(" > "),o("code",[e._v("All Programs")]),e._v(" > "),o("code",[e._v("Accessories")]),e._v(" > "),o("code",[e._v("Command Prompt")])]),e._v(" "),o("li",[o("strong",[e._v("MacOS")]),e._v(": "),o("code",[e._v("Finder")]),e._v(" > "),o("code",[e._v("Applications")]),e._v(" > "),o("code",[e._v("Utilities")]),e._v(" > "),o("code",[e._v("Terminal")])]),e._v(" "),o("li",[o("strong",[e._v("Linux")]),e._v(": "),o("code",[e._v("Ctrl")]),e._v(" + "),o("code",[e._v("Alt")]),e._v(" + "),o("code",[e._v("T")])])])]),e._v(" "),o("h2",{attrs:{id:"cosmos-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-accounts"}},[e._v("#")]),e._v(" Cosmos Accounts")]),e._v(" "),o("p",[e._v("At the core of every Cosmos account, there is a seed, which takes the form of a 12 or 24-words mnemonic. From this mnemonic, it is possible to create any number of Cosmos accounts, i.e. pairs of private key/public key. This is called an HD wallet (see "),o("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[e._v("BIP32"),o("OutboundLink")],1),e._v(" for more information on the HD wallet specification).")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Do not lose or share your 12 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.")])])]),e._v(" "),o("p",[e._v("The address is a public string with a human-readable prefix (e.g. "),o("code",[e._v("cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg")]),e._v(") that identifies your account. When someone wants to send you funds, they send it to your address. It is computationally infeasible to find the private key associated with a given address.")]),e._v(" "),o("h3",{attrs:{id:"restoring-an-account-from-the-fundraiser"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#restoring-an-account-from-the-fundraiser"}},[e._v("#")]),e._v(" Restoring an Account from the Fundraiser")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("em",[e._v("NOTE: This section only concerns fundraiser participants")])])]),e._v(" "),o("p",[e._v("If you participated in the fundraiser, you should be in possession of a 12-words mnemonic. Newly generated mnemonics use 24 words, but 12-word mnemonics are also compatible with all the Cosmos tools.")]),e._v(" "),o("h4",{attrs:{id:"on-a-ledger-device"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-a-ledger-device"}},[e._v("#")]),e._v(" On a Ledger Device")]),e._v(" "),o("p",[e._v("At the core of a ledger device, there is a mnemonic used to generate accounts on multiple blockchains (including the Cosmos Hub). Usually, you will create a new mnemonic when you initialize your ledger device. However, it is possible to tell the ledger device to use a mnemonic provided by the user instead. Let us go ahead and see how you can input the mnemonic you obtained during the fundraiser as the seed of your ledger device.")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("em",[e._v("NOTE: To do this, "),o("strong",[e._v("it is preferable to use a brand new ledger device.")]),e._v(". Indeed, there can be only one mnemonic per ledger device. If, however, you want to use a ledger that is already initialized with a seed, you can reset it by going in "),o("code",[e._v("Settings")]),e._v(">"),o("code",[e._v("Device")]),e._v(">"),o("code",[e._v("Reset All")]),e._v(". "),o("strong",[e._v("Please note that this will wipe out the seed currently stored on the device. If you have not properly secured the associated mnemonic, you could lose your funds!!!")])])])]),e._v(" "),o("p",[e._v("The following steps need to be performed on an un-initialized ledger device:")]),e._v(" "),o("ol",[o("li",[e._v("Connect your ledger device to the computer via USB")]),e._v(" "),o("li",[e._v("Press both buttons")]),e._v(" "),o("li",[e._v("Do "),o("strong",[e._v("NOT")]),e._v(' choose the "Config as a new device" option. Instead, choose "Restore Configuration"')]),e._v(" "),o("li",[e._v("Choose a PIN")]),e._v(" "),o("li",[e._v("Choose the 12 words option")]),e._v(" "),o("li",[e._v("Input each of the words you got during the fundraiser, in the correct order.")])]),e._v(" "),o("p",[e._v("Your ledger is now correctly set up with your fundraiser mnemonic! Do not lose this mnemonic! If your ledger is compromised, you can always restore a new device again using the same mnemonic.")]),e._v(" "),o("p",[e._v("Next, click "),o("a",{attrs:{href:"#using-a-ledger-device"}},[e._v("here")]),e._v(" to learn how to generate an account.")]),e._v(" "),o("h4",{attrs:{id:"on-a-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-a-computer"}},[e._v("#")]),e._v(" On a Computer")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("NOTE: It is more secure to perform this action on an offline computer")])])]),e._v(" "),o("p",[e._v("To restore an account using a fundraiser mnemonic and store the associated encrypted private key on a computer, use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIK"}}),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("p",[e._v("The private key of account "),o("code",[e._v("0")]),e._v(" will be saved in your operating system's credentials storage.\nEach time you want to send a transaction, you will need to unlock your system's credentials store.\nIf you lose access to your credentials storage, you can always recover the private key with the\nmnemonic.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("You may not be prompted for password each time you send a transaction since most operating systems\nunlock user's credentials store upon login by default. If you want to change your credentials\nstore security policies please refer to your operating system manual.")])])]),e._v(" "),o("h3",{attrs:{id:"creating-an-account"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#creating-an-account"}},[e._v("#")]),e._v(" Creating an Account")]),e._v(" "),o("p",[e._v("To create an account, you just need to have "),o("code",[e._v("gaiad")]),e._v(" installed. Before creating it, you need to know where you intend to store and interact with your private keys. The best options are to store them in an offline dedicated computer or a ledger device. Storing them on your regular online computer involves more risk, since anyone who infiltrates your computer through the internet could exfiltrate your private keys and steal your funds.")]),e._v(" "),o("h4",{attrs:{id:"using-a-ledger-device"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#using-a-ledger-device"}},[e._v("#")]),e._v(" Using a Ledger Device")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Only use Ledger devices that you bought factory new or trust fully")])])]),e._v(" "),o("p",[e._v("When you initialize your ledger, a 24-word mnemonic is generated and stored in the device. This mnemonic is compatible with Cosmos and Cosmos accounts can be derived from it. Therefore, all you have to do is make your ledger compatible with "),o("code",[e._v("gaiad")]),e._v(". To do so, you need to go through the following steps:")]),e._v(" "),o("ol",[o("li",[e._v("Download the Ledger Live app "),o("a",{attrs:{href:"https://www.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("Connect your ledger via USB and update to the latest firmware")]),e._v(" "),o("li",[e._v('Go to the ledger live app store, and download the "Cosmos" application (this can take a while). '),o("strong",[e._v("Note: You may have to enable "),o("code",[e._v("Dev Mode")]),e._v(" in the "),o("code",[e._v("Settings")]),e._v(' of Ledger Live to be able to download the "Cosmos" application')]),e._v(".")]),e._v(" "),o("li",[e._v("Navigate to the Cosmos app on your ledger device")])]),e._v(" "),o("p",[e._v("Then, to create an account, use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJBY2NvdW50TmFtZSZndDsgLS1sZWRnZXIK"}}),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("This command will only work while the Ledger is plugged in and unlocked")])])]),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("h4",{attrs:{id:"using-a-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#using-a-computer"}},[e._v("#")]),e._v(" Using a Computer")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("NOTE: It is more secure to perform this action on an offline computer")])])]),e._v(" "),o("p",[e._v("To generate an account, just use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0Owo="}}),e._v(" "),o("p",[e._v("The command will generate a 24-words mnemonic and save the private and public keys for account "),o("code",[e._v("0")]),e._v("\nat the same time.\nEach time you want to send a transaction, you will need to unlock your system's credentials store.\nIf you lose access to your credentials storage, you can always recover the private key with the\nmnemonic.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("You may not be prompted for password each time you send a transaction since most operating systems\nunlock user's credentials store upon login by default. If you want to change your credentials\nstore security policies please refer to your operating system manual.")])])]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v("Do not lose or share your 12 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.")])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._v("After you have secured your mnemonic (triple check!), you can delete bash history to ensure no one can retrieve it:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aGlzdG9yeSAtYwpybSB+Ly5iYXNoX2hpc3RvcnkK"}})],1),e._v(" "),o("ul",[o("li",[o("code",[e._v("")]),e._v(" is the name of the account. It is a reference to the account number used to derive the key pair from the mnemonic. You will use this name to identify your account when you want to send a transaction.")]),e._v(" "),o("li",[e._v("You can add the optional "),o("code",[e._v("--account")]),e._v(" flag to specify the path ("),o("code",[e._v("0")]),e._v(", "),o("code",[e._v("1")]),e._v(", "),o("code",[e._v("2")]),e._v(", ...) you want to use to generate your account. By default, account "),o("code",[e._v("0")]),e._v(" is generated.")])]),e._v(" "),o("p",[e._v("You can generate more accounts from the same mnemonic using the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJLZXlOYW1lJmd0OyAtLXJlY292ZXIgLS1hY2NvdW50IDEK"}}),e._v(" "),o("p",[e._v("This command will prompt you to input a passphrase as well as your mnemonic. Change the account number to generate a different account.")]),e._v(" "),o("h2",{attrs:{id:"accessing-the-cosmos-hub-network"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("#")]),e._v(" Accessing the Cosmos Hub Network")]),e._v(" "),o("p",[e._v("In order to query the state and send transactions, you need a way to access the network. To do so, you can either run your own full-node, or connect to someone else's.")]),e._v(" "),o("div",{staticClass:"custom-block danger"},[o("p",[o("strong",[e._v('NOTE: Do not share your mnemonic (12 or 24 words) with anyone. The only person who should ever need to know it is you. This is especially important if you are ever approached via email or direct message by someone requesting that you share your mnemonic for any kind of blockchain services or support. 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 mnemonic."')]),e._v(".")])]),e._v(" "),o("h3",{attrs:{id:"running-your-own-full-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#running-your-own-full-node"}},[e._v("#")]),e._v(" Running Your Own Full-Node")]),e._v(" "),o("p",[e._v("This is the most secure option, but comes with relatively high resource requirements. In order to run your own full-node, you need good bandwidth and at least 1TB of disk space.")]),e._v(" "),o("p",[e._v("You will find the tutorial on how to install "),o("code",[e._v("gaiad")]),e._v(" "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("here")]),e._v(", and the guide to run a full-node "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),o("h3",{attrs:{id:"connecting-to-a-remote-full-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#connecting-to-a-remote-full-node"}},[e._v("#")]),e._v(" Connecting to a Remote Full-Node")]),e._v(" "),o("p",[e._v("If you do not want or cannot run your own node, you can connect to someone else's full-node. You should pick an operator you trust, because a malicious operator could return incorrect query results or censor your transactions. However, they will never be able to steal your funds, as your private keys are stored locally on your computer or ledger device. Possible options of full-node operators include validators, wallet providers or exchanges.")]),e._v(" "),o("p",[e._v("In order to connect to the full-node, you will need an address of the following form: "),o("code",[e._v("https://77.87.106.33:26657")]),e._v(" ("),o("em",[e._v("Note: This is a placeholder")]),e._v("). This address has to be communicated by the full-node operator you choose to trust. You will use this address in the "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("following section")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"setting-up-gaiad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting Up "),o("code",[e._v("gaiad")])]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before setting up "),o("code",[e._v("gaiad")]),e._v(", make sure you have set up a way to "),o("a",{attrs:{href:"#accessing-the-cosmos-hub-network"}},[e._v("access the Cosmos Hub network")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Please check that you are always using the latest stable release of "),o("code",[e._v("gaiad")])])])]),e._v(" "),o("p",[o("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.")]),e._v(" "),o("p",[e._v("In order to set up "),o("code",[e._v("gaiad")]),e._v(", use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),o("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),e._v(" "),o("p",[e._v("If you run your own full-node, just use "),o("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),o("p",[e._v("Finally, let us set the "),o("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),o("h2",{attrs:{id:"querying-the-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#querying-the-state"}},[e._v("#")]),e._v(" Querying the State")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])])])])]),e._v(" "),o("p",[o("code",[e._v("gaiad")]),e._v(" lets you query all relevant information from the blockchain, like account balances, amount of bonded tokens, outstanding rewards, governance proposals and more. Next is a list of the most useful commands for delegator.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gcXVlcnkgYWNjb3VudCBiYWxhbmNlcyBhbmQgb3RoZXIgYWNjb3VudC1yZWxhdGVkIGluZm9ybWF0aW9uCmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O3lvdXJBZGRyZXNzJmd0OwoKLy8gcXVlcnkgdGhlIGxpc3Qgb2YgdmFsaWRhdG9ycwpnYWlhZCBxdWVyeSBzdGFraW5nIHZhbGlkYXRvcnMKCi8vIHF1ZXJ5IHRoZSBpbmZvcm1hdGlvbiBvZiBhIHZhbGlkYXRvciBnaXZlbiB0aGVpciBhZGRyZXNzIChlLmcuIGNvc21vc3ZhbG9wZXIxbjVwZXB2bWdzZmQzcDJ0cXFndnQ1MDVqdnltbXN0ZjZzOWd3MjcpCmdhaWFkIHF1ZXJ5IHN0YWtpbmcgdmFsaWRhdG9yICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OwoKLy8gcXVlcnkgYWxsIGRlbGVnYXRpb25zIG1hZGUgZnJvbSBhIGRlbGVnYXRvciBnaXZlbiB0aGVpciBhZGRyZXNzIChlLmcuIGNvc21vczEwc25qdDhkbXByNW15MGg3NnhqNDh0eTgwdXp3aHJhcWFsdTRlZykKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IGEgc3BlY2lmaWMgZGVsZWdhdGlvbiBtYWRlIGZyb20gYSBkZWxlZ2F0b3IgKGUuZy4gY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKSB0byBhIHZhbGlkYXRvciAoZS5nLiBjb3Ntb3N2YWxvcGVyMW41cGVwdm1nc2ZkM3AydHFxZ3Z0NTA1anZ5bW1zdGY2czlndzI3KSBnaXZlbiB0aGVpciBhZGRyZXNzZXMKZ2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IHRoZSByZXdhcmRzIG9mIGEgZGVsZWdhdG9yIGdpdmVuIGEgZGVsZWdhdG9yIGFkZHJlc3MgKGUuZy4gY29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnKQpnYWlhZCBxdWVyeSBkaXN0cmlidXRpb24gcmV3YXJkcyAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDsKCi8vIHF1ZXJ5IGFsbCBwcm9wb3NhbHMgY3VycmVudGx5IG9wZW4gZm9yIGRlcG9zaXRpbmcKZ2FpYWQgcXVlcnkgZ292IHByb3Bvc2FscyAtLXN0YXR1cyBkZXBvc2l0X3BlcmlvZAoKLy8gcXVlcnkgYWxsIHByb3Bvc2FscyBjdXJyZW50bHkgb3BlbiBmb3Igdm90aW5nCmdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgdm90aW5nX3BlcmlvZAoKLy8gcXVlcnkgYSBwcm9wb3NhbCBnaXZlbiBpdHMgcHJvcG9zYWxJRApnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWwgJmx0O3Byb3Bvc2FsSUQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("For more commands, just type:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkK"}}),e._v(" "),o("p",[e._v("For each command, you can use the "),o("code",[e._v("-h")]),e._v(" or "),o("code",[e._v("--help")]),e._v(" flag to get more information.")]),e._v(" "),o("h2",{attrs:{id:"sending-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-transactions"}},[e._v("#")]),e._v(" Sending Transactions")]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[e._v("On Cosmos Hub mainnet, the accepted denom is "),o("code",[e._v("uatom")]),e._v(", where "),o("code",[e._v("1atom = 1,000,000uatom")])])]),e._v(" "),o("h3",{attrs:{id:"a-note-on-gas-and-fees"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#a-note-on-gas-and-fees"}},[e._v("#")]),e._v(" A Note on Gas and Fees")]),e._v(" "),o("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(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGNlaWwoZ2FzICogZ2FzUHJpY2VzKQo="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gas")]),e._v(" is dependent on the transaction. Different transaction require different amount of "),o("code",[e._v("gas")]),e._v(". The "),o("code",[e._v("gas")]),e._v(" amount for a transaction is calculated as it is being processed, but there is a way to estimate it beforehand by using the "),o("code",[e._v("auto")]),e._v(" value for the "),o("code",[e._v("gas")]),e._v(" flag. Of course, this only gives an estimate. You can adjust this estimate with the flag "),o("code",[e._v("--gas-adjustment")]),e._v(" (default "),o("code",[e._v("1.0")]),e._v(") if you want to be sure you provide enough "),o("code",[e._v("gas")]),e._v(" for the transaction. For the remainder of this tutorial, we will use a "),o("code",[e._v("--gas-adjustment")]),e._v(" of "),o("code",[e._v("1.5")]),e._v(".")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gasPrice")]),e._v(" is the price of each unit of "),o("code",[e._v("gas")]),e._v(". Each validator sets a "),o("code",[e._v("min-gas-price")]),e._v(" value, and will only include transactions that have a "),o("code",[e._v("gasPrice")]),e._v(" greater than their "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("The transaction "),o("code",[e._v("fees")]),e._v(" are the product of "),o("code",[e._v("gas")]),e._v(" and "),o("code",[e._v("gasPrice")]),e._v(". As a user, you have to input 2 out of 3. The higher the "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", the higher the chance that your transaction will get included in a block.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("For mainnet, the recommended "),o("code",[e._v("gas-prices")]),e._v(" is "),o("code",[e._v("0.0025uatom")]),e._v(".")])]),e._v(" "),o("h3",{attrs:{id:"sending-tokens"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-tokens"}},[e._v("#")]),e._v(" Sending Tokens")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])]),e._v(" and "),o("a",{attrs:{href:"#creating-an-account"}},[e._v("create an account")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a Ledger Nano S device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gU2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIHRva2VucyB0byBhbiBhZGRyZXNzCi8vIEV4IHZhbHVlIGZvciBwYXJhbWV0ZXJzIChkbyBub3QgYWN0dWFsbHkgdXNlIHRoZXNlIHZhbHVlcyBpbiB5b3VyIHR4ISEpOiAmbHQ7dG9fYWRkcmVzcyZndDs9Y29zbW9zMTZtOTNmZXpmaWV6aHZuamFqenJmeXN6bWw4cW05MmEwdzY3bnRqaGQzZDAgJmx0O2Ftb3VudCZndDs9MTAwMDAwMHVhdG9tCi8vIEV4IHZhbHVlIGZvciBmbGFnczogJmx0O2dhc1ByaWNlJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),e._v(" "),o("h3",{attrs:{id:"bonding-atoms-and-withdrawing-rewards"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("#")]),e._v(" Bonding Atoms and Withdrawing Rewards")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#setting-up-gaiad"}},[e._v("set up "),o("code",[e._v("gaiad")])]),e._v(" and "),o("a",{attrs:{href:"#creating-an-account"}},[e._v("create an account")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Before bonding Atoms, please read the "),o("a",{attrs:{href:"https://cosmos.network/resources/delegators",target:"_blank",rel:"noopener noreferrer"}},[e._v("delegator faq"),o("OutboundLink")],1),e._v(" to understand the risk and responsibilities involved with delegating")])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a ledger device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gQm9uZCBhIGNlcnRhaW4gYW1vdW50IG9mIEF0b21zIHRvIGEgZ2l2ZW4gdmFsaWRhdG9yCi8vIGV4IHZhbHVlIGZvciBmbGFnczogJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7PWNvc21vc3ZhbG9wZXIxOHRoYW1raG5qOXd6OHBhNG5obnA5cmxkcHJnYW50NTdwazJtOHMsICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMHVhdG9tLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBzdGFraW5nIGRlbGVnYXRlICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9Cb25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsKCgovLyBSZWRlbGVnYXRlIGEgY2VydGFpbiBhbW91bnQgb2YgQXRvbXMgZnJvbSBhIHZhbGlkYXRvciB0byBhbm90aGVyCi8vIENhbiBvbmx5IGJlIHVzZWQgaWYgYWxyZWFkeSBib25kZWQgdG8gYSB2YWxpZGF0b3IKLy8gUmVkZWxlZ2F0aW9uIHRha2VzIGVmZmVjdCBpbW1lZGlhdGVseSwgdGhlcmUgaXMgbm8gd2FpdGluZyBwZXJpb2QgdG8gcmVkZWxlZ2F0ZQovLyBBZnRlciBhIHJlZGVsZWdhdGlvbiwgbm8gb3RoZXIgcmVkZWxlZ2F0aW9uIGNhbiBiZSBtYWRlIGZyb20gdGhlIGFjY291bnQgZm9yIHRoZSBuZXh0IDMgd2Vla3MKLy8gZXggdmFsdWUgZm9yIGZsYWdzOiAmbHQ7c3RjVmFsaWRhdG9yQWRkcmVzcyZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O2Ftb3VudFRvUmVkZWxlZ2F0ZSZndDs9MTAwMDAwMDAwdWF0b20sICZsdDtnYXNQcmljZSZndDs9MC4wMDI1dWF0b20KCmdhaWFkIHR4IHN0YWtpbmcgcmVkZWxlZ2F0ZSAmbHQ7c3JjVmFsaWRhdG9yQWRkcmVzcyZndDsgJmx0O2Rlc3RWYWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9SZWRlbGVnYXRlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsKCi8vIFdpdGhkcmF3IGFsbCByZXdhcmRzCi8vIGV4IHZhbHVlIGZvciBmbGFnOiAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBkaXN0cmlidXRpb24gd2l0aGRyYXctYWxsLXJld2FyZHMgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7CgoKLy8gVW5ib25kIGEgY2VydGFpbiBhbW91bnQgb2YgQXRvbXMgZnJvbSBhIGdpdmVuIHZhbGlkYXRvcgovLyBZb3Ugd2lsbCBoYXZlIHRvIHdhaXQgMyB3ZWVrcyBiZWZvcmUgeW91ciBBdG9tcyBhcmUgZnVsbHkgdW5ib25kZWQgYW5kIHRyYW5zZmVycmFibGUKLy8gZXggdmFsdWUgZm9yIGZsYWdzOiAmbHQ7dmFsaWRhdG9yQWRkcmVzcyZndDs9Y29zbW9zdmFsb3BlcjE4dGhhbWtobmo5d3o4cGE0bmhucDlybGRwcmdhbnQ1N3BrMm04cywgJmx0O2Ftb3VudFRvVW5ib3VuZCZndDs9MTAwMDAwMDB1YXRvbSwgJmx0O2dhc1ByaWNlJmd0Oz0wLjAwMjV1YXRvbQoKZ2FpYWQgdHggc3Rha2luZyB1bmJvbmQgJmx0O3ZhbGlkYXRvckFkZHJlc3MmZ3Q7ICZsdDthbW91bnRUb1VuYm9uZCZndDsgLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7Cg=="}}),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("If you use a connected Ledger, you will be asked to confirm the transaction on the device before it is signed and broadcast to the network. Note that the command will only work while the Ledger is plugged in and unlocked.")])])]),e._v(" "),o("p",[e._v("To confirm that your transaction went through, you can use the following queries:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8geW91ciBiYWxhbmNlIHNob3VsZCBjaGFuZ2UgYWZ0ZXIgeW91IGJvbmQgQXRvbXMgb3Igd2l0aGRyYXcgcmV3YXJkcwpnYWlhZCBxdWVyeSBhY2NvdW50CgovLyB5b3Ugc2hvdWxkIGhhdmUgZGVsZWdhdGlvbnMgYWZ0ZXIgeW91IGJvbmQgQXRvbQpnYWlhZCBxdWVyeSBzdGFraW5nIGRlbGVnYXRpb25zICZsdDtkZWxlZ2F0b3JBZGRyZXNzJmd0OwoKLy8gdGhpcyByZXR1cm5zIHlvdXIgdHggaWYgaXQgaGFzIGJlZW4gaW5jbHVkZWQKLy8gdXNlIHRoZSB0eCBoYXNoIHRoYXQgd2FzIGRpc3BsYXllZCB3aGVuIHlvdSBjcmVhdGVkIHRoZSB0eApnYWlhZCBxdWVyeSB0eCAmbHQ7dHhIYXNoJmd0OwoK"}}),e._v(" "),o("p",[e._v("Double check with a block explorer if you interact with the network through a trusted full-node.")]),e._v(" "),o("h2",{attrs:{id:"participating-in-governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#participating-in-governance"}},[e._v("#")]),e._v(" Participating in Governance")]),e._v(" "),o("h4",{attrs:{id:"primer-on-governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#primer-on-governance"}},[e._v("#")]),e._v(" Primer on Governance")]),e._v(" "),o("p",[e._v("The Cosmos Hub has a built-in governance system that lets bonded Atom holders vote on proposals. There are three types of proposal:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("Text Proposals")]),e._v(": These are the most basic type of proposals. They can be used to get the opinion of the network on a given topic.")]),e._v(" "),o("li",[o("code",[e._v("Parameter Proposals")]),e._v(": These are used to update the value of an existing parameter.")]),e._v(" "),o("li",[o("code",[e._v("Software Upgrade Proposal")]),e._v(": These are used to propose an upgrade of the Hub's software.")])]),e._v(" "),o("p",[e._v("Any Atom holder can submit a proposal. In order for the proposal to be open for voting, it needs to come with a "),o("code",[e._v("deposit")]),e._v(" that is greater than a parameter called "),o("code",[e._v("minDeposit")]),e._v(". The "),o("code",[e._v("deposit")]),e._v(" need not be provided in its entirety by the submitter. If the initial proposer's "),o("code",[e._v("deposit")]),e._v(" is not sufficient, the proposal enters the "),o("code",[e._v("deposit_period")]),e._v(" status. Then, any Atom holder can increase the deposit by sending a "),o("code",[e._v("depositTx")]),e._v(".")]),e._v(" "),o("p",[e._v("Once the "),o("code",[e._v("deposit")]),e._v(" reaches "),o("code",[e._v("minDeposit")]),e._v(", the proposal enters the "),o("code",[e._v("voting_period")]),e._v(", which lasts 2 weeks. Any "),o("strong",[e._v("bonded")]),e._v(" Atom holder can then cast a vote on this proposal. The options are "),o("code",[e._v("Yes")]),e._v(", "),o("code",[e._v("No")]),e._v(", "),o("code",[e._v("NoWithVeto")]),e._v(" and "),o("code",[e._v("Abstain")]),e._v(". The weight of the vote is based on the amount of bonded Atoms of the sender. If they don't vote, delegator inherit the vote of their validator. However, delegators can override their validator's vote by sending a vote themselves.")]),e._v(" "),o("p",[e._v("At the end of the voting period, the proposal is accepted if there are more than 50% "),o("code",[e._v("Yes")]),e._v(" votes (excluding "),o("code",[e._v("Abstain")]),e._v(" votes) and less than 33.33% of "),o("code",[e._v("NoWithVeto")]),e._v(" votes (excluding "),o("code",[e._v("Abstain")]),e._v(" votes).")]),e._v(" "),o("h4",{attrs:{id:"in-practice"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#in-practice"}},[e._v("#")]),e._v(" In Practice")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[o("strong",[e._v("Before you can bond atoms and withdraw rewards, you need to "),o("a",{attrs:{href:"#bonding-atoms-and-withdrawing-rewards"}},[e._v("bond Atoms")])])])]),e._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[o("strong",[e._v("Note: These commands need to be run on an online computer. It is more secure to perform them commands using a ledger device. For the offline procedure, click "),o("a",{attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("here")]),e._v(".")])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gU3VibWl0IGEgUHJvcG9zYWwKLy8gJmx0O3R5cGUmZ3Q7PXRleHQvcGFyYW1ldGVyX2NoYW5nZS9zb2Z0d2FyZV91cGdyYWRlCi8vIGV4IHZhbHVlIGZvciBmbGFnOiAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tCgpnYWlhZCB0eCBnb3Ygc3VibWl0LXByb3Bvc2FsIC0tdGl0bGUgJnF1b3Q7VGVzdCBQcm9wb3NhbCZxdW90OyAtLWRlc2NyaXB0aW9uICZxdW90O015IGF3ZXNvbWUgcHJvcG9zYWwmcXVvdDsgLS10eXBlICZsdDt0eXBlJmd0OyAtLWRlcG9zaXQ9MTAwMDAwMDB1YXRvbSAtLWdhcyBhdXRvIC0tZ2FzLWFkanVzdG1lbnQgMS41IC0tZ2FzLXByaWNlcyAmbHQ7Z2FzUHJpY2UmZ3Q7IC0tZnJvbSAmbHQ7ZGVsZWdhdG9yS2V5TmFtZSZndDsKCi8vIEluY3JlYXNlIGRlcG9zaXQgb2YgYSBwcm9wb3NhbAovLyBSZXRyaWV2ZSBwcm9wb3NhbElEIGZyb20gJGdhaWFkIHF1ZXJ5IGdvdiBwcm9wb3NhbHMgLS1zdGF0dXMgZGVwb3NpdF9wZXJpb2QKLy8gZXggdmFsdWUgZm9yIHBhcmFtZXRlcjogJmx0O2RlcG9zaXQmZ3Q7PTEwMDAwMDAwdWF0b20KCmdhaWFkIHR4IGdvdiBkZXBvc2l0ICZsdDtwcm9wb3NhbElEJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7CgovLyBWb3RlIG9uIGEgcHJvcG9zYWwKLy8gUmV0cmlldmUgcHJvcG9zYWxJRCBmcm9tICRnYWlhZCBxdWVyeSBnb3YgcHJvcG9zYWxzIC0tc3RhdHVzIHZvdGluZ19wZXJpb2QKLy8gJmx0O29wdGlvbiZndDs9eWVzL25vL25vX3dpdGhfdmV0by9hYnN0YWluCgpnYWlhZCB0eCBnb3Ygdm90ZSAmbHQ7cHJvcG9zYWxJRCZndDsgJmx0O29wdGlvbiZndDsgLS1nYXMgYXV0byAtLWdhcy1hZGp1c3RtZW50IDEuNSAtLWdhcy1wcmljZXMgJmx0O2dhc1ByaWNlJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvcktleU5hbWUmZ3Q7Cg=="}}),e._v(" "),o("h3",{attrs:{id:"signing-transactions-from-an-offline-computer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#signing-transactions-from-an-offline-computer"}},[e._v("#")]),e._v(" Signing Transactions From an Offline Computer")]),e._v(" "),o("p",[e._v("If you do not have a ledger device and want to interact with your private key on an offline computer, you can use the following procedure. First, generate an unsigned transaction on an "),o("strong",[e._v("online computer")]),e._v(" with the following command (example with a bonding transaction):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gQm9uZCBBdG9tcwovLyBleCB2YWx1ZSBmb3IgZmxhZ3M6ICZsdDthbW91bnRUb0JvdW5kJmd0Oz0xMDAwMDAwMHVhdG9tLCAmbHQ7YmVjaDMyQWRkcmVzc09mVmFsaWRhdG9yJmd0Oz1jb3Ntb3N2YWxvcGVyMTh0aGFta2huajl3ejhwYTRuaG5wOXJsZHByZ2FudDU3cGsybThzLCAmbHQ7Z2FzUHJpY2UmZ3Q7PTAuMDAyNXVhdG9tLCAmbHQ7ZGVsZWdhdG9yQWRkcmVzcyZndDs9Y29zbW9zMTBzbmp0OGRtcHI1bXkwaDc2eGo0OHR5ODB1endocmFxYWx1NGVnCgpnYWlhZCB0eCBzdGFraW5nIGRlbGVnYXRlICZsdDt2YWxpZGF0b3JBZGRyZXNzJmd0OyAmbHQ7YW1vdW50VG9Cb25kJmd0OyAtLWZyb20gJmx0O2RlbGVnYXRvckFkZHJlc3MmZ3Q7IC0tZ2FzIGF1dG8gLS1nYXMtYWRqdXN0bWVudCAxLjUgLS1nYXMtcHJpY2VzICZsdDtnYXNQcmljZSZndDsgLS1nZW5lcmF0ZS1vbmx5ICZndDsgdW5zaWduZWRUWC5qc29uCg=="}}),e._v(" "),o("p",[e._v("In order to sign, you will also need the "),o("code",[e._v("chain-id")]),e._v(", "),o("code",[e._v("account-number")]),e._v(" and "),o("code",[e._v("sequence")]),e._v(". The "),o("code",[e._v("chain-id")]),e._v(" is a unique identifier for the blockchain on which you are submitting the transaction. The "),o("code",[e._v("account-number")]),e._v(" is an identifier generated when your account first receives funds. The "),o("code",[e._v("sequence")]),e._v(" number is used to keep track of the number of transactions you have sent and prevent replay attacks.")]),e._v(" "),o("p",[e._v("Get the chain-id from the genesis file ("),o("code",[e._v("cosmoshub-2")]),e._v("), and the two other fields using the account query:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7eW91ckFkZHJlc3MmZ3Q7IC0tY2hhaW4taWQgY29zbW9zaHViLTIK"}}),e._v(" "),o("p",[e._v("Then, copy "),o("code",[e._v("unsignedTx.json")]),e._v(" and transfer it (e.g. via USB) to the offline computer. If it is not done already, "),o("a",{attrs:{href:"#using-a-computer"}},[e._v("create an account on the offline computer")]),e._v(". For additional security, you can double check the parameters of your transaction before signing it using the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IHVuc2lnbmVkVHguanNvbgo="}}),e._v(" "),o("p",[e._v("Now, sign the transaction using the following command. You will need the "),o("code",[e._v("chain-id")]),e._v(", "),o("code",[e._v("sequence")]),e._v(" and "),o("code",[e._v("account-number")]),e._v(" obtained earlier:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiB1bnNpZ25lZFR4Lmpzb24gLS1mcm9tICZsdDtkZWxlZ2F0b3JLZXlOYW1lJmd0OyAtLW9mZmxpbmUgLS1jaGFpbi1pZCBjb3Ntb3NodWItMiAtLXNlcXVlbmNlICZsdDtzZXF1ZW5jZSZndDsgLS1hY2NvdW50LW51bWJlciAmbHQ7YWNjb3VudC1udW1iZXImZ3Q7ICZndDsgc2lnbmVkVHguanNvbgo="}}),e._v(" "),o("p",[e._v("Copy "),o("code",[e._v("signedTx.json")]),e._v(" and transfer it back to the online computer. Finally, use the following command to broadcast the transaction:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}})],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/69.e408b850.js b/main/assets/js/69.22cff208.js similarity index 99% rename from main/assets/js/69.e408b850.js rename to main/assets/js/69.22cff208.js index d88b1b8adea..191dbf10bc9 100644 --- a/main/assets/js/69.e408b850.js +++ b/main/assets/js/69.22cff208.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{614:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"delegator-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-security"}},[e._v("#")]),e._v(" Delegator Security")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.")]),e._v(" "),o("h2",{attrs:{id:"social-engineering"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#social-engineering"}},[e._v("#")]),e._v(" Social Engineering")]),e._v(" "),o("p",[o("em",[o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_(security)",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1)]),e._v(" has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(" . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have an inbox"),o("OutboundLink")],1),e._v(" . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(" , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.")]),e._v(" An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v(" designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics "),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" .")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch")]),e._v(", so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us")]),e._v(", and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.")])])]),e._v(" "),o("p",[e._v("If you receive an email or tweet that sounds too good to be true, is likely to be a scam.")]),e._v(" "),o("h2",{attrs:{id:"key-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#key-management"}},[e._v("#")]),e._v(" Key Management")]),e._v(" "),o("p",[e._v("The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.")]),e._v(" "),o("p",[o("strong",[e._v("To protect your ATOM, do not share your 12 words with anyone.")]),e._v(" The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,")]),e._v(" "),o("h2",{attrs:{id:"software-vulnerabilities"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#software-vulnerabilities"}},[e._v("#")]),e._v(" Software Vulnerabilities")]),e._v(" "),o("p",[e._v("To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.")]),e._v(" "),o("p",[o("em",[e._v("To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of "),o("code",[e._v("gaiad")]),e._v(" when you're doing anything that involves your 12 words")]),e._v(". The latest versions of "),o("code",[e._v("Tendermint")]),e._v(", the "),o("code",[e._v("Cosmos-SDK")]),e._v(", and "),o("code",[e._v("gaiad")]),e._v(" will always be available from our official Github repositories.")]),e._v(" "),o("p",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.")]),e._v(" "),o("h2",{attrs:{id:"verifying-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-transactions"}},[e._v("#")]),e._v(" Verifying Transactions")]),e._v(" "),o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.")]),e._v(" "),o("p",[o("strong",[e._v("When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send")]),e._v(". While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.")]),e._v(" "),o("h2",{attrs:{id:"account-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#account-security"}},[e._v("#")]),e._v(" Account Security")]),e._v(" "),o("p",[e._v("One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.")]),e._v(" "),o("p",[e._v("For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Universal_2nd_Factor",target:"_blank",rel:"noopener noreferrer"}},[e._v("U2F hardware key"),o("OutboundLink")],1),e._v(" as a second factor.")])]),e._v(" "),o("li",[o("p",[e._v("Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.")])])]),e._v(" "),o("h2",{attrs:{id:"supply-chain-attacks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supply-chain-attacks"}},[e._v("#")]),e._v(" Supply Chain Attacks")]),e._v(" "),o("p",[e._v("Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.")]),e._v(" "),o("h2",{attrs:{id:"disclaimer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disclaimer"}},[e._v("#")]),e._v(" Disclaimer")]),e._v(" "),o("p",[e._v('Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`')])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{538:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"delegator-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-security"}},[e._v("#")]),e._v(" Delegator Security")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.")]),e._v(" "),o("h2",{attrs:{id:"social-engineering"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#social-engineering"}},[e._v("#")]),e._v(" Social Engineering")]),e._v(" "),o("p",[o("em",[o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_(security)",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1)]),e._v(" has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(" . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have an inbox"),o("OutboundLink")],1),e._v(" . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(" , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.")]),e._v(" An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v(" designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics "),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" .")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch")]),e._v(", so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us")]),e._v(", and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.")])])]),e._v(" "),o("p",[e._v("If you receive an email or tweet that sounds too good to be true, is likely to be a scam.")]),e._v(" "),o("h2",{attrs:{id:"key-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#key-management"}},[e._v("#")]),e._v(" Key Management")]),e._v(" "),o("p",[e._v("The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.")]),e._v(" "),o("p",[o("strong",[e._v("To protect your ATOM, do not share your 12 words with anyone.")]),e._v(" The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,")]),e._v(" "),o("h2",{attrs:{id:"software-vulnerabilities"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#software-vulnerabilities"}},[e._v("#")]),e._v(" Software Vulnerabilities")]),e._v(" "),o("p",[e._v("To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.")]),e._v(" "),o("p",[o("em",[e._v("To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of "),o("code",[e._v("gaiad")]),e._v(" when you're doing anything that involves your 12 words")]),e._v(". The latest versions of "),o("code",[e._v("Tendermint")]),e._v(", the "),o("code",[e._v("Cosmos-SDK")]),e._v(", and "),o("code",[e._v("gaiad")]),e._v(" will always be available from our official Github repositories.")]),e._v(" "),o("p",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.")]),e._v(" "),o("h2",{attrs:{id:"verifying-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-transactions"}},[e._v("#")]),e._v(" Verifying Transactions")]),e._v(" "),o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.")]),e._v(" "),o("p",[o("strong",[e._v("When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send")]),e._v(". While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.")]),e._v(" "),o("h2",{attrs:{id:"account-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#account-security"}},[e._v("#")]),e._v(" Account Security")]),e._v(" "),o("p",[e._v("One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.")]),e._v(" "),o("p",[e._v("For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Universal_2nd_Factor",target:"_blank",rel:"noopener noreferrer"}},[e._v("U2F hardware key"),o("OutboundLink")],1),e._v(" as a second factor.")])]),e._v(" "),o("li",[o("p",[e._v("Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.")])])]),e._v(" "),o("h2",{attrs:{id:"supply-chain-attacks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supply-chain-attacks"}},[e._v("#")]),e._v(" Supply Chain Attacks")]),e._v(" "),o("p",[e._v("Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.")]),e._v(" "),o("h2",{attrs:{id:"disclaimer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disclaimer"}},[e._v("#")]),e._v(" Disclaimer")]),e._v(" "),o("p",[e._v('Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`')])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/70.eae4cf22.js b/main/assets/js/70.78daa1b8.js similarity index 98% rename from main/assets/js/70.eae4cf22.js rename to main/assets/js/70.78daa1b8.js index bc11e1b2c6d..eb51fd5a03d 100644 --- a/main/assets/js/70.eae4cf22.js +++ b/main/assets/js/70.78daa1b8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{537: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.b624a404.js b/main/assets/js/71.8d1483ae.js similarity index 99% rename from main/assets/js/71.b624a404.js rename to main/assets/js/71.8d1483ae.js index 442c8d779e8..c0af0e1ffac 100644 --- a/main/assets/js/71.b624a404.js +++ b/main/assets/js/71.8d1483ae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{538: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/72.6bba722e.js b/main/assets/js/72.dd28914f.js similarity index 99% rename from main/assets/js/72.6bba722e.js rename to main/assets/js/72.dd28914f.js index b1fa22c2a22..7329383a7bc 100644 --- a/main/assets/js/72.6bba722e.js +++ b/main/assets/js/72.dd28914f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{611:function(e,a,o){"use strict";o.r(a);var s=o(1),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"unase-a-la-red-principal-del-cosmos-hub"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-cosmos-hub"}},[e._v("#")]),e._v(" Únase a la red principal del Cosmos Hub")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("Vea el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio para el lanzamiento"),o("OutboundLink")],1),e._v(" para la información de la red principal, incluyendo la versión correcta para el SDK de Cosmos que usar y detalles acerca del archivo génesis.")])]),e._v(" "),o("p",[e._v("::: aviso\n"),o("strong",[e._v("Necesitará "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[e._v("instalar gaia")]),e._v(" antes de avanzar más")],1),e._v("\n:::")]),e._v(" "),o("h2",{attrs:{id:"configurando-un-nuevo-nodo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configurando-un-nuevo-nodo"}},[e._v("#")]),e._v(" Configurando un nuevo nodo")]),e._v(" "),o("p",[e._v("Estas instrucciones son para establecer un nuevo nodo completo desde cero.")]),e._v(" "),o("p",[e._v("Primero, inicie el nodo y cree los archivos de configuración necesarios:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),e._v(" "),o("p",[e._v(":::Warning\nEl moniker solo debe contener carácteres ASCII. El uso de caracteres Unicode hará que tu nodo sea irreconocible.\n:::")]),e._v(" "),o("p",[e._v("Puede editar el apodo ("),o("code",[e._v("moniker")]),e._v(") después, en el archivo "),o("code",[e._v("~/.gaia/config/config.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt0dSBub21icmUgcGVyc29uYWxpemFkbyZndDsmcXVvdDsK"}}),e._v(" "),o("p",[e._v("Puede editar el archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(" para activar el mecanismo antispam y rechazar las transacciones entrantes con valores inferiores a los precios mínimos para el "),o("em",[e._v("gas")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),e._v(" "),o("p",[e._v("¡Su nodo completo ha sido iniciado!")]),e._v(" "),o("h2",{attrs:{id:"genesis-y-semillas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-y-semillas"}},[e._v("#")]),e._v(" Génesis y semillas")]),e._v(" "),o("h3",{attrs:{id:"copie-el-archivo-genesis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#copie-el-archivo-genesis"}},[e._v("#")]),e._v(" Copie el archivo génesis")]),e._v(" "),o("p",[e._v("Busque el archivo "),o("code",[e._v("genesis.json")]),e._v(" de la red principal en el directorio de configuración de "),o("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Observe que usamos el directorio "),o("code",[e._v("latest")]),e._v(" en el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio de lanzamiento"),o("OutboundLink")],1),e._v(" que contiene detalles para la red principal como la última versión y el archivo de génesis.")]),e._v(" "),o("p",[e._v(":::consejo\nSi en cambio quiere conectarse a la red de pruebas pública, haga clic "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[e._v("aquí")]),e._v("\n:::")],1),e._v(" "),o("p",[e._v("Para verificar la validez de la configuración:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("h3",{attrs:{id:"anada-los-nodos-semilla"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#anada-los-nodos-semilla"}},[e._v("#")]),e._v(" Añada los nodos semilla")]),e._v(" "),o("p",[e._v("Su nodo necesita saber cómo encontrar pares ("),o("em",[e._v("peers")]),e._v("). Necesita añadir nodos semilla en buen estado en "),o("code",[e._v("$HOME/.gaia/config/config.toml")]),e._v(". El repositorio para el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("lanzamiento")]),o("OutboundLink")],1),e._v(" contiene enlaces a algunos nodos semilla.")]),e._v(" "),o("p",[e._v("Si estas semillas no funcionan, puedes encontrar más "),o("em",[e._v("seeds")]),e._v(" y "),o("em",[e._v("peers")]),e._v(" persistentes en un explorador de Cosmos Hub (puede encontrar una lista en la "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("página del lanzamiento"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("p",[e._v("También puedes preguntar por "),o("em",[e._v("peers")]),e._v(" en el "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("canal de Validadores de Riot"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Para más información acerca de seeds y peers, puede leer "),o("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/v0.34.x/spec/p2p/peer.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("este enlace"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"nota-sobre-el-fee-y-el-gas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nota-sobre-el-fee-y-el-gas"}},[e._v("#")]),e._v(" Nota sobre el Fee y el Gas")]),e._v(" "),o("p",[e._v("::: Aviso\nEn el Hub de Cosmos, la denominación aceptada es "),o("code",[e._v("uatom")]),e._v(", donde "),o("code",[e._v("1atom = 1.000.000uatom")]),e._v("\n:::")]),e._v(" "),o("p",[e._v("Las transacciones en la red del Hub de Cosmos deben incluir una tarifa de transacción para poder ser procesadas. Esta tarifa paga el gas necesario para llevar a cabo la transacción. La fórmula es la siguiente:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"dGFyaWZhID0gdGVjaG8oZ2FzICogcHJlY2lvUG9yR2FzKQo="}}),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gas")]),e._v(" depende de la transacción. Diferentes transacciones requieren diferentes cantidades de "),o("code",[e._v("gas")]),e._v(". La cantidad de "),o("code",[e._v("gas")]),e._v(" para una transacción se calcula mientras se procesa, pero hay una forma previa de estimarla usando el valor "),o("code",[e._v("auto")]),e._v(" para el indicador de "),o("code",[e._v("gas")]),e._v(". Por supuesto, esto sólo da una estimación. Puede ajustar esta estimación con el identificador "),o("code",[e._v("--gas-adjustment")]),e._v(" (por defecto "),o("code",[e._v("1.0")]),e._v(") si quiere estar seguro de que proporciona suficiente "),o("code",[e._v("gas")]),e._v(" para la transacción.")]),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gasPrice")]),e._v(" (i.e "),o("code",[e._v("precioPorGas")]),e._v(") es el precio de cada unidad de "),o("code",[e._v("gas")]),e._v(". Cada validador establece un valor de "),o("code",[e._v("min-gas-price")]),e._v(", y sólo incluirá transacciones que tengan un "),o("code",[e._v("gasPrice")]),e._v(" mayor que su "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("Los "),o("code",[e._v("fees")]),e._v(" de la transacción son el producto del "),o("code",[e._v("gas")]),e._v(" y del "),o("code",[e._v("gasPrice")]),e._v(". Como usuario, tiene que introducir 2 de 3. Cuanto más alto sea el "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", mayor será la posibilidad de que su transacción se incluya en un bloque.")]),e._v(" "),o("p",[e._v("::: consejo\nPara la red principal, el "),o("code",[e._v("gas-prices")]),e._v(" recomendado es "),o("code",[e._v("0.0025uatom")]),e._v(".\n:::")]),e._v(" "),o("h2",{attrs:{id:"establezca-minimum-gas-prices"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#establezca-minimum-gas-prices"}},[e._v("#")]),e._v(" Establezca "),o("code",[e._v("minimum-gas-prices")])]),e._v(" "),o("p",[e._v("Su nodo completo mantiene las transacciones no confirmadas en la "),o("em",[e._v("mempool")]),e._v(". Para protegerlo de ataques de spam, es mejor establecer un "),o("code",[e._v("minimum-gas-prices")]),e._v(" que la transacción debe cumplir para ser aceptada en la "),o("em",[e._v("mempool")]),e._v(" de su nodo. Este parámetro puede ser establecido en el siguiente archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),o("p",[e._v("El valor inicial recomendado para "),o("code",[e._v("min-gas-prices")]),e._v(" es "),o("code",[e._v("0.0025uatom")]),e._v(", pero puede querer cambiarlo más tarde.")]),e._v(" "),o("h2",{attrs:{id:"reduccion-del-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reduccion-del-estado"}},[e._v("#")]),e._v(" Reducción del Estado")]),e._v(" "),o("p",[e._v("Hay tres estrategias para reducir el estado, por favor tenga en cuenta que esto es sólo para el estado y no para el almacenamiento de bloques:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("PruneEverything")]),e._v(": Esto significa que todos los estados salvados serán reducidos aparte del actual.")]),e._v(" "),o("li",[o("code",[e._v("PruneNothing")]),e._v(": Esto significa que todo el estado se guardará y nada se borrará.")]),e._v(" "),o("li",[o("code",[e._v("PruneSyncable")]),e._v(": Esto significa que sólo se salvará el estado de los últimos 100 y cada 10.000 bloques.")])]),e._v(" "),o("p",[e._v("Por defecto cada nodo está en modo "),o("code",[e._v("PruneSyncable")]),e._v(". Si desea cambiar su estrategia de reducción en su nodo, debe hacerlo cuando el nodo se ha iniciado. Por ejemplo, si desea cambiar su nodo al modo "),o("code",[e._v("PruneEverything")]),e._v(" entonces puede pasar la opción "),o("code",[e._v("---pruning everything")]),e._v(" cuando llame a "),o("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),o("blockquote",[o("p",[e._v("Nota: Cuando esté en estado de reducción no podrá consultar las partes que no estén en su base de datos.")])]),e._v(" "),o("h2",{attrs:{id:"ejecute-un-nodo-completo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ejecute-un-nodo-completo"}},[e._v("#")]),e._v(" Ejecute un nodo completo")]),e._v(" "),o("p",[e._v("Inicie el nodo completo con este comando:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Comprueba que todo funciona bien:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),e._v(" "),o("p",[e._v("Vea el estado de la red con el "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("Explorador de Cosmos"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"exportar-el-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#exportar-el-estado"}},[e._v("#")]),e._v(" Exportar el estado")]),e._v(" "),o("p",[e._v("Gaia puede volcar todo el estado de la aplicación a un archivo JSON, que podría ser útil para el análisis manual y también puede ser usado como el archivo génesis para una nueva red.")]),e._v(" "),o("p",[e._v("Exporte el estado con:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("También puede exportar el estado desde una altura en especial (al final del procesamiento del bloque en esa altura):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("Si desea empezar una nueva red desde el estado exportado, expórtelo con la opción "),o("code",[e._v("--for-zero-height")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("h2",{attrs:{id:"verifica-la-red-principal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifica-la-red-principal"}},[e._v("#")]),e._v(" Verifica la red principal")]),e._v(" "),o("p",[e._v("Ayude a prevenir problemas críticos ejecutando invariantes en cada bloque de su nodo. En esencia, al ejecutar invariantes se asegura que el estado de la red principal es el estado esperado correcto. Una comprobación de la invariante vital es que ningún átomo está siendo creado o destruido fuera del protocolo esperado, sin embargo hay muchas otras invariantes, comprueben cada una de ellas de forma única para su respectivo módulo. Porque la invariante es costosa desde el punto de vista computacional, no están habilitados por defecto. Para ejecutar un nodo con estas comprobaciones inicie su nodo con la opción "),o("code",[e._v("inv-check-period")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),e._v(" "),o("p",[e._v("Si se rompe una invariante en su nodo, su nodo entrará en pánico ("),o("code",[e._v("panic")]),e._v(" de Golang) y le pedirá que envíe una transacción que detenga la red principal. Por ejemplo, el mensaje proporcionado puede parecerse a:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),e._v(" "),o("p",[e._v("Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).")]),e._v(" "),o("h2",{attrs:{id:"actualice-a-un-nodo-validador"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#actualice-a-un-nodo-validador"}},[e._v("#")]),e._v(" Actualice a un nodo validador")]),e._v(" "),o("p",[e._v("Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la "),o("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[e._v("Configuración del Validador")])],1)],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{537:function(e,a,o){"use strict";o.r(a);var s=o(1),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"unase-a-la-red-principal-del-cosmos-hub"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-cosmos-hub"}},[e._v("#")]),e._v(" Únase a la red principal del Cosmos Hub")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("Vea el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio para el lanzamiento"),o("OutboundLink")],1),e._v(" para la información de la red principal, incluyendo la versión correcta para el SDK de Cosmos que usar y detalles acerca del archivo génesis.")])]),e._v(" "),o("p",[e._v("::: aviso\n"),o("strong",[e._v("Necesitará "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[e._v("instalar gaia")]),e._v(" antes de avanzar más")],1),e._v("\n:::")]),e._v(" "),o("h2",{attrs:{id:"configurando-un-nuevo-nodo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configurando-un-nuevo-nodo"}},[e._v("#")]),e._v(" Configurando un nuevo nodo")]),e._v(" "),o("p",[e._v("Estas instrucciones son para establecer un nuevo nodo completo desde cero.")]),e._v(" "),o("p",[e._v("Primero, inicie el nodo y cree los archivos de configuración necesarios:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),e._v(" "),o("p",[e._v(":::Warning\nEl moniker solo debe contener carácteres ASCII. El uso de caracteres Unicode hará que tu nodo sea irreconocible.\n:::")]),e._v(" "),o("p",[e._v("Puede editar el apodo ("),o("code",[e._v("moniker")]),e._v(") después, en el archivo "),o("code",[e._v("~/.gaia/config/config.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt0dSBub21icmUgcGVyc29uYWxpemFkbyZndDsmcXVvdDsK"}}),e._v(" "),o("p",[e._v("Puede editar el archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(" para activar el mecanismo antispam y rechazar las transacciones entrantes con valores inferiores a los precios mínimos para el "),o("em",[e._v("gas")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),e._v(" "),o("p",[e._v("¡Su nodo completo ha sido iniciado!")]),e._v(" "),o("h2",{attrs:{id:"genesis-y-semillas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-y-semillas"}},[e._v("#")]),e._v(" Génesis y semillas")]),e._v(" "),o("h3",{attrs:{id:"copie-el-archivo-genesis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#copie-el-archivo-genesis"}},[e._v("#")]),e._v(" Copie el archivo génesis")]),e._v(" "),o("p",[e._v("Busque el archivo "),o("code",[e._v("genesis.json")]),e._v(" de la red principal en el directorio de configuración de "),o("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Observe que usamos el directorio "),o("code",[e._v("latest")]),e._v(" en el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio de lanzamiento"),o("OutboundLink")],1),e._v(" que contiene detalles para la red principal como la última versión y el archivo de génesis.")]),e._v(" "),o("p",[e._v(":::consejo\nSi en cambio quiere conectarse a la red de pruebas pública, haga clic "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[e._v("aquí")]),e._v("\n:::")],1),e._v(" "),o("p",[e._v("Para verificar la validez de la configuración:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("h3",{attrs:{id:"anada-los-nodos-semilla"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#anada-los-nodos-semilla"}},[e._v("#")]),e._v(" Añada los nodos semilla")]),e._v(" "),o("p",[e._v("Su nodo necesita saber cómo encontrar pares ("),o("em",[e._v("peers")]),e._v("). Necesita añadir nodos semilla en buen estado en "),o("code",[e._v("$HOME/.gaia/config/config.toml")]),e._v(". El repositorio para el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("lanzamiento")]),o("OutboundLink")],1),e._v(" contiene enlaces a algunos nodos semilla.")]),e._v(" "),o("p",[e._v("Si estas semillas no funcionan, puedes encontrar más "),o("em",[e._v("seeds")]),e._v(" y "),o("em",[e._v("peers")]),e._v(" persistentes en un explorador de Cosmos Hub (puede encontrar una lista en la "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("página del lanzamiento"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("p",[e._v("También puedes preguntar por "),o("em",[e._v("peers")]),e._v(" en el "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("canal de Validadores de Riot"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Para más información acerca de seeds y peers, puede leer "),o("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/v0.34.x/spec/p2p/peer.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("este enlace"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"nota-sobre-el-fee-y-el-gas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nota-sobre-el-fee-y-el-gas"}},[e._v("#")]),e._v(" Nota sobre el Fee y el Gas")]),e._v(" "),o("p",[e._v("::: Aviso\nEn el Hub de Cosmos, la denominación aceptada es "),o("code",[e._v("uatom")]),e._v(", donde "),o("code",[e._v("1atom = 1.000.000uatom")]),e._v("\n:::")]),e._v(" "),o("p",[e._v("Las transacciones en la red del Hub de Cosmos deben incluir una tarifa de transacción para poder ser procesadas. Esta tarifa paga el gas necesario para llevar a cabo la transacción. La fórmula es la siguiente:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"dGFyaWZhID0gdGVjaG8oZ2FzICogcHJlY2lvUG9yR2FzKQo="}}),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gas")]),e._v(" depende de la transacción. Diferentes transacciones requieren diferentes cantidades de "),o("code",[e._v("gas")]),e._v(". La cantidad de "),o("code",[e._v("gas")]),e._v(" para una transacción se calcula mientras se procesa, pero hay una forma previa de estimarla usando el valor "),o("code",[e._v("auto")]),e._v(" para el indicador de "),o("code",[e._v("gas")]),e._v(". Por supuesto, esto sólo da una estimación. Puede ajustar esta estimación con el identificador "),o("code",[e._v("--gas-adjustment")]),e._v(" (por defecto "),o("code",[e._v("1.0")]),e._v(") si quiere estar seguro de que proporciona suficiente "),o("code",[e._v("gas")]),e._v(" para la transacción.")]),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gasPrice")]),e._v(" (i.e "),o("code",[e._v("precioPorGas")]),e._v(") es el precio de cada unidad de "),o("code",[e._v("gas")]),e._v(". Cada validador establece un valor de "),o("code",[e._v("min-gas-price")]),e._v(", y sólo incluirá transacciones que tengan un "),o("code",[e._v("gasPrice")]),e._v(" mayor que su "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("Los "),o("code",[e._v("fees")]),e._v(" de la transacción son el producto del "),o("code",[e._v("gas")]),e._v(" y del "),o("code",[e._v("gasPrice")]),e._v(". Como usuario, tiene que introducir 2 de 3. Cuanto más alto sea el "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", mayor será la posibilidad de que su transacción se incluya en un bloque.")]),e._v(" "),o("p",[e._v("::: consejo\nPara la red principal, el "),o("code",[e._v("gas-prices")]),e._v(" recomendado es "),o("code",[e._v("0.0025uatom")]),e._v(".\n:::")]),e._v(" "),o("h2",{attrs:{id:"establezca-minimum-gas-prices"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#establezca-minimum-gas-prices"}},[e._v("#")]),e._v(" Establezca "),o("code",[e._v("minimum-gas-prices")])]),e._v(" "),o("p",[e._v("Su nodo completo mantiene las transacciones no confirmadas en la "),o("em",[e._v("mempool")]),e._v(". Para protegerlo de ataques de spam, es mejor establecer un "),o("code",[e._v("minimum-gas-prices")]),e._v(" que la transacción debe cumplir para ser aceptada en la "),o("em",[e._v("mempool")]),e._v(" de su nodo. Este parámetro puede ser establecido en el siguiente archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),o("p",[e._v("El valor inicial recomendado para "),o("code",[e._v("min-gas-prices")]),e._v(" es "),o("code",[e._v("0.0025uatom")]),e._v(", pero puede querer cambiarlo más tarde.")]),e._v(" "),o("h2",{attrs:{id:"reduccion-del-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reduccion-del-estado"}},[e._v("#")]),e._v(" Reducción del Estado")]),e._v(" "),o("p",[e._v("Hay tres estrategias para reducir el estado, por favor tenga en cuenta que esto es sólo para el estado y no para el almacenamiento de bloques:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("PruneEverything")]),e._v(": Esto significa que todos los estados salvados serán reducidos aparte del actual.")]),e._v(" "),o("li",[o("code",[e._v("PruneNothing")]),e._v(": Esto significa que todo el estado se guardará y nada se borrará.")]),e._v(" "),o("li",[o("code",[e._v("PruneSyncable")]),e._v(": Esto significa que sólo se salvará el estado de los últimos 100 y cada 10.000 bloques.")])]),e._v(" "),o("p",[e._v("Por defecto cada nodo está en modo "),o("code",[e._v("PruneSyncable")]),e._v(". Si desea cambiar su estrategia de reducción en su nodo, debe hacerlo cuando el nodo se ha iniciado. Por ejemplo, si desea cambiar su nodo al modo "),o("code",[e._v("PruneEverything")]),e._v(" entonces puede pasar la opción "),o("code",[e._v("---pruning everything")]),e._v(" cuando llame a "),o("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),o("blockquote",[o("p",[e._v("Nota: Cuando esté en estado de reducción no podrá consultar las partes que no estén en su base de datos.")])]),e._v(" "),o("h2",{attrs:{id:"ejecute-un-nodo-completo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ejecute-un-nodo-completo"}},[e._v("#")]),e._v(" Ejecute un nodo completo")]),e._v(" "),o("p",[e._v("Inicie el nodo completo con este comando:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Comprueba que todo funciona bien:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),e._v(" "),o("p",[e._v("Vea el estado de la red con el "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("Explorador de Cosmos"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"exportar-el-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#exportar-el-estado"}},[e._v("#")]),e._v(" Exportar el estado")]),e._v(" "),o("p",[e._v("Gaia puede volcar todo el estado de la aplicación a un archivo JSON, que podría ser útil para el análisis manual y también puede ser usado como el archivo génesis para una nueva red.")]),e._v(" "),o("p",[e._v("Exporte el estado con:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("También puede exportar el estado desde una altura en especial (al final del procesamiento del bloque en esa altura):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("Si desea empezar una nueva red desde el estado exportado, expórtelo con la opción "),o("code",[e._v("--for-zero-height")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("h2",{attrs:{id:"verifica-la-red-principal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifica-la-red-principal"}},[e._v("#")]),e._v(" Verifica la red principal")]),e._v(" "),o("p",[e._v("Ayude a prevenir problemas críticos ejecutando invariantes en cada bloque de su nodo. En esencia, al ejecutar invariantes se asegura que el estado de la red principal es el estado esperado correcto. Una comprobación de la invariante vital es que ningún átomo está siendo creado o destruido fuera del protocolo esperado, sin embargo hay muchas otras invariantes, comprueben cada una de ellas de forma única para su respectivo módulo. Porque la invariante es costosa desde el punto de vista computacional, no están habilitados por defecto. Para ejecutar un nodo con estas comprobaciones inicie su nodo con la opción "),o("code",[e._v("inv-check-period")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),e._v(" "),o("p",[e._v("Si se rompe una invariante en su nodo, su nodo entrará en pánico ("),o("code",[e._v("panic")]),e._v(" de Golang) y le pedirá que envíe una transacción que detenga la red principal. Por ejemplo, el mensaje proporcionado puede parecerse a:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),e._v(" "),o("p",[e._v("Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).")]),e._v(" "),o("h2",{attrs:{id:"actualice-a-un-nodo-validador"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#actualice-a-un-nodo-validador"}},[e._v("#")]),e._v(" Actualice a un nodo validador")]),e._v(" "),o("p",[e._v("Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la "),o("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[e._v("Configuración del Validador")])],1)],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/73.bdaee872.js b/main/assets/js/73.6f0749f3.js similarity index 97% rename from main/assets/js/73.bdaee872.js rename to main/assets/js/73.6f0749f3.js index d2bc9a8b1dd..9e49c21a77a 100644 --- a/main/assets/js/73.bdaee872.js +++ b/main/assets/js/73.6f0749f3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{540:function(a,e,i){"use strict";i.r(e);var o=i(1),n=Object(o.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"¿que-es-gaia"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#¿que-es-gaia"}},[a._v("#")]),a._v(" ¿Qué es Gaia?")]),a._v(" "),i("p",[i("code",[a._v("gaia")]),a._v(" es el nombre de la aplicación de Cosmos SDK para el Hub de Cosmos. Viene con 2 opciones principales de entrada:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("gaiad")]),a._v(": El demonio de Gaia, ejecuta un full-node con la aplicacion "),i("code",[a._v("gaia")]),a._v(".")]),a._v(" "),i("li",[i("code",[a._v("gaiad")]),a._v(": Interface de línea de comandos de Gaia, la cual activa la interacción con en full-node de Gaia.")])]),a._v(" "),i("p",[i("code",[a._v("gaia")]),a._v(" es construida con el SDK de Cosmos usando los siguientes módulos:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("x/auth")]),a._v(": Cuentas y firmas.")]),a._v(" "),i("li",[i("code",[a._v("x/bank")]),a._v(": Transferencia de tokens.")]),a._v(" "),i("li",[i("code",[a._v("x/staking")]),a._v(": Lógica para el "),i("em",[a._v("staking")]),a._v(".")]),a._v(" "),i("li",[i("code",[a._v("x/mint")]),a._v(": Lógica para la inflacción.")]),a._v(" "),i("li",[i("code",[a._v("x/distribution")]),a._v(": Lógica para la distribución del FEE.")]),a._v(" "),i("li",[i("code",[a._v("x/slashing")]),a._v(": Lógica para la penalización.")]),a._v(" "),i("li",[i("code",[a._v("x/gov")]),a._v(": Lógica para la gobernanza.")]),a._v(" "),i("li",[i("code",[a._v("ibc-go/modules")]),a._v(": Transferencia entre blockchains.")]),a._v(" "),i("li",[i("code",[a._v("x/params")]),a._v(": Controla los parámetros del nivel de la aplicación.")]),a._v(" "),i("li",[i("code",[a._v("x/capability")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/crisis")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/evidence")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/genaccounts")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/mint")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/simulation")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/upgrade")]),a._v(":")])]),a._v(" "),i("p",[a._v("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.")]),a._v(" "),i("p",[a._v("Siguiente, aprenda como "),i("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[a._v("instalar Gaia")])],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{610:function(a,e,i){"use strict";i.r(e);var o=i(1),n=Object(o.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"¿que-es-gaia"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#¿que-es-gaia"}},[a._v("#")]),a._v(" ¿Qué es Gaia?")]),a._v(" "),i("p",[i("code",[a._v("gaia")]),a._v(" es el nombre de la aplicación de Cosmos SDK para el Hub de Cosmos. Viene con 2 opciones principales de entrada:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("gaiad")]),a._v(": El demonio de Gaia, ejecuta un full-node con la aplicacion "),i("code",[a._v("gaia")]),a._v(".")]),a._v(" "),i("li",[i("code",[a._v("gaiad")]),a._v(": Interface de línea de comandos de Gaia, la cual activa la interacción con en full-node de Gaia.")])]),a._v(" "),i("p",[i("code",[a._v("gaia")]),a._v(" es construida con el SDK de Cosmos usando los siguientes módulos:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("x/auth")]),a._v(": Cuentas y firmas.")]),a._v(" "),i("li",[i("code",[a._v("x/bank")]),a._v(": Transferencia de tokens.")]),a._v(" "),i("li",[i("code",[a._v("x/staking")]),a._v(": Lógica para el "),i("em",[a._v("staking")]),a._v(".")]),a._v(" "),i("li",[i("code",[a._v("x/mint")]),a._v(": Lógica para la inflacción.")]),a._v(" "),i("li",[i("code",[a._v("x/distribution")]),a._v(": Lógica para la distribución del FEE.")]),a._v(" "),i("li",[i("code",[a._v("x/slashing")]),a._v(": Lógica para la penalización.")]),a._v(" "),i("li",[i("code",[a._v("x/gov")]),a._v(": Lógica para la gobernanza.")]),a._v(" "),i("li",[i("code",[a._v("ibc-go/modules")]),a._v(": Transferencia entre blockchains.")]),a._v(" "),i("li",[i("code",[a._v("x/params")]),a._v(": Controla los parámetros del nivel de la aplicación.")]),a._v(" "),i("li",[i("code",[a._v("x/capability")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/crisis")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/evidence")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/genaccounts")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/mint")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/simulation")]),a._v(":")]),a._v(" "),i("li",[i("code",[a._v("x/upgrade")]),a._v(":")])]),a._v(" "),i("p",[a._v("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.")]),a._v(" "),i("p",[a._v("Siguiente, aprenda como "),i("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[a._v("instalar Gaia")])],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/74.e2a7ac04.js b/main/assets/js/74.c815b14c.js similarity index 99% rename from main/assets/js/74.e2a7ac04.js rename to main/assets/js/74.c815b14c.js index 0025a572331..dd85927852a 100644 --- a/main/assets/js/74.e2a7ac04.js +++ b/main/assets/js/74.c815b14c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{541:function(a,e,o){"use strict";o.r(e);var s=o(1),n=Object(s.a)({},(function(){var a=this,e=a.$createElement,o=a._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-3-y-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-y-la-community-pool"}},[a._v("#")]),a._v(" Cosmos Hub 3 y la Community Pool")]),a._v(" "),o("p",[a._v("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."),o("strong",[a._v("Esta documentación es un desarrollo en curso, por favor, de momento no te bases en esta información")]),a._v(" "),o("a",{attrs:{href:"https://forum.cosmos.network/t/gwg-community-spend-best-practices/3240",target:"_blank",rel:"noopener noreferrer"}},[a._v("Puedes debatir este desarrollo aquí"),o("OutboundLink")],1),a._v(".")]),a._v(" "),o("h2",{attrs:{id:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Por qué crear una propuesta para utilizar fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("Hay otras opciones de financiación, principalmente el programa de concesión de la Interchain Foundation. ¿Por qué crear una propuesta para gastos?")]),a._v(" "),o("p",[o("strong",[a._v("Como estrategia: puedes hacer ambas.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Como estrategia: la financiación es rápida.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Para crear buenas relaciones.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Para ser más independiente.")]),a._v(" 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.")]),a._v(" "),o("h2",{attrs:{id:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#creacion-de-una-propuesta-de-gastos-a-la-comunidad"}},[a._v("#")]),a._v(" Creación de una propuesta de gastos a la comunidad")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("Si estás considerando realizar una propuesta, deberías conocer:")]),a._v(" "),o("ol",[o("li",[o("a",{attrs:{href:"#sobre-la-community-pool"}},[a._v("Sobre la Community Pool")])]),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/overview.html#_2-voting-period"}},[a._v("Cómo funciona el mecanismo de voto y gobernanza")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/best_practices.html"}},[a._v("Dónde y cómo involucrar a la comunidad de Cosmos acerca de tu idea")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/community-pool-spend/best_practices.html#elements-of-a-community-spend-proposal"}},[a._v("Lo que la comunidad querrá saber sobre tu propuesta")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/submitting.html"}},[a._v("Cómo preparar tu borrador de propuesta final para ser enviada")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/submitting.html"}},[a._v("Cómo enviar tu propuesta al Cosmos Hub testnet & mainnet")])],1)]),a._v(" "),o("h2",{attrs:{id:"sobre-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sobre-la-community-pool"}},[a._v("#")]),a._v(" Sobre la Community Pool")]),a._v(" "),o("h3",{attrs:{id:"¿como-esta-financiada-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-esta-financiada-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo está financiada la Community Pool?")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("h3",{attrs:{id:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-puede-cambiar-la-financiacion-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo puede cambiar la financiación de la Community Pool?")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("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 "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5249",target:"_blank",rel:"noopener noreferrer"}},[a._v("aqui"),o("OutboundLink")],1),a._v(". ¿Qué hace que esta funcionalidad sea importante?")]),a._v(" "),o("ol",[o("li",[a._v("Los proyectos financiados que finalmente no se ejecuten deben devolver los fondos a la Community Pool;")]),a._v(" "),o("li",[a._v("Las entidades podrían ayudar a aportar fondos a la Community Pool mediante aportación directa a la cuenta.")])]),a._v(" "),o("h3",{attrs:{id:"¿cual-es-el-saldo-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿cual-es-el-saldo-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cuál es el saldo de la Community Pool?")]),a._v(" "),o("p",[a._v("Puedes solicitar directamente al Cosmos Hub 3 el saldo de la Community Pool:")]),a._v(" "),o("p",[o("code",[a._v("gaiad q distribution community-pool --chain-id cosmoshub-3 --node cosmos-node-1.figment.io:26657")])]),a._v(" "),o("p",[a._v("De forma alternativa, los navegadores de Cosmos más populares como "),o("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[a._v("Mintscan"),o("OutboundLink")],1),a._v(" y "),o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[a._v("Big Dipper"),o("OutboundLink")],1),a._v(" muestran la evolución del saldo de la Community Pool.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-pueden-gastar-los-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo se pueden gastar los fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("Los fondos de la Cosmos Community Pool pueden ser gastados a través de propuestas de gobernanza aprobadas.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-deberian-gastar-los-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo se deberían gastar los fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("No lo sabemos 🤷")]),a._v(" "),o("p",[a._v("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:")]),a._v(" "),o("ul",[o("li",[a._v("concesiones retroactivas")]),a._v(" "),o("li",[a._v("negociación de precio")]),a._v(" "),o("li",[a._v("desembolso de fondos (por ejemplo, pagos por fases; pagos fijos para reducir volatilidad)")]),a._v(" "),o("li",[a._v("revisión drástica de cómo los mecanimos de gastos de comunidad funcionan")])]),a._v(" "),o("p",[a._v("Esperamos que todo esto tome forma a medida que las propuestas sean debatidas, aceptadas, y rechazadas por parte de la comunidad Cosmos Hub.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}},[a._v("#")]),a._v(" ¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?")]),a._v(" "),o("p",[a._v("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.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{609:function(a,e,o){"use strict";o.r(e);var s=o(1),n=Object(s.a)({},(function(){var a=this,e=a.$createElement,o=a._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-3-y-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-y-la-community-pool"}},[a._v("#")]),a._v(" Cosmos Hub 3 y la Community Pool")]),a._v(" "),o("p",[a._v("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."),o("strong",[a._v("Esta documentación es un desarrollo en curso, por favor, de momento no te bases en esta información")]),a._v(" "),o("a",{attrs:{href:"https://forum.cosmos.network/t/gwg-community-spend-best-practices/3240",target:"_blank",rel:"noopener noreferrer"}},[a._v("Puedes debatir este desarrollo aquí"),o("OutboundLink")],1),a._v(".")]),a._v(" "),o("h2",{attrs:{id:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Por qué crear una propuesta para utilizar fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("Hay otras opciones de financiación, principalmente el programa de concesión de la Interchain Foundation. ¿Por qué crear una propuesta para gastos?")]),a._v(" "),o("p",[o("strong",[a._v("Como estrategia: puedes hacer ambas.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Como estrategia: la financiación es rápida.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Para crear buenas relaciones.")]),a._v(" 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.")]),a._v(" "),o("p",[o("strong",[a._v("Para ser más independiente.")]),a._v(" 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.")]),a._v(" "),o("h2",{attrs:{id:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#creacion-de-una-propuesta-de-gastos-a-la-comunidad"}},[a._v("#")]),a._v(" Creación de una propuesta de gastos a la comunidad")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("Si estás considerando realizar una propuesta, deberías conocer:")]),a._v(" "),o("ol",[o("li",[o("a",{attrs:{href:"#sobre-la-community-pool"}},[a._v("Sobre la Community Pool")])]),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/overview.html#_2-voting-period"}},[a._v("Cómo funciona el mecanismo de voto y gobernanza")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/best_practices.html"}},[a._v("Dónde y cómo involucrar a la comunidad de Cosmos acerca de tu idea")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/community-pool-spend/best_practices.html#elements-of-a-community-spend-proposal"}},[a._v("Lo que la comunidad querrá saber sobre tu propuesta")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/submitting.html"}},[a._v("Cómo preparar tu borrador de propuesta final para ser enviada")])],1),a._v(" "),o("li",[o("RouterLink",{attrs:{to:"/es/governance/submitting.html"}},[a._v("Cómo enviar tu propuesta al Cosmos Hub testnet & mainnet")])],1)]),a._v(" "),o("h2",{attrs:{id:"sobre-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sobre-la-community-pool"}},[a._v("#")]),a._v(" Sobre la Community Pool")]),a._v(" "),o("h3",{attrs:{id:"¿como-esta-financiada-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-esta-financiada-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo está financiada la Community Pool?")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("h3",{attrs:{id:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-puede-cambiar-la-financiacion-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo puede cambiar la financiación de la Community Pool?")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("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.")]),a._v(" "),o("p",[a._v("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 "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5249",target:"_blank",rel:"noopener noreferrer"}},[a._v("aqui"),o("OutboundLink")],1),a._v(". ¿Qué hace que esta funcionalidad sea importante?")]),a._v(" "),o("ol",[o("li",[a._v("Los proyectos financiados que finalmente no se ejecuten deben devolver los fondos a la Community Pool;")]),a._v(" "),o("li",[a._v("Las entidades podrían ayudar a aportar fondos a la Community Pool mediante aportación directa a la cuenta.")])]),a._v(" "),o("h3",{attrs:{id:"¿cual-es-el-saldo-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿cual-es-el-saldo-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cuál es el saldo de la Community Pool?")]),a._v(" "),o("p",[a._v("Puedes solicitar directamente al Cosmos Hub 3 el saldo de la Community Pool:")]),a._v(" "),o("p",[o("code",[a._v("gaiad q distribution community-pool --chain-id cosmoshub-3 --node cosmos-node-1.figment.io:26657")])]),a._v(" "),o("p",[a._v("De forma alternativa, los navegadores de Cosmos más populares como "),o("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[a._v("Mintscan"),o("OutboundLink")],1),a._v(" y "),o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[a._v("Big Dipper"),o("OutboundLink")],1),a._v(" muestran la evolución del saldo de la Community Pool.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-pueden-gastar-los-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo se pueden gastar los fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("Los fondos de la Cosmos Community Pool pueden ser gastados a través de propuestas de gobernanza aprobadas.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-deberian-gastar-los-fondos-de-la-community-pool"}},[a._v("#")]),a._v(" ¿Cómo se deberían gastar los fondos de la Community Pool?")]),a._v(" "),o("p",[a._v("No lo sabemos 🤷")]),a._v(" "),o("p",[a._v("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:")]),a._v(" "),o("ul",[o("li",[a._v("concesiones retroactivas")]),a._v(" "),o("li",[a._v("negociación de precio")]),a._v(" "),o("li",[a._v("desembolso de fondos (por ejemplo, pagos por fases; pagos fijos para reducir volatilidad)")]),a._v(" "),o("li",[a._v("revisión drástica de cómo los mecanimos de gastos de comunidad funcionan")])]),a._v(" "),o("p",[a._v("Esperamos que todo esto tome forma a medida que las propuestas sean debatidas, aceptadas, y rechazadas por parte de la comunidad Cosmos Hub.")]),a._v(" "),o("h3",{attrs:{id:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}},[a._v("#")]),a._v(" ¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?")]),a._v(" "),o("p",[a._v("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.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/75.d85e841f.js b/main/assets/js/75.c5969d5f.js similarity index 99% rename from main/assets/js/75.d85e841f.js rename to main/assets/js/75.c5969d5f.js index 252932e60ad..12f8d9ac2b8 100644 --- a/main/assets/js/75.d85e841f.js +++ b/main/assets/js/75.c5969d5f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{499:function(e,a,o){"use strict";o.r(a);var r=o(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"modulo-gov"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#modulo-gov"}},[e._v("#")]),e._v(" Módulo "),o("code",[e._v("gov")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable de las propuestas de gobierno en cadena y la funcionalidad de la votación. Nótese que "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[e._v("este módulo requiere una forma única de cambiar sus parámetros"),o("OutboundLink")],1),e._v(". "),o("code",[e._v("gov")]),e._v(" está activo en Cosmos Hub 3 y actualmente tiene tres parámetros con seis subkeys que pueden ser modificados por una propuesta de gobernanza:")]),e._v(" "),o("ol",[o("li",[o("p",[o("a",{attrs:{href:"#1-depositparams"}},[o("code",[e._v("depositparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#mindeposit"}},[o("code",[e._v("mindeposit")])]),e._v(" - "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")]),e._v(" (micro-ATOMs)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#maxdepositperiod"}},[o("code",[e._v("maxdepositperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#2-votingparams"}},[o("code",[e._v("votingparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#votingperiod"}},[o("code",[e._v("votingperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#3-tallyparams"}},[o("code",[e._v("tallyparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#quorum"}},[o("code",[e._v("quorum")])]),e._v(" - "),o("code",[e._v("0.400000000000000000")]),e._v(" (proporción de la red)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#threshold"}},[o("code",[e._v("threshold")])]),e._v(" - "),o("code",[e._v("0.500000000000000000")]),e._v(" (proporción del poder de voto)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#veto"}},[o("code",[e._v("veto")])]),e._v(" - "),o("code",[e._v("0.334000000000000000")]),e._v(" (proporción del poder de voto)")])])])]),e._v(" "),o("p",[e._v("Los valores de lanzamiento de cada subkey de los parámetros están indicados arriba, pero puede "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#verify-parameter-values"}},[e._v("verificarlos usted mismo")]),e._v(".")],1),e._v(" "),o("p",[e._v("Se están considerando "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#future"}},[e._v("algunas funciones adicionales")]),e._v(" para el desarrollo del módulo de gobernanza.")],1),e._v(" "),o("p",[e._v("Si estás técnicamente preparado, "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("estas son las especificaciones técnicas")]),e._v(". Si quieres crear una propuesta para cambiar uno o más de estos parámetros, "),o("RouterLink",{attrs:{to:"/es/governance/submitting.html#formatting-the-json-file-for-the-governance-proposal"}},[e._v("mira esta sección para el formato")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"_1-depositparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-depositparams"}},[e._v("#")]),e._v(" 1. "),o("code",[e._v("depositparams")])]),e._v(" "),o("h2",{attrs:{id:"mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mindeposit"}},[e._v("#")]),e._v(" "),o("code",[e._v("mindeposit")])]),e._v(" "),o("h3",{attrs:{id:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[e._v("#")]),e._v(" El depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", en micro-ATOMs")],1),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-512000000-uatom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-512000000-uatom"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" (es decir, para que la propuesta sea votada), debe haber al menos un número mínimo de ATOMs depositados. Cualquiera puede contribuir a este depósito. Los depósitos de las propuestas aprobadas y fallidas se devuelven a los contribuyentes. Los depósitos se queman cuando las propuestas 1) "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#maxdepositperiod"}},[e._v("expiran")]),e._v(", 2) no alcanzan el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(", o 3) son "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#veto"}},[e._v("vetadas")]),e._v(". El valor de subkey de este parámetro representa el depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" en micro-ATOMs, donde "),o("code",[e._v("512000000uatom")]),e._v(" equivalen a 512 ATOM.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-mindeposit"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" permitirá que las propuestas de gobernanza entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" con menos ATOMs en juego. Es probable que esto aumente el volumen de nuevas propuestas de gobernanza.")],1),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-mindeposit"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("Para aumentar el valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" será necesario arriesgar un mayor número de ATOMs antes de que las propuestas de gobierno puedan entrar en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Es probable que esto disminuya el volumen de nuevas propuestas de gobierno.")],1),e._v(" "),o("h2",{attrs:{id:"maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#maxdepositperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", debe haber al menos un número mínimo de ATOMs depositados. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para alcanzar la cantidad mínima de depósito antes de expirar. La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar es actualmente de 1209600000000000 nanosegundos o 14 días. Si la propuesta expira, cualquier cantidad de depósito será quemada.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-2"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" reducirá el tiempo de depósito de las contribuciones a las propuestas de gobernanza. Es probable que esto disminuya el tiempo que algunas propuestas permanecen visibles y que disminuya la probabilidad de que entren en el período de votación. Esto puede aumentar la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" ampliará el plazo para las contribuciones de depósito a las propuestas de gobernanza. Es probable que esto aumente el tiempo en que algunas propuestas siguen siendo visibles y aumente potencialmente la probabilidad de que entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto puede disminuir la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")],1),e._v(" "),o("h4",{attrs:{id:"observaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("Actualmente, la mayoría de los exploradores de la red (por ejemplo, Hubble, Big Dipper, Mintscan) dan la misma visibilidad a las propuestas en el período de depósito que a las del "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto significa que una propuesta con un pequeño depósito (por ejemplo, 0.001 ATOM) tendrá la misma visibilidad que aquellas con un depósito completo de 512 ATOM en el período de votación.")],1),e._v(" "),o("h2",{attrs:{id:"_2-votingparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-votingparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("votingparams")])]),e._v(" "),o("h2",{attrs:{id:"votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("votingperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000-2"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Una vez que una propuesta de gobierno entra en el período de votación, hay un período máximo de tiempo que puede transcurrir antes de que concluya el período de votación. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para aceptar los votos, que actualmente es de "),o("code",[e._v("1209600000000000")]),e._v(" nanosegundos o 14 días. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este tiempo, se quemarán las cantidades depositadas y el resultado de la propuesta no se considerará válido. Los votantes pueden cambiar su voto tantas veces como quieran antes de que termine el período de votación. Este período de votación es actualmente el mismo para cualquier tipo de propuesta de gobierno.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-3"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-votingperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" reducirá el tiempo de votación de las propuestas de gobernanza. Esto podría significar:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("disminución de la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-votingperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" aumentará el tiempo de votación de las propuestas de gobernanza. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentar la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("aumentar la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"observaciones-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones-2"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("Históricamente, los debates y el compromiso fuera de la cadena parecen haber sido mayores durante el período de votación de una propuesta de gobernanza que cuando la propuesta se publica fuera de la cadena como un boceto. En la segunda semana del período de votación se ha votado una cantidad no trivial del poder de voto. Las propuestas 23, 19 y 13 tuvieron cada una aproximadamente un 80% de participación en la red o más.")]),e._v(" "),o("h2",{attrs:{id:"_2-tallyparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-tallyparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("tallyparams")])]),e._v(" "),o("h2",{attrs:{id:"quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),o("code",[e._v("quorum")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de la red que se requiere para que el resultado de una propuesta de gobierno se considere válido")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-400000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-400000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.400000000000000000")])]),e._v(" "),o("p",[e._v("Se requiere quórum para que el resultado de la votación de una propuesta de gobierno se considere válido y para que los contribuyentes de depósitos recuperen sus cantidades depositadas, y el valor de subkey de este parámetro representa el valor mínimo para el quórum. El poder de voto, ya sea que respalde un voto de 'yes', 'abstain', 'no', or 'no-with-veto', cuenta para el quórum. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este momento, se quemará cualquier cantidad depositada y el resultado de la propuesta no se considerará válido.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-4"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-4"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-quorum"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("quorum")]),e._v(" permitirá que una proporción menor de la red legitime el resultado de una propuesta. Esto aumenta el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que disminuye el riesgo de que una propuesta se considere inválida. Esto probablemente disminuirá el riesgo de que el depósito de una propuesta se queme.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-quorum"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("quorum")]),e._v(" requerirá una mayor proporción de la red para legitimar el resultado de una propuesta. Esto disminuye el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que aumenta el riesgo de que una propuesta se considere inválida. Es probable que esto aumente el riesgo de que se queme el depósito de una propuesta.")]),e._v(" "),o("h2",{attrs:{id:"threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),o("code",[e._v("threshold")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-500000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-500000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.500000000000000000")])]),e._v(" "),o("p",[e._v("Se requiere una mayoría simple de votos a favor (es decir, el 50% del poder de voto participativo) para que se apruebe una propuesta de gobierno. Aunque es necesario, un voto de mayoría simple 'yes' puede no ser suficiente para aprobar una propuesta en dos escenarios:")]),e._v(" "),o("ol",[o("li",[e._v("No se alcanza un "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(" del 40% de la capacidad de la red o")],1),e._v(" "),o("li",[e._v("Un voto de 'no-with-veto' del 33,4% del poder de voto o mayor.")])]),e._v(" "),o("p",[e._v("Si se aprueba una propuesta de gobernanza, las cantidades depositadas se devuelven a los contribuyentes. Si se aprueba una propuesta basada en texto, nada se promulga automáticamente, pero existe una expectativa social de que los participantes se coordinen para promulgar los compromisos señalados en la propuesta. Si se aprueba una propuesta de cambio de parámetros, el parámetro de protocolo cambiará inmediatamente después de que termine el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", y sin necesidad de ejecutar un nuevo software. Si se aprueba una propuesta de gasto comunitario, el saldo de la Reserva Comunitaria disminuirá en el número de ATOMs indicados en la propuesta y la dirección del destinatario aumentará en ese mismo número de ATOMs inmediatamente después de que termine el período de votación.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-5"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-5"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-threshold"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("threshold")]),e._v(" disminuirá la proporción del poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentará la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("aumentará la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-threshold"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("threshold")]),e._v(" aumentará la proporción de poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("disminuir la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h2",{attrs:{id:"veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#veto"}},[e._v("#")]),e._v(" "),o("code",[e._v("veto")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-334000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-334000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.334000000000000000")])]),e._v(" "),o("p",[e._v("Aunque se requiere un voto de 'yes' por mayoría simple (es decir, el 50% del poder de voto participante) para que se apruebe una propuesta de gobierno, un voto de 'no-with-veto' del 33,4% del poder de voto participante o superior puede anular este resultado y hacer que la propuesta fracase. Esto permite que un grupo minoritario que represente más de 1/3 del poder de voto pueda hacer fracasar una propuesta que de otro modo sería aprobada.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-6"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-6"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-veto"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Disminuir el valor de subkey "),o("code",[e._v("veto")]),e._v(" disminuirá la proporción de poder de voto de los participantes requerida para vetar. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("permiten a un grupo minoritario más pequeño evitar que las propuestas sean aprobadas, y")]),e._v(" "),o("li",[e._v("disminuyen la probabilidad de que se aprueben propuestas controvertidas.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-veto"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("veto")]),e._v(" aumentará la proporción del poder de voto requerido para vetar. Esto requerirá un grupo minoritario más grande para evitar que las propuestas sean aprobadas, y probablemente aumentará la probabilidad de que se aprueben las propuestas controvertidas.")]),e._v(" "),o("h1",{attrs:{id:"verificar-los-valores-de-los-parametros"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verificar-los-valores-de-los-parametros"}},[e._v("#")]),e._v(" Verificar los valores de los parámetros")]),e._v(" "),o("h2",{attrs:{id:"parametros-de-genesis-aka-lanzamiento"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-de-genesis-aka-lanzamiento"}},[e._v("#")]),e._v(" Parámetros de Génesis (aka lanzamiento)")]),e._v(" "),o("p",[e._v("Esto es útil si no tienes "),o("code",[e._v("gaiad")]),e._v(" instalado y no tienes una razón para creer que el parámetro ha cambiado desde que se lanzó la cadena.")]),e._v(" "),o("p",[e._v("Cada parámetro puede ser verificado en el archivo génesis de la cadena, que encuentra "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(". Estos son los parámetros con los que la última cadena del Hub de Cosmos se lanzó, y seguirá haciéndolo, a menos que una propuesta de gobierno los cambie. He resumido esos valores originales en la sección "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("Especificaciones Técnicas")]),e._v(".")],1),e._v(" "),o("p",[e._v("El archivo génesis contiene texto y es grande. El esquema de nombres de los parámetros de génesis no es idéntico a los de la lista anterior, así que cuando busco, pongo un guión bajo entre los caracteres en mayúsculas y minúsculas, y luego convierto todos los caracteres a minúsculas.")]),e._v(" "),o("p",[e._v("Por ejemplo, si quiero buscar "),o("code",[e._v("depositparams")]),e._v(", buscaré en el "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("génesis"),o("OutboundLink")],1),e._v(" "),o("code",[e._v("deposit_params")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"parametros-actuales"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-actuales"}},[e._v("#")]),e._v(" Parámetros actuales")]),e._v(" "),o("p",[e._v("Puede verificar los valores actuales de los parámetros (en caso de que hayan sido modificados mediante la propuesta de gobierno posterior al lanzamiento) con la aplicación de "),o("a",{attrs:{href:"params-change/gaiad"}},[e._v("línea de comandos gaiad")]),e._v(". Aquí están los comandos para cada uno:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("depositparams")]),e._v(" - "),o("code",[e._v("gaiad q ..")]),e._v(" --\x3e "),o("strong",[e._v("to do")]),e._v(" <--")])]),e._v(" "),o("h2",{attrs:{id:"futuro"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#futuro"}},[e._v("#")]),e._v(" Futuro")]),e._v(" "),o("p",[e._v("La documentación actual sólo describe el producto mínimo viable para el módulo de gobernanza. Las mejoras futuras pueden incluir:")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[o("code",[e._v("BountyProposals")]),e._v(":")]),e._v(" Si es aceptada, un "),o("code",[e._v("BountyProposal")]),e._v(" crea una recompensa abierta. El "),o("code",[e._v("BountyProposal")]),e._v(" especifica cuántos átomos se entregarán al finalizar. Estos átomos serán tomados del "),o("code",[e._v("reserve pool")]),e._v(". Después de que un "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado por el gobierno, cualquiera puede presentar un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con el código para reclamar la recompensa. Tenga en cuenta que una vez que el "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado, los fondos correspondientes en la "),o("code",[e._v("reserve pool")]),e._v(" se bloquean para que el pago siempre pueda ser cumplido. Para vincular un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con una recompensa abierta, el remitente del "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" utilizará el atributo "),o("code",[e._v("Proposal.LinkedProposal")]),e._v(". Si un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" vinculado a una recompensa abierta es aceptado por la administración, los fondos reservados se transfieren automáticamente al autor de la propuesta.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Complex delegation:")]),e._v(" Los delegadores podrán elegir otros representantes además de sus validadores. En última instancia, la cadena de representantes siempre terminaría en un validador, pero los delegadores podrían heredar el voto de su representante elegido antes de heredar el voto de su validador. En otras palabras, sólo heredarían el voto de su validador si su otro representante designado no votara.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Mejor proceso de revisión de propuestas:")]),e._v(" La propuesta consta de dos partes de "),o("code",[e._v("proposal.Deposit")]),e._v(", uno para la lucha contra el correo basura (igual que en el MVP) y otro para recompensar a los auditores de terceros.")]),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/spec/05_future_improvements.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("origen"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"especificaciones-tecnicas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#especificaciones-tecnicas"}},[e._v("#")]),e._v(" Especificaciones técnicas")]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable del sistema de gobierno de la cadena. En este sistema, los titulares del token nativo de la cadena pueden votar sobre las propuestas en una base de 1-token, 1-voto. A continuación hay una lista de las características que el módulo apoya actualmente:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Entrega de propuestas")]),e._v(": Los usuarios pueden presentar propuestas con un depósito. Una vez que se alcanza el depósito mínimo, la propuesta entra en el período de votación.")]),e._v(" "),o("li",[o("strong",[e._v("Voto")]),e._v(": Los participantes pueden votar sobre las propuestas que llegaron a "),o("code",[e._v("MinDeposit")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Herencia y sanciones")]),e._v(": Los delegadores heredan su voto de validación si no votan ellos mismos.")]),e._v(" "),o("li",[o("strong",[e._v("Reclamación del depósito")]),e._v(": Los usuarios que depositaron en las propuestas pueden recuperar sus depósitos si la propuesta fue aceptada O si la propuesta nunca entró en el período de votación.")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" contiene los siguientes parámetros:")]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("min_deposit")]),e._v(" "),o("td",[e._v("array (coins)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('[{"denom":"uatom","amount":"512000000"}]')])]),e._v(" "),o("tr",[o("td",[e._v("max_deposit_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("votingparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkey")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("voting_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("quorum")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.400000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("threshold")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.500000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("veto")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.334000000000000000"')])])])]),e._v(" "),o("p",[o("strong",[e._v("Observación")]),e._v(": El módulo de gobierno contiene parámetros que son objetos que no son como los demás módulos. Si sólo se desea modificar un subconjunto de parámetros, sólo hay que incluirlos y no toda la estructura de objetos de parámetros.")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{500:function(e,a,o){"use strict";o.r(a);var r=o(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"modulo-gov"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#modulo-gov"}},[e._v("#")]),e._v(" Módulo "),o("code",[e._v("gov")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable de las propuestas de gobierno en cadena y la funcionalidad de la votación. Nótese que "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[e._v("este módulo requiere una forma única de cambiar sus parámetros"),o("OutboundLink")],1),e._v(". "),o("code",[e._v("gov")]),e._v(" está activo en Cosmos Hub 3 y actualmente tiene tres parámetros con seis subkeys que pueden ser modificados por una propuesta de gobernanza:")]),e._v(" "),o("ol",[o("li",[o("p",[o("a",{attrs:{href:"#1-depositparams"}},[o("code",[e._v("depositparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#mindeposit"}},[o("code",[e._v("mindeposit")])]),e._v(" - "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")]),e._v(" (micro-ATOMs)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#maxdepositperiod"}},[o("code",[e._v("maxdepositperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#2-votingparams"}},[o("code",[e._v("votingparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#votingperiod"}},[o("code",[e._v("votingperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#3-tallyparams"}},[o("code",[e._v("tallyparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#quorum"}},[o("code",[e._v("quorum")])]),e._v(" - "),o("code",[e._v("0.400000000000000000")]),e._v(" (proporción de la red)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#threshold"}},[o("code",[e._v("threshold")])]),e._v(" - "),o("code",[e._v("0.500000000000000000")]),e._v(" (proporción del poder de voto)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#veto"}},[o("code",[e._v("veto")])]),e._v(" - "),o("code",[e._v("0.334000000000000000")]),e._v(" (proporción del poder de voto)")])])])]),e._v(" "),o("p",[e._v("Los valores de lanzamiento de cada subkey de los parámetros están indicados arriba, pero puede "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#verify-parameter-values"}},[e._v("verificarlos usted mismo")]),e._v(".")],1),e._v(" "),o("p",[e._v("Se están considerando "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#future"}},[e._v("algunas funciones adicionales")]),e._v(" para el desarrollo del módulo de gobernanza.")],1),e._v(" "),o("p",[e._v("Si estás técnicamente preparado, "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("estas son las especificaciones técnicas")]),e._v(". Si quieres crear una propuesta para cambiar uno o más de estos parámetros, "),o("RouterLink",{attrs:{to:"/es/governance/submitting.html#formatting-the-json-file-for-the-governance-proposal"}},[e._v("mira esta sección para el formato")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"_1-depositparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-depositparams"}},[e._v("#")]),e._v(" 1. "),o("code",[e._v("depositparams")])]),e._v(" "),o("h2",{attrs:{id:"mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mindeposit"}},[e._v("#")]),e._v(" "),o("code",[e._v("mindeposit")])]),e._v(" "),o("h3",{attrs:{id:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[e._v("#")]),e._v(" El depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", en micro-ATOMs")],1),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-512000000-uatom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-512000000-uatom"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" (es decir, para que la propuesta sea votada), debe haber al menos un número mínimo de ATOMs depositados. Cualquiera puede contribuir a este depósito. Los depósitos de las propuestas aprobadas y fallidas se devuelven a los contribuyentes. Los depósitos se queman cuando las propuestas 1) "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#maxdepositperiod"}},[e._v("expiran")]),e._v(", 2) no alcanzan el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(", o 3) son "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#veto"}},[e._v("vetadas")]),e._v(". El valor de subkey de este parámetro representa el depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" en micro-ATOMs, donde "),o("code",[e._v("512000000uatom")]),e._v(" equivalen a 512 ATOM.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-mindeposit"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" permitirá que las propuestas de gobernanza entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" con menos ATOMs en juego. Es probable que esto aumente el volumen de nuevas propuestas de gobernanza.")],1),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-mindeposit"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("Para aumentar el valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" será necesario arriesgar un mayor número de ATOMs antes de que las propuestas de gobierno puedan entrar en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Es probable que esto disminuya el volumen de nuevas propuestas de gobierno.")],1),e._v(" "),o("h2",{attrs:{id:"maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#maxdepositperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", debe haber al menos un número mínimo de ATOMs depositados. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para alcanzar la cantidad mínima de depósito antes de expirar. La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar es actualmente de 1209600000000000 nanosegundos o 14 días. Si la propuesta expira, cualquier cantidad de depósito será quemada.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-2"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" reducirá el tiempo de depósito de las contribuciones a las propuestas de gobernanza. Es probable que esto disminuya el tiempo que algunas propuestas permanecen visibles y que disminuya la probabilidad de que entren en el período de votación. Esto puede aumentar la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" ampliará el plazo para las contribuciones de depósito a las propuestas de gobernanza. Es probable que esto aumente el tiempo en que algunas propuestas siguen siendo visibles y aumente potencialmente la probabilidad de que entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto puede disminuir la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")],1),e._v(" "),o("h4",{attrs:{id:"observaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("Actualmente, la mayoría de los exploradores de la red (por ejemplo, Hubble, Big Dipper, Mintscan) dan la misma visibilidad a las propuestas en el período de depósito que a las del "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto significa que una propuesta con un pequeño depósito (por ejemplo, 0.001 ATOM) tendrá la misma visibilidad que aquellas con un depósito completo de 512 ATOM en el período de votación.")],1),e._v(" "),o("h2",{attrs:{id:"_2-votingparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-votingparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("votingparams")])]),e._v(" "),o("h2",{attrs:{id:"votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("votingperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000-2"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Una vez que una propuesta de gobierno entra en el período de votación, hay un período máximo de tiempo que puede transcurrir antes de que concluya el período de votación. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para aceptar los votos, que actualmente es de "),o("code",[e._v("1209600000000000")]),e._v(" nanosegundos o 14 días. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este tiempo, se quemarán las cantidades depositadas y el resultado de la propuesta no se considerará válido. Los votantes pueden cambiar su voto tantas veces como quieran antes de que termine el período de votación. Este período de votación es actualmente el mismo para cualquier tipo de propuesta de gobierno.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-3"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-votingperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" reducirá el tiempo de votación de las propuestas de gobernanza. Esto podría significar:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("disminución de la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-votingperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" aumentará el tiempo de votación de las propuestas de gobernanza. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentar la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("aumentar la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"observaciones-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones-2"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("Históricamente, los debates y el compromiso fuera de la cadena parecen haber sido mayores durante el período de votación de una propuesta de gobernanza que cuando la propuesta se publica fuera de la cadena como un boceto. En la segunda semana del período de votación se ha votado una cantidad no trivial del poder de voto. Las propuestas 23, 19 y 13 tuvieron cada una aproximadamente un 80% de participación en la red o más.")]),e._v(" "),o("h2",{attrs:{id:"_2-tallyparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-tallyparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("tallyparams")])]),e._v(" "),o("h2",{attrs:{id:"quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),o("code",[e._v("quorum")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de la red que se requiere para que el resultado de una propuesta de gobierno se considere válido")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-400000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-400000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.400000000000000000")])]),e._v(" "),o("p",[e._v("Se requiere quórum para que el resultado de la votación de una propuesta de gobierno se considere válido y para que los contribuyentes de depósitos recuperen sus cantidades depositadas, y el valor de subkey de este parámetro representa el valor mínimo para el quórum. El poder de voto, ya sea que respalde un voto de 'yes', 'abstain', 'no', or 'no-with-veto', cuenta para el quórum. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este momento, se quemará cualquier cantidad depositada y el resultado de la propuesta no se considerará válido.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-4"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-4"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-quorum"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("quorum")]),e._v(" permitirá que una proporción menor de la red legitime el resultado de una propuesta. Esto aumenta el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que disminuye el riesgo de que una propuesta se considere inválida. Esto probablemente disminuirá el riesgo de que el depósito de una propuesta se queme.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-quorum"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("quorum")]),e._v(" requerirá una mayor proporción de la red para legitimar el resultado de una propuesta. Esto disminuye el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que aumenta el riesgo de que una propuesta se considere inválida. Es probable que esto aumente el riesgo de que se queme el depósito de una propuesta.")]),e._v(" "),o("h2",{attrs:{id:"threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),o("code",[e._v("threshold")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-500000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-500000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.500000000000000000")])]),e._v(" "),o("p",[e._v("Se requiere una mayoría simple de votos a favor (es decir, el 50% del poder de voto participativo) para que se apruebe una propuesta de gobierno. Aunque es necesario, un voto de mayoría simple 'yes' puede no ser suficiente para aprobar una propuesta en dos escenarios:")]),e._v(" "),o("ol",[o("li",[e._v("No se alcanza un "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(" del 40% de la capacidad de la red o")],1),e._v(" "),o("li",[e._v("Un voto de 'no-with-veto' del 33,4% del poder de voto o mayor.")])]),e._v(" "),o("p",[e._v("Si se aprueba una propuesta de gobernanza, las cantidades depositadas se devuelven a los contribuyentes. Si se aprueba una propuesta basada en texto, nada se promulga automáticamente, pero existe una expectativa social de que los participantes se coordinen para promulgar los compromisos señalados en la propuesta. Si se aprueba una propuesta de cambio de parámetros, el parámetro de protocolo cambiará inmediatamente después de que termine el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", y sin necesidad de ejecutar un nuevo software. Si se aprueba una propuesta de gasto comunitario, el saldo de la Reserva Comunitaria disminuirá en el número de ATOMs indicados en la propuesta y la dirección del destinatario aumentará en ese mismo número de ATOMs inmediatamente después de que termine el período de votación.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-5"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-5"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-threshold"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("threshold")]),e._v(" disminuirá la proporción del poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentará la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("aumentará la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-threshold"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("threshold")]),e._v(" aumentará la proporción de poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("disminuir la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h2",{attrs:{id:"veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#veto"}},[e._v("#")]),e._v(" "),o("code",[e._v("veto")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-334000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-334000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.334000000000000000")])]),e._v(" "),o("p",[e._v("Aunque se requiere un voto de 'yes' por mayoría simple (es decir, el 50% del poder de voto participante) para que se apruebe una propuesta de gobierno, un voto de 'no-with-veto' del 33,4% del poder de voto participante o superior puede anular este resultado y hacer que la propuesta fracase. Esto permite que un grupo minoritario que represente más de 1/3 del poder de voto pueda hacer fracasar una propuesta que de otro modo sería aprobada.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-6"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-6"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-veto"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Disminuir el valor de subkey "),o("code",[e._v("veto")]),e._v(" disminuirá la proporción de poder de voto de los participantes requerida para vetar. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("permiten a un grupo minoritario más pequeño evitar que las propuestas sean aprobadas, y")]),e._v(" "),o("li",[e._v("disminuyen la probabilidad de que se aprueben propuestas controvertidas.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-veto"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("veto")]),e._v(" aumentará la proporción del poder de voto requerido para vetar. Esto requerirá un grupo minoritario más grande para evitar que las propuestas sean aprobadas, y probablemente aumentará la probabilidad de que se aprueben las propuestas controvertidas.")]),e._v(" "),o("h1",{attrs:{id:"verificar-los-valores-de-los-parametros"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verificar-los-valores-de-los-parametros"}},[e._v("#")]),e._v(" Verificar los valores de los parámetros")]),e._v(" "),o("h2",{attrs:{id:"parametros-de-genesis-aka-lanzamiento"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-de-genesis-aka-lanzamiento"}},[e._v("#")]),e._v(" Parámetros de Génesis (aka lanzamiento)")]),e._v(" "),o("p",[e._v("Esto es útil si no tienes "),o("code",[e._v("gaiad")]),e._v(" instalado y no tienes una razón para creer que el parámetro ha cambiado desde que se lanzó la cadena.")]),e._v(" "),o("p",[e._v("Cada parámetro puede ser verificado en el archivo génesis de la cadena, que encuentra "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(". Estos son los parámetros con los que la última cadena del Hub de Cosmos se lanzó, y seguirá haciéndolo, a menos que una propuesta de gobierno los cambie. He resumido esos valores originales en la sección "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("Especificaciones Técnicas")]),e._v(".")],1),e._v(" "),o("p",[e._v("El archivo génesis contiene texto y es grande. El esquema de nombres de los parámetros de génesis no es idéntico a los de la lista anterior, así que cuando busco, pongo un guión bajo entre los caracteres en mayúsculas y minúsculas, y luego convierto todos los caracteres a minúsculas.")]),e._v(" "),o("p",[e._v("Por ejemplo, si quiero buscar "),o("code",[e._v("depositparams")]),e._v(", buscaré en el "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("génesis"),o("OutboundLink")],1),e._v(" "),o("code",[e._v("deposit_params")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"parametros-actuales"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-actuales"}},[e._v("#")]),e._v(" Parámetros actuales")]),e._v(" "),o("p",[e._v("Puede verificar los valores actuales de los parámetros (en caso de que hayan sido modificados mediante la propuesta de gobierno posterior al lanzamiento) con la aplicación de "),o("a",{attrs:{href:"params-change/gaiad"}},[e._v("línea de comandos gaiad")]),e._v(". Aquí están los comandos para cada uno:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("depositparams")]),e._v(" - "),o("code",[e._v("gaiad q ..")]),e._v(" --\x3e "),o("strong",[e._v("to do")]),e._v(" <--")])]),e._v(" "),o("h2",{attrs:{id:"futuro"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#futuro"}},[e._v("#")]),e._v(" Futuro")]),e._v(" "),o("p",[e._v("La documentación actual sólo describe el producto mínimo viable para el módulo de gobernanza. Las mejoras futuras pueden incluir:")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[o("code",[e._v("BountyProposals")]),e._v(":")]),e._v(" Si es aceptada, un "),o("code",[e._v("BountyProposal")]),e._v(" crea una recompensa abierta. El "),o("code",[e._v("BountyProposal")]),e._v(" especifica cuántos átomos se entregarán al finalizar. Estos átomos serán tomados del "),o("code",[e._v("reserve pool")]),e._v(". Después de que un "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado por el gobierno, cualquiera puede presentar un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con el código para reclamar la recompensa. Tenga en cuenta que una vez que el "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado, los fondos correspondientes en la "),o("code",[e._v("reserve pool")]),e._v(" se bloquean para que el pago siempre pueda ser cumplido. Para vincular un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con una recompensa abierta, el remitente del "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" utilizará el atributo "),o("code",[e._v("Proposal.LinkedProposal")]),e._v(". Si un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" vinculado a una recompensa abierta es aceptado por la administración, los fondos reservados se transfieren automáticamente al autor de la propuesta.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Complex delegation:")]),e._v(" Los delegadores podrán elegir otros representantes además de sus validadores. En última instancia, la cadena de representantes siempre terminaría en un validador, pero los delegadores podrían heredar el voto de su representante elegido antes de heredar el voto de su validador. En otras palabras, sólo heredarían el voto de su validador si su otro representante designado no votara.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Mejor proceso de revisión de propuestas:")]),e._v(" La propuesta consta de dos partes de "),o("code",[e._v("proposal.Deposit")]),e._v(", uno para la lucha contra el correo basura (igual que en el MVP) y otro para recompensar a los auditores de terceros.")]),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/spec/05_future_improvements.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("origen"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"especificaciones-tecnicas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#especificaciones-tecnicas"}},[e._v("#")]),e._v(" Especificaciones técnicas")]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable del sistema de gobierno de la cadena. En este sistema, los titulares del token nativo de la cadena pueden votar sobre las propuestas en una base de 1-token, 1-voto. A continuación hay una lista de las características que el módulo apoya actualmente:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Entrega de propuestas")]),e._v(": Los usuarios pueden presentar propuestas con un depósito. Una vez que se alcanza el depósito mínimo, la propuesta entra en el período de votación.")]),e._v(" "),o("li",[o("strong",[e._v("Voto")]),e._v(": Los participantes pueden votar sobre las propuestas que llegaron a "),o("code",[e._v("MinDeposit")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Herencia y sanciones")]),e._v(": Los delegadores heredan su voto de validación si no votan ellos mismos.")]),e._v(" "),o("li",[o("strong",[e._v("Reclamación del depósito")]),e._v(": Los usuarios que depositaron en las propuestas pueden recuperar sus depósitos si la propuesta fue aceptada O si la propuesta nunca entró en el período de votación.")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" contiene los siguientes parámetros:")]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("min_deposit")]),e._v(" "),o("td",[e._v("array (coins)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('[{"denom":"uatom","amount":"512000000"}]')])]),e._v(" "),o("tr",[o("td",[e._v("max_deposit_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("votingparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkey")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("voting_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("quorum")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.400000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("threshold")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.500000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("veto")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.334000000000000000"')])])])]),e._v(" "),o("p",[o("strong",[e._v("Observación")]),e._v(": El módulo de gobierno contiene parámetros que son objetos que no son como los demás módulos. Si sólo se desea modificar un subconjunto de parámetros, sólo hay que incluirlos y no toda la estructura de objetos de parámetros.")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/76.90581540.js b/main/assets/js/76.93057efd.js similarity index 91% rename from main/assets/js/76.90581540.js rename to main/assets/js/76.93057efd.js index 34d3b3772f4..b5de189f4f5 100644 --- a/main/assets/js/76.90581540.js +++ b/main/assets/js/76.93057efd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{543: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.95b41a03.js b/main/assets/js/77.15ef29f1.js similarity index 99% rename from main/assets/js/77.95b41a03.js rename to main/assets/js/77.15ef29f1.js index 686e8f7a6e5..589b5fdf34a 100644 --- a/main/assets/js/77.95b41a03.js +++ b/main/assets/js/77.15ef29f1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{544: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/78.11654d4d.js b/main/assets/js/78.8f5e03af.js similarity index 98% rename from main/assets/js/78.11654d4d.js rename to main/assets/js/78.8f5e03af.js index 8a119e1cde3..6cb6a5bfebd 100644 --- a/main/assets/js/78.11654d4d.js +++ b/main/assets/js/78.8f5e03af.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{546:function(t,a,c){"use strict";c.r(a);var e=c(1),o=Object(e.a)({},(function(){var t=this,a=t.$createElement,c=t._self._c||a;return c("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[c("h1",{attrs:{id:"join-mainnet-quick-start"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#join-mainnet-quick-start"}},[t._v("#")]),t._v(" Join Mainnet Quick Start")]),t._v(" "),c("p",[c("strong",[t._v("Bootstrap a "),c("code",[t._v("cosmoshub-4")]),t._v(" mainnet node")])]),t._v(" "),c("h3",{attrs:{id:"prerequisites"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),c("blockquote",[c("p",[c("strong",[t._v("Note")]),t._v(": Make sure the "),c("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Gaia CLI is installed")]),t._v(".")],1)]),t._v(" "),c("h3",{attrs:{id:"sync-options"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),c("p",[t._v("To quickly get started, node operators can choose to sync via State Sync or by downloading a snapshot from Quicksync. State Sync works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. Quicksync is a service provided courtesy of ChainLayer, and offers historical state of the chain available for download every 24 hours. For more advanced information on setting up a node, see the Sync Options section of the full "),c("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet Tutorial")])],1),t._v(" "),c("tabs",{attrs:{options:{useUrlFragment:!1}}},[c("tab",{attrs:{name:"State Sync"}},[c("p",[t._v("To enable state sync, visit an "),c("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks",target:"_blank",rel:"noopener noreferrer"}},[t._v("explorer"),c("OutboundLink")],1),t._v(" 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 1000 blocks, it is advised to choose something close to current height - 1000. Set these parameters in the code snippet below "),c("code",[t._v("")]),t._v(" and "),c("code",[t._v("")])]),t._v(" "),c("p",[t._v("For reference, the list of "),c("code",[t._v("rpc_servers")]),t._v(" and "),c("code",[t._v("persistent")]),t._v(" peers can be found in the "),c("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos hub chain-registry repo"),c("OutboundLink")],1),t._v(".")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBCdWlsZCBnYWlhZCBiaW5hcnkgYW5kIGluaXRpYWxpemUgY2hhaW4KY2QgJEhPTUUKZ2l0IGNsb25lIC1iIHYxMS4wLjAgaHR0cHM6Ly9naXRodWIuY29tL2Nvc21vcy9nYWlhIC0tZGVwdGg9MQpjZCBnYWlhZAptYWtlIGluc3RhbGwKZ2FpYWQgaW5pdCBDVVNUT01fTU9OSUtFUiAtLWNoYWluLWlkIGNvc21vc2h1Yi00CgojU2V0IG1pbmltdW0gZ2FzIHByaWNlICZhbXA7IHBlZXJzCnNlZCAtaScnICdzL21pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Oy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Oy8nICRIT01FLy5nYWlhL2NvbmZpZy9hcHAudG9tbApzZWQgLWknJyAncy9wZXJzaXN0ZW50X3BlZXJzID0gJnF1b3Q7JnF1b3Q7L3BlcnNpc3RlbnRfcGVlcnMgPSAnJnF1b3Q7XCZxdW90OyQoY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL2NoYWluLXJlZ2lzdHJ5L21hc3Rlci9jb3Ntb3NodWIvY2hhaW4uanNvbiB8IGpxIC1yICdbZm9yZWFjaCAucGVlcnMuc2VlZHNbXSBhcyAkaXRlbSAoJnF1b3Q7JnF1b3Q7OyAmcXVvdDtcKCRpdGVtLmlkKUBcKCRpdGVtLmFkZHJlc3MpJnF1b3Q7KV0gfCBqb2luKCZxdW90OywmcXVvdDspJylcJnF1b3Q7JnF1b3Q7Jy8nICRIT01FLy5nYWlhL2NvbmZpZy9jb25maWcudG9tbAoKIyBDb25maWd1cmUgU3RhdGUgc3luYwpzZWQgLWknJyAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKc2VkIC1pJycgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cHM6XC9cL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczpcL1wvcnBjLWNvc21vc2h1Yi1pYS5jb3Ntb3NpYS5ub3Rpb25hbC52ZW50dXJlczo0NDMsaHR0cHM6XC9cL3JwYy5jb3Ntb3MubmV0d29yazo0NDMmcXVvdDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKCiNTdGFydCBHYWlhCmdhaWFkIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cwo="}})],1),t._v(" "),c("tab",{attrs:{name:"Quicksync"}},[c("blockquote",[c("p",[c("strong",[t._v("Note")]),t._v(": Make sure to set the "),c("code",[t._v("--home")]),t._v(" flag when initializing and starting "),c("code",[t._v("gaiad")]),t._v(" if mounting quicksync data externally.")])]),t._v(" "),c("h4",{attrs:{id:"create-gaia-home-config"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#create-gaia-home-config"}},[t._v("#")]),t._v(" Create Gaia Home & Config")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgJEhPTUUvLmdhaWEvY29uZmlnIC1wCg=="}}),t._v(" "),c("h4",{attrs:{id:"start-quicksync-download"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#start-quicksync-download"}},[t._v("#")]),t._v(" Start Quicksync Download")]),t._v(" "),c("p",[t._v("Node Operators can decide how much of historical state they want to preserve by choosing between "),c("code",[t._v("Pruned")]),t._v(", "),c("code",[t._v("Default")]),t._v(", and "),c("code",[t._v("Archive")]),t._v(". See the "),c("a",{attrs:{href:"https://quicksync.io/networks/cosmos.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Quicksync.io downloads"),c("OutboundLink")],1),t._v(" for up-to-date snapshot sizes.")]),t._v(" "),c("tabs",{attrs:{options:{useUrlFragment:!1}}},[c("tab",{attrs:{name:"Default"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LWRlZmF1bHQmcXVvdDspfC51cmwnYAoKZWNobyAkVVJMCgpjZCAkSE9NRS8uZ2FpYQoKYXJpYTJjIC14NSAkVVJMCg=="}})],1),t._v(" "),c("tab",{attrs:{name:"Pruned"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LXBydW5lZCZxdW90Oyl8LnVybCdgCgplY2hvICRVUkwKCmNkICRIT01FLy5nYWlhCgphcmlhMmMgLXg1ICRVUkwK"}})],1),t._v(" "),c("tab",{attrs:{name:"Archive"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LWFyY2hpdmUmcXVvdDspfC51cmwnYAoKZWNobyAkVVJMCgpjZCAkSE9NRS8uZ2FpYQoKYXJpYTJjIC14NSAkVVJMCg=="}})],1)],1),t._v(" "),c("p",[c("strong",[t._v("The download logs should look like the following")])]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"MDEvMTEgMDc6NDg6MTcgW05PVElDRV0gRG93bmxvYWRpbmcgMSBpdGVtKHMpClsjN2NjYTVhIDQ4NE1pQi8yNzFHaUIoMCUpIENOOjUgREw6MTA4TWlCIEVUQTo0Mm00MXNdCg=="}}),t._v(" "),c("p",[c("strong",[t._v("Completed Download Process:")])]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"WyM3Y2NhNWEgMjcxR2lCLzI3MUdpQig5OSUpIENOOjEgREw6NzdNaUJdCjAxLzExIDA4OjMyOjE5IFtOT1RJQ0VdIERvd25sb2FkIGNvbXBsZXRlOiAvbW50L3F1aWNrc3luY18wMS9jb3Ntb3NodWItNC1wcnVuZWQuMjAyMjAxMTEuMDMxMC50YXIubHo0CgpEb3dubG9hZCBSZXN1bHRzOgpnaWQgICB8c3RhdHxhdmcgc3BlZWQgIHxwYXRoL1VSSQo9PT09PT0rPT09PSs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjdjY2E1YXxPSyAgfCAgIDEwNU1pQi9zfC9tbnQvcXVpY2tzeW5jXzAxL2Nvc21vc2h1Yi00LXBydW5lZC4yMDIyMDExMS4wMzEwLnRhci5sejQKClN0YXR1cyBMZWdlbmQ6CihPSyk6ZG93bmxvYWQgY29tcGxldGVkLgo="}}),t._v(" "),c("h4",{attrs:{id:"unzip"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#unzip"}},[t._v("#")]),t._v(" Unzip")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bHo0IC1jIC1kIGBiYXNlbmFtZSAkVVJMYCB8IHRhciB4ZiAtCg=="}}),t._v(" "),c("h4",{attrs:{id:"copy-address-book-quicksync"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#copy-address-book-quicksync"}},[t._v("#")]),t._v(" Copy Address Book Quicksync")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3F1aWNrc3luYy5pby9hZGRyYm9vay5jb3Ntb3MuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9hZGRyYm9vay5qc29uCg=="}}),t._v(" "),c("h4",{attrs:{id:"start-gaia"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#start-gaia"}},[t._v("#")]),t._v(" Start Gaia")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}})],1)],1)],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{606:function(t,a,c){"use strict";c.r(a);var e=c(1),o=Object(e.a)({},(function(){var t=this,a=t.$createElement,c=t._self._c||a;return c("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[c("h1",{attrs:{id:"join-mainnet-quick-start"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#join-mainnet-quick-start"}},[t._v("#")]),t._v(" Join Mainnet Quick Start")]),t._v(" "),c("p",[c("strong",[t._v("Bootstrap a "),c("code",[t._v("cosmoshub-4")]),t._v(" mainnet node")])]),t._v(" "),c("h3",{attrs:{id:"prerequisites"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),c("blockquote",[c("p",[c("strong",[t._v("Note")]),t._v(": Make sure the "),c("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Gaia CLI is installed")]),t._v(".")],1)]),t._v(" "),c("h3",{attrs:{id:"sync-options"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),c("p",[t._v("To quickly get started, node operators can choose to sync via State Sync or by downloading a snapshot from Quicksync. State Sync works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. Quicksync is a service provided courtesy of ChainLayer, and offers historical state of the chain available for download every 24 hours. For more advanced information on setting up a node, see the Sync Options section of the full "),c("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet Tutorial")])],1),t._v(" "),c("tabs",{attrs:{options:{useUrlFragment:!1}}},[c("tab",{attrs:{name:"State Sync"}},[c("p",[t._v("To enable state sync, visit an "),c("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks",target:"_blank",rel:"noopener noreferrer"}},[t._v("explorer"),c("OutboundLink")],1),t._v(" 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 1000 blocks, it is advised to choose something close to current height - 1000. Set these parameters in the code snippet below "),c("code",[t._v("")]),t._v(" and "),c("code",[t._v("")])]),t._v(" "),c("p",[t._v("For reference, the list of "),c("code",[t._v("rpc_servers")]),t._v(" and "),c("code",[t._v("persistent")]),t._v(" peers can be found in the "),c("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos hub chain-registry repo"),c("OutboundLink")],1),t._v(".")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBCdWlsZCBnYWlhZCBiaW5hcnkgYW5kIGluaXRpYWxpemUgY2hhaW4KY2QgJEhPTUUKZ2l0IGNsb25lIC1iIHYxMi4wLjAgaHR0cHM6Ly9naXRodWIuY29tL2Nvc21vcy9nYWlhIC0tZGVwdGg9MQpjZCBnYWlhZAptYWtlIGluc3RhbGwKZ2FpYWQgaW5pdCBDVVNUT01fTU9OSUtFUiAtLWNoYWluLWlkIGNvc21vc2h1Yi00CgojU2V0IG1pbmltdW0gZ2FzIHByaWNlICZhbXA7IHBlZXJzCnNlZCAtaScnICdzL21pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Oy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Oy8nICRIT01FLy5nYWlhL2NvbmZpZy9hcHAudG9tbApzZWQgLWknJyAncy9wZXJzaXN0ZW50X3BlZXJzID0gJnF1b3Q7JnF1b3Q7L3BlcnNpc3RlbnRfcGVlcnMgPSAnJnF1b3Q7XCZxdW90OyQoY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL2NoYWluLXJlZ2lzdHJ5L21hc3Rlci9jb3Ntb3NodWIvY2hhaW4uanNvbiB8IGpxIC1yICdbZm9yZWFjaCAucGVlcnMuc2VlZHNbXSBhcyAkaXRlbSAoJnF1b3Q7JnF1b3Q7OyAmcXVvdDtcKCRpdGVtLmlkKUBcKCRpdGVtLmFkZHJlc3MpJnF1b3Q7KV0gfCBqb2luKCZxdW90OywmcXVvdDspJylcJnF1b3Q7JnF1b3Q7Jy8nICRIT01FLy5nYWlhL2NvbmZpZy9jb25maWcudG9tbAoKIyBDb25maWd1cmUgU3RhdGUgc3luYwpzZWQgLWknJyAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKc2VkIC1pJycgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cHM6XC9cL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczpcL1wvcnBjLWNvc21vc2h1Yi1pYS5jb3Ntb3NpYS5ub3Rpb25hbC52ZW50dXJlczo0NDMsaHR0cHM6XC9cL3JwYy5jb3Ntb3MubmV0d29yazo0NDMmcXVvdDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKCiNTdGFydCBHYWlhCmdhaWFkIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cwo="}})],1),t._v(" "),c("tab",{attrs:{name:"Quicksync"}},[c("blockquote",[c("p",[c("strong",[t._v("Note")]),t._v(": Make sure to set the "),c("code",[t._v("--home")]),t._v(" flag when initializing and starting "),c("code",[t._v("gaiad")]),t._v(" if mounting quicksync data externally.")])]),t._v(" "),c("h4",{attrs:{id:"create-gaia-home-config"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#create-gaia-home-config"}},[t._v("#")]),t._v(" Create Gaia Home & Config")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgJEhPTUUvLmdhaWEvY29uZmlnIC1wCg=="}}),t._v(" "),c("h4",{attrs:{id:"start-quicksync-download"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#start-quicksync-download"}},[t._v("#")]),t._v(" Start Quicksync Download")]),t._v(" "),c("p",[t._v("Node Operators can decide how much of historical state they want to preserve by choosing between "),c("code",[t._v("Pruned")]),t._v(", "),c("code",[t._v("Default")]),t._v(", and "),c("code",[t._v("Archive")]),t._v(". See the "),c("a",{attrs:{href:"https://quicksync.io/networks/cosmos.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Quicksync.io downloads"),c("OutboundLink")],1),t._v(" for up-to-date snapshot sizes.")]),t._v(" "),c("tabs",{attrs:{options:{useUrlFragment:!1}}},[c("tab",{attrs:{name:"Default"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LWRlZmF1bHQmcXVvdDspfC51cmwnYAoKZWNobyAkVVJMCgpjZCAkSE9NRS8uZ2FpYQoKYXJpYTJjIC14NSAkVVJMCg=="}})],1),t._v(" "),c("tab",{attrs:{name:"Pruned"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LXBydW5lZCZxdW90Oyl8LnVybCdgCgplY2hvICRVUkwKCmNkICRIT01FLy5nYWlhCgphcmlhMmMgLXg1ICRVUkwK"}})],1),t._v(" "),c("tab",{attrs:{name:"Archive"}},[c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash=",base64:"c3VkbyBhcHQtZ2V0IGluc3RhbGwgd2dldCBsaWJsejQtdG9vbCBhcmlhMiBqcSAteQoKZXhwb3J0IFVSTD1gY3VybCAtTCBodHRwczovL3F1aWNrc3luYy5pby9jb3Ntb3MuanNvbnxqcSAtciAnLltdIHxzZWxlY3QoLmZpbGU9PSZxdW90O2Nvc21vc2h1Yi00LWFyY2hpdmUmcXVvdDspfC51cmwnYAoKZWNobyAkVVJMCgpjZCAkSE9NRS8uZ2FpYQoKYXJpYTJjIC14NSAkVVJMCg=="}})],1)],1),t._v(" "),c("p",[c("strong",[t._v("The download logs should look like the following")])]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"MDEvMTEgMDc6NDg6MTcgW05PVElDRV0gRG93bmxvYWRpbmcgMSBpdGVtKHMpClsjN2NjYTVhIDQ4NE1pQi8yNzFHaUIoMCUpIENOOjUgREw6MTA4TWlCIEVUQTo0Mm00MXNdCg=="}}),t._v(" "),c("p",[c("strong",[t._v("Completed Download Process:")])]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"WyM3Y2NhNWEgMjcxR2lCLzI3MUdpQig5OSUpIENOOjEgREw6NzdNaUJdCjAxLzExIDA4OjMyOjE5IFtOT1RJQ0VdIERvd25sb2FkIGNvbXBsZXRlOiAvbW50L3F1aWNrc3luY18wMS9jb3Ntb3NodWItNC1wcnVuZWQuMjAyMjAxMTEuMDMxMC50YXIubHo0CgpEb3dubG9hZCBSZXN1bHRzOgpnaWQgICB8c3RhdHxhdmcgc3BlZWQgIHxwYXRoL1VSSQo9PT09PT0rPT09PSs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjdjY2E1YXxPSyAgfCAgIDEwNU1pQi9zfC9tbnQvcXVpY2tzeW5jXzAxL2Nvc21vc2h1Yi00LXBydW5lZC4yMDIyMDExMS4wMzEwLnRhci5sejQKClN0YXR1cyBMZWdlbmQ6CihPSyk6ZG93bmxvYWQgY29tcGxldGVkLgo="}}),t._v(" "),c("h4",{attrs:{id:"unzip"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#unzip"}},[t._v("#")]),t._v(" Unzip")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bHo0IC1jIC1kIGBiYXNlbmFtZSAkVVJMYCB8IHRhciB4ZiAtCg=="}}),t._v(" "),c("h4",{attrs:{id:"copy-address-book-quicksync"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#copy-address-book-quicksync"}},[t._v("#")]),t._v(" Copy Address Book Quicksync")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3F1aWNrc3luYy5pby9hZGRyYm9vay5jb3Ntb3MuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9hZGRyYm9vay5qc29uCg=="}}),t._v(" "),c("h4",{attrs:{id:"start-gaia"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#start-gaia"}},[t._v("#")]),t._v(" Start Gaia")]),t._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}})],1)],1)],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/79.95964c88.js b/main/assets/js/79.ae5f4e39.js similarity index 97% rename from main/assets/js/79.95964c88.js rename to main/assets/js/79.ae5f4e39.js index 87bc686538c..a364681de6c 100644 --- a/main/assets/js/79.95964c88.js +++ b/main/assets/js/79.ae5f4e39.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{547:function(t,o,a){"use strict";a.r(o);var e=a(1),i=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:"what-is-gaia"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-gaia"}},[t._v("#")]),t._v(" What is Gaia?")]),t._v(" "),a("p",[a("code",[t._v("gaia")]),t._v(" is the name of the Cosmos SDK application for the Cosmos Hub. It comes with 2 main entrypoints:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("gaiad")]),t._v(": The Gaia Daemon and command-line interface (CLI). runs a full-node of the "),a("code",[t._v("gaia")]),t._v(" application.")])]),t._v(" "),a("p",[a("code",[t._v("gaia")]),t._v(" is built on the Cosmos SDK using the following modules:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("x/auth")]),t._v(": Accounts and signatures.")]),t._v(" "),a("li",[a("code",[t._v("x/bank")]),t._v(": Token transfers.")]),t._v(" "),a("li",[a("code",[t._v("x/staking")]),t._v(": Staking logic.")]),t._v(" "),a("li",[a("code",[t._v("x/mint")]),t._v(": Inflation logic.")]),t._v(" "),a("li",[a("code",[t._v("x/distribution")]),t._v(": Fee distribution logic.")]),t._v(" "),a("li",[a("code",[t._v("x/slashing")]),t._v(": Slashing logic.")]),t._v(" "),a("li",[a("code",[t._v("x/gov")]),t._v(": Governance logic.")]),t._v(" "),a("li",[a("code",[t._v("ibc-go/modules")]),t._v(": Inter-blockchain communication. Hosted in the "),a("code",[t._v("cosmos/ibc-go")]),t._v(" repository.")]),t._v(" "),a("li",[a("code",[t._v("x/params")]),t._v(": Handles app-level parameters.")])]),t._v(" "),a("p",[t._v("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.")]),t._v(" "),a("p",[t._v("Next, learn how to "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("install Gaia")]),t._v(".")],1)])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{605:function(t,o,a){"use strict";a.r(o);var e=a(1),i=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:"what-is-gaia"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-gaia"}},[t._v("#")]),t._v(" What is Gaia?")]),t._v(" "),a("p",[a("code",[t._v("gaia")]),t._v(" is the name of the Cosmos SDK application for the Cosmos Hub. It comes with 2 main entrypoints:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("gaiad")]),t._v(": The Gaia Daemon and command-line interface (CLI). runs a full-node of the "),a("code",[t._v("gaia")]),t._v(" application.")])]),t._v(" "),a("p",[a("code",[t._v("gaia")]),t._v(" is built on the Cosmos SDK using the following modules:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("x/auth")]),t._v(": Accounts and signatures.")]),t._v(" "),a("li",[a("code",[t._v("x/bank")]),t._v(": Token transfers.")]),t._v(" "),a("li",[a("code",[t._v("x/staking")]),t._v(": Staking logic.")]),t._v(" "),a("li",[a("code",[t._v("x/mint")]),t._v(": Inflation logic.")]),t._v(" "),a("li",[a("code",[t._v("x/distribution")]),t._v(": Fee distribution logic.")]),t._v(" "),a("li",[a("code",[t._v("x/slashing")]),t._v(": Slashing logic.")]),t._v(" "),a("li",[a("code",[t._v("x/gov")]),t._v(": Governance logic.")]),t._v(" "),a("li",[a("code",[t._v("ibc-go/modules")]),t._v(": Inter-blockchain communication. Hosted in the "),a("code",[t._v("cosmos/ibc-go")]),t._v(" repository.")]),t._v(" "),a("li",[a("code",[t._v("x/params")]),t._v(": Handles app-level parameters.")])]),t._v(" "),a("p",[t._v("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.")]),t._v(" "),a("p",[t._v("Next, learn how to "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("install Gaia")]),t._v(".")],1)])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/80.a5bf4a3a.js b/main/assets/js/80.9185877f.js similarity index 97% rename from main/assets/js/80.a5bf4a3a.js rename to main/assets/js/80.9185877f.js index abec2c1f45e..c63a1f5aa20 100644 --- a/main/assets/js/80.a5bf4a3a.js +++ b/main/assets/js/80.9185877f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{549:function(e,o,t){"use strict";t.r(o);var n=t(1),r=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:"governance-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-overview"}},[e._v("#")]),e._v(" Governance Overview")]),e._v(" "),t("p",[e._v('The Cosmos Hub ("Gaia") has an on-chain governance mechanism for '),t("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("signaling")]),e._v(", changing "),t("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[e._v("consensus parameters")]),e._v(", and spending "),t("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[e._v("funds from the community pool")]),e._v(".")],1),e._v(" "),t("p",[e._v("This repository provides background information on these different kinds of proposals and best-practices for drafting them and proposing them on-chain.")]),e._v(" "),t("h2",{attrs:{id:"community"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),t("p",[e._v("Cosmos governance is driven by the Cosmos community, and much of the documentation in this repo was funded by the community fund itself in\n"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/23",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 23"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/63",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 63"),t("OutboundLink")],1),e._v(".\nGovernance discussions happens in a number of places moderated by diverse community members, including:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Forum"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("anywhere else you might interact with members of the Cosmos community!")])])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{604:function(e,o,t){"use strict";t.r(o);var n=t(1),r=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:"governance-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-overview"}},[e._v("#")]),e._v(" Governance Overview")]),e._v(" "),t("p",[e._v('The Cosmos Hub ("Gaia") has an on-chain governance mechanism for '),t("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("signaling")]),e._v(", changing "),t("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[e._v("consensus parameters")]),e._v(", and spending "),t("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[e._v("funds from the community pool")]),e._v(".")],1),e._v(" "),t("p",[e._v("This repository provides background information on these different kinds of proposals and best-practices for drafting them and proposing them on-chain.")]),e._v(" "),t("h2",{attrs:{id:"community"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),t("p",[e._v("Cosmos governance is driven by the Cosmos community, and much of the documentation in this repo was funded by the community fund itself in\n"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/23",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 23"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/63",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 63"),t("OutboundLink")],1),e._v(".\nGovernance discussions happens in a number of places moderated by diverse community members, including:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Forum"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("anywhere else you might interact with members of the Cosmos community!")])])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/81.68d76968.js b/main/assets/js/81.1736641e.js similarity index 99% rename from main/assets/js/81.68d76968.js rename to main/assets/js/81.1736641e.js index aa81d74fe29..b061f945416 100644 --- a/main/assets/js/81.68d76968.js +++ b/main/assets/js/81.1736641e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{608:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"off-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-proposal-process"}},[e._v("#")]),e._v(" Off-Chain Proposal Process")]),e._v(" "),o("p",[e._v("Once a proposal is on-chain, it cannot be changed to reflect feedback or new information. It's very important to give a proposal time off-chain to receive feedback, input, and edits before going on-chain and asking for votes.")]),e._v(" "),o("p",[e._v("The process of passing a proposal starts long before it goes on-chain!")]),e._v(" "),o("p",[e._v("There are currently several types of proposals supported by the Cosmos Hub:")]),e._v(" "),o("ul",[o("li",[o("strong",[o("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("Text")])],1),e._v(" - Proposal to agree to a certain strategy, plan, commitment, future upgrade or other statement. Text proposals do not directly cause any changes, but they can be used to take a record of the community's opinion or commitment to a future idea.")]),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[o("strong",[e._v("Community Pool Spend")])]),e._v(" - Proposal to spend funds from the community pool on a project.")],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[o("strong",[e._v("Parameter Change")])]),e._v(" - Proposal to change a core on-chain parameter.")],1),e._v(" "),o("li",[o("strong",[e._v("Software Upgrade")]),e._v(" - Proposal to upgrade the chain version.")]),e._v(" "),o("li",[o("strong",[e._v("IBC Client Update")]),e._v(" - Proposal to update an IBC client.")])]),e._v(" "),o("p",[e._v("You'll first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.")]),e._v(" "),o("h2",{attrs:{id:"engage-directly-with-the-voting-community-and-seek-feedback"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-directly-with-the-voting-community-and-seek-feedback"}},[e._v("#")]),e._v(" Engage directly with the voting community and seek feedback")]),e._v(" "),o("p",[e._v("Engagement is likely to be critical to the success of a proposal. The degree to which you engage with the Cosmos Hub community should be relative to the potential impact that your proposal may have on the stakeholders. This guide does not cover all ways of engaging but here are some suggestions:")]),e._v(" "),o("ul",[o("li",[e._v("Post your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Mention the idea in a community call (often hosted on "),o("a",{attrs:{href:"https://twitter.com/CosmosHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("li",[e._v("Host an AMA on "),o("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.")]),e._v(" "),o("p",[e._v("There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.")]),e._v(" "),o("p",[o("strong",[e._v("Why do it in stages?")]),e._v(" It's a more conservative approach to save resources. The idea is to check in with key stakeholders at each stage before investing more resources into developing your proposal.")]),e._v(" "),o("p",[e._v("In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Cosmos Hub, timeline, any funding needs) and check:")]),e._v(" "),o("ul",[o("li",[e._v("Does it make sense?")]),e._v(" "),o("li",[e._v("Are there critical flaws?")]),e._v(" "),o("li",[e._v("How will this affect other projects or properties of the Hub?")])]),e._v(" "),o("p",[e._v("You should be enagaging with key stakeholders (e.g., a large validator operator) with a few short sentences to measure their support. Here's an example:")]),e._v(" "),o("p",[e._v('"We are considering a proposal for funding to work on '),o("code",[e._v("project")]),e._v(". We think it will help the Hub to "),o("code",[e._v("outcome")]),e._v(". Timeline is "),o("code",[e._v("x")]),e._v(", and we're asking for "),o("code",[e._v("y")]),e._v(" amount. Do you think that this is a proposal that "),o("code",[e._v("large validator")]),e._v(' may support?"')]),e._v(" "),o("p",[o("strong",[e._v("Why a large validator?")]),e._v(" They tend to be the de facto decision-makers on the Cosmos Hub, since their delegators also delegate their voting power. If you can establish a base layer of off-chain support, you can be more confident that it's worth proceeding to the next stage.")]),e._v(" "),o("p",[o("strong",[e._v("Note:")]),e._v(" Many validators will likely hesitate to commit support, and that's okay. It will be important to reassure these stakeholders that this isn't a binding a commitment. You're just canvasing the community to get a feel for whether it's worthwhile to proceed. It's also an opportunity to connect with new people and to answer their questions about what it is you're working on. It will be important for them to clearly understand why you think what you're proposing will be valuable to the Cosmos Hub, and if possible, why it will be valuable to them as long-term stakeholders.")]),e._v(" "),o("p",[e._v("If you're already confident about your idea, "),o("a",{attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("skip to Stage 2")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"stage-1-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-1-your-idea"}},[e._v("#")]),e._v(" Stage 1: Your Idea")]),e._v(" "),o("h3",{attrs:{id:"not-yet-confident-about-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#not-yet-confident-about-your-idea"}},[e._v("#")]),e._v(" Not yet confident about your idea?")]),e._v(" "),o("p",[e._v("Great! Governance proposals potentially impact many stakeholders. Introduce your idea with known members of the community before investing resources into drafting a proposal. Don't let negative feedback dissuade you from exploring your idea if you think that it's still important.")]),e._v(" "),o("p",[e._v("If you know people who are very involved with the Cosmos Hub, send them a private message with a concise overview of what you think will result from your idea or proposed changes. Wait for them to ask questions before providing details. Do the same in semi-private channels where people tend to be respectful (and hopefully supportive).")]),e._v(" "),o("h3",{attrs:{id:"confident-with-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confident-with-your-idea"}},[e._v("#")]),e._v(" Confident with your idea?")]),e._v(" "),o("p",[e._v("Great! However, remember that governance proposals potentially impact many stakeholders, which can happen in unexpected ways. Introduce your idea with members of the community before investing resources into drafting a proposal. At this point you should seek out and carefully consider critical feedback in order to protect yourself from "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Confirmation_bias",target:"_blank",rel:"noopener noreferrer"}},[e._v("confirmation bias"),o("OutboundLink")],1),e._v(". This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.")]),e._v(" "),o("p",[e._v("Posting your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1),e._v(" is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.")]),e._v(" "),o("h3",{attrs:{id:"are-you-ready-to-draft-a-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#are-you-ready-to-draft-a-governance-proposal"}},[e._v("#")]),e._v(" Are you ready to draft a governance proposal?")]),e._v(" "),o("p",[e._v("There will likely be differences of opinion about the value of what you're proposing to do and the strategy by which you're planning to do it. If you've considered feedback from broad perspectives and think that what you're doing is valuable and that your strategy should work, and you believe that others feel this way as well, it's likely worth drafting a proposal. However, remember that the largest ATOM stakers have the biggest vote, so a vocal minority isn't necessarily representative or predictive of the outcome of an on-chain vote.")]),e._v(" "),o("p",[e._v("You could choose to take a conservative approach and wait until you have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting the details of your proposal. Or you could propose the idea, or define the problem statement and let the community participate freely in drafting competing solutions to solve the issue.")]),e._v(" "),o("h2",{attrs:{id:"stage-2-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("#")]),e._v(" Stage 2: Your Draft Proposal")]),e._v(" "),o("p",[e._v("The next major section outlines and describes some potential elements of drafting a proposal. Ensure that you have considered your proposal and anticipated questions that the community will likely ask. "),o("strong",[e._v("Once your proposal is on-chain, you will not be able to change it.")])]),e._v(" "),o("h3",{attrs:{id:"proposal-elements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-elements"}},[e._v("#")]),e._v(" Proposal Elements")]),e._v(" "),o("p",[e._v("It will be important to balance two things: being detailed and being concise. You'll want to be concise so that people can assess your proposal quickly. You'll want to be detailed so that voters will have a clear, meaningful understanding of what the changes are and how they are likely to be impacted.")]),e._v(" "),o("p",[e._v("Each major proposal type has a rough template available on the forum: "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-signaling-text-category/5947",target:"_blank",rel:"noopener noreferrer"}},[e._v("Text"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-community-spend-category/5949",target:"_blank",rel:"noopener noreferrer"}},[e._v("community pool spend"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-parameter-change-category/5950",target:"_blank",rel:"noopener noreferrer"}},[e._v("parameter change"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-software-upgrade-category/5951",target:"_blank",rel:"noopener noreferrer"}},[e._v("software upgrade"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Each proposal should contain a summmary with key details about what the proposal hopes to change. If you were viewing only the summary with no other context, it should be a good start to being able to make a decision.")]),e._v(" "),o("p",[e._v("Assume that many people will stop reading at this point. However it is important to provide in-depth information. The on-chain proposal text should also include a link to an un-editable version of the text, such as an IPFS pin, and a link to where discussion about the idea is happening.")]),e._v(" "),o("p",[e._v("A few more pointers for Parameter-change and Community Spend proposals are below.")]),e._v(" "),o("h4",{attrs:{id:"parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter-Change")]),e._v(" "),o("p",[e._v("An example of a successful parameter change proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-66-accepted-increase-active-validator-spots-to-175/6118/53",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #66"),o("OutboundLink")],1),e._v(". Note that this proposal went on-chain without the recommended IPFS pin.")]),e._v(" "),o("ol",[o("li",[e._v("Problem/Value - The problem or value that's motivating the parameter change(s).")]),e._v(" "),o("li",[e._v("Solution - How changing the parameter(s) will address the problem or improve the network.")]),e._v(" "),o("li",[e._v("Risks & Benefits - How making this/these change(s) may expose stakeholders to new benefits and/or risks.\n"),o("ul",[o("li",[e._v("The beneficiaries of the change(s) (ie. who will these changes impact and how?)")]),e._v(" "),o("li",[e._v("Voters should understand the importance of the change(s) in a simple way")])])]),e._v(" "),o("li",[e._v("Supplementary materials - Optional materials eg. models, graphs, tables, research, signed petition, etc")])]),e._v(" "),o("h4",{attrs:{id:"community-spend-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-spend-proposal"}},[e._v("#")]),e._v(" Community-Spend Proposal")]),e._v(" "),o("p",[e._v("An example of a successful community spend proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-63-accepted-activate-governance-discussions-on-the-discourse-forum-using-community-pool-funds/5833",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #63"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ol",[o("li",[e._v("Applicant(s) - The profile of the person(s)/entity making the proposal.\n"),o("ul",[o("li",[e._v("Who you are and your involvement in Cosmos and/or other blockchain networks.")]),e._v(" "),o("li",[e._v("An overview of team members involved and their relevant experience.")])])]),e._v(" "),o("li",[e._v("Problem - What you're solving and/or opportunity you're addressing.\n"),o("ul",[o("li",[e._v("Past, present (and possibly a prediction of the future without this work being done).")])])]),e._v(" "),o("li",[e._v("Solution - How you're proposing to deliver the solution.\n"),o("ul",[o("li",[e._v("Your plan to fix the problem or deliver value.")]),e._v(" "),o("li",[e._v("The beneficiaries of this plan (ie. who will your plan impact and how?).")]),e._v(" "),o("li",[e._v("Your reasons for selecting this plan.")]),e._v(" "),o("li",[e._v("Your motivation for delivering this solution/value.")])])]),e._v(" "),o("li",[e._v("Funding - amount and denomination proposed eg. 5000 ATOM.\n"),o("ul",[o("li",[e._v("The entity controlling the account receiving the funding.")]),e._v(" "),o("li",[e._v("Consider an itemized breakdown of funding per major deliverable.")]),e._v(" "),o("li",[e._v("Note that the 'budget' of a spend proposal is generally the easiest thing to criticize. If your budget is vague, consider explaining the reasons you're unable to give a detailed breakdown and be clear about what happens if you do not meet you budget.")])])]),e._v(" "),o("li",[e._v("Deliverables and timeline - the specifics of what you're delivering and how, and what to expect.\n"),o("ul",[o("li",[e._v("What are the specific deliverables? (be detailed).")]),e._v(" "),o("li",[e._v("When will each of these be delivered?")]),e._v(" "),o("li",[e._v("How will each of these be delivered?")]),e._v(" "),o("li",[e._v("What will happen if you do not deliver on time?")]),e._v(" "),o("li",[e._v("Do you have a plan to return the funds if you're under-budget or the project fails?")]),e._v(" "),o("li",[e._v("How will you be accountable to the Cosmos Hub stakeholders?\n"),o("ul",[o("li",[e._v("How will you communicate updates and how often?")]),e._v(" "),o("li",[e._v("How can the community observe your progress?")]),e._v(" "),o("li",[e._v("How can the community provide feedback?")])])]),e._v(" "),o("li",[e._v("How should the quality of deliverables be assessed? eg. metrics.")])])]),e._v(" "),o("li",[e._v("Relationships and disclosures.\n"),o("ul",[o("li",[e._v("Have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation.")]),e._v(" "),o("li",[e._v("How will you and/or your organization benefit?")]),e._v(" "),o("li",[e._v("Do you see this work continuing in the future and is there a plan?")]),e._v(" "),o("li",[e._v("What are the risks involved with this work?")]),e._v(" "),o("li",[e._v("Do you have conflicts of interest to declare?")])])])]),e._v(" "),o("h3",{attrs:{id:"begin-with-a-well-considered-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#begin-with-a-well-considered-draft-proposal"}},[e._v("#")]),e._v(" Begin with a well-considered draft proposal")]),e._v(" "),o("p",[e._v("Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.")]),e._v(" "),o("p",[e._v("This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.")]),e._v(" "),o("h3",{attrs:{id:"engage-the-community-with-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-the-community-with-your-draft-proposal"}},[e._v("#")]),e._v(" Engage the community with your draft proposal")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Post a draft of your proposal as a topic in the appropriate category of the forum. "),o("a",{attrs:{href:"https://forum.cosmos.network/c/hub-proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hub Proposals"),o("OutboundLink")],1),e._v(" is a catch-all if you are not sure where to post, but there are categories for all types of proposals.")])]),e._v(" "),o("li",[o("p",[e._v("Directly engage key members of the community for feedback. These could be large contributors, those likely to be most impacted by the proposal, and entities with high stake-backing (eg. high-ranked validators; large stakers).")])]),e._v(" "),o("li",[o("p",[e._v("Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub account"),o("OutboundLink")],1),e._v(", the "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Governance account"),o("OutboundLink")],1),e._v(", and other governance-focused groups.")])])]),e._v(" "),o("h3",{attrs:{id:"submit-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submit-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submit your proposal to the testnet")]),e._v(" "),o("p",[e._v("Before going on mainnet, you can test your proposal on the "),o("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[e._v("testnet")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a great way to make sure your proposal looks the way you want and refine it before heading to mainnet.")]),e._v(" "),o("h2",{attrs:{id:"stage-3-your-on-chain-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-3-your-on-chain-proposal"}},[e._v("#")]),e._v(" Stage 3: Your On-Chain Proposal")]),e._v(" "),o("p",[e._v("A majority of the voting community should probably be aware of the proposal and have considered it before the proposal goes live on-chain. If you're taking a conservative approach, you should have reasonable confidence that your proposal will pass before risking deposit contributions. Make revisions to your draft proposal after each stage of engagement.")]),e._v(" "),o("p",[e._v("See the "),o("RouterLink",{attrs:{to:"/governance/submitting.html"}},[e._v("submitting guide")]),e._v(" for more on submitting proposals.")],1),e._v(" "),o("h3",{attrs:{id:"the-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-deposit-period"}},[e._v("#")]),e._v(" The Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (250 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 250 ATOM), then this may be an opportunity for others to show their support by contributing (and risking) their ATOMs as a bond for your proposal. You can request contributions openly and also contact stakeholders directly (particularly stakeholders who are enthusiastic about your proposal). Remember that each contributor is risking their funds, and you can "),o("RouterLink",{attrs:{to:"/governance/process.html#burned-deposits"}},[e._v("read more about the conditions for burning deposits here")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit voting period.")]),e._v(" "),o("p",[e._v("A large cross-section of the blockchain/cryptocurrency community exists on Twitter. Having your proposal in the deposit period is a good time to engage the so-called 'crypto Twitter' Cosmos community to prepare validators to vote (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmosvalidator",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmosvalidator"),o("OutboundLink")],1),e._v(") and ATOM-holders that are staking (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmoshub"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@CosmosGov"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("h3",{attrs:{id:"the-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-voting-period"}},[e._v("#")]),e._v(" The Voting Period")]),e._v(" "),o("p",[e._v("At this point you'll want to track which validator has voted and which has not. You'll want to re-engage directly with top stake-holders, ie. the highest-ranking validator operators, to ensure that:")]),e._v(" "),o("ol",[o("li",[e._v("they are aware of your proposal;")]),e._v(" "),o("li",[e._v("they can ask you any questions about your proposal; and")]),e._v(" "),o("li",[e._v("they are prepared to vote.")])]),e._v(" "),o("p",[e._v("Remember that any voter may change their vote at any time before the voting period ends. That historically doesn't happen often, but there may be an opportunity to convince a voter to change their vote. The biggest risk is that stakeholders won't vote at all (for a number of reasons). Validator operators tend to need multiple reminders to vote. How you choose to contact validator operators, how often, and what you say is up to you--remember that no validator is obligated to vote, and that operators are likely occupied by competing demands for their attention. Take care not to stress any potential relationship with validator operators.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{536:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"off-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-proposal-process"}},[e._v("#")]),e._v(" Off-Chain Proposal Process")]),e._v(" "),o("p",[e._v("Once a proposal is on-chain, it cannot be changed to reflect feedback or new information. It's very important to give a proposal time off-chain to receive feedback, input, and edits before going on-chain and asking for votes.")]),e._v(" "),o("p",[e._v("The process of passing a proposal starts long before it goes on-chain!")]),e._v(" "),o("p",[e._v("There are currently several types of proposals supported by the Cosmos Hub:")]),e._v(" "),o("ul",[o("li",[o("strong",[o("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("Text")])],1),e._v(" - Proposal to agree to a certain strategy, plan, commitment, future upgrade or other statement. Text proposals do not directly cause any changes, but they can be used to take a record of the community's opinion or commitment to a future idea.")]),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[o("strong",[e._v("Community Pool Spend")])]),e._v(" - Proposal to spend funds from the community pool on a project.")],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[o("strong",[e._v("Parameter Change")])]),e._v(" - Proposal to change a core on-chain parameter.")],1),e._v(" "),o("li",[o("strong",[e._v("Software Upgrade")]),e._v(" - Proposal to upgrade the chain version.")]),e._v(" "),o("li",[o("strong",[e._v("IBC Client Update")]),e._v(" - Proposal to update an IBC client.")])]),e._v(" "),o("p",[e._v("You'll first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.")]),e._v(" "),o("h2",{attrs:{id:"engage-directly-with-the-voting-community-and-seek-feedback"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-directly-with-the-voting-community-and-seek-feedback"}},[e._v("#")]),e._v(" Engage directly with the voting community and seek feedback")]),e._v(" "),o("p",[e._v("Engagement is likely to be critical to the success of a proposal. The degree to which you engage with the Cosmos Hub community should be relative to the potential impact that your proposal may have on the stakeholders. This guide does not cover all ways of engaging but here are some suggestions:")]),e._v(" "),o("ul",[o("li",[e._v("Post your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Mention the idea in a community call (often hosted on "),o("a",{attrs:{href:"https://twitter.com/CosmosHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("li",[e._v("Host an AMA on "),o("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.")]),e._v(" "),o("p",[e._v("There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.")]),e._v(" "),o("p",[o("strong",[e._v("Why do it in stages?")]),e._v(" It's a more conservative approach to save resources. The idea is to check in with key stakeholders at each stage before investing more resources into developing your proposal.")]),e._v(" "),o("p",[e._v("In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Cosmos Hub, timeline, any funding needs) and check:")]),e._v(" "),o("ul",[o("li",[e._v("Does it make sense?")]),e._v(" "),o("li",[e._v("Are there critical flaws?")]),e._v(" "),o("li",[e._v("How will this affect other projects or properties of the Hub?")])]),e._v(" "),o("p",[e._v("You should be enagaging with key stakeholders (e.g., a large validator operator) with a few short sentences to measure their support. Here's an example:")]),e._v(" "),o("p",[e._v('"We are considering a proposal for funding to work on '),o("code",[e._v("project")]),e._v(". We think it will help the Hub to "),o("code",[e._v("outcome")]),e._v(". Timeline is "),o("code",[e._v("x")]),e._v(", and we're asking for "),o("code",[e._v("y")]),e._v(" amount. Do you think that this is a proposal that "),o("code",[e._v("large validator")]),e._v(' may support?"')]),e._v(" "),o("p",[o("strong",[e._v("Why a large validator?")]),e._v(" They tend to be the de facto decision-makers on the Cosmos Hub, since their delegators also delegate their voting power. If you can establish a base layer of off-chain support, you can be more confident that it's worth proceeding to the next stage.")]),e._v(" "),o("p",[o("strong",[e._v("Note:")]),e._v(" Many validators will likely hesitate to commit support, and that's okay. It will be important to reassure these stakeholders that this isn't a binding a commitment. You're just canvasing the community to get a feel for whether it's worthwhile to proceed. It's also an opportunity to connect with new people and to answer their questions about what it is you're working on. It will be important for them to clearly understand why you think what you're proposing will be valuable to the Cosmos Hub, and if possible, why it will be valuable to them as long-term stakeholders.")]),e._v(" "),o("p",[e._v("If you're already confident about your idea, "),o("a",{attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("skip to Stage 2")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"stage-1-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-1-your-idea"}},[e._v("#")]),e._v(" Stage 1: Your Idea")]),e._v(" "),o("h3",{attrs:{id:"not-yet-confident-about-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#not-yet-confident-about-your-idea"}},[e._v("#")]),e._v(" Not yet confident about your idea?")]),e._v(" "),o("p",[e._v("Great! Governance proposals potentially impact many stakeholders. Introduce your idea with known members of the community before investing resources into drafting a proposal. Don't let negative feedback dissuade you from exploring your idea if you think that it's still important.")]),e._v(" "),o("p",[e._v("If you know people who are very involved with the Cosmos Hub, send them a private message with a concise overview of what you think will result from your idea or proposed changes. Wait for them to ask questions before providing details. Do the same in semi-private channels where people tend to be respectful (and hopefully supportive).")]),e._v(" "),o("h3",{attrs:{id:"confident-with-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confident-with-your-idea"}},[e._v("#")]),e._v(" Confident with your idea?")]),e._v(" "),o("p",[e._v("Great! However, remember that governance proposals potentially impact many stakeholders, which can happen in unexpected ways. Introduce your idea with members of the community before investing resources into drafting a proposal. At this point you should seek out and carefully consider critical feedback in order to protect yourself from "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Confirmation_bias",target:"_blank",rel:"noopener noreferrer"}},[e._v("confirmation bias"),o("OutboundLink")],1),e._v(". This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.")]),e._v(" "),o("p",[e._v("Posting your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1),e._v(" is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.")]),e._v(" "),o("h3",{attrs:{id:"are-you-ready-to-draft-a-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#are-you-ready-to-draft-a-governance-proposal"}},[e._v("#")]),e._v(" Are you ready to draft a governance proposal?")]),e._v(" "),o("p",[e._v("There will likely be differences of opinion about the value of what you're proposing to do and the strategy by which you're planning to do it. If you've considered feedback from broad perspectives and think that what you're doing is valuable and that your strategy should work, and you believe that others feel this way as well, it's likely worth drafting a proposal. However, remember that the largest ATOM stakers have the biggest vote, so a vocal minority isn't necessarily representative or predictive of the outcome of an on-chain vote.")]),e._v(" "),o("p",[e._v("You could choose to take a conservative approach and wait until you have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting the details of your proposal. Or you could propose the idea, or define the problem statement and let the community participate freely in drafting competing solutions to solve the issue.")]),e._v(" "),o("h2",{attrs:{id:"stage-2-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("#")]),e._v(" Stage 2: Your Draft Proposal")]),e._v(" "),o("p",[e._v("The next major section outlines and describes some potential elements of drafting a proposal. Ensure that you have considered your proposal and anticipated questions that the community will likely ask. "),o("strong",[e._v("Once your proposal is on-chain, you will not be able to change it.")])]),e._v(" "),o("h3",{attrs:{id:"proposal-elements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-elements"}},[e._v("#")]),e._v(" Proposal Elements")]),e._v(" "),o("p",[e._v("It will be important to balance two things: being detailed and being concise. You'll want to be concise so that people can assess your proposal quickly. You'll want to be detailed so that voters will have a clear, meaningful understanding of what the changes are and how they are likely to be impacted.")]),e._v(" "),o("p",[e._v("Each major proposal type has a rough template available on the forum: "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-signaling-text-category/5947",target:"_blank",rel:"noopener noreferrer"}},[e._v("Text"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-community-spend-category/5949",target:"_blank",rel:"noopener noreferrer"}},[e._v("community pool spend"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-parameter-change-category/5950",target:"_blank",rel:"noopener noreferrer"}},[e._v("parameter change"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-software-upgrade-category/5951",target:"_blank",rel:"noopener noreferrer"}},[e._v("software upgrade"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Each proposal should contain a summmary with key details about what the proposal hopes to change. If you were viewing only the summary with no other context, it should be a good start to being able to make a decision.")]),e._v(" "),o("p",[e._v("Assume that many people will stop reading at this point. However it is important to provide in-depth information. The on-chain proposal text should also include a link to an un-editable version of the text, such as an IPFS pin, and a link to where discussion about the idea is happening.")]),e._v(" "),o("p",[e._v("A few more pointers for Parameter-change and Community Spend proposals are below.")]),e._v(" "),o("h4",{attrs:{id:"parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter-Change")]),e._v(" "),o("p",[e._v("An example of a successful parameter change proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-66-accepted-increase-active-validator-spots-to-175/6118/53",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #66"),o("OutboundLink")],1),e._v(". Note that this proposal went on-chain without the recommended IPFS pin.")]),e._v(" "),o("ol",[o("li",[e._v("Problem/Value - The problem or value that's motivating the parameter change(s).")]),e._v(" "),o("li",[e._v("Solution - How changing the parameter(s) will address the problem or improve the network.")]),e._v(" "),o("li",[e._v("Risks & Benefits - How making this/these change(s) may expose stakeholders to new benefits and/or risks.\n"),o("ul",[o("li",[e._v("The beneficiaries of the change(s) (ie. who will these changes impact and how?)")]),e._v(" "),o("li",[e._v("Voters should understand the importance of the change(s) in a simple way")])])]),e._v(" "),o("li",[e._v("Supplementary materials - Optional materials eg. models, graphs, tables, research, signed petition, etc")])]),e._v(" "),o("h4",{attrs:{id:"community-spend-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-spend-proposal"}},[e._v("#")]),e._v(" Community-Spend Proposal")]),e._v(" "),o("p",[e._v("An example of a successful community spend proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-63-accepted-activate-governance-discussions-on-the-discourse-forum-using-community-pool-funds/5833",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #63"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ol",[o("li",[e._v("Applicant(s) - The profile of the person(s)/entity making the proposal.\n"),o("ul",[o("li",[e._v("Who you are and your involvement in Cosmos and/or other blockchain networks.")]),e._v(" "),o("li",[e._v("An overview of team members involved and their relevant experience.")])])]),e._v(" "),o("li",[e._v("Problem - What you're solving and/or opportunity you're addressing.\n"),o("ul",[o("li",[e._v("Past, present (and possibly a prediction of the future without this work being done).")])])]),e._v(" "),o("li",[e._v("Solution - How you're proposing to deliver the solution.\n"),o("ul",[o("li",[e._v("Your plan to fix the problem or deliver value.")]),e._v(" "),o("li",[e._v("The beneficiaries of this plan (ie. who will your plan impact and how?).")]),e._v(" "),o("li",[e._v("Your reasons for selecting this plan.")]),e._v(" "),o("li",[e._v("Your motivation for delivering this solution/value.")])])]),e._v(" "),o("li",[e._v("Funding - amount and denomination proposed eg. 5000 ATOM.\n"),o("ul",[o("li",[e._v("The entity controlling the account receiving the funding.")]),e._v(" "),o("li",[e._v("Consider an itemized breakdown of funding per major deliverable.")]),e._v(" "),o("li",[e._v("Note that the 'budget' of a spend proposal is generally the easiest thing to criticize. If your budget is vague, consider explaining the reasons you're unable to give a detailed breakdown and be clear about what happens if you do not meet you budget.")])])]),e._v(" "),o("li",[e._v("Deliverables and timeline - the specifics of what you're delivering and how, and what to expect.\n"),o("ul",[o("li",[e._v("What are the specific deliverables? (be detailed).")]),e._v(" "),o("li",[e._v("When will each of these be delivered?")]),e._v(" "),o("li",[e._v("How will each of these be delivered?")]),e._v(" "),o("li",[e._v("What will happen if you do not deliver on time?")]),e._v(" "),o("li",[e._v("Do you have a plan to return the funds if you're under-budget or the project fails?")]),e._v(" "),o("li",[e._v("How will you be accountable to the Cosmos Hub stakeholders?\n"),o("ul",[o("li",[e._v("How will you communicate updates and how often?")]),e._v(" "),o("li",[e._v("How can the community observe your progress?")]),e._v(" "),o("li",[e._v("How can the community provide feedback?")])])]),e._v(" "),o("li",[e._v("How should the quality of deliverables be assessed? eg. metrics.")])])]),e._v(" "),o("li",[e._v("Relationships and disclosures.\n"),o("ul",[o("li",[e._v("Have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation.")]),e._v(" "),o("li",[e._v("How will you and/or your organization benefit?")]),e._v(" "),o("li",[e._v("Do you see this work continuing in the future and is there a plan?")]),e._v(" "),o("li",[e._v("What are the risks involved with this work?")]),e._v(" "),o("li",[e._v("Do you have conflicts of interest to declare?")])])])]),e._v(" "),o("h3",{attrs:{id:"begin-with-a-well-considered-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#begin-with-a-well-considered-draft-proposal"}},[e._v("#")]),e._v(" Begin with a well-considered draft proposal")]),e._v(" "),o("p",[e._v("Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.")]),e._v(" "),o("p",[e._v("This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.")]),e._v(" "),o("h3",{attrs:{id:"engage-the-community-with-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-the-community-with-your-draft-proposal"}},[e._v("#")]),e._v(" Engage the community with your draft proposal")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Post a draft of your proposal as a topic in the appropriate category of the forum. "),o("a",{attrs:{href:"https://forum.cosmos.network/c/hub-proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hub Proposals"),o("OutboundLink")],1),e._v(" is a catch-all if you are not sure where to post, but there are categories for all types of proposals.")])]),e._v(" "),o("li",[o("p",[e._v("Directly engage key members of the community for feedback. These could be large contributors, those likely to be most impacted by the proposal, and entities with high stake-backing (eg. high-ranked validators; large stakers).")])]),e._v(" "),o("li",[o("p",[e._v("Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub account"),o("OutboundLink")],1),e._v(", the "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Governance account"),o("OutboundLink")],1),e._v(", and other governance-focused groups.")])])]),e._v(" "),o("h3",{attrs:{id:"submit-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submit-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submit your proposal to the testnet")]),e._v(" "),o("p",[e._v("Before going on mainnet, you can test your proposal on the "),o("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[e._v("testnet")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a great way to make sure your proposal looks the way you want and refine it before heading to mainnet.")]),e._v(" "),o("h2",{attrs:{id:"stage-3-your-on-chain-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-3-your-on-chain-proposal"}},[e._v("#")]),e._v(" Stage 3: Your On-Chain Proposal")]),e._v(" "),o("p",[e._v("A majority of the voting community should probably be aware of the proposal and have considered it before the proposal goes live on-chain. If you're taking a conservative approach, you should have reasonable confidence that your proposal will pass before risking deposit contributions. Make revisions to your draft proposal after each stage of engagement.")]),e._v(" "),o("p",[e._v("See the "),o("RouterLink",{attrs:{to:"/governance/submitting.html"}},[e._v("submitting guide")]),e._v(" for more on submitting proposals.")],1),e._v(" "),o("h3",{attrs:{id:"the-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-deposit-period"}},[e._v("#")]),e._v(" The Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (250 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 250 ATOM), then this may be an opportunity for others to show their support by contributing (and risking) their ATOMs as a bond for your proposal. You can request contributions openly and also contact stakeholders directly (particularly stakeholders who are enthusiastic about your proposal). Remember that each contributor is risking their funds, and you can "),o("RouterLink",{attrs:{to:"/governance/process.html#burned-deposits"}},[e._v("read more about the conditions for burning deposits here")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit voting period.")]),e._v(" "),o("p",[e._v("A large cross-section of the blockchain/cryptocurrency community exists on Twitter. Having your proposal in the deposit period is a good time to engage the so-called 'crypto Twitter' Cosmos community to prepare validators to vote (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmosvalidator",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmosvalidator"),o("OutboundLink")],1),e._v(") and ATOM-holders that are staking (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmoshub"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@CosmosGov"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("h3",{attrs:{id:"the-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-voting-period"}},[e._v("#")]),e._v(" The Voting Period")]),e._v(" "),o("p",[e._v("At this point you'll want to track which validator has voted and which has not. You'll want to re-engage directly with top stake-holders, ie. the highest-ranking validator operators, to ensure that:")]),e._v(" "),o("ol",[o("li",[e._v("they are aware of your proposal;")]),e._v(" "),o("li",[e._v("they can ask you any questions about your proposal; and")]),e._v(" "),o("li",[e._v("they are prepared to vote.")])]),e._v(" "),o("p",[e._v("Remember that any voter may change their vote at any time before the voting period ends. That historically doesn't happen often, but there may be an opportunity to convince a voter to change their vote. The biggest risk is that stakeholders won't vote at all (for a number of reasons). Validator operators tend to need multiple reminders to vote. How you choose to contact validator operators, how often, and what you say is up to you--remember that no validator is obligated to vote, and that operators are likely occupied by competing demands for their attention. Take care not to stress any potential relationship with validator operators.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/82.8189f93a.js b/main/assets/js/82.3ccd9656.js similarity index 99% rename from main/assets/js/82.8189f93a.js rename to main/assets/js/82.3ccd9656.js index 9563d1f312c..7e1f7a34a9a 100644 --- a/main/assets/js/82.8189f93a.js +++ b/main/assets/js/82.3ccd9656.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{605:function(t,a,e){"use strict";e.r(a);var c=e(1),b=Object(c.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"formatting-a-proposal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatting-a-proposal"}},[t._v("#")]),t._v(" Formatting a Proposal")]),t._v(" "),e("p",[t._v("Many proposals allow for long form text to be included, usually under the key "),e("code",[t._v("description")]),t._v(". These provide the opportunity to include "),e("a",{attrs:{href:"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax",target:"_blank",rel:"noopener noreferrer"}},[t._v("markdown"),e("OutboundLink")],1),t._v(" if formatted correctly, as well as line breaks with "),e("code",[t._v("\\n")]),t._v(".")]),t._v(" "),e("p",[t._v("Beware, however, that if you are using the CLI to create a proposal, and setting "),e("code",[t._v("description")]),t._v(" using a flag, the text will be "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Escape_sequences_in_C",target:"_blank",rel:"noopener noreferrer"}},[t._v("escaped"),e("OutboundLink")],1),t._v(" which may have undesired effects.")]),t._v(" "),e("p",[t._v("Formating a proposal can be a trial-and-error process, which is why first submitting to the "),e("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[t._v("testnet")]),t._v(" is recommended.\n")],1),t._v(" "),e("p",[t._v("The examples shown below are of the text in a "),e("code",[t._v("json")]),t._v(" file packaged into a "),e("code",[t._v("submit-proposal")]),t._v(" transaction sent on-chain. More details about how to submit a proposal are in the "),e("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("Submitting a Governance Proposal")]),t._v(" section, but for now just be aware that the examples are the contents of a file separate from the transaction. As a general rule, any flags specific to a proposal (e.g., Title, description, deposit, parameters, recipient) can be placed in a "),e("code",[t._v("json")]),t._v(" file, while flags general to a transaction of any kind (e.g., chain-id, node-id, gas, fees) can remain in the CLI.")],1),t._v(" "),e("h2",{attrs:{id:"text"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#text"}},[t._v("#")]),t._v(" Text")]),t._v(" "),e("p",[t._v("Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub.")]),t._v(" "),e("p",[t._v("There are three components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("h3",{attrs:{id:"real-example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[t._v("Proposal 12"),e("OutboundLink")],1),t._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBcmUgVmFsaWRhdG9ycyBDaGFyZ2luZyAwJSBDb21taXNzaW9uIEhhcm1mdWwgdG8gdGhlIFN1Y2Nlc3Mgb2YgdGhlIENvc21vcyBIdWI/JnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtUaGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgaXMgaW50ZW5kZWQgdG8gYWN0IHB1cmVseSBhcyBhIHNpZ25hbGxpbmcgcHJvcG9zYWwuIFRocm91Z2hvdXQgdGhpcyBoaXN0b3J5IG9mIHRoZSBDb3Ntb3MgSHViLCB0aGVyZSBoYXMgYmVlbiBtdWNoIGRlYmF0ZSBhYm91dCB0aGUgaW1wYWN0IHRoYXQgdmFsaWRhdG9ycyBjaGFyZ2luZyAwJSBjb21taXNzaW9uIGhhcyBvbiB0aGUgQ29zbW9zIEh1YiwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjZW50cmFsaXphdGlvbiBvZiB0aGUgQ29zbW9zIEh1YiBhbmQgdGhlIHN1c3RhaW5hYmlsaXR5IGZvciB2YWxpZGF0b3Igb3BlcmF0aW9ucy4gRGlzY3Vzc2lvbiBhcm91bmQgdGhpcyB0b3BpYyBoYXMgdGFrZW4gcGxhY2UgaW4gbWFueSBwbGFjZXMgaW5jbHVkaW5nIG51bWVyb3VzIHRocmVhZHMgb24gdGhlIENvc21vcyBGb3J1bSwgcHVibGljIFRlbGVncmFtIGNoYW5uZWxzLCBhbmQgaW4tcGVyc29uIG1lZXR1cHMuIEJlY2F1c2UgdGhpcyBoYXMgYmVlbiBvbmUgb2YgdGhlIHByaW1hcnkgZGlzY3Vzc2lvbiBwb2ludHMgaW4gb2ZmLWNoYWluIENvc21vcyBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zLCB3ZSBiZWxpZXZlIGl0IGlzIGltcG9ydGFudCB0byBnZXQgYSBzaWduYWwgb24gdGhlIG1hdHRlciBmcm9tIHRoZSBvbi1jaGFpbiBnb3Zlcm5hbmNlIHByb2Nlc3Mgb2YgdGhlIENvc21vcyBIdWIuIFRoZXJlIGhhdmUgYmVlbiBwYXN0IGRpc2N1c3Npb25zIG9uIHRoZSBDb3Ntb3MgRm9ydW0gYWJvdXQgcGxhY2luZyBhbiBpbi1wcm90b2NvbCByZXN0cmljdGlvbiBvbiB2YWxpZGF0b3JzIGZyb20gY2hhcmdpbmcgMCUgY29tbWlzc2lvbi4gaHR0cHM6Ly9mb3J1bS5jb3Ntb3MubmV0d29yay90L2dvdmVybmFuY2UtbGltaXQtdmFsaWRhdG9ycy1mcm9tLTAtY29tbWlzc2lvbi1mZWUvMjE4MiBUaGlzIHByb3Bvc2FsIGlzIE5PVCBwcm9wb3NpbmcgYSBwcm90b2NvbC1lbmZvcmNlZCBtaW5pbXVtLiBJdCBpcyBtZXJlbHkgYSBzaWduYWxsaW5nIHByb3Bvc2FsIHRvIHF1ZXJ5IHRoZSB2aWV3cG9pbnQgb2YgdGhlIGJvbmRlZCBBdG9tIGhvbGRlcnMgYXMgYSB3aG9sZS4gV2UgZW5jb3VyYWdlIHBlb3BsZSB0byBkaXNjdXNzIHRoZSBxdWVzdGlvbiBiZWhpbmQgdGhpcyBnb3Zlcm5hbmNlIHByb3Bvc2FsIGluIHRoZSBhc3NvY2lhdGVkIENvc21vcyBIdWIgZm9ydW0gcG9zdCBoZXJlOiBodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtYXJlLXZhbGlkYXRvcnMtY2hhcmdpbmctMC1jb21taXNzaW9uLWhhcm1mdWwtdG8tdGhlLXN1Y2Nlc3Mtb2YtdGhlLWNvc21vcy1odWIvMjUwNSBBbHNvLCBmb3Igdm90ZXJzIHdobyBiZWxpZXZlIHRoYXQgMCUgY29tbWlzc2lvbiByYXRlcyBhcmUgaGFybWZ1bCB0byB0aGUgbmV0d29yaywgd2UgZW5jb3VyYWdlIG9wdGlvbmFsbHkgc2hhcmluZyB5b3VyIGJlbGllZiBvbiB3aGF0IGEgaGVhbHRoeSBtaW5pbXVtIGNvbW1pc3Npb24gcmF0ZSBmb3IgdGhlIG5ldHdvcmsgdXNpbmcgdGhlIG1lbW8gZmllbGQgb2YgdGhlaXIgdm90ZSB0cmFuc2FjdGlvbiBvbiB0aGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgb3IgbGlua2luZyB0byBhIGxvbmdlciB3cml0dGVuIGV4cGxhbmF0aW9uIHN1Y2ggYXMgYSBGb3J1bSBvciBibG9nIHBvc3QuIFRoZSBxdWVzdGlvbiBvbiB0aGlzIHByb3Bvc2FsIGlzIOKAnEFyZSB2YWxpZGF0b3JzIGNoYXJnaW5nIDAlIGNvbW1pc3Npb24gaGFybWZ1bCB0byB0aGUgc3VjY2VzcyBvZiB0aGUgQ29zbW9zIEh1Yj/igJ0uIEEgWWVzIHZvdGUgaXMgc3RhdGluZyB0aGF0IHRoZXkgQVJFIGhhcm1mdWwgdG8gdGhlIG5ldHdvcmsncyBzdWNjZXNzLCBhbmQgYSBObyB2b3RlIGlzIGEgc3RhdGVtZW50IHRoYXQgdGhleSBhcmUgTk9UIGhhcm1mdWwuJnF1b3Q7LAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMHVhdG9tJnF1b3Q7Cn0K"}}),t._v(" "),e("h2",{attrs:{id:"community-pool-spend"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[t._v("#")]),t._v(" Community Pool Spend")]),t._v(" "),e("p",[t._v("There are five (5) components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Recipient")]),t._v(" - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool")]),t._v(" "),e("li",[e("strong",[t._v("Amount")]),t._v(" - the amount of funding that the recipient will receive in micro-ATOMs (uatom)")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("If the description says that a certain address will receive a certain number of ATOMs, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise). Check that the description aligns with teh 'recipient' address.")]),t._v(" "),e("h3",{attrs:{id:"real-example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-2"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("amount")]),t._v(" is "),e("code",[t._v("1000000000uatom")]),t._v(". 1,000,000 micro-ATOM is equal to 1 ATOM, so "),e("code",[t._v("recipient")]),t._v(" address "),e("code",[t._v("cosmos1xf2qwf6g6xvuttpf37xwrgp08qq984244952ze")]),t._v(" will receive 1000 ATOM if this proposal is passed.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v('deposit": "1000000uatom')]),t._v(" results in 1 ATOM being used from the proposal submitter's account.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBY3RpdmF0ZSBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zIG9uIHRoZSBEaXNjb3Vyc2UgZm9ydW0gdXNpbmcgY29tbXVuaXR5IHBvb2wgZnVuZHMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90OyMjIFN1bW1hcnlcblByb3Bvc2FsIHRvIHJlcXVlc3QgZm9yIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBiZSBzZW50IHRvIGEgbXVsdGlzaWcgd2hvIHdpbGwgcHV0IGZ1bmRzIHRvd2FyZHMgc3Rld2FyZHNoaXAgb2YgdGhlIERpc2NvdXJzZSBmb3J1bSB0byBtYWtlIGl0IGFuIGF1dGhvcml0YXRpdmUgcmVjb3JkIG9mIGdvdmVybmFuY2UgZGVjaXNpb25zIGFzIHdlbGwgYXMgYSB2aWJyYW50IHNwYWNlIHRvIGRyYWZ0IGFuZCBkaXNjdXNzIHByb3Bvc2Fscy5cbiMjIERldGFpbHNcbldlIGFyZSByZXF1ZXN0aW5nIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBhY3RpdmF0ZSBhbmQgc3Rld2FyZCB0aGUgQ29zbW9zIEh1YiAoRGlzY291cnNlKSBmb3J1bSBmb3IgdGhlIG5leHQgc2l4IG1vbnRocy5cblxuT2ZmLWNoYWluIGdvdmVybmFuY2UgY29udmVyc2F0aW9ucyBhcmUgY3VycmVudGx5IGhpZ2hseSBmcmFnbWVudGVkLCB3aXRoIG5vIHNoYXJlZCBwdWJsaWMgdmVudWUgZm9yIGRpc2N1c3NpbmcgcHJvcG9zYWxzIGFzIHRoZXkgcHJvY2VlZCB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRyYWZ0ZWQgYW5kIHZvdGVkIG9uLiBJdCBtZWFucyB0aGVyZSBpcyBubyByZWNvcmQgb2YgZGlzY3Vzc2lvbiB0aGF0IHZvdGVycyBjYW4gY29uZmlkZW50bHkgcG9pbnQgdG8gZm9yIGNvbnRleHQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZ292ZXJuYW5jZSBkZWNpc2lvbnMgYmVjb21pbmcgZGVsZWdpdGltaXplZCBieSBzdGFrZWhvbGRlcnMuXG5cblRoZSByZXF1ZXN0ZWQgYW1vdW50IHdpbGwgYmUgc2VudCB0byBhIG11bHRpc2lnIGNvbXByaXNpbmcgaW5kaXZpZHVhbHMgKG1lbWJlcnMgbGlzdGVkIGJlbG93KSB3aG8gY2FuIGVuc3VyZSB0aGF0IHRoZSB0b2tlbnMgYXJlIHNwZW50IGp1ZGljaW91c2x5LiBXZSBiZWxpZXZlIHN0ZXdhcmRzaGlwIG9mIHRoZSBmb3J1bSByZXF1aXJlczpcblxuKiAqKk1vZGVyYXRpb24qKjogRm9ybWF0LCBlZGl0LCBhbmQgY2F0ZWdvcml6ZSBwb3N0czsgU3RhbmRhcmRpemUgdGl0bGVzIGFuZCB0YWdzOyBNb25pdG9yIGFuZCBhcHByb3ZlIG5ldyBwb3N0czsgQXJjaGl2ZSBwb3N0cy5cbiogKipGYWNpbGl0YXRpb24qKjogQXNrIGNsYXJpZnlpbmcgcXVlc3Rpb25zIGluIHBvc3QgdGhyZWFkczsgU3VtbWFyaXplIGRpc2N1c3Npb25zOyBQcm92aWRlIGhpc3RvcmljYWwgcHJlY2VkZW5jZSB0byBkaXNjdXNzaW9ucy5cbiogKipFbmdhZ2VtZW50Kio6IENpcmN1bGF0ZSBpbXBvcnRhbnQgcG9zdHMgb24gb3RoZXIgc29jaWFsIGNoYW5uZWxzIHRvIGluY3JlYXNlIGNvbW11bml0eSBwYXJ0aWNpcGF0aW9uOyBTb2xpY2l0IGlucHV0IGZyb20ga2V5IHN0YWtlaG9sZGVycy5cbiogKipHdWlkYW5jZSoqOiBPcmllbnQgYW5kIGFzc2lzdCBuZXdjb21lcnM7IEd1aWRlIHByb3Bvc2VycyB0aHJvdWdoIGdvdmVybmFuY2UgcHJvY2VzczsgQW5zd2VyIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIGZvcnVtIG9yIENvc21vcyBlY29zeXN0ZW0uXG5UaGUgd29yayB0byBzdGV3YXJkIHRoZSBmb3J1bSB3aWxsIGJlIGNhcnJpZWQgb3V0IGJ5IG1lbWJlcnMgb2YgW0h5cGhhIFdvcmtlciBDby1vcF0oaHR0cHM6Ly9oeXBoYS5jb29wLykgYW5kIGluZGl2aWR1YWxzIHNlbGVjdGVkIGZyb20gdGhlIGNvbW11bml0eSB0byBjYXJyeSBvdXQgc2NvcGVkIHRhc2tzIGluIGV4Y2hhbmdlIGZvciBBVE9NIGZyb20gdGhpcyBidWRnZXQuXG4jIyBNdWx0aXNpZyBNZW1iZXJzXG4qIEh5cGhhOiBNYWkgSXNoaWthd2EgU3V0dG9uIChIeXBoYSBDby1vcClcbiogVmFsaWRhdG9yOiBEYW5pZWwgSHdhbmcgKFN0YWtlZmlzaClcbiogQ29zbW9zIEh1YiBkZXZlbG9wZXI6IExhdXJlbiBHYWxsaW5hcm8gKEludGVyY2hhaW4gQmVybGluKVxuXG5XZSBmZWVsIHRoZSBtZW1iZXJzaGlwIG9mIHRoZSBtdWx0aXNpZyBzaG91bGQgYmUgcm90YXRlZCBmb2xsb3dpbmcgdGhlIHNpeC1tb250aCBwaWxvdCBwZXJpb2QgdG8gcHJlc2VydmUgaW5zaWdodCBmcm9tIHRoZSBkaXN0aW5jdCBzcGVjaWFsaXphdGlvbnMgKGkuZS4sIENvc21vcyBIdWIgdmFsaWRhdG9ycyBhbmQgZGV2ZWxvcGVycykuXG4jIyBUaW1lbGluZSBhbmQgRGVsaXZlcmFibGVzXG5XZSBlc3RpbWF0ZSB0aGUgdG90YWwgd29yayB0byB0YWtlIDI1MC0zMDAgaG91cnMgb3ZlciBzaXggbW9udGhzIHdoZXJlIHdlIGhvcGUgdG8gcHJvZHVjZTpcbiogKipNb3Zpbmcgc3VtbWFyaWVzOioqIFByb3ZpZGUgc3VjY2luY3Qgc3VtbWFyaWVzIG9mIHRoZSBwcm9wb3NhbHMgYW5kIGluY2x1ZGUgYWxsIHB1YmxpY2x5IHN0YXRlZCByZWFzb25zIHdoeSB2YXJpb3VzIGVudGl0aWVzIGFyZSBjaG9vc2luZyB0byB2b3RlIGZvci9hZ2FpbnN0IGEgZ2l2ZW4gcHJvcG9zYWwuIFRoZXNlIHN1bW1hcmllcyB3aWxsIGJlIHdyaXR0ZW4gb2JqZWN0aXZlbHksIG5vdCBzaWRpbmcgd2l0aCBhbnkgb25lIGVudGl0eS5cbiogKipWYWxpZGF0b3IgcGxhdGZvcm1zOioqIENyZWF0ZSBhIHNlY3Rpb24gb2YgdGhlIEZvcnVtIHdoZXJlIHdlIGNvbGxhdGUgYWxsIHZhbGlkYXRvcnMnIHZpc2lvbnMgZm9yIENvc21vcyBIdWIgZ292ZXJuYW5jZSB0byBhbGxvdyB0aGVtIHRvIHN0YXRlIHRoZWlyIHBvc2l0aW9ucyBwdWJsaWNseS4gV2Ugd2lsbCB3b3JrIHdpdGggdGhlIHNtYWxsZXIgdmFsaWRhdG9ycyB0byBlbnN1cmUgdGhleSBhcmUgZXF1YWxseSByZXByZXNlbnRlZC5cbiogKipSZWd1bGFyIGNoZWNrLWlucyB3aXRoIHRoZSBDb3Ntb25hdXQgREFPOioqIENvbGxhYm9yYXRlIHdpdGggdGhlIGZ1dHVyZSBDb3Ntb25hdXQgREFPIHRvIGVuc3VyZSBtYXhpbWFsIGFjY2Vzc2liaWxpdHkgYW5kIGVuZ2FnZW1lbnQuIENvbW11bml0eSBtYW5hZ2VtZW50IGlzIGEgY3JpdGljYWwsIGNvbXBsZW1lbnRhcnkgYXNwZWN0IG9mIGluY3JlYXNpbmcgcGFydGljaXBhdGlvbiBpbiBnb3Zlcm5hbmNlLlxuKiAqKkFubm91bmNlbWVudCBjaGFubmVsOioqIENyZWF0ZSBhIHJlYWQtb25seSBhbm5vdW5jZW1lbnQgY2hhbm5lbCBpbiB0aGUgQ29zbW9zIENvbW11bml0eSBEaXNjb3JkLCBzbyB0aGF0IG5ldyBwcm9wb3NhbHMgYW5kIG1ham9yIGRpc2N1c3Npb25zIGNhbiBiZSBlYXNpbHkgZm9sbG93ZWQuXG4qICoqVG9vbGluZyBmcmllbmRseSBwb3N0czoqKiBUYWcgYW5kIGNhdGVnb3JpemUgcG9zdHMgc28gdGhhdCB0aGV5IGNhbiBiZSBlYXNpbHkgaW5nZXN0ZWQgaW50byBleGlzdGluZyB0b29saW5nIHRoYXQgdmFsaWRhdG9ycyBoYXZlIHNldHVwLlxuKiAqKk5ldXRyYWwgbW9kZXJhdGlvbiBmcmFtZXdvcms6KiogRG9jdW1lbnQgYW5kIGZvbGxvdyB0cmFuc3BhcmVudCBzdGFuZGFyZHMgZm9yIGhvdyB0aGUgZm9ydW0gaXMgbW9kZXJhdGVkLlxuXG5BdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QsIHdlIHdpbGwgcHJvZHVjZSBhIHJlcG9ydCByZWZsZWN0aW5nIG9uIG91ciBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzLCBhbmQgcmVjb21tZW5kYXRpb25zIGZvciBob3cgdGhlIHdvcmsgb2YgbWFpbnRhaW5pbmcgYSBnb3Zlcm5hbmNlIHZlbnVlIGNhbiBiZSBjb250aW51b3VzbHkgc3VzdGFpbmVkIChlLmcuLCB0aHJvdWdoIGEgREFPKS4gV2Ugc2VlIHRoaXMgaW5pdGlhdGl2ZSBhcyBhIHByb2Nlc3Mgb2YgZGlzY292ZXJ5LCB3aGVyZSB3ZSBhcmUgbGVhcm5pbmcgYnkgZG9pbmcuXG5cbkZvciBtb3JlIGNvbnRleHQsIHlvdSBjYW4gcmVhZCB0aHJvdWdoIHRoZSBkaXNjdXNzaW9ucyBvbiB0aGlzIFtwcm9wb3NhbCBvbiB0aGUgRGlzY291cnNlIGZvcnVtXShodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtZHJhZnQtYWN0aXZhdGUtZ292ZXJuYW5jZS1kaXNjdXNzaW9ucy1vbi10aGUtZGlzY291cnNlLWZvcnVtLXVzaW5nLWNvbW11bml0eS1wb29sLWZ1bmRzLzU4MzMpLlxuXG4jIyBHb3Zlcm5hbmNlIFZvdGVzXG5UaGUgZm9sbG93aW5nIGl0ZW1zIHN1bW1hcml6ZSB0aGUgdm90aW5nIG9wdGlvbnMgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHRoaXMgcHJvcG9zYWw6XG4qKllFUyoqIC0gWW91IGFwcHJvdmUgdGhpcyBjb21tdW5pdHkgc3BlbmQgcHJvcG9zYWwgdG8gZGVwb3NpdCAxMDAwIEFUT00gdG8gYSBtdWx0aXNpZyB0aGF0IHdpbGwgc3BlbmQgdGhlbSB0byBpbXByb3ZlIGdvdmVybmFuY2UgZGlzY3Vzc2lvbnMgaW4gdGhlIERpc2NvdXJzZSBmb3J1bS5cbioqTk8qKiAtIFlvdSBkaXNhcHByb3ZlIG9mIHRoaXMgY29tbXVuaXR5IHNwZW5kIHByb3Bvc2FsIGluIGl0cyBjdXJyZW50IGZvcm0gKHBsZWFzZSBpbmRpY2F0ZSB3aHkgaW4gdGhlIENvc21vcyBGb3J1bSkuXG4qKk5PIFdJVEggVkVUTyoqIC0gWW91IGFyZSBzdHJvbmdseSBvcHBvc2VkIHRvIHRoaXMgY2hhbmdlIGFuZCB3aWxsIGV4aXQgdGhlIG5ldHdvcmsgaWYgcGFzc2VkLlxuKipBQlNUQUlOKiogLSBZb3UgYXJlIGltcGFydGlhbCB0byB0aGUgb3V0Y29tZSBvZiB0aGUgcHJvcG9zYWwuXG4jIyBSZWNpcGllbnRcbmNvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZVxuIyMgQW1vdW50XG4xMDAwIEFUT01cblxuKioqRGlzY2xvc3VyZSoqOiBIeXBoYSBoYXMgYW4gZXhpc3RpbmcgY29udHJhY3Qgd2l0aCB0aGUgSW50ZXJjaGFpbiBGb3VuZGF0aW9uIGZvY3VzZWQgb24gdGhlIHRlc3RuZXQgcHJvZ3JhbSBhbmQgaW1wcm92aW5nIGRvY3VtZW50YXRpb24uIFRoaXMgd29yayBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoYXQgY29udHJhY3QgYW5kIGlzIGZvY3VzZWQgb24gZW5nYWdpbmcgdGhlIGNvbW11bml0eSBpbiBnb3Zlcm5hbmNlLipcblxuSVBGUyBwaW4gb2YgcHJvcG9zYWwgb24tZm9ydW06IChodHRwczovL2lwZnMuaW8vaXBmcy9RbWFxN2Z0cVdjY2dZQ284VTFLWmZFbmp2alVEelNFR3BNeGNSeTYxdThnZjJZKSZxdW90OywKICAmcXVvdDtyZWNpcGllbnQmcXVvdDs6ICZxdW90O2Nvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZSZxdW90OywgCiAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAwdWF0b20mcXVvdDssCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7Cn0KCg=="}}),t._v(" "),e("h2",{attrs:{id:"param-change"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#param-change"}},[t._v("#")]),t._v(" Param Change")]),t._v(" "),e("p",[e("strong",[t._v("Note:")]),t._v(" Changes to the "),e("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("gov")]),t._v(" module"),e("OutboundLink")],1),t._v(" are different from the other kinds of parameter changes because "),e("code",[t._v("gov")]),t._v(" has subkeys, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[t._v("as discussed here"),e("OutboundLink")],1),t._v(". Only the "),e("code",[t._v("key")]),t._v(" part of the JSON file is different for "),e("code",[t._v("gov")]),t._v(" parameter-change proposals.")]),t._v(" "),e("p",[t._v("For parameter-change proposals, there are arguably seven (7) components, though three are nested beneath 'Changes':")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Changes")]),t._v(" - a component containing")]),t._v(" "),e("li",[e("strong",[t._v("Subspace")]),t._v(" - the Cosmos Hub module with the parameter that is being changed")]),t._v(" "),e("li",[e("strong",[t._v("Key")]),t._v(" - the parameter that will be changed")]),t._v(" "),e("li",[e("strong",[t._v("Value")]),t._v(" - the value of the parameter that will be changed by the governance mechanism")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("The components must be presented as shown in the example.")]),t._v(" "),e("h3",{attrs:{id:"real-example-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-3"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("This example is 'real', because it was put on-chain using the Theta testnet and can be seen in the block explorer "),e("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/proposals/87",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Not all explorers will show the proposed parameter changes that are coded into the proposal, so ensure that you verify that the description aligns with what the governance proposal is programmed to enact. If the description says that a certain parameter will be increased, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"IHsKICAmcXVvdDt0aXRsZSZxdW90OzogJnF1b3Q7RG9jIHVwZGF0ZSB0ZXN0OiBQYXJhbSBjaGFuZ2UgZm9yIE1heFZhbGlkYXRvcnMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1Rlc3RpbmcgdGhlIHByb3Bvc2FsIGZvcm1hdCBmb3IgaW5jcmVhc2luZyB0aGUgTWF4VmFsaWRhdG9yIHBhcmFtJnF1b3Q7LAogICZxdW90O2NoYW5nZXMmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7c3Vic3BhY2UmcXVvdDs6ICZxdW90O3N0YWtpbmcmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VmFsaWRhdG9ycyZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDIwMAogICAgfQogIF0sCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwdWF0b20mcXVvdDsKfQo="}})],1)}),[],!1,null,null,null);a.default=b.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{535:function(t,a,e){"use strict";e.r(a);var c=e(1),b=Object(c.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"formatting-a-proposal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatting-a-proposal"}},[t._v("#")]),t._v(" Formatting a Proposal")]),t._v(" "),e("p",[t._v("Many proposals allow for long form text to be included, usually under the key "),e("code",[t._v("description")]),t._v(". These provide the opportunity to include "),e("a",{attrs:{href:"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax",target:"_blank",rel:"noopener noreferrer"}},[t._v("markdown"),e("OutboundLink")],1),t._v(" if formatted correctly, as well as line breaks with "),e("code",[t._v("\\n")]),t._v(".")]),t._v(" "),e("p",[t._v("Beware, however, that if you are using the CLI to create a proposal, and setting "),e("code",[t._v("description")]),t._v(" using a flag, the text will be "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Escape_sequences_in_C",target:"_blank",rel:"noopener noreferrer"}},[t._v("escaped"),e("OutboundLink")],1),t._v(" which may have undesired effects.")]),t._v(" "),e("p",[t._v("Formating a proposal can be a trial-and-error process, which is why first submitting to the "),e("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[t._v("testnet")]),t._v(" is recommended.\n")],1),t._v(" "),e("p",[t._v("The examples shown below are of the text in a "),e("code",[t._v("json")]),t._v(" file packaged into a "),e("code",[t._v("submit-proposal")]),t._v(" transaction sent on-chain. More details about how to submit a proposal are in the "),e("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("Submitting a Governance Proposal")]),t._v(" section, but for now just be aware that the examples are the contents of a file separate from the transaction. As a general rule, any flags specific to a proposal (e.g., Title, description, deposit, parameters, recipient) can be placed in a "),e("code",[t._v("json")]),t._v(" file, while flags general to a transaction of any kind (e.g., chain-id, node-id, gas, fees) can remain in the CLI.")],1),t._v(" "),e("h2",{attrs:{id:"text"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#text"}},[t._v("#")]),t._v(" Text")]),t._v(" "),e("p",[t._v("Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub.")]),t._v(" "),e("p",[t._v("There are three components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("h3",{attrs:{id:"real-example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[t._v("Proposal 12"),e("OutboundLink")],1),t._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBcmUgVmFsaWRhdG9ycyBDaGFyZ2luZyAwJSBDb21taXNzaW9uIEhhcm1mdWwgdG8gdGhlIFN1Y2Nlc3Mgb2YgdGhlIENvc21vcyBIdWI/JnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtUaGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgaXMgaW50ZW5kZWQgdG8gYWN0IHB1cmVseSBhcyBhIHNpZ25hbGxpbmcgcHJvcG9zYWwuIFRocm91Z2hvdXQgdGhpcyBoaXN0b3J5IG9mIHRoZSBDb3Ntb3MgSHViLCB0aGVyZSBoYXMgYmVlbiBtdWNoIGRlYmF0ZSBhYm91dCB0aGUgaW1wYWN0IHRoYXQgdmFsaWRhdG9ycyBjaGFyZ2luZyAwJSBjb21taXNzaW9uIGhhcyBvbiB0aGUgQ29zbW9zIEh1YiwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjZW50cmFsaXphdGlvbiBvZiB0aGUgQ29zbW9zIEh1YiBhbmQgdGhlIHN1c3RhaW5hYmlsaXR5IGZvciB2YWxpZGF0b3Igb3BlcmF0aW9ucy4gRGlzY3Vzc2lvbiBhcm91bmQgdGhpcyB0b3BpYyBoYXMgdGFrZW4gcGxhY2UgaW4gbWFueSBwbGFjZXMgaW5jbHVkaW5nIG51bWVyb3VzIHRocmVhZHMgb24gdGhlIENvc21vcyBGb3J1bSwgcHVibGljIFRlbGVncmFtIGNoYW5uZWxzLCBhbmQgaW4tcGVyc29uIG1lZXR1cHMuIEJlY2F1c2UgdGhpcyBoYXMgYmVlbiBvbmUgb2YgdGhlIHByaW1hcnkgZGlzY3Vzc2lvbiBwb2ludHMgaW4gb2ZmLWNoYWluIENvc21vcyBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zLCB3ZSBiZWxpZXZlIGl0IGlzIGltcG9ydGFudCB0byBnZXQgYSBzaWduYWwgb24gdGhlIG1hdHRlciBmcm9tIHRoZSBvbi1jaGFpbiBnb3Zlcm5hbmNlIHByb2Nlc3Mgb2YgdGhlIENvc21vcyBIdWIuIFRoZXJlIGhhdmUgYmVlbiBwYXN0IGRpc2N1c3Npb25zIG9uIHRoZSBDb3Ntb3MgRm9ydW0gYWJvdXQgcGxhY2luZyBhbiBpbi1wcm90b2NvbCByZXN0cmljdGlvbiBvbiB2YWxpZGF0b3JzIGZyb20gY2hhcmdpbmcgMCUgY29tbWlzc2lvbi4gaHR0cHM6Ly9mb3J1bS5jb3Ntb3MubmV0d29yay90L2dvdmVybmFuY2UtbGltaXQtdmFsaWRhdG9ycy1mcm9tLTAtY29tbWlzc2lvbi1mZWUvMjE4MiBUaGlzIHByb3Bvc2FsIGlzIE5PVCBwcm9wb3NpbmcgYSBwcm90b2NvbC1lbmZvcmNlZCBtaW5pbXVtLiBJdCBpcyBtZXJlbHkgYSBzaWduYWxsaW5nIHByb3Bvc2FsIHRvIHF1ZXJ5IHRoZSB2aWV3cG9pbnQgb2YgdGhlIGJvbmRlZCBBdG9tIGhvbGRlcnMgYXMgYSB3aG9sZS4gV2UgZW5jb3VyYWdlIHBlb3BsZSB0byBkaXNjdXNzIHRoZSBxdWVzdGlvbiBiZWhpbmQgdGhpcyBnb3Zlcm5hbmNlIHByb3Bvc2FsIGluIHRoZSBhc3NvY2lhdGVkIENvc21vcyBIdWIgZm9ydW0gcG9zdCBoZXJlOiBodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtYXJlLXZhbGlkYXRvcnMtY2hhcmdpbmctMC1jb21taXNzaW9uLWhhcm1mdWwtdG8tdGhlLXN1Y2Nlc3Mtb2YtdGhlLWNvc21vcy1odWIvMjUwNSBBbHNvLCBmb3Igdm90ZXJzIHdobyBiZWxpZXZlIHRoYXQgMCUgY29tbWlzc2lvbiByYXRlcyBhcmUgaGFybWZ1bCB0byB0aGUgbmV0d29yaywgd2UgZW5jb3VyYWdlIG9wdGlvbmFsbHkgc2hhcmluZyB5b3VyIGJlbGllZiBvbiB3aGF0IGEgaGVhbHRoeSBtaW5pbXVtIGNvbW1pc3Npb24gcmF0ZSBmb3IgdGhlIG5ldHdvcmsgdXNpbmcgdGhlIG1lbW8gZmllbGQgb2YgdGhlaXIgdm90ZSB0cmFuc2FjdGlvbiBvbiB0aGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgb3IgbGlua2luZyB0byBhIGxvbmdlciB3cml0dGVuIGV4cGxhbmF0aW9uIHN1Y2ggYXMgYSBGb3J1bSBvciBibG9nIHBvc3QuIFRoZSBxdWVzdGlvbiBvbiB0aGlzIHByb3Bvc2FsIGlzIOKAnEFyZSB2YWxpZGF0b3JzIGNoYXJnaW5nIDAlIGNvbW1pc3Npb24gaGFybWZ1bCB0byB0aGUgc3VjY2VzcyBvZiB0aGUgQ29zbW9zIEh1Yj/igJ0uIEEgWWVzIHZvdGUgaXMgc3RhdGluZyB0aGF0IHRoZXkgQVJFIGhhcm1mdWwgdG8gdGhlIG5ldHdvcmsncyBzdWNjZXNzLCBhbmQgYSBObyB2b3RlIGlzIGEgc3RhdGVtZW50IHRoYXQgdGhleSBhcmUgTk9UIGhhcm1mdWwuJnF1b3Q7LAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMHVhdG9tJnF1b3Q7Cn0K"}}),t._v(" "),e("h2",{attrs:{id:"community-pool-spend"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[t._v("#")]),t._v(" Community Pool Spend")]),t._v(" "),e("p",[t._v("There are five (5) components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Recipient")]),t._v(" - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool")]),t._v(" "),e("li",[e("strong",[t._v("Amount")]),t._v(" - the amount of funding that the recipient will receive in micro-ATOMs (uatom)")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("If the description says that a certain address will receive a certain number of ATOMs, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise). Check that the description aligns with teh 'recipient' address.")]),t._v(" "),e("h3",{attrs:{id:"real-example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-2"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("amount")]),t._v(" is "),e("code",[t._v("1000000000uatom")]),t._v(". 1,000,000 micro-ATOM is equal to 1 ATOM, so "),e("code",[t._v("recipient")]),t._v(" address "),e("code",[t._v("cosmos1xf2qwf6g6xvuttpf37xwrgp08qq984244952ze")]),t._v(" will receive 1000 ATOM if this proposal is passed.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v('deposit": "1000000uatom')]),t._v(" results in 1 ATOM being used from the proposal submitter's account.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBY3RpdmF0ZSBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zIG9uIHRoZSBEaXNjb3Vyc2UgZm9ydW0gdXNpbmcgY29tbXVuaXR5IHBvb2wgZnVuZHMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90OyMjIFN1bW1hcnlcblByb3Bvc2FsIHRvIHJlcXVlc3QgZm9yIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBiZSBzZW50IHRvIGEgbXVsdGlzaWcgd2hvIHdpbGwgcHV0IGZ1bmRzIHRvd2FyZHMgc3Rld2FyZHNoaXAgb2YgdGhlIERpc2NvdXJzZSBmb3J1bSB0byBtYWtlIGl0IGFuIGF1dGhvcml0YXRpdmUgcmVjb3JkIG9mIGdvdmVybmFuY2UgZGVjaXNpb25zIGFzIHdlbGwgYXMgYSB2aWJyYW50IHNwYWNlIHRvIGRyYWZ0IGFuZCBkaXNjdXNzIHByb3Bvc2Fscy5cbiMjIERldGFpbHNcbldlIGFyZSByZXF1ZXN0aW5nIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBhY3RpdmF0ZSBhbmQgc3Rld2FyZCB0aGUgQ29zbW9zIEh1YiAoRGlzY291cnNlKSBmb3J1bSBmb3IgdGhlIG5leHQgc2l4IG1vbnRocy5cblxuT2ZmLWNoYWluIGdvdmVybmFuY2UgY29udmVyc2F0aW9ucyBhcmUgY3VycmVudGx5IGhpZ2hseSBmcmFnbWVudGVkLCB3aXRoIG5vIHNoYXJlZCBwdWJsaWMgdmVudWUgZm9yIGRpc2N1c3NpbmcgcHJvcG9zYWxzIGFzIHRoZXkgcHJvY2VlZCB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRyYWZ0ZWQgYW5kIHZvdGVkIG9uLiBJdCBtZWFucyB0aGVyZSBpcyBubyByZWNvcmQgb2YgZGlzY3Vzc2lvbiB0aGF0IHZvdGVycyBjYW4gY29uZmlkZW50bHkgcG9pbnQgdG8gZm9yIGNvbnRleHQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZ292ZXJuYW5jZSBkZWNpc2lvbnMgYmVjb21pbmcgZGVsZWdpdGltaXplZCBieSBzdGFrZWhvbGRlcnMuXG5cblRoZSByZXF1ZXN0ZWQgYW1vdW50IHdpbGwgYmUgc2VudCB0byBhIG11bHRpc2lnIGNvbXByaXNpbmcgaW5kaXZpZHVhbHMgKG1lbWJlcnMgbGlzdGVkIGJlbG93KSB3aG8gY2FuIGVuc3VyZSB0aGF0IHRoZSB0b2tlbnMgYXJlIHNwZW50IGp1ZGljaW91c2x5LiBXZSBiZWxpZXZlIHN0ZXdhcmRzaGlwIG9mIHRoZSBmb3J1bSByZXF1aXJlczpcblxuKiAqKk1vZGVyYXRpb24qKjogRm9ybWF0LCBlZGl0LCBhbmQgY2F0ZWdvcml6ZSBwb3N0czsgU3RhbmRhcmRpemUgdGl0bGVzIGFuZCB0YWdzOyBNb25pdG9yIGFuZCBhcHByb3ZlIG5ldyBwb3N0czsgQXJjaGl2ZSBwb3N0cy5cbiogKipGYWNpbGl0YXRpb24qKjogQXNrIGNsYXJpZnlpbmcgcXVlc3Rpb25zIGluIHBvc3QgdGhyZWFkczsgU3VtbWFyaXplIGRpc2N1c3Npb25zOyBQcm92aWRlIGhpc3RvcmljYWwgcHJlY2VkZW5jZSB0byBkaXNjdXNzaW9ucy5cbiogKipFbmdhZ2VtZW50Kio6IENpcmN1bGF0ZSBpbXBvcnRhbnQgcG9zdHMgb24gb3RoZXIgc29jaWFsIGNoYW5uZWxzIHRvIGluY3JlYXNlIGNvbW11bml0eSBwYXJ0aWNpcGF0aW9uOyBTb2xpY2l0IGlucHV0IGZyb20ga2V5IHN0YWtlaG9sZGVycy5cbiogKipHdWlkYW5jZSoqOiBPcmllbnQgYW5kIGFzc2lzdCBuZXdjb21lcnM7IEd1aWRlIHByb3Bvc2VycyB0aHJvdWdoIGdvdmVybmFuY2UgcHJvY2VzczsgQW5zd2VyIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIGZvcnVtIG9yIENvc21vcyBlY29zeXN0ZW0uXG5UaGUgd29yayB0byBzdGV3YXJkIHRoZSBmb3J1bSB3aWxsIGJlIGNhcnJpZWQgb3V0IGJ5IG1lbWJlcnMgb2YgW0h5cGhhIFdvcmtlciBDby1vcF0oaHR0cHM6Ly9oeXBoYS5jb29wLykgYW5kIGluZGl2aWR1YWxzIHNlbGVjdGVkIGZyb20gdGhlIGNvbW11bml0eSB0byBjYXJyeSBvdXQgc2NvcGVkIHRhc2tzIGluIGV4Y2hhbmdlIGZvciBBVE9NIGZyb20gdGhpcyBidWRnZXQuXG4jIyBNdWx0aXNpZyBNZW1iZXJzXG4qIEh5cGhhOiBNYWkgSXNoaWthd2EgU3V0dG9uIChIeXBoYSBDby1vcClcbiogVmFsaWRhdG9yOiBEYW5pZWwgSHdhbmcgKFN0YWtlZmlzaClcbiogQ29zbW9zIEh1YiBkZXZlbG9wZXI6IExhdXJlbiBHYWxsaW5hcm8gKEludGVyY2hhaW4gQmVybGluKVxuXG5XZSBmZWVsIHRoZSBtZW1iZXJzaGlwIG9mIHRoZSBtdWx0aXNpZyBzaG91bGQgYmUgcm90YXRlZCBmb2xsb3dpbmcgdGhlIHNpeC1tb250aCBwaWxvdCBwZXJpb2QgdG8gcHJlc2VydmUgaW5zaWdodCBmcm9tIHRoZSBkaXN0aW5jdCBzcGVjaWFsaXphdGlvbnMgKGkuZS4sIENvc21vcyBIdWIgdmFsaWRhdG9ycyBhbmQgZGV2ZWxvcGVycykuXG4jIyBUaW1lbGluZSBhbmQgRGVsaXZlcmFibGVzXG5XZSBlc3RpbWF0ZSB0aGUgdG90YWwgd29yayB0byB0YWtlIDI1MC0zMDAgaG91cnMgb3ZlciBzaXggbW9udGhzIHdoZXJlIHdlIGhvcGUgdG8gcHJvZHVjZTpcbiogKipNb3Zpbmcgc3VtbWFyaWVzOioqIFByb3ZpZGUgc3VjY2luY3Qgc3VtbWFyaWVzIG9mIHRoZSBwcm9wb3NhbHMgYW5kIGluY2x1ZGUgYWxsIHB1YmxpY2x5IHN0YXRlZCByZWFzb25zIHdoeSB2YXJpb3VzIGVudGl0aWVzIGFyZSBjaG9vc2luZyB0byB2b3RlIGZvci9hZ2FpbnN0IGEgZ2l2ZW4gcHJvcG9zYWwuIFRoZXNlIHN1bW1hcmllcyB3aWxsIGJlIHdyaXR0ZW4gb2JqZWN0aXZlbHksIG5vdCBzaWRpbmcgd2l0aCBhbnkgb25lIGVudGl0eS5cbiogKipWYWxpZGF0b3IgcGxhdGZvcm1zOioqIENyZWF0ZSBhIHNlY3Rpb24gb2YgdGhlIEZvcnVtIHdoZXJlIHdlIGNvbGxhdGUgYWxsIHZhbGlkYXRvcnMnIHZpc2lvbnMgZm9yIENvc21vcyBIdWIgZ292ZXJuYW5jZSB0byBhbGxvdyB0aGVtIHRvIHN0YXRlIHRoZWlyIHBvc2l0aW9ucyBwdWJsaWNseS4gV2Ugd2lsbCB3b3JrIHdpdGggdGhlIHNtYWxsZXIgdmFsaWRhdG9ycyB0byBlbnN1cmUgdGhleSBhcmUgZXF1YWxseSByZXByZXNlbnRlZC5cbiogKipSZWd1bGFyIGNoZWNrLWlucyB3aXRoIHRoZSBDb3Ntb25hdXQgREFPOioqIENvbGxhYm9yYXRlIHdpdGggdGhlIGZ1dHVyZSBDb3Ntb25hdXQgREFPIHRvIGVuc3VyZSBtYXhpbWFsIGFjY2Vzc2liaWxpdHkgYW5kIGVuZ2FnZW1lbnQuIENvbW11bml0eSBtYW5hZ2VtZW50IGlzIGEgY3JpdGljYWwsIGNvbXBsZW1lbnRhcnkgYXNwZWN0IG9mIGluY3JlYXNpbmcgcGFydGljaXBhdGlvbiBpbiBnb3Zlcm5hbmNlLlxuKiAqKkFubm91bmNlbWVudCBjaGFubmVsOioqIENyZWF0ZSBhIHJlYWQtb25seSBhbm5vdW5jZW1lbnQgY2hhbm5lbCBpbiB0aGUgQ29zbW9zIENvbW11bml0eSBEaXNjb3JkLCBzbyB0aGF0IG5ldyBwcm9wb3NhbHMgYW5kIG1ham9yIGRpc2N1c3Npb25zIGNhbiBiZSBlYXNpbHkgZm9sbG93ZWQuXG4qICoqVG9vbGluZyBmcmllbmRseSBwb3N0czoqKiBUYWcgYW5kIGNhdGVnb3JpemUgcG9zdHMgc28gdGhhdCB0aGV5IGNhbiBiZSBlYXNpbHkgaW5nZXN0ZWQgaW50byBleGlzdGluZyB0b29saW5nIHRoYXQgdmFsaWRhdG9ycyBoYXZlIHNldHVwLlxuKiAqKk5ldXRyYWwgbW9kZXJhdGlvbiBmcmFtZXdvcms6KiogRG9jdW1lbnQgYW5kIGZvbGxvdyB0cmFuc3BhcmVudCBzdGFuZGFyZHMgZm9yIGhvdyB0aGUgZm9ydW0gaXMgbW9kZXJhdGVkLlxuXG5BdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QsIHdlIHdpbGwgcHJvZHVjZSBhIHJlcG9ydCByZWZsZWN0aW5nIG9uIG91ciBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzLCBhbmQgcmVjb21tZW5kYXRpb25zIGZvciBob3cgdGhlIHdvcmsgb2YgbWFpbnRhaW5pbmcgYSBnb3Zlcm5hbmNlIHZlbnVlIGNhbiBiZSBjb250aW51b3VzbHkgc3VzdGFpbmVkIChlLmcuLCB0aHJvdWdoIGEgREFPKS4gV2Ugc2VlIHRoaXMgaW5pdGlhdGl2ZSBhcyBhIHByb2Nlc3Mgb2YgZGlzY292ZXJ5LCB3aGVyZSB3ZSBhcmUgbGVhcm5pbmcgYnkgZG9pbmcuXG5cbkZvciBtb3JlIGNvbnRleHQsIHlvdSBjYW4gcmVhZCB0aHJvdWdoIHRoZSBkaXNjdXNzaW9ucyBvbiB0aGlzIFtwcm9wb3NhbCBvbiB0aGUgRGlzY291cnNlIGZvcnVtXShodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtZHJhZnQtYWN0aXZhdGUtZ292ZXJuYW5jZS1kaXNjdXNzaW9ucy1vbi10aGUtZGlzY291cnNlLWZvcnVtLXVzaW5nLWNvbW11bml0eS1wb29sLWZ1bmRzLzU4MzMpLlxuXG4jIyBHb3Zlcm5hbmNlIFZvdGVzXG5UaGUgZm9sbG93aW5nIGl0ZW1zIHN1bW1hcml6ZSB0aGUgdm90aW5nIG9wdGlvbnMgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHRoaXMgcHJvcG9zYWw6XG4qKllFUyoqIC0gWW91IGFwcHJvdmUgdGhpcyBjb21tdW5pdHkgc3BlbmQgcHJvcG9zYWwgdG8gZGVwb3NpdCAxMDAwIEFUT00gdG8gYSBtdWx0aXNpZyB0aGF0IHdpbGwgc3BlbmQgdGhlbSB0byBpbXByb3ZlIGdvdmVybmFuY2UgZGlzY3Vzc2lvbnMgaW4gdGhlIERpc2NvdXJzZSBmb3J1bS5cbioqTk8qKiAtIFlvdSBkaXNhcHByb3ZlIG9mIHRoaXMgY29tbXVuaXR5IHNwZW5kIHByb3Bvc2FsIGluIGl0cyBjdXJyZW50IGZvcm0gKHBsZWFzZSBpbmRpY2F0ZSB3aHkgaW4gdGhlIENvc21vcyBGb3J1bSkuXG4qKk5PIFdJVEggVkVUTyoqIC0gWW91IGFyZSBzdHJvbmdseSBvcHBvc2VkIHRvIHRoaXMgY2hhbmdlIGFuZCB3aWxsIGV4aXQgdGhlIG5ldHdvcmsgaWYgcGFzc2VkLlxuKipBQlNUQUlOKiogLSBZb3UgYXJlIGltcGFydGlhbCB0byB0aGUgb3V0Y29tZSBvZiB0aGUgcHJvcG9zYWwuXG4jIyBSZWNpcGllbnRcbmNvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZVxuIyMgQW1vdW50XG4xMDAwIEFUT01cblxuKioqRGlzY2xvc3VyZSoqOiBIeXBoYSBoYXMgYW4gZXhpc3RpbmcgY29udHJhY3Qgd2l0aCB0aGUgSW50ZXJjaGFpbiBGb3VuZGF0aW9uIGZvY3VzZWQgb24gdGhlIHRlc3RuZXQgcHJvZ3JhbSBhbmQgaW1wcm92aW5nIGRvY3VtZW50YXRpb24uIFRoaXMgd29yayBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoYXQgY29udHJhY3QgYW5kIGlzIGZvY3VzZWQgb24gZW5nYWdpbmcgdGhlIGNvbW11bml0eSBpbiBnb3Zlcm5hbmNlLipcblxuSVBGUyBwaW4gb2YgcHJvcG9zYWwgb24tZm9ydW06IChodHRwczovL2lwZnMuaW8vaXBmcy9RbWFxN2Z0cVdjY2dZQ284VTFLWmZFbmp2alVEelNFR3BNeGNSeTYxdThnZjJZKSZxdW90OywKICAmcXVvdDtyZWNpcGllbnQmcXVvdDs6ICZxdW90O2Nvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZSZxdW90OywgCiAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAwdWF0b20mcXVvdDssCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7Cn0KCg=="}}),t._v(" "),e("h2",{attrs:{id:"param-change"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#param-change"}},[t._v("#")]),t._v(" Param Change")]),t._v(" "),e("p",[e("strong",[t._v("Note:")]),t._v(" Changes to the "),e("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("gov")]),t._v(" module"),e("OutboundLink")],1),t._v(" are different from the other kinds of parameter changes because "),e("code",[t._v("gov")]),t._v(" has subkeys, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[t._v("as discussed here"),e("OutboundLink")],1),t._v(". Only the "),e("code",[t._v("key")]),t._v(" part of the JSON file is different for "),e("code",[t._v("gov")]),t._v(" parameter-change proposals.")]),t._v(" "),e("p",[t._v("For parameter-change proposals, there are arguably seven (7) components, though three are nested beneath 'Changes':")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Changes")]),t._v(" - a component containing")]),t._v(" "),e("li",[e("strong",[t._v("Subspace")]),t._v(" - the Cosmos Hub module with the parameter that is being changed")]),t._v(" "),e("li",[e("strong",[t._v("Key")]),t._v(" - the parameter that will be changed")]),t._v(" "),e("li",[e("strong",[t._v("Value")]),t._v(" - the value of the parameter that will be changed by the governance mechanism")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("The components must be presented as shown in the example.")]),t._v(" "),e("h3",{attrs:{id:"real-example-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-3"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("This example is 'real', because it was put on-chain using the Theta testnet and can be seen in the block explorer "),e("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/proposals/87",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Not all explorers will show the proposed parameter changes that are coded into the proposal, so ensure that you verify that the description aligns with what the governance proposal is programmed to enact. If the description says that a certain parameter will be increased, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"IHsKICAmcXVvdDt0aXRsZSZxdW90OzogJnF1b3Q7RG9jIHVwZGF0ZSB0ZXN0OiBQYXJhbSBjaGFuZ2UgZm9yIE1heFZhbGlkYXRvcnMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1Rlc3RpbmcgdGhlIHByb3Bvc2FsIGZvcm1hdCBmb3IgaW5jcmVhc2luZyB0aGUgTWF4VmFsaWRhdG9yIHBhcmFtJnF1b3Q7LAogICZxdW90O2NoYW5nZXMmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7c3Vic3BhY2UmcXVvdDs6ICZxdW90O3N0YWtpbmcmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VmFsaWRhdG9ycyZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDIwMAogICAgfQogIF0sCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwdWF0b20mcXVvdDsKfQo="}})],1)}),[],!1,null,null,null);a.default=b.exports}}]); \ No newline at end of file diff --git a/main/assets/js/83.966889d8.js b/main/assets/js/83.9e279b70.js similarity index 99% rename from main/assets/js/83.966889d8.js rename to main/assets/js/83.9e279b70.js index c3cb2423382..771ee28b0eb 100644 --- a/main/assets/js/83.966889d8.js +++ b/main/assets/js/83.9e279b70.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{550:function(e,t,o){"use strict";o.r(t);var r=o(1),i=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:"on-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-proposal-process"}},[e._v("#")]),e._v(" On-Chain Proposal Process")]),e._v(" "),o("h2",{attrs:{id:"governance-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-parameters"}},[e._v("#")]),e._v(" Governance Parameters")]),e._v(" "),o("p",[e._v("Several of the numbers involved in governance are parameters and can thus be changed by passing a parameter change proposal.")]),e._v(" "),o("ul",[o("li",[e._v("Minimum deposit: 250 ATOM")]),e._v(" "),o("li",[e._v("Maximum deposit period: 14 days")]),e._v(" "),o("li",[e._v("Voting period: 14 days")]),e._v(" "),o("li",[e._v("Quorum: 40% of participating voting power")]),e._v(" "),o("li",[e._v("Pass threshold: 50% of participating voting power")]),e._v(" "),o("li",[e._v("Veto threshold: 33.40% of participating voting power")])]),e._v(" "),o("h2",{attrs:{id:"_1-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-deposit-period"}},[e._v("#")]),e._v(" 1. Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period lasts either 14 days or until the proposal deposit totals 250 ATOMs, whichever happens first.")]),e._v(" "),o("h3",{attrs:{id:"deposits"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#deposits"}},[e._v("#")]),e._v(" Deposits")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"burned-deposits"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#burned-deposits"}},[e._v("#")]),e._v(" Burned deposits")]),e._v(" "),o("p",[e._v("Deposits are burned only when proposals are vetoed as documented in the "),o("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov#deposit-refund-and-burn",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK gov module spec"),o("OutboundLink")],1),e._v(". Deposits are not burned for failing to meet quorum or for being rejected.")]),e._v(" "),o("h2",{attrs:{id:"_2-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-voting-period"}},[e._v("#")]),e._v(" 2. Voting Period")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"what-do-the-voting-options-mean"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-do-the-voting-options-mean"}},[e._v("#")]),e._v(" What do the voting options mean?")]),e._v(" "),o("ol",[o("li",[o("strong",[e._v("Abstain:")]),e._v(" The voter wishes to contribute to quorum without voting for or against a proposal.")]),e._v(" "),o("li",[o("strong",[e._v("Yes:")]),e._v(" Approval of the proposal in its current form.")]),e._v(" "),o("li",[o("strong",[e._v("No:")]),e._v(" Disapproval of the proposal in its current form.")]),e._v(" "),o("li",[o("strong",[e._v("NoWithVeto:")]),e._v(" 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.")])]),e._v(" "),o("p",[e._v("As accepted by the community in "),o("a",{attrs:{href:"https://ipfs.io/ipfs/QmVHVH9WeGy9tTNN9dViqvDn7N79XJJUseKXD1rpyLVckK",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 75"),o("OutboundLink")],1),e._v(", 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 "),o("a",{attrs:{href:"https://ipfs.io/ipfs/QmRtR7qkeaZCpCzHDwHgJeJAZdTrbmHLxFDYXhw7RoF1pp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 6"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Voting 'NoWithVeto' has no immediate additional financial cost to the voter - you do not directly risk your ATOM by using this option.")]),e._v(" "),o("h3",{attrs:{id:"what-determines-whether-or-not-a-governance-proposal-passes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-determines-whether-or-not-a-governance-proposal-passes"}},[e._v("#")]),e._v(" What determines whether or not a governance proposal passes?")]),e._v(" "),o("p",[e._v("There are four criteria:")]),e._v(" "),o("ol",[o("li",[e._v("Deposit is filled: A minimum deposit of 250 ATOM is required for the proposal to enter the voting period\n"),o("ul",[o("li",[e._v("anyone may contribute to this deposit")]),e._v(" "),o("li",[e._v("the deposit must be reached within 14 days (this is the deposit period)")])])]),e._v(" "),o("li",[e._v("Quorum is reached: A minimum of 40% of the network's total voting power (staked ATOM) is required to participate")]),e._v(" "),o("li",[e._v("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")]),e._v(" "),o("li",[e._v("Not vetoed: Less than 33.4% of participating voting power must have backed 'NoWithVeto' by the end of the 14-day voting period")])]),e._v(" "),o("p",[e._v("Currently, the criteria for submitting and passing/failing all proposal types is the same.")]),e._v(" "),o("h3",{attrs:{id:"how-is-quorum-determined"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-is-quorum-determined"}},[e._v("#")]),e._v(" How is quorum determined?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"how-is-voting-tallied"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-is-voting-tallied"}},[e._v("#")]),e._v(" How is voting tallied?")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Total voting power")]),e._v(" 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.")]),e._v(" "),o("li",[o("strong",[e._v("Participating voting power")]),e._v(" refers to only the ATOM which have been used to cast a vote on a particular proposal. Quorum is set to 40% of the "),o("strong",[e._v("participating")]),e._v(" voting power.")])]),e._v(" "),o("p",[e._v("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 "),o("strong",[e._v("when the voting period ends")]),e._v(". 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.")]),e._v(" "),o("p",[e._v("Though a simple majority 'Yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a '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.")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{603:function(e,t,o){"use strict";o.r(t);var r=o(1),i=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:"on-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-proposal-process"}},[e._v("#")]),e._v(" On-Chain Proposal Process")]),e._v(" "),o("h2",{attrs:{id:"governance-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance-parameters"}},[e._v("#")]),e._v(" Governance Parameters")]),e._v(" "),o("p",[e._v("Several of the numbers involved in governance are parameters and can thus be changed by passing a parameter change proposal.")]),e._v(" "),o("ul",[o("li",[e._v("Minimum deposit: 250 ATOM")]),e._v(" "),o("li",[e._v("Maximum deposit period: 14 days")]),e._v(" "),o("li",[e._v("Voting period: 14 days")]),e._v(" "),o("li",[e._v("Quorum: 40% of participating voting power")]),e._v(" "),o("li",[e._v("Pass threshold: 50% of participating voting power")]),e._v(" "),o("li",[e._v("Veto threshold: 33.40% of participating voting power")])]),e._v(" "),o("h2",{attrs:{id:"_1-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-deposit-period"}},[e._v("#")]),e._v(" 1. Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period lasts either 14 days or until the proposal deposit totals 250 ATOMs, whichever happens first.")]),e._v(" "),o("h3",{attrs:{id:"deposits"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#deposits"}},[e._v("#")]),e._v(" Deposits")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"burned-deposits"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#burned-deposits"}},[e._v("#")]),e._v(" Burned deposits")]),e._v(" "),o("p",[e._v("Deposits are burned only when proposals are vetoed as documented in the "),o("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov#deposit-refund-and-burn",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK gov module spec"),o("OutboundLink")],1),e._v(". Deposits are not burned for failing to meet quorum or for being rejected.")]),e._v(" "),o("h2",{attrs:{id:"_2-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-voting-period"}},[e._v("#")]),e._v(" 2. Voting Period")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"what-do-the-voting-options-mean"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-do-the-voting-options-mean"}},[e._v("#")]),e._v(" What do the voting options mean?")]),e._v(" "),o("ol",[o("li",[o("strong",[e._v("Abstain:")]),e._v(" The voter wishes to contribute to quorum without voting for or against a proposal.")]),e._v(" "),o("li",[o("strong",[e._v("Yes:")]),e._v(" Approval of the proposal in its current form.")]),e._v(" "),o("li",[o("strong",[e._v("No:")]),e._v(" Disapproval of the proposal in its current form.")]),e._v(" "),o("li",[o("strong",[e._v("NoWithVeto:")]),e._v(" 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.")])]),e._v(" "),o("p",[e._v("As accepted by the community in "),o("a",{attrs:{href:"https://ipfs.io/ipfs/QmVHVH9WeGy9tTNN9dViqvDn7N79XJJUseKXD1rpyLVckK",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 75"),o("OutboundLink")],1),e._v(", 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 "),o("a",{attrs:{href:"https://ipfs.io/ipfs/QmRtR7qkeaZCpCzHDwHgJeJAZdTrbmHLxFDYXhw7RoF1pp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 6"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Voting 'NoWithVeto' has no immediate additional financial cost to the voter - you do not directly risk your ATOM by using this option.")]),e._v(" "),o("h3",{attrs:{id:"what-determines-whether-or-not-a-governance-proposal-passes"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-determines-whether-or-not-a-governance-proposal-passes"}},[e._v("#")]),e._v(" What determines whether or not a governance proposal passes?")]),e._v(" "),o("p",[e._v("There are four criteria:")]),e._v(" "),o("ol",[o("li",[e._v("Deposit is filled: A minimum deposit of 250 ATOM is required for the proposal to enter the voting period\n"),o("ul",[o("li",[e._v("anyone may contribute to this deposit")]),e._v(" "),o("li",[e._v("the deposit must be reached within 14 days (this is the deposit period)")])])]),e._v(" "),o("li",[e._v("Quorum is reached: A minimum of 40% of the network's total voting power (staked ATOM) is required to participate")]),e._v(" "),o("li",[e._v("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")]),e._v(" "),o("li",[e._v("Not vetoed: Less than 33.4% of participating voting power must have backed 'NoWithVeto' by the end of the 14-day voting period")])]),e._v(" "),o("p",[e._v("Currently, the criteria for submitting and passing/failing all proposal types is the same.")]),e._v(" "),o("h3",{attrs:{id:"how-is-quorum-determined"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-is-quorum-determined"}},[e._v("#")]),e._v(" How is quorum determined?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"how-is-voting-tallied"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-is-voting-tallied"}},[e._v("#")]),e._v(" How is voting tallied?")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Total voting power")]),e._v(" 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.")]),e._v(" "),o("li",[o("strong",[e._v("Participating voting power")]),e._v(" refers to only the ATOM which have been used to cast a vote on a particular proposal. Quorum is set to 40% of the "),o("strong",[e._v("participating")]),e._v(" voting power.")])]),e._v(" "),o("p",[e._v("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 "),o("strong",[e._v("when the voting period ends")]),e._v(". 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.")]),e._v(" "),o("p",[e._v("Though a simple majority 'Yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a '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.")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/84.31f5a6d7.js b/main/assets/js/84.d720a594.js similarity index 97% rename from main/assets/js/84.31f5a6d7.js rename to main/assets/js/84.d720a594.js index 68b4361c446..8b2a208ab4d 100644 --- a/main/assets/js/84.31f5a6d7.js +++ b/main/assets/js/84.d720a594.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{552: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.11e02601.js b/main/assets/js/85.26cd2e28.js similarity index 99% rename from main/assets/js/85.11e02601.js rename to main/assets/js/85.26cd2e28.js index ebe4b6bf588..1c6ca893385 100644 --- a/main/assets/js/85.11e02601.js +++ b/main/assets/js/85.26cd2e28.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{553: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],{601: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.6cf2a3e0.js b/main/assets/js/86.bd3dac19.js similarity index 99% rename from main/assets/js/86.6cf2a3e0.js rename to main/assets/js/86.bd3dac19.js index 361772a831a..598865fee45 100644 --- a/main/assets/js/86.6cf2a3e0.js +++ b/main/assets/js/86.bd3dac19.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{555: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:"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 "),t("a",{attrs:{href:"#params-wiki"}},[e._v("Hub's parameters")]),e._v(", 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=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{600: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:"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 "),t("a",{attrs:{href:"#params-wiki"}},[e._v("Hub's parameters")]),e._v(", 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=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/87.166dcf04.js b/main/assets/js/87.597aea17.js similarity index 99% rename from main/assets/js/87.166dcf04.js rename to main/assets/js/87.597aea17.js index b232fa070f7..559eef2e656 100644 --- a/main/assets/js/87.166dcf04.js +++ b/main/assets/js/87.597aea17.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{556:function(e,t,a){"use strict";a.r(t);var s=a(1),i=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:"auth-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auth-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("auth")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("auth")]),e._v(" module is responsible for authenticating accounts and transactions. 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.auth,(function(t,s){return a("tr",[a("td",[a("a",{attrs:{href:"#"+s}},[a("code",[e._v(e._s(s))])])]),e._v(" "),a("td",[a("code",[e._v(e._s(t))])])])}))],2),e._v(" "),a("p",[e._v("The "),a("code",[e._v("auth")]),e._v(" 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.")]),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:"maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxmemocharacters"}},[e._v("#")]),e._v(" "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[a("strong",[e._v("The character limit for each transaction memo.")])]),e._v(" "),a("p",[e._v('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.')]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.MaxMemoCharacters))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("512")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("512")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxmemocharacters"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("MaxMemoCharacters")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxmemocharacters"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("MaxMemoCharacters")]),e._v(" 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 "),a("a",{attrs:{href:"https://thecontrol.co/state-growth-a-look-at-the-problem-and-its-solutions-6de9d7634b0b",target:"_blank",rel:"noopener noreferrer"}},[e._v("state bloat"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("h3",{attrs:{id:"txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txsiglimit"}},[e._v("#")]),e._v(" "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[a("strong",[e._v("The max number of signatures per transaction")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.TxSigLimit))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("7")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("7")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-txsiglimit"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("TxSigLimit")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-txsiglimit"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("TxSigLimit")]),e._v(" 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).")]),e._v(" "),a("h3",{attrs:{id:"txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txsizecostperbyte"}},[e._v("#")]),e._v(" "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[a("strong",[e._v("Sets the cost of transactions, in units of gas.")])]),e._v(" "),a("p",[a("code",[e._v("TxSizeCostPerByte")]),e._v(" is used to compute the gas-unit consumption for each transaction.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.TxSizeCostPerByte))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("10")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("10")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-txsizecostperbyte"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("TxSizeCostPerByte")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-txsizecostperbyte"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("TxSizeCostPerByte")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sigverifycosted25519"}},[e._v("#")]),e._v(" "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[a("strong",[e._v("The cost for verifying ED25519 signatures, in units of gas.")])]),e._v(" "),a("p",[e._v("Ed25519 is the EdDSA cryptographic signature scheme (using SHA-512 (SHA-2) and Curve25519) that is used by Cosmos Hub validators. "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" is the gas (ie. computational) cost for verifying ED25519 signatures, and ED25519-based transactions are not currently accepted by the Cosmos Hub.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.SigVerifyCostED25519))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("590")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("590")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-sigverifycosted25519"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-sigverifycosted25519"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sigverifycostsecp256k1"}},[e._v("#")]),e._v(" "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[a("strong",[e._v("The cost for verifying Secp256k1 signatures, in units of gas.")])]),e._v(" "),a("p",[e._v("Secp256k1 is an elliptic curve domain parameter for cryptographic signatures used by user accounts in the Cosmos Hub. "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" is the gas (ie. computational) cost for verifying Secp256k1 signatures. Practically all Cosmos Hub transactions require Secp256k1 signature verifications.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.SigVerifyCostSecp256k1))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("1000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("1000")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-sigverifycostsecp256k1"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-sigverifycostsecp256k1"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" 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.")]),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("There should be a better understanding of what the potential implications are for changing "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(". 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.")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{599:function(e,t,a){"use strict";a.r(t);var s=a(1),i=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:"auth-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auth-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("auth")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("auth")]),e._v(" module is responsible for authenticating accounts and transactions. 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.auth,(function(t,s){return a("tr",[a("td",[a("a",{attrs:{href:"#"+s}},[a("code",[e._v(e._s(s))])])]),e._v(" "),a("td",[a("code",[e._v(e._s(t))])])])}))],2),e._v(" "),a("p",[e._v("The "),a("code",[e._v("auth")]),e._v(" 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.")]),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:"maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxmemocharacters"}},[e._v("#")]),e._v(" "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[a("strong",[e._v("The character limit for each transaction memo.")])]),e._v(" "),a("p",[e._v('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.')]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.MaxMemoCharacters))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("512")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("512")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxmemocharacters"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("MaxMemoCharacters")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-maxmemocharacters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxmemocharacters"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("MaxMemoCharacters")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("MaxMemoCharacters")]),e._v(" 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 "),a("a",{attrs:{href:"https://thecontrol.co/state-growth-a-look-at-the-problem-and-its-solutions-6de9d7634b0b",target:"_blank",rel:"noopener noreferrer"}},[e._v("state bloat"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("h3",{attrs:{id:"txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txsiglimit"}},[e._v("#")]),e._v(" "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[a("strong",[e._v("The max number of signatures per transaction")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.TxSigLimit))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("7")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("7")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-txsiglimit"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("TxSigLimit")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-txsiglimit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-txsiglimit"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("TxSigLimit")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("TxSigLimit")]),e._v(" 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).")]),e._v(" "),a("h3",{attrs:{id:"txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txsizecostperbyte"}},[e._v("#")]),e._v(" "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[a("strong",[e._v("Sets the cost of transactions, in units of gas.")])]),e._v(" "),a("p",[a("code",[e._v("TxSizeCostPerByte")]),e._v(" is used to compute the gas-unit consumption for each transaction.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.TxSizeCostPerByte))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("10")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("10")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-txsizecostperbyte"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("TxSizeCostPerByte")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-txsizecostperbyte"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-txsizecostperbyte"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("TxSizeCostPerByte")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("TxSizeCostPerByte")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sigverifycosted25519"}},[e._v("#")]),e._v(" "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[a("strong",[e._v("The cost for verifying ED25519 signatures, in units of gas.")])]),e._v(" "),a("p",[e._v("Ed25519 is the EdDSA cryptographic signature scheme (using SHA-512 (SHA-2) and Curve25519) that is used by Cosmos Hub validators. "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" is the gas (ie. computational) cost for verifying ED25519 signatures, and ED25519-based transactions are not currently accepted by the Cosmos Hub.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.SigVerifyCostED25519))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" genesis: "),a("code",[e._v("590")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" genesis: "),a("code",[e._v("590")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-sigverifycosted25519"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-sigverifycosted25519"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-sigverifycosted25519"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("SigVerifyCostED25519")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("SigVerifyCostED25519")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sigverifycostsecp256k1"}},[e._v("#")]),e._v(" "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[a("strong",[e._v("The cost for verifying Secp256k1 signatures, in units of gas.")])]),e._v(" "),a("p",[e._v("Secp256k1 is an elliptic curve domain parameter for cryptographic signatures used by user accounts in the Cosmos Hub. "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" is the gas (ie. computational) cost for verifying Secp256k1 signatures. Practically all Cosmos Hub transactions require Secp256k1 signature verifications.")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.auth.SigVerifyCostSecp256k1))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("1000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("1000")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-sigverifycostsecp256k1"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[e._v("Decreasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-sigverifycostsecp256k1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-sigverifycostsecp256k1"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")])]),e._v(" "),a("p",[e._v("Increasing the value of "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(" 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.")]),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("There should be a better understanding of what the potential implications are for changing "),a("code",[e._v("SigVerifyCostSecp256k1")]),e._v(". 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.")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/88.18487d88.js b/main/assets/js/88.017e692b.js similarity index 98% rename from main/assets/js/88.18487d88.js rename to main/assets/js/88.017e692b.js index c9aa846df58..24b72aa6443 100644 --- a/main/assets/js/88.18487d88.js +++ b/main/assets/js/88.017e692b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{558:function(e,a,t){"use strict";t.r(a);var n=t(1),s=Object(n.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:"bank-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bank-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("bank")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("bank")]),e._v(" module is responsible for token transfer functionalities. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.bank,(function(a,n){return t("tr",[t("td",[t("a",{attrs:{href:"#"+n}},[t("code",[e._v(e._s(n))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],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:"sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sendenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("SendEnabled")])]),e._v(" "),t("p",[t("strong",[e._v("Token transfer functionality.")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v("SendEnabled")]),e._v(": "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.bank.SendEnabled))])]),e._v(" "),t("li",[e._v("on-chain value: "),t("code",[e._v("DefaultSendEnabled")]),e._v(": "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.bank.DefaultSendEnabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" added "),t("code",[e._v("DefaultSendEnabled")]),e._v(": "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"enabling-sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabling-sendenabled"}},[e._v("#")]),e._v(" Enabling "),t("code",[e._v("sendenabled")])]),e._v(" "),t("p",[e._v("Setting the "),t("code",[e._v("sendenabled")]),e._v(" parameter to "),t("code",[e._v("true")]),e._v(" will enable ATOMs to be transferred between accounts. This capability was first enabled when the cosmoshub-2 chain launched.")]),e._v(" "),t("h4",{attrs:{id:"disabling-sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disabling-sendenabled"}},[e._v("#")]),e._v(" Disabling "),t("code",[e._v("sendenabled")])]),e._v(" "),t("p",[e._v("Setting the "),t("code",[e._v("sendenabled")]),e._v(" parameter to "),t("code",[e._v("false")]),e._v(" will prevent ATOMs from being transferred between accounts. ATOMs may still be staked and earn rewards. This is how the cosmoshub-1 chain launched.")]),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 cosmoshub-1 chain launched with "),t("code",[e._v("sendenabled")]),e._v(" set to "),t("code",[e._v("false")]),e._v(" and with "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Distribution.html#4-withdrawaddrenabled"}},[t("code",[e._v("withdrawaddrenabled")])]),e._v(" set to "),t("code",[e._v("false")]),e._v(". Staking was enabled on cosmoshub-1, so setting "),t("code",[e._v("withdrawaddrenabled")]),e._v(" to false was necessary to prevent a loophole that would enable ATOM transfer via diverting staking rewards to a designated address.")],1)])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{598:function(e,a,t){"use strict";t.r(a);var n=t(1),s=Object(n.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:"bank-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bank-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("bank")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("bank")]),e._v(" module is responsible for token transfer functionalities. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.bank,(function(a,n){return t("tr",[t("td",[t("a",{attrs:{href:"#"+n}},[t("code",[e._v(e._s(n))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],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:"sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sendenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("SendEnabled")])]),e._v(" "),t("p",[t("strong",[e._v("Token transfer functionality.")])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v("SendEnabled")]),e._v(": "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.bank.SendEnabled))])]),e._v(" "),t("li",[e._v("on-chain value: "),t("code",[e._v("DefaultSendEnabled")]),e._v(": "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.bank.DefaultSendEnabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" added "),t("code",[e._v("DefaultSendEnabled")]),e._v(": "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"enabling-sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabling-sendenabled"}},[e._v("#")]),e._v(" Enabling "),t("code",[e._v("sendenabled")])]),e._v(" "),t("p",[e._v("Setting the "),t("code",[e._v("sendenabled")]),e._v(" parameter to "),t("code",[e._v("true")]),e._v(" will enable ATOMs to be transferred between accounts. This capability was first enabled when the cosmoshub-2 chain launched.")]),e._v(" "),t("h4",{attrs:{id:"disabling-sendenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disabling-sendenabled"}},[e._v("#")]),e._v(" Disabling "),t("code",[e._v("sendenabled")])]),e._v(" "),t("p",[e._v("Setting the "),t("code",[e._v("sendenabled")]),e._v(" parameter to "),t("code",[e._v("false")]),e._v(" will prevent ATOMs from being transferred between accounts. ATOMs may still be staked and earn rewards. This is how the cosmoshub-1 chain launched.")]),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 cosmoshub-1 chain launched with "),t("code",[e._v("sendenabled")]),e._v(" set to "),t("code",[e._v("false")]),e._v(" and with "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Distribution.html#4-withdrawaddrenabled"}},[t("code",[e._v("withdrawaddrenabled")])]),e._v(" set to "),t("code",[e._v("false")]),e._v(". Staking was enabled on cosmoshub-1, so setting "),t("code",[e._v("withdrawaddrenabled")]),e._v(" to false was necessary to prevent a loophole that would enable ATOM transfer via diverting staking rewards to a designated address.")],1)])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/89.f1b63a94.js b/main/assets/js/89.ecf565ef.js similarity index 98% rename from main/assets/js/89.f1b63a94.js rename to main/assets/js/89.ecf565ef.js index 2d3782177ec..d85a5b98586 100644 --- a/main/assets/js/89.f1b63a94.js +++ b/main/assets/js/89.ecf565ef.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{559:function(e,t,a){"use strict";a.r(t);var n=a(1),s=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:"crisis-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crisis-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("crisis")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("crisis")]),e._v(" module is responsible for halting the Cosmos Hub if an invariant is broken. The crisis module 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.crisis,(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("crisis")]),e._v(" module is responsible for halting the blockchain under the circumstance that a blockchain invariant is broken. Invariants can be registered with the application during the application initialization process.")]),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:"constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constantfee"}},[e._v("#")]),e._v(" "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[a("strong",[e._v("The amount required to send a message to halt the Cosmos Hub chain if an invariant is broken, in micro-ATOM.")])]),e._v(" "),a("p",[e._v("A Cosmos account (address) can send a transaction message that will halt the Cosmos Hub chain if an invariant is broken. An example of this would be if all of the account balances in total did not equal the total supply. This kind of transaction could consume excessive amounts of gas to compute, beyond the maximum allowable block gas limit. "),a("code",[e._v("ConstantFee")]),e._v(" makes it possible to bypass the gas limit in order to process this transaction, while setting a cost to disincentivize using the function to attack the network. The cost of the transaction is "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")]),e._v(" (1,333 ATOM) and will effectively not be paid if the chain halts due to a broken invariant (which similar to being refunded). If the invariant is not broken, then "),a("code",[e._v("ConstantFee")]),e._v(" will be paid. All in Bits has published more information about the "),a("a",{attrs:{href:"https://docs.cosmos.network/main/modules/crisis",target:"_blank",rel:"noopener noreferrer"}},[e._v("crisis module here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.crisis.ConstantFee))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-constantfee"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("ConstantFee")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-constantfee"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("ConstantFee")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{597:function(e,t,a){"use strict";a.r(t);var n=a(1),s=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:"crisis-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crisis-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("crisis")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("crisis")]),e._v(" module is responsible for halting the Cosmos Hub if an invariant is broken. The crisis module 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.crisis,(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("crisis")]),e._v(" module is responsible for halting the blockchain under the circumstance that a blockchain invariant is broken. Invariants can be registered with the application during the application initialization process.")]),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:"constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constantfee"}},[e._v("#")]),e._v(" "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[a("strong",[e._v("The amount required to send a message to halt the Cosmos Hub chain if an invariant is broken, in micro-ATOM.")])]),e._v(" "),a("p",[e._v("A Cosmos account (address) can send a transaction message that will halt the Cosmos Hub chain if an invariant is broken. An example of this would be if all of the account balances in total did not equal the total supply. This kind of transaction could consume excessive amounts of gas to compute, beyond the maximum allowable block gas limit. "),a("code",[e._v("ConstantFee")]),e._v(" makes it possible to bypass the gas limit in order to process this transaction, while setting a cost to disincentivize using the function to attack the network. The cost of the transaction is "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")]),e._v(" (1,333 ATOM) and will effectively not be paid if the chain halts due to a broken invariant (which similar to being refunded). If the invariant is not broken, then "),a("code",[e._v("ConstantFee")]),e._v(" will be paid. All in Bits has published more information about the "),a("a",{attrs:{href:"https://docs.cosmos.network/main/modules/crisis",target:"_blank",rel:"noopener noreferrer"}},[e._v("crisis module here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.crisis.ConstantFee))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("1333000000")]),e._v(" "),a("code",[e._v("uatom")])])]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-constantfee"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("ConstantFee")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-constantfee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-constantfee"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("ConstantFee")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("ConstantFee")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/90.a75571ed.js b/main/assets/js/90.a5ef6727.js similarity index 99% rename from main/assets/js/90.a75571ed.js rename to main/assets/js/90.a5ef6727.js index 886bfebe767..7298f61c7c5 100644 --- a/main/assets/js/90.a75571ed.js +++ b/main/assets/js/90.a5ef6727.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{602:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"distribution-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#distribution-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("distribution")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.distribution,(function(a,r){return t("tr",[t("td",[t("a",{attrs:{href:"#"+r}},[t("code",[e._v(e._s(r))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module enables a simple distribution mechanism that passively distributes rewards between validators and delegators. Collected rewards are pooled globally and divided out passively to validators and delegators. Each validator has the opportunity to charge commission to the delegators on the rewards collected on behalf of the delegators. Fees are collected directly into a global reward pool and validator proposer-reward pool.")]),e._v(" "),t("p",[t("strong",[e._v("There is "),t("a",{attrs:{href:"#known-bug"}},[e._v("a known bug")]),e._v(" associated with this module.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communitytax"}},[e._v("#")]),e._v(" "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[t("strong",[e._v("The proportion of staking rewards diverted to the community pool.")])]),e._v(" "),t("p",[e._v('Staking on the Cosmos Hub entitles participants to inflationary (aka "block") rewards and transaction fees. A portion of these staking rewards is diverted to the community pool, which can be spent with a successful community-spend governance proposal. '),t("code",[e._v("communitytax")]),e._v(" is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently "),t("code",[e._v("0.020000000000000000")]),e._v(" (2%) of all staking rewards.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.communitytax))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("communitytax")]),e._v(" parameter will decrease the rate that the community pool is funded and will increase the staking rewards captured by staking participants. This will make it more likely for the community pool to be exhausted and could potentially increase the motivation for participants to stake.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("communitytax")]),e._v(" parameter will increase the rate that the community pool is funded and will decrease the staking rewards captured by staking participants. This will make it more less for the community pool to be exhausted and could potentially decrease the motivation for participants to stake.")]),e._v(" "),t("h3",{attrs:{id:"baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#baseproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block: that validator receives a bonus of "),t("code",[e._v("0.010000000000000000")]),e._v(" (1%) more in transaction fees. The proposer must include a minimum of 2/3 of precommit signatures from the other validators in the active set in order for the block to be valid and to receive the "),t("code",[e._v("baseproposerreward")]),e._v(" bonus. All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.baseproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the "),t("code",[e._v("baseproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonusproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block. If that validator includes more than a minimum of 2/3 of precommit signatures from the other validators in the active set, they are eligible to receive the "),t("code",[e._v("bonusproposerreward")]),e._v(" of up to 4% ("),t("code",[e._v("0.040000000000000000")]),e._v("), beyond the 1% "),t("code",[e._v("baseproposerreward")]),e._v(". The bonus proposer reward amount that a validator receives depends upon how many precommit signatures are included in the proposed block (additional to the requisite 2/3). All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.bonusproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the "),t("code",[e._v("bonusproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(' that "reserve pool" refers to the community pool. In this example from the '),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits website"),t("OutboundLink")],1),e._v(", there are 10 validators with equal stake. Each of them applies a 1% commission rate and has 20% of self-delegated Atoms. Now comes a successful block that collects a total of 1025.51020408 Atoms in fees.")]),e._v(" "),t("p",[e._v("First, a 2% tax is applied. The corresponding Atoms go to the reserve pool (aka community pool). Reserve pool's funds can be allocated through governance to fund bounties and upgrades.")]),e._v(" "),t("p",[e._v("2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool.\n1005 Atoms now remain. Let's assume that the proposer included 100% of the signatures in its block. It thus obtains the full bonus of 5%.")]),e._v(" "),t("p",[e._v("We have to solve this simple equation to find the reward R for each validator:")]),e._v(" "),t("p",[e._v("9"),t("em",[e._v("R + R + R")]),e._v("5% = 1005 ⇔ R = 1005/10.05 = 100")]),e._v(" "),t("p",[e._v("For the proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R + R * 5%: 105 Atoms")]),e._v(" "),t("p",[e._v("Commission: 105 * 80% * 1% = 0.84 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 105 * 20% + Commission = 21.84 Atoms")]),e._v(" "),t("p",[e._v("Delegators' rewards: 105 * 80% - Commission = 83.16 Atoms (each delegator will be able to claim its portion of these rewards in proportion to their stake)")]),e._v(" "),t("p",[e._v("For each non-proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R: 100 Atoms")]),e._v(" "),t("p",[e._v("Commission: 100 * 80% * 1% = 0.8 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 100 * 20% + Commission = 20.8 Atoms")]),e._v(" "),t("p",[e._v("Delegators' rewards: 100 * 80% - Commission = 79.2 Atoms (each delegator will be able to claim their portion of these rewards in proportion to their stake)")]),e._v(" "),t("h3",{attrs:{id:"withdrawaddrenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withdrawaddrenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("withdrawaddrenabled")])]),e._v(" "),t("p",[t("strong",[e._v("Determines whether or not delegators may set a separate address for receiving staking rewards.")])]),e._v(" "),t("p",[e._v("Delegators can designate a separate withdrawal address (account) that receives staking rewards when "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("true")]),e._v(". When "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("false")]),e._v(", the delegator can no longer designate a separate address for withdrawals.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.withdrawaddrenabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"changing-the-withdrawaddrenabled-parameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-withdrawaddrenabled-parameter"}},[e._v("#")]),e._v(" Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" parameter")]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" to false will prevent delegators from changing or setting a separate withdrawal address (account) that receives the staking rewards. This may disrupt the functionality of applications and the expectations of staking participants.")]),e._v(" "),t("h4",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("This parameter was set to "),t("code",[e._v("false")]),e._v(" before transfers were enabled in order to prevent stakers from diverting their rewards to other addresses ie. to avoid a loophole that would enable ATOM transfer via diverting staking rewards to a designated address. This parameter likely is only useful if "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html#1-sendenabled"}},[t("code",[e._v("sendenabled")])]),e._v(" is set to "),t("code",[e._v("false")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"known-bug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#known-bug"}},[e._v("#")]),e._v(" Known Bug")]),e._v(" "),t("p",[e._v("There is a known bug associated with this module that has reportedly caused a chain to halt. In "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("this reported case"),t("OutboundLink")],1),e._v(", the chain's parameter values were changed to be:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29tbXVuaXR5X3RheDogJnF1b3Q7MC4wMjAwMDAwMDAwMDAwMDAwMDAmcXVvdDsKYmFzZV9wcm9wb3Nlcl9yZXdhcmQ6ICZxdW90OzAuOTk5MDAwMDAwMDAwMDAwMDAwJnF1b3Q7CmJvbnVzX3Byb3Bvc2VyX3Jld2FyZDogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDsK"}}),e._v(" "),t("p",[e._v("Though the system will not allow eg. "),t("code",[e._v("baseproposerreward")]),e._v(" to be a value greater than 1.0, it will allow the "),t("a",{attrs:{href:"#1-communitytax"}},[t("code",[e._v("communitytax")])]),e._v(", "),t("a",{attrs:{href:"#2-baseproposerreward"}},[t("code",[e._v("baseproposerreward")])]),e._v(", and "),t("a",{attrs:{href:"#3-bonusproposerreward"}},[t("code",[e._v("bonusproposerreward")])]),e._v(" parameters values to total an amount greater than 1.00, which will apparently cause the chain to panic and halt. You can "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("read more about the reported issue here"),t("OutboundLink")],1),e._v(".")])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{534:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"distribution-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#distribution-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("distribution")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.distribution,(function(a,r){return t("tr",[t("td",[t("a",{attrs:{href:"#"+r}},[t("code",[e._v(e._s(r))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module enables a simple distribution mechanism that passively distributes rewards between validators and delegators. Collected rewards are pooled globally and divided out passively to validators and delegators. Each validator has the opportunity to charge commission to the delegators on the rewards collected on behalf of the delegators. Fees are collected directly into a global reward pool and validator proposer-reward pool.")]),e._v(" "),t("p",[t("strong",[e._v("There is "),t("a",{attrs:{href:"#known-bug"}},[e._v("a known bug")]),e._v(" associated with this module.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communitytax"}},[e._v("#")]),e._v(" "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[t("strong",[e._v("The proportion of staking rewards diverted to the community pool.")])]),e._v(" "),t("p",[e._v('Staking on the Cosmos Hub entitles participants to inflationary (aka "block") rewards and transaction fees. A portion of these staking rewards is diverted to the community pool, which can be spent with a successful community-spend governance proposal. '),t("code",[e._v("communitytax")]),e._v(" is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently "),t("code",[e._v("0.020000000000000000")]),e._v(" (2%) of all staking rewards.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.communitytax))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("communitytax")]),e._v(" parameter will decrease the rate that the community pool is funded and will increase the staking rewards captured by staking participants. This will make it more likely for the community pool to be exhausted and could potentially increase the motivation for participants to stake.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("communitytax")]),e._v(" parameter will increase the rate that the community pool is funded and will decrease the staking rewards captured by staking participants. This will make it more less for the community pool to be exhausted and could potentially decrease the motivation for participants to stake.")]),e._v(" "),t("h3",{attrs:{id:"baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#baseproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block: that validator receives a bonus of "),t("code",[e._v("0.010000000000000000")]),e._v(" (1%) more in transaction fees. The proposer must include a minimum of 2/3 of precommit signatures from the other validators in the active set in order for the block to be valid and to receive the "),t("code",[e._v("baseproposerreward")]),e._v(" bonus. All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.baseproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the "),t("code",[e._v("baseproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonusproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block. If that validator includes more than a minimum of 2/3 of precommit signatures from the other validators in the active set, they are eligible to receive the "),t("code",[e._v("bonusproposerreward")]),e._v(" of up to 4% ("),t("code",[e._v("0.040000000000000000")]),e._v("), beyond the 1% "),t("code",[e._v("baseproposerreward")]),e._v(". The bonus proposer reward amount that a validator receives depends upon how many precommit signatures are included in the proposed block (additional to the requisite 2/3). All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.bonusproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the "),t("code",[e._v("bonusproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(' that "reserve pool" refers to the community pool. In this example from the '),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits website"),t("OutboundLink")],1),e._v(", there are 10 validators with equal stake. Each of them applies a 1% commission rate and has 20% of self-delegated Atoms. Now comes a successful block that collects a total of 1025.51020408 Atoms in fees.")]),e._v(" "),t("p",[e._v("First, a 2% tax is applied. The corresponding Atoms go to the reserve pool (aka community pool). Reserve pool's funds can be allocated through governance to fund bounties and upgrades.")]),e._v(" "),t("p",[e._v("2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool.\n1005 Atoms now remain. Let's assume that the proposer included 100% of the signatures in its block. It thus obtains the full bonus of 5%.")]),e._v(" "),t("p",[e._v("We have to solve this simple equation to find the reward R for each validator:")]),e._v(" "),t("p",[e._v("9"),t("em",[e._v("R + R + R")]),e._v("5% = 1005 ⇔ R = 1005/10.05 = 100")]),e._v(" "),t("p",[e._v("For the proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R + R * 5%: 105 Atoms")]),e._v(" "),t("p",[e._v("Commission: 105 * 80% * 1% = 0.84 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 105 * 20% + Commission = 21.84 Atoms")]),e._v(" "),t("p",[e._v("Delegators' rewards: 105 * 80% - Commission = 83.16 Atoms (each delegator will be able to claim its portion of these rewards in proportion to their stake)")]),e._v(" "),t("p",[e._v("For each non-proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R: 100 Atoms")]),e._v(" "),t("p",[e._v("Commission: 100 * 80% * 1% = 0.8 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 100 * 20% + Commission = 20.8 Atoms")]),e._v(" "),t("p",[e._v("Delegators' rewards: 100 * 80% - Commission = 79.2 Atoms (each delegator will be able to claim their portion of these rewards in proportion to their stake)")]),e._v(" "),t("h3",{attrs:{id:"withdrawaddrenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withdrawaddrenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("withdrawaddrenabled")])]),e._v(" "),t("p",[t("strong",[e._v("Determines whether or not delegators may set a separate address for receiving staking rewards.")])]),e._v(" "),t("p",[e._v("Delegators can designate a separate withdrawal address (account) that receives staking rewards when "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("true")]),e._v(". When "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("false")]),e._v(", the delegator can no longer designate a separate address for withdrawals.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.withdrawaddrenabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"changing-the-withdrawaddrenabled-parameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-withdrawaddrenabled-parameter"}},[e._v("#")]),e._v(" Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" parameter")]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" to false will prevent delegators from changing or setting a separate withdrawal address (account) that receives the staking rewards. This may disrupt the functionality of applications and the expectations of staking participants.")]),e._v(" "),t("h4",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("This parameter was set to "),t("code",[e._v("false")]),e._v(" before transfers were enabled in order to prevent stakers from diverting their rewards to other addresses ie. to avoid a loophole that would enable ATOM transfer via diverting staking rewards to a designated address. This parameter likely is only useful if "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html#1-sendenabled"}},[t("code",[e._v("sendenabled")])]),e._v(" is set to "),t("code",[e._v("false")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"known-bug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#known-bug"}},[e._v("#")]),e._v(" Known Bug")]),e._v(" "),t("p",[e._v("There is a known bug associated with this module that has reportedly caused a chain to halt. In "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("this reported case"),t("OutboundLink")],1),e._v(", the chain's parameter values were changed to be:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29tbXVuaXR5X3RheDogJnF1b3Q7MC4wMjAwMDAwMDAwMDAwMDAwMDAmcXVvdDsKYmFzZV9wcm9wb3Nlcl9yZXdhcmQ6ICZxdW90OzAuOTk5MDAwMDAwMDAwMDAwMDAwJnF1b3Q7CmJvbnVzX3Byb3Bvc2VyX3Jld2FyZDogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDsK"}}),e._v(" "),t("p",[e._v("Though the system will not allow eg. "),t("code",[e._v("baseproposerreward")]),e._v(" to be a value greater than 1.0, it will allow the "),t("a",{attrs:{href:"#1-communitytax"}},[t("code",[e._v("communitytax")])]),e._v(", "),t("a",{attrs:{href:"#2-baseproposerreward"}},[t("code",[e._v("baseproposerreward")])]),e._v(", and "),t("a",{attrs:{href:"#3-bonusproposerreward"}},[t("code",[e._v("bonusproposerreward")])]),e._v(" parameters values to total an amount greater than 1.00, which will apparently cause the chain to panic and halt. You can "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("read more about the reported issue here"),t("OutboundLink")],1),e._v(".")])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/91.215b65ab.js b/main/assets/js/91.09c6eb22.js similarity index 99% rename from main/assets/js/91.215b65ab.js rename to main/assets/js/91.09c6eb22.js index c3be014f5d5..dd681bb5616 100644 --- a/main/assets/js/91.215b65ab.js +++ b/main/assets/js/91.09c6eb22.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{599:function(e,o,t){"use strict";t.r(o);var a=t(1),r=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gov-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gov-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("gov")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for on-chain governance proposals and voting functionality.")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.gov,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for the on-chain governance system. In this system, holders of the native staking token of the chain may vote on proposals on a 1-token per 1-vote basis. The module supports:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Proposal submission")]),e._v(": Users can submit proposals with a deposit. Once the minimum deposit is reached, proposal enters voting period")]),e._v(" "),t("li",[t("strong",[e._v("Vote")]),e._v(": Participants can vote on proposals that reached MinDeposit")]),e._v(" "),t("li",[t("strong",[e._v("Inheritance and penalties")]),e._v(": Delegators inherit their validator's vote if they don't vote themselves.")]),e._v(" "),t("li",[t("strong",[e._v("Claiming deposit")]),e._v(": Users that deposited on proposals can recover their deposits if the proposal was accepted OR if the proposal never entered voting period.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"depositparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#depositparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("depositparams")])]),e._v(" "),t("h4",{attrs:{id:"min-deposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#min-deposit"}},[e._v("#")]),e._v(" "),t("code",[e._v("min_deposit")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", in micro-ATOMs.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.min_deposit))])]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),t("OutboundLink")],1),e._v(" change: "),t("code",[e._v("64000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" (ie. for the proposal to be voted upon), there must be at least a minimum number of ATOMs deposited. Anyone may contribute to this deposit. Deposits of passed and failed proposals are returned to the contributors. Deposits are burned when proposals 1) "),t("a",{attrs:{href:"#maxdepositperiod"}},[e._v("expire")]),e._v(", 2) fail to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(", or 3) are "),t("a",{attrs:{href:"#veto"}},[e._v("vetoed")]),e._v(". This parameter subkey value represents the minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" in micro-ATOMs, where "),t("code",[e._v("512000000uatom")]),e._v(" is equivalent to 512 ATOM.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will enable governance proposals to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" with fewer ATOMs at risk. This will likely increase the volume of new governance proposals.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will require risking a greater number of ATOMs before governance proposals may enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This will likely decrease the volume of new governance proposals.")]),e._v(" "),t("h4",{attrs:{id:"max-deposit-period"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-deposit-period"}},[e._v("#")]),e._v(" "),t("code",[e._v("max_deposit_period")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.max_deposit_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", there must be at least a minimum number of ATOMs deposited. This parameter subkey value represents the maximum amount of time that the proposal has to reach the minimum deposit amount before expiring. The maximum amount of time that a proposal can accept deposit contributions before expiring is currently "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" subkey will decrease the time for deposit contributions to governance proposals. This will likely decrease the time that some proposals remain visible and potentially decrease the likelihood that they will enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may increase the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" subkey will extend the time for deposit contributions to governance proposals. This will likely increase the time that some proposals remain visible and potentially increase the likelihood that they will enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may decrease the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This means that a proposal with a small deposit (eg. 0.001 ATOM) will have the same visibility as those with a full 512 ATOM deposit in the voting period.")]),e._v(" "),t("h3",{attrs:{id:"votingparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingparams")])]),e._v(" "),t("h4",{attrs:{id:"votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.votingparams.voting_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Once a governance proposal enters the voting period, there is a maximum period of time that may elapse before the voting period concludes. This parameter subkey value represents the maximum amount of time that the proposal has to accept votes, which is currently "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal vote does not reach quorum ((ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal's outcome will not be considered to be valid. Voters may change their vote any number of times before the voting period ends. This voting period is currently the same for any kind of governance proposal.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will decrease the time for voting on governance proposals. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will increase the time for voting on governance proposals. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("increase the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Historically, off-chain discussions and engagement appears to be have been greater occurred during the voting period of a governance proposal than when the proposal is posted off-chain as a draft. A non-trivial amount of the voting power has voted in the second week of the voting period. Proposals 23, 19, and 13 each had approximately 80% network participation or more.")]),e._v(" "),t("h3",{attrs:{id:"tallyparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tallyparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("tallyparams")])]),e._v(" "),t("h4",{attrs:{id:"quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.quorum))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])])]),e._v(" "),t("p",[e._v("Quorum is required for the outcome of a governance proposal vote to be considered valid and for deposit contributors to recover their deposit amounts, and this parameter subkey value represents the minimum value for quorum. Voting power, whether backing a vote of 'yes', 'abstain', 'no', or 'no-with-veto', counts toward quorum. If the proposal vote does not reach quorum (ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal outcome will not be considered to be valid.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("quorum")]),e._v(" subkey will enable a smaller proportion of the network to legitimize the outcome of a proposal. This increases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while decreasing the risk that a proposal will be considered invalid. This will likely decrease the risk of a proposal's deposit being burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("quorum")]),e._v(" subkey will require a larger proportion of the network to legitimize the outcome of a proposal. This decreases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while increasing the risk that a proposal will be considered invalid. This will likely increase the risk of a proposal's deposit being burned.")]),e._v(" "),t("h4",{attrs:{id:"threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power required for a governance proposal to pass.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])])]),e._v(" "),t("p",[e._v("A simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass. Though necessary, a simple majority 'yes' vote may not be sufficient to pass a proposal in two scenarios:")]),e._v(" "),t("ol",[t("li",[e._v("Failure to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(" of 40% network power or")]),e._v(" "),t("li",[e._v("A 'no-with-veto' vote of 33.4% of participating voting power or greater.")])]),e._v(" "),t("p",[e._v("If a governance proposal passes, deposit amounts are returned to contributors. If a text-based proposal passes, nothing is enacted automatically, but there is a social expectation that participants will co-ordinate to enact the commitments signalled in the proposal. If a parameter change proposal passes, the protocol parameter will automatically change immediately after the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" ends, and without the need to run new software. If a community-spend proposal passes, the Community Pool balance will decrease by the number of ATOMs indicated in the proposal and the recipient's address will increase by this same number of ATOMs immediately after the voting period ends.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will decrease the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("increase the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will increase the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h4",{attrs:{id:"veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#veto-threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.veto_threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])])]),e._v(" "),t("p",[e._v("Though a simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a 'no-with-veto' vote of 33.4% of participating voting power or greater can override this outcome and cause the proposal to fail. This enables a minority group representing greater than 1/3 of voting power to fail a proposal that would otherwise pass.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will decrease the proportion of participating voting power required to veto. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("enable a smaller minority group to prevent proposals from passing, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that contentious proposals will pass.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will increase the proportion of participating voting power required to veto. This will require a larger minority group to prevent proposals from passing, and will likely increase the likelihood that contentious proposals will pass.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{533:function(e,o,t){"use strict";t.r(o);var a=t(1),r=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gov-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gov-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("gov")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for on-chain governance proposals and voting functionality.")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.gov,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for the on-chain governance system. In this system, holders of the native staking token of the chain may vote on proposals on a 1-token per 1-vote basis. The module supports:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Proposal submission")]),e._v(": Users can submit proposals with a deposit. Once the minimum deposit is reached, proposal enters voting period")]),e._v(" "),t("li",[t("strong",[e._v("Vote")]),e._v(": Participants can vote on proposals that reached MinDeposit")]),e._v(" "),t("li",[t("strong",[e._v("Inheritance and penalties")]),e._v(": Delegators inherit their validator's vote if they don't vote themselves.")]),e._v(" "),t("li",[t("strong",[e._v("Claiming deposit")]),e._v(": Users that deposited on proposals can recover their deposits if the proposal was accepted OR if the proposal never entered voting period.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"depositparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#depositparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("depositparams")])]),e._v(" "),t("h4",{attrs:{id:"min-deposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#min-deposit"}},[e._v("#")]),e._v(" "),t("code",[e._v("min_deposit")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", in micro-ATOMs.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.min_deposit))])]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),t("OutboundLink")],1),e._v(" change: "),t("code",[e._v("64000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" (ie. for the proposal to be voted upon), there must be at least a minimum number of ATOMs deposited. Anyone may contribute to this deposit. Deposits of passed and failed proposals are returned to the contributors. Deposits are burned when proposals 1) "),t("a",{attrs:{href:"#maxdepositperiod"}},[e._v("expire")]),e._v(", 2) fail to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(", or 3) are "),t("a",{attrs:{href:"#veto"}},[e._v("vetoed")]),e._v(". This parameter subkey value represents the minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" in micro-ATOMs, where "),t("code",[e._v("512000000uatom")]),e._v(" is equivalent to 512 ATOM.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will enable governance proposals to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" with fewer ATOMs at risk. This will likely increase the volume of new governance proposals.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will require risking a greater number of ATOMs before governance proposals may enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This will likely decrease the volume of new governance proposals.")]),e._v(" "),t("h4",{attrs:{id:"max-deposit-period"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-deposit-period"}},[e._v("#")]),e._v(" "),t("code",[e._v("max_deposit_period")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.max_deposit_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", there must be at least a minimum number of ATOMs deposited. This parameter subkey value represents the maximum amount of time that the proposal has to reach the minimum deposit amount before expiring. The maximum amount of time that a proposal can accept deposit contributions before expiring is currently "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" subkey will decrease the time for deposit contributions to governance proposals. This will likely decrease the time that some proposals remain visible and potentially decrease the likelihood that they will enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may increase the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" subkey will extend the time for deposit contributions to governance proposals. This will likely increase the time that some proposals remain visible and potentially increase the likelihood that they will enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may decrease the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This means that a proposal with a small deposit (eg. 0.001 ATOM) will have the same visibility as those with a full 512 ATOM deposit in the voting period.")]),e._v(" "),t("h3",{attrs:{id:"votingparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingparams")])]),e._v(" "),t("h4",{attrs:{id:"votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.votingparams.voting_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Once a governance proposal enters the voting period, there is a maximum period of time that may elapse before the voting period concludes. This parameter subkey value represents the maximum amount of time that the proposal has to accept votes, which is currently "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal vote does not reach quorum ((ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal's outcome will not be considered to be valid. Voters may change their vote any number of times before the voting period ends. This voting period is currently the same for any kind of governance proposal.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will decrease the time for voting on governance proposals. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will increase the time for voting on governance proposals. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("increase the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Historically, off-chain discussions and engagement appears to be have been greater occurred during the voting period of a governance proposal than when the proposal is posted off-chain as a draft. A non-trivial amount of the voting power has voted in the second week of the voting period. Proposals 23, 19, and 13 each had approximately 80% network participation or more.")]),e._v(" "),t("h3",{attrs:{id:"tallyparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tallyparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("tallyparams")])]),e._v(" "),t("h4",{attrs:{id:"quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.quorum))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])])]),e._v(" "),t("p",[e._v("Quorum is required for the outcome of a governance proposal vote to be considered valid and for deposit contributors to recover their deposit amounts, and this parameter subkey value represents the minimum value for quorum. Voting power, whether backing a vote of 'yes', 'abstain', 'no', or 'no-with-veto', counts toward quorum. If the proposal vote does not reach quorum (ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal outcome will not be considered to be valid.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("quorum")]),e._v(" subkey will enable a smaller proportion of the network to legitimize the outcome of a proposal. This increases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while decreasing the risk that a proposal will be considered invalid. This will likely decrease the risk of a proposal's deposit being burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("quorum")]),e._v(" subkey will require a larger proportion of the network to legitimize the outcome of a proposal. This decreases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while increasing the risk that a proposal will be considered invalid. This will likely increase the risk of a proposal's deposit being burned.")]),e._v(" "),t("h4",{attrs:{id:"threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power required for a governance proposal to pass.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])])]),e._v(" "),t("p",[e._v("A simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass. Though necessary, a simple majority 'yes' vote may not be sufficient to pass a proposal in two scenarios:")]),e._v(" "),t("ol",[t("li",[e._v("Failure to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(" of 40% network power or")]),e._v(" "),t("li",[e._v("A 'no-with-veto' vote of 33.4% of participating voting power or greater.")])]),e._v(" "),t("p",[e._v("If a governance proposal passes, deposit amounts are returned to contributors. If a text-based proposal passes, nothing is enacted automatically, but there is a social expectation that participants will co-ordinate to enact the commitments signalled in the proposal. If a parameter change proposal passes, the protocol parameter will automatically change immediately after the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" ends, and without the need to run new software. If a community-spend proposal passes, the Community Pool balance will decrease by the number of ATOMs indicated in the proposal and the recipient's address will increase by this same number of ATOMs immediately after the voting period ends.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will decrease the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("increase the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will increase the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h4",{attrs:{id:"veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#veto-threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.veto_threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])])]),e._v(" "),t("p",[e._v("Though a simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a 'no-with-veto' vote of 33.4% of participating voting power or greater can override this outcome and cause the proposal to fail. This enables a minority group representing greater than 1/3 of voting power to fail a proposal that would otherwise pass.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will decrease the proportion of participating voting power required to veto. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("enable a smaller minority group to prevent proposals from passing, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that contentious proposals will pass.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will increase the proportion of participating voting power required to veto. This will require a larger minority group to prevent proposals from passing, and will likely increase the likelihood that contentious proposals will pass.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/92.f02d4bf1.js b/main/assets/js/92.e991d100.js similarity index 99% rename from main/assets/js/92.f02d4bf1.js rename to main/assets/js/92.e991d100.js index c597cb1988b..8bbb35a5f87 100644 --- a/main/assets/js/92.f02d4bf1.js +++ b/main/assets/js/92.e991d100.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{596:function(e,t,a){"use strict";a.r(t);var n=a(1),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"mint-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mint-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("mint")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" module is responsible for enabling the Cosmos Hub to have a flexible inflation rate that depends upon a bonded stake ratio target. It has the following parameters")]),e._v(" "),a("table",[a("tr",[a("th",[e._v("Key")]),e._v(" "),a("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.mint,(function(t,n){return a("tr",[a("td",[a("a",{attrs:{href:"#"+n}},[a("code",[e._v(e._s(n))])])]),e._v(" "),a("td",[a("code",[e._v(e._s(t))])])])}))],2),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" module was designed to allow for a flexible inflation rate determined by market demand targeting a particular bonded-stake ratio, and effect a balance between market liquidity and staked supply.")]),e._v(" "),a("p",[e._v("In order to best determine the appropriate market rate for inflation rewards, a moving change rate is used. The moving change rate mechanism ensures that if the % bonded is either over or under the goal %-bonded, the inflation rate will adjust to further incentivize or disincentivize being bonded, respectively. Setting the goal %-bonded at less than 100% encourages the network to maintain some non-staked tokens in order to help provide some liquidity.")]),e._v(" "),a("p",[e._v("It can be broken down in the following way:")]),e._v(" "),a("ul",[a("li",[e._v("If the inflation rate is below the goal %-bonded the inflation rate will increase until a maximum value is reached")]),e._v(" "),a("li",[e._v("If the goal % bonded (67% in Cosmos-Hub) is maintained, then the inflation rate will stay constant")]),e._v(" "),a("li",[e._v("If the inflation rate is above the goal %-bonded the inflation rate will decrease until a minimum value is reached")])]),e._v(" "),a("h2",{attrs:{id:"governance-notes-on-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),a("h3",{attrs:{id:"mintdenom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mintdenom"}},[e._v("#")]),e._v(" "),a("code",[e._v("MintDenom")])]),e._v(" "),a("p",[a("strong",[e._v("Type of asset/coin that the Cosmos Hub mints.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.MintDenom))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("uatom")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("uatom")])])]),e._v(" "),a("p",[e._v("This is the type of asset (aka coin) that is being minted. The Cosmos Hub produces "),a("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1,000,000 uatom is equivalent to 1 ATOM.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-mintdenom-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-mintdenom-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("MintDenom")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("MintDenom")]),e._v(" will change the asset that the Cosmos Hub mints from the ATOM. This is likely to disrupt the functionality of applications and the expectations of staking participants.")]),e._v(" "),a("h3",{attrs:{id:"inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationratechange"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[a("strong",[e._v("A factor of and limit to the speed at which the Cosmos Hub's inflation rate changes.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/48",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 48"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("1.000000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])])]),e._v(" "),a("p",[e._v("Cosmos Hub's inflation rate can change faster or slower, depending on staking participation, and is limited to a minimum of 7% and maximum of 20%. The inflation rate cannot increase or decrease faster than 13% per year ("),a("code",[e._v("InflationRateChange")]),e._v("). The speed that the inflation rate changes depends upon two things:")]),e._v(" "),a("ol",[a("li",[e._v("how far away the "),a("em",[e._v("current staking participation ratio")]),e._v(" is from "),a("a",{attrs:{href:"#5-GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v(" (67%)")]),e._v(" "),a("li",[e._v("the value of "),a("code",[e._v("InflationRateChange")]),e._v(", which is "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"aW5mbGF0aW9uUmF0ZUNoYW5nZVBlclllYXIgPSAoMSAtIGJvbmRlZFJhdGlvL3BhcmFtcy5Hb2FsQm9uZGVkKSAqIHBhcmFtcy5JbmZsYXRpb25SYXRlQ2hhbmdlCg=="}}),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/mint#begin-block",target:"_blank",rel:"noopener noreferrer"}},[e._v("The source for this information can be found here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("The inflation rate increases when under 67% of the token supply is staking, and it will take less time to reach the maximum of rate of 20% inflation if (for example) 30% of the token supply is staking than if 50% is staking.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" parameter will decrease both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take longer for inflation to reach "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may lessen the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" parameter will increase both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take less time for inflation to reach "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may quicken the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(' if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change:')]),e._v(" "),a("p",[e._v("(1 - 73%/67%) * 13% = -1.16% per year")]),e._v(" "),a("p",[e._v("This means that if the staking participation rate stays the same, the inflation rate will decrease by 1.16% over the course of one year, during which time the Hub's inflation rate will decrease by about 0.1% per month.")]),e._v(" "),a("p",[e._v("If "),a("code",[e._v("InflationRateChange")]),e._v(' is 26% and the current staking participation ratio (aka "bond ratio") is 73%, then the inflation will decrease by 2.33% over the course of one year, during which time inflation will decrease by about 0.19% per month.')]),e._v(" "),a("p",[e._v("The Cosmos Hub's inflation rate is tied to its staking participation ratio in order to make staking more or less desirable, since most of the Hub's inflation is used to fund staking rewards. If the speed of inflation responds more strongly to staking participation, it could be that staking behaviour will also respond more strongly.")]),e._v(" "),a("h3",{attrs:{id:"inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmax"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[a("strong",[e._v("The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMax))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])])]),e._v(" "),a("p",[e._v("The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMax")]),e._v(", which is 20% ("),a("code",[e._v("0.200000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this maximum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" parameter will lower the maximum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" parameter will raise the maximum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"notes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.")]),e._v(" "),a("h3",{attrs:{id:"inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmin"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[a("strong",[e._v("The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMin))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])])]),e._v(" "),a("p",[e._v("The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMin")]),e._v(", which is 7% ("),a("code",[e._v("0.070000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this minimum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" parameter will lower the minimum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" parameter will raise the minimum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"notes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.")]),e._v(" "),a("h3",{attrs:{id:"goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalbonded"}},[e._v("#")]),e._v(" "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[a("strong",[e._v("The target proportion of staking participation, relative to the ATOM supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.GoalBonded))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])])]),e._v(" "),a("p",[a("code",[e._v("GoalBonded")]),e._v(" is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% ("),a("code",[e._v("0.670000000000000000")]),e._v(") of the total ATOM supply bonded and participating in staking. When over 67% of the supply is staked, the inflation set rate begins decreasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(" of 20%.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" parameter will cause the Cosmos Hub's inflation setting to begin decreasing at a lower participation rate, and this may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" parameter will cause the Cosmos Hub's inflation setting to begin increasing at a lower participation rate, and this may increase the incentive for staking participation.")]),e._v(" "),a("h3",{attrs:{id:"blocksperyear"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksperyear"}},[e._v("#")]),e._v(" "),a("code",[e._v("BlocksPerYear")])]),e._v(" "),a("p",[a("strong",[e._v("The system's assumed number of blocks that the Cosmos Hub will produce in one year.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.BlocksPerYear))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("4855015")])])]),e._v(" "),a("p",[a("code",[e._v("BlocksPerYear")]),e._v(" is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is currently "),a("code",[e._v("{{ $themeConfig.currentParameters.mint.BlocksPerYear }")]),e._v(" and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(") seconds over one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is most notably used in by the system to determine the rate that new ATOMs are minted, which can vary if block times vary from 6.50 seconds per block, since effectively a different number of blocks will be produced in one year and ATOMs are minted each block.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-blocksperyear-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-blocksperyear-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter will change the assumption that system makes about how many Cosmos Hub blocks will be produced per year. If block times are greater than 6.50 seconds, then this parameter should be decreased to make the Cosmos Hub's inflationary behaviour more aligned with its settings. If block times are less than 6.50 seconds, then this parameter should be increased to make the Cosmos Hub's behaviour more aligned with its settings.")]),e._v(" "),a("h4",{attrs:{id:"notes-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-4"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The calculation for seconds in one year:")]),e._v(" "),a("p",[e._v("365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(" If block times are 7.12 seconds per block and 31556736 seconds per year:")]),e._v(" "),a("p",[e._v("31556736 / 7.12 = ~4432126 blocks per year")])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{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:"#5-GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v(" (67%)")]),e._v(" "),a("li",[e._v("the value of "),a("code",[e._v("InflationRateChange")]),e._v(", which is "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"aW5mbGF0aW9uUmF0ZUNoYW5nZVBlclllYXIgPSAoMSAtIGJvbmRlZFJhdGlvL3BhcmFtcy5Hb2FsQm9uZGVkKSAqIHBhcmFtcy5JbmZsYXRpb25SYXRlQ2hhbmdlCg=="}}),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/mint#begin-block",target:"_blank",rel:"noopener noreferrer"}},[e._v("The source for this information can be found here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("The inflation rate increases when under 67% of the token supply is staking, and it will take less time to reach the maximum of rate of 20% inflation if (for example) 30% of the token supply is staking than if 50% is staking.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" parameter will decrease both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take longer for inflation to reach "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may lessen the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" parameter will increase both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take less time for inflation to reach "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may quicken the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(' if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change:')]),e._v(" "),a("p",[e._v("(1 - 73%/67%) * 13% = -1.16% per year")]),e._v(" "),a("p",[e._v("This means that if the staking participation rate stays the same, the inflation rate will decrease by 1.16% over the course of one year, during which time the Hub's inflation rate will decrease by about 0.1% per month.")]),e._v(" "),a("p",[e._v("If "),a("code",[e._v("InflationRateChange")]),e._v(' is 26% and the current staking participation ratio (aka "bond ratio") is 73%, then the inflation will decrease by 2.33% over the course of one year, during which time inflation will decrease by about 0.19% per month.')]),e._v(" "),a("p",[e._v("The Cosmos Hub's inflation rate is tied to its staking participation ratio in order to make staking more or less desirable, since most of the Hub's inflation is used to fund staking rewards. If the speed of inflation responds more strongly to staking participation, it could be that staking behaviour will also respond more strongly.")]),e._v(" "),a("h3",{attrs:{id:"inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmax"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[a("strong",[e._v("The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMax))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])])]),e._v(" "),a("p",[e._v("The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMax")]),e._v(", which is 20% ("),a("code",[e._v("0.200000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this maximum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" parameter will lower the maximum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" parameter will raise the maximum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"notes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.")]),e._v(" "),a("h3",{attrs:{id:"inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmin"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[a("strong",[e._v("The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMin))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])])]),e._v(" "),a("p",[e._v("The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMin")]),e._v(", which is 7% ("),a("code",[e._v("0.070000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this minimum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" parameter will lower the minimum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" parameter will raise the minimum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"notes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.")]),e._v(" "),a("h3",{attrs:{id:"goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalbonded"}},[e._v("#")]),e._v(" "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[a("strong",[e._v("The target proportion of staking participation, relative to the ATOM supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.GoalBonded))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])])]),e._v(" "),a("p",[a("code",[e._v("GoalBonded")]),e._v(" is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% ("),a("code",[e._v("0.670000000000000000")]),e._v(") of the total ATOM supply bonded and participating in staking. When over 67% of the supply is staked, the inflation set rate begins decreasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(" of 20%.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" parameter will cause the Cosmos Hub's inflation setting to begin decreasing at a lower participation rate, and this may reduce the incentive for staking participation.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" parameter will cause the Cosmos Hub's inflation setting to begin increasing at a lower participation rate, and this may increase the incentive for staking participation.")]),e._v(" "),a("h3",{attrs:{id:"blocksperyear"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksperyear"}},[e._v("#")]),e._v(" "),a("code",[e._v("BlocksPerYear")])]),e._v(" "),a("p",[a("strong",[e._v("The system's assumed number of blocks that the Cosmos Hub will produce in one year.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.BlocksPerYear))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("4855015")])])]),e._v(" "),a("p",[a("code",[e._v("BlocksPerYear")]),e._v(" is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is currently "),a("code",[e._v("{{ $themeConfig.currentParameters.mint.BlocksPerYear }")]),e._v(" and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(") seconds over one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is most notably used in by the system to determine the rate that new ATOMs are minted, which can vary if block times vary from 6.50 seconds per block, since effectively a different number of blocks will be produced in one year and ATOMs are minted each block.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-blocksperyear-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-blocksperyear-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter will change the assumption that system makes about how many Cosmos Hub blocks will be produced per year. If block times are greater than 6.50 seconds, then this parameter should be decreased to make the Cosmos Hub's inflationary behaviour more aligned with its settings. If block times are less than 6.50 seconds, then this parameter should be increased to make the Cosmos Hub's behaviour more aligned with its settings.")]),e._v(" "),a("h4",{attrs:{id:"notes-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-4"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The calculation for seconds in one year:")]),e._v(" "),a("p",[e._v("365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(" If block times are 7.12 seconds per block and 31556736 seconds per year:")]),e._v(" "),a("p",[e._v("31556736 / 7.12 = ~4432126 blocks per year")])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/93.425314ea.js b/main/assets/js/93.0e18c73c.js similarity index 99% rename from main/assets/js/93.425314ea.js rename to main/assets/js/93.0e18c73c.js index b83083488e9..c1f70a55af9 100644 --- a/main/assets/js/93.425314ea.js +++ b/main/assets/js/93.0e18c73c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{593:function(e,o,t){"use strict";t.r(o);var a=t(1),i=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"slashing-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashing-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("slashing")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("slashing")]),e._v(" module is responsible for enabling the Cosmos Hub to penalize any validator for an attributable violation of protocol rules by slashing (ie. partially destroying) the bonded ATOMs of their stake-backing. Penalties may include a) burning some amount of a staked bond and b) removing the ability to vote on future blocks and governance proposals for a period of time. Parameters include:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.slashing,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#signedblockswindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Window for being offline without being slashed, in blocks.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SignedBlocksWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("code",[e._v("SignedBlocksWindow")]),e._v(" and "),t("a",{attrs:{href:"#MinSignedPerWindow"}},[t("code",[e._v("MinSignedPerWindow")])]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The time window for being offline without breaking system rules is proportional to this parameter.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" parameter will decrease the window for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("SignedBlocksWindow")]),e._v(" in half from 10,000 to 5,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 5% of 5,000 blocks, which is 250 blocks. That means that a validator that misses 4,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~9.25 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" parameter will increase the window for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double "),t("code",[e._v("SignedBlocksWindow")]),e._v(" from 10,000 to 20,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 5% of 20,000 blocks, which is 1000 blocks. That means that a validator that misses 19,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~37 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#minsignedperwindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Minimum proportion of blocks signed per window without being slashed.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.MinSignedPerWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("a",{attrs:{href:"#SignedBlocksWindow"}},[t("code",[e._v("SignedBlocksWindow")])]),e._v(" and "),t("code",[e._v("MinSignedPerWindow")]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The threshold-proportion of blocks is determined by this parameter, so the greater that "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is, the lower the tolerance for missed blocks by the system.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" parameter will increase the threshold for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by "),t("a",{attrs:{href:"#5-SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#3-DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("MinSignedPerWindow")]),e._v(" in half from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.025000000000000000")]),e._v(" (2.5%), what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 2.5% of 10,000 blocks, which is 250 blocks. That means that a validator that misses 9,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~19 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" parameter will decrease the threshold for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.100000000000000000")]),e._v(" (10%), what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 10% of 10,000 blocks, which is 1000 blocks. That means that a validator that misses 9,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#downtimejailduration"}},[e._v("#")]),e._v(" "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[t("strong",[e._v("The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.DowntimeJailDuration))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("600000000000")])])]),e._v(" "),t("p",[e._v("A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka \""),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v('") for at least '),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes ("),t("code",[e._v("600000000000")]),e._v(" nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the "),t("code",[e._v("DowntimeJailDuration")]),e._v(' period has passed, the validator operator may send an "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("unjail"),t("OutboundLink")],1),e._v('" transaction to resume validator operations.')]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" parameter will require a validator to wait less time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" parameter will require a validator to wait more time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondoublesign"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake-backing that is bruned for equivocation (aka double-signing).")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDoubleSign))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v('A validator proven to have signed two blocks at the same height is considered to have committed equivocation, and the system will then permanently burn ("slash") that validator\'s total delegations (aka stake-backing) by '),t("code",[e._v("0.050000000000000000")]),e._v(' (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#staking-tombstone",target:"_blank",rel:"noopener noreferrer"}},[e._v("tombstoned"),t("OutboundLink")],1),e._v(",\" which means the validator will be permanently removed from the active set of validators, and the validator's stake-backing will only be slashed one time (regardless of how many equivocations).")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" parameter will lessen the penalty for equivocation, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are secure.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" parameter will heighten the penalty for equivocation, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are secure.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondowntime"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake that is slashed for being offline too long.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDowntime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])])]),e._v(" "),t("p",[e._v('If a validator in the active set is offline for too long, the system will permanently burn ("slash") that validator\'s total delegations (aka stake-backing) by a '),t("code",[e._v("SlashFractionDowntime")]),e._v(" of "),t("code",[e._v("0.000100000000000000")]),e._v(' (0.01%). All delegators to an offending validator will lose 0.01% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v(",\" which means the validator will be temporarily removed from the active set of validators so the validator's stake-backing will only be slashed one time.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" parameter will lessen the penalty for liveness violations, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are online.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" parameter will heighten the penalty for liveness violations, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are online.")]),e._v(" "),t("h3",{attrs:{id:"maxevidenceage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxevidenceage"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxEvidenceAge")])]),e._v(" "),t("ul",[t("li",[e._v("deprecated in "),t("code",[e._v("cosmoshub-4")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("This parameter was present in "),t("code",[e._v("cosmoshub-3")]),e._v(", but was "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5952",target:"_blank",rel:"noopener noreferrer"}},[e._v("deprecated"),t("OutboundLink")],1),e._v(" for "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis.")])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{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:"#5-SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#3-DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("MinSignedPerWindow")]),e._v(" in half from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.025000000000000000")]),e._v(" (2.5%), what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 2.5% of 10,000 blocks, which is 250 blocks. That means that a validator that misses 9,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~19 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" parameter will decrease the threshold for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.100000000000000000")]),e._v(" (10%), what happens?")]),e._v(" "),t("p",[e._v("Validators must now sign at least 10% of 10,000 blocks, which is 1000 blocks. That means that a validator that misses 9,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.")]),e._v(" "),t("p",[e._v("That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#downtimejailduration"}},[e._v("#")]),e._v(" "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[t("strong",[e._v("The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.DowntimeJailDuration))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("600000000000")])])]),e._v(" "),t("p",[e._v("A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka \""),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v('") for at least '),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes ("),t("code",[e._v("600000000000")]),e._v(" nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the "),t("code",[e._v("DowntimeJailDuration")]),e._v(' period has passed, the validator operator may send an "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("unjail"),t("OutboundLink")],1),e._v('" transaction to resume validator operations.')]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" parameter will require a validator to wait less time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" parameter will require a validator to wait more time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondoublesign"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake-backing that is bruned for equivocation (aka double-signing).")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDoubleSign))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v('A validator proven to have signed two blocks at the same height is considered to have committed equivocation, and the system will then permanently burn ("slash") that validator\'s total delegations (aka stake-backing) by '),t("code",[e._v("0.050000000000000000")]),e._v(' (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#staking-tombstone",target:"_blank",rel:"noopener noreferrer"}},[e._v("tombstoned"),t("OutboundLink")],1),e._v(",\" which means the validator will be permanently removed from the active set of validators, and the validator's stake-backing will only be slashed one time (regardless of how many equivocations).")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" parameter will lessen the penalty for equivocation, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are secure.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" parameter will heighten the penalty for equivocation, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are secure.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondowntime"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake that is slashed for being offline too long.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDowntime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])])]),e._v(" "),t("p",[e._v('If a validator in the active set is offline for too long, the system will permanently burn ("slash") that validator\'s total delegations (aka stake-backing) by a '),t("code",[e._v("SlashFractionDowntime")]),e._v(" of "),t("code",[e._v("0.000100000000000000")]),e._v(' (0.01%). All delegators to an offending validator will lose 0.01% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v(",\" which means the validator will be temporarily removed from the active set of validators so the validator's stake-backing will only be slashed one time.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" parameter will lessen the penalty for liveness violations, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are online.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" parameter will heighten the penalty for liveness violations, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are online.")]),e._v(" "),t("h3",{attrs:{id:"maxevidenceage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxevidenceage"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxEvidenceAge")])]),e._v(" "),t("ul",[t("li",[e._v("deprecated in "),t("code",[e._v("cosmoshub-4")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("This parameter was present in "),t("code",[e._v("cosmoshub-3")]),e._v(", but was "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5952",target:"_blank",rel:"noopener noreferrer"}},[e._v("deprecated"),t("OutboundLink")],1),e._v(" for "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis.")])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/94.4d57b040.js b/main/assets/js/94.b5735839.js similarity index 99% rename from main/assets/js/94.4d57b040.js rename to main/assets/js/94.b5735839.js index d9f98d89ece..60a9ea2bb8f 100644 --- a/main/assets/js/94.4d57b040.js +++ b/main/assets/js/94.b5735839.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{590:function(e,a,t){"use strict";t.r(a);var o=t(1),n=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"staking-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#staking-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("staking")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.staking,(function(a,o){return t("tr",[t("td",[t("a",{attrs:{href:"#"+o}},[t("code",[e._v(e._s(o))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for supporting an advanced Proof of Stake (PoS) system. In this system, holders of the native staking token of the chain can become validators and can delegate tokens to validators, ultimately determining the effective validator set for the system.")]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unbondingtime"}},[e._v("#")]),e._v(" "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[t("strong",[e._v("The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.UnbondingTime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1814400000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("In order to participate as a Cosmos Hub validator or delegator, ATOMs must be bonded (also known as staking). Once bonded, ATOMs are locked by the protocol and are no longer transferrable. When ATOM unbonding is initiated, the "),t("code",[e._v("UnbondingTime")]),e._v(" of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable.")]),e._v(" "),t("p",[e._v('ATOMs are used as a bond when staking. A bond may be slashed (ie. partially destroyed) when a validator has been proven to have broken protocol rules. Why? Primarily as a solution to the "'),t("a",{attrs:{href:"https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027",target:"_blank",rel:"noopener noreferrer"}},[e._v("nothing-at-stake"),t("OutboundLink")],1),e._v('" problem. In the scenario of an accidental or malicious attempt to rewrite history and reverse a transaction, a new chain ("fork") may be created in parallel with the primary chain. Without the risk of losing this bond, the optimal strategy for any validator is to validate blocks on both chains so that the validator gets their reward no matter which fork wins. A bond makes it more likely that the optimal strategy for validators will be to only validate blocks for the true ("canonical") chain.')]),e._v(" "),t("p",[e._v("Why is "),t("code",[e._v("UnbondingTime")]),e._v(" so long? It can take time to discover that a validator has committed equivocation ie. signed two blocks at the same block height. If a validator commits equivocation and then unbonds before being caught, the protocol can no longer slash (ie. partially destroy) the validator's bond.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" parameter will reduce the time it takes to unbond ATOMs. This will make it less likely for a validator's bond to be slashed after committing equivocation (aka double-signing).")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" parameter will increase the time it takes to unbond ATOMs. This will make it more likely for a validator's bond to be slashed after committing equivocation (aka double-signing).")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees.")]),e._v(" "),t("p",[e._v("1 second is equal to 1,000,000,000 nanoseconds.")]),e._v(" "),t("h2",{attrs:{id:"maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxvalidators"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.MaxValidators))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("125")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("125")])])]),e._v(" "),t("p",[e._v('Validators are ranked by stake-backing based upon the sum of their delegations, and only the top 125 are designated to be active (aka "the active set"). The active set may change any time delegation amounts change. Only active validators may participate in validating blocks, earning rewards, and governance voting. ATOM-holders may participate in staking by delegating their bonded ATOMs to one or more validators in the active set. Delegators may only earn rewards and have their governance votes count if they are delegating to an active validator, the set of which is capped by '),t("code",[e._v("MaxValidators")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" parameter will likely reduce the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may decrease the time it takes to produce each new Cosmos Hub block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" parameter will likely increase the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may increase the time it takes to produce each new Cosmos Hub block.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Prior to "),t("code",[e._v("cosmoshub-3")]),e._v(", the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal "),t("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("Prop10"),t("OutboundLink")],1),e._v(" signalled agreement that the active set be increased to 125 validators. Block times were ~6.94 seconds/block with 100 validators, and are now ~7.08 seconds/block with 125 validators.")]),e._v(" "),t("p",[e._v("It may be argued that after the Cosmos creators, the validator cohort may be the largest group of contributors to the Cosmos Hub community. Changes to the number of active validator participants may also affect the non-validator contributions to the Cosmos Hub.")]),e._v(" "),t("h3",{attrs:{id:"keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#keymaxentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("The maximum number of unbondings between a delegator and validator within the "),t("a",{attrs:{href:"#UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A delegator's maximum number of simultaneous redelegations from one validator to another validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.KeyMaxEntries))])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("7")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("7")])])])]),e._v(" "),t("p",[e._v("Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(". Each delegator also has a limited number of times that they may redelegate from one unique validator to another unique validator within the unbonding period. This limit is set by the parameter "),t("code",[e._v("KeyMaxEntries")]),e._v(", which is currently "),t("code",[e._v("7")]),e._v(". To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" parameter will, within the unbonding period, decrease the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also decrease the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, decreasing this parameter's value decreases the likelihood of a performance reduction in the network.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" parameter will, within the unbonding period, increase the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also increase the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, increasing this parameter's value may increase the likelihood of a performance reduction in the network.")]),e._v(" "),t("h3",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Aleksandr (All in Bits; Fission Labs) wrote more about "),t("code",[e._v("KeyMaxEntries")]),e._v(" "),t("a",{attrs:{href:"https://blog.cosmos.network/re-delegations-in-the-cosmos-hub-7d2f5ea59f56",target:"_blank",rel:"noopener noreferrer"}},[e._v("here in this article"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonddenom"}},[e._v("#")]),e._v(" "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[t("strong",[e._v("The unit and denomination for the asset bonded in the system.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.BondDenom))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the "),t("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom.")]),e._v(" "),t("h4",{attrs:{id:"changing-the-value-of-bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-value-of-bonddenom"}},[e._v("#")]),e._v(" Changing the value of "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("BondDenom")]),e._v(" parameter will make any bond transactions with "),t("code",[e._v("uatom")]),e._v(" fail and will require the new "),t("code",[e._v("BondDenom")]),e._v(" parameter string in order for bond transactions to be successful. Changing this parameter is likely to have breaking changes for applications that offer staking and delegation functionality.")]),e._v(" "),t("h3",{attrs:{id:"historicalentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#historicalentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("HistoricalEntries")])]),e._v(" "),t("p",[t("strong",[e._v("The number of HistoricalEntries to keep.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.HistoricalEntries))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("10000")])]),e._v(" "),t("li",[e._v("Did not exist in "),t("code",[e._v("cosmoshub-3")]),e._v(" genesis")])]),e._v(" "),t("p",[e._v("Read "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-017-historical-header-module.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR-17"),t("OutboundLink")],1),e._v(" for more on the Historical Header Module.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{530:function(e,a,t){"use strict";t.r(a);var o=t(1),n=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"staking-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#staking-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("staking")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.staking,(function(a,o){return t("tr",[t("td",[t("a",{attrs:{href:"#"+o}},[t("code",[e._v(e._s(o))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for supporting an advanced Proof of Stake (PoS) system. In this system, holders of the native staking token of the chain can become validators and can delegate tokens to validators, ultimately determining the effective validator set for the system.")]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unbondingtime"}},[e._v("#")]),e._v(" "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[t("strong",[e._v("The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.UnbondingTime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1814400000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("In order to participate as a Cosmos Hub validator or delegator, ATOMs must be bonded (also known as staking). Once bonded, ATOMs are locked by the protocol and are no longer transferrable. When ATOM unbonding is initiated, the "),t("code",[e._v("UnbondingTime")]),e._v(" of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable.")]),e._v(" "),t("p",[e._v('ATOMs are used as a bond when staking. A bond may be slashed (ie. partially destroyed) when a validator has been proven to have broken protocol rules. Why? Primarily as a solution to the "'),t("a",{attrs:{href:"https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027",target:"_blank",rel:"noopener noreferrer"}},[e._v("nothing-at-stake"),t("OutboundLink")],1),e._v('" problem. In the scenario of an accidental or malicious attempt to rewrite history and reverse a transaction, a new chain ("fork") may be created in parallel with the primary chain. Without the risk of losing this bond, the optimal strategy for any validator is to validate blocks on both chains so that the validator gets their reward no matter which fork wins. A bond makes it more likely that the optimal strategy for validators will be to only validate blocks for the true ("canonical") chain.')]),e._v(" "),t("p",[e._v("Why is "),t("code",[e._v("UnbondingTime")]),e._v(" so long? It can take time to discover that a validator has committed equivocation ie. signed two blocks at the same block height. If a validator commits equivocation and then unbonds before being caught, the protocol can no longer slash (ie. partially destroy) the validator's bond.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" parameter will reduce the time it takes to unbond ATOMs. This will make it less likely for a validator's bond to be slashed after committing equivocation (aka double-signing).")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" parameter will increase the time it takes to unbond ATOMs. This will make it more likely for a validator's bond to be slashed after committing equivocation (aka double-signing).")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees.")]),e._v(" "),t("p",[e._v("1 second is equal to 1,000,000,000 nanoseconds.")]),e._v(" "),t("h2",{attrs:{id:"maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxvalidators"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.MaxValidators))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("125")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("125")])])]),e._v(" "),t("p",[e._v('Validators are ranked by stake-backing based upon the sum of their delegations, and only the top 125 are designated to be active (aka "the active set"). The active set may change any time delegation amounts change. Only active validators may participate in validating blocks, earning rewards, and governance voting. ATOM-holders may participate in staking by delegating their bonded ATOMs to one or more validators in the active set. Delegators may only earn rewards and have their governance votes count if they are delegating to an active validator, the set of which is capped by '),t("code",[e._v("MaxValidators")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" parameter will likely reduce the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may decrease the time it takes to produce each new Cosmos Hub block.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" parameter will likely increase the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may increase the time it takes to produce each new Cosmos Hub block.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Prior to "),t("code",[e._v("cosmoshub-3")]),e._v(", the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal "),t("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("Prop10"),t("OutboundLink")],1),e._v(" signalled agreement that the active set be increased to 125 validators. Block times were ~6.94 seconds/block with 100 validators, and are now ~7.08 seconds/block with 125 validators.")]),e._v(" "),t("p",[e._v("It may be argued that after the Cosmos creators, the validator cohort may be the largest group of contributors to the Cosmos Hub community. Changes to the number of active validator participants may also affect the non-validator contributions to the Cosmos Hub.")]),e._v(" "),t("h3",{attrs:{id:"keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#keymaxentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("The maximum number of unbondings between a delegator and validator within the "),t("a",{attrs:{href:"#UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A delegator's maximum number of simultaneous redelegations from one validator to another validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.KeyMaxEntries))])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("7")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("7")])])])]),e._v(" "),t("p",[e._v("Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(". Each delegator also has a limited number of times that they may redelegate from one unique validator to another unique validator within the unbonding period. This limit is set by the parameter "),t("code",[e._v("KeyMaxEntries")]),e._v(", which is currently "),t("code",[e._v("7")]),e._v(". To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" parameter will, within the unbonding period, decrease the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also decrease the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, decreasing this parameter's value decreases the likelihood of a performance reduction in the network.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" parameter will, within the unbonding period, increase the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also increase the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, increasing this parameter's value may increase the likelihood of a performance reduction in the network.")]),e._v(" "),t("h3",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Aleksandr (All in Bits; Fission Labs) wrote more about "),t("code",[e._v("KeyMaxEntries")]),e._v(" "),t("a",{attrs:{href:"https://blog.cosmos.network/re-delegations-in-the-cosmos-hub-7d2f5ea59f56",target:"_blank",rel:"noopener noreferrer"}},[e._v("here in this article"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonddenom"}},[e._v("#")]),e._v(" "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[t("strong",[e._v("The unit and denomination for the asset bonded in the system.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.BondDenom))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the "),t("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom.")]),e._v(" "),t("h4",{attrs:{id:"changing-the-value-of-bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-value-of-bonddenom"}},[e._v("#")]),e._v(" Changing the value of "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("BondDenom")]),e._v(" parameter will make any bond transactions with "),t("code",[e._v("uatom")]),e._v(" fail and will require the new "),t("code",[e._v("BondDenom")]),e._v(" parameter string in order for bond transactions to be successful. Changing this parameter is likely to have breaking changes for applications that offer staking and delegation functionality.")]),e._v(" "),t("h3",{attrs:{id:"historicalentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#historicalentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("HistoricalEntries")])]),e._v(" "),t("p",[t("strong",[e._v("The number of HistoricalEntries to keep.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.HistoricalEntries))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("10000")])]),e._v(" "),t("li",[e._v("Did not exist in "),t("code",[e._v("cosmoshub-3")]),e._v(" genesis")])]),e._v(" "),t("p",[e._v("Read "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-017-historical-header-module.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR-17"),t("OutboundLink")],1),e._v(" for more on the Historical Header Module.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/95.8576f104.js b/main/assets/js/95.f6696b7f.js similarity index 96% rename from main/assets/js/95.8576f104.js rename to main/assets/js/95.f6696b7f.js index 9c3376d5caa..fb0d9e3c5d9 100644 --- a/main/assets/js/95.8576f104.js +++ b/main/assets/js/95.f6696b7f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{561: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],{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 diff --git a/main/assets/js/96.76bda01f.js b/main/assets/js/96.6fcf7344.js similarity index 98% rename from main/assets/js/96.76bda01f.js rename to main/assets/js/96.6fcf7344.js index 7f6f144c06b..1355d13cb1e 100644 --- a/main/assets/js/96.76bda01f.js +++ b/main/assets/js/96.6fcf7344.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{562: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],{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 diff --git a/main/assets/js/97.78dad0e6.js b/main/assets/js/97.fba0ec0f.js similarity index 98% rename from main/assets/js/97.78dad0e6.js rename to main/assets/js/97.fba0ec0f.js index 4e078d86873..0dbda8ec281 100644 --- a/main/assets/js/97.78dad0e6.js +++ b/main/assets/js/97.fba0ec0f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{564: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],{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 diff --git a/main/assets/js/98.adf439e8.js b/main/assets/js/98.a9c0da7a.js similarity index 99% rename from main/assets/js/98.adf439e8.js rename to main/assets/js/98.a9c0da7a.js index 931dabb6572..a695c677522 100644 --- a/main/assets/js/98.adf439e8.js +++ b/main/assets/js/98.a9c0da7a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{565: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],{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 diff --git a/main/assets/js/99.02147741.js b/main/assets/js/99.ed5d988e.js similarity index 99% rename from main/assets/js/99.02147741.js rename to main/assets/js/99.ed5d988e.js index 7091f21c660..598e23ef25e 100644 --- a/main/assets/js/99.02147741.js +++ b/main/assets/js/99.ed5d988e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{587:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-34-luna-mission-funding-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" Proposal 34: Luna Mission - Funding $ATOM")]),e._v(" "),o("p",[o("strong",[e._v("ABSTRACT:")])]),e._v(" "),o("p",[e._v("This proposal is the by-product of an ambitious community driven initiative. Its purpose is to orchestrate and coordinate an effort to increase awareness on the value proposition of $ATOM and the Cøsmos Hub, informing communities, individuals, entities about the dynamics of $ATOM in the light of the upcoming Stargate upgrade. We aim to achieve this through undertaking a marketing campaign contracted to AiB. We propose that the community pool allocate "),o("strong",[e._v("129,208 $ATOM")]),e._v(" to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project;")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote.")]),e._v(" "),o("p",[e._v("AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[e._v("We have requested and shall receive the assistance of AiB (Tendermint). We believe AiB (Tendermint) is one of those entities that have demonstrated an unparalleled dedication to the Cosmos Hub.")]),e._v(" "),o("p",[e._v("A multi-sig committee of 5 community members will lead coordination of the effort, and approve the above specified actions and forward funds to AiB upon completion of objectives.")]),e._v(" "),o("p",[e._v("Unspent funds will be refunded to the community pool by the committee.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("FULL TEXT OF DRAFT PROPOSAL")])]),e._v(" "),o("p",[o("strong",[e._v("Preamble")])]),e._v(" "),o("p",[o("em",[o("strong",[e._v('"We reject siloed and centralised hegemonies; we believe in the promise of Cosmos for a truly interoperable and decentralised future for governance and finance; we provide the building blocks for the future of finance and beyond.”')])])]),e._v(" "),o("p",[e._v("We, the community of the Cosmos Hub ($ATOM) have patiently been awaiting the time when IBC, the protocol that will signal the second era of the Blockchain Revolution goes live.")]),e._v(" "),o("p",[e._v("We understand that it had been of the utmost importance to opt for and pursue excellence over marketing or shilling a (nonetheless amazing) project that was not yet finalised. This, in our view, aligned with the views and ethos of the founding fathers of this great project although we firmly believe that getting the merits of this project known is of equal importance.")]),e._v(" "),o("p",[e._v("This is for a reason: we have been students and true believers in the value proposition and fundamentals of this amazing technology since we laid our eyes on it and learnt about its merits/properties.")]),e._v(" "),o("p",[e._v("To us, Cosmos Hub is providing the building blocks for the future of DLT and beyond it. We believe that its impact on the world can be enormous. For us, it is hard to resist Cosmos once you get involved with the idea. But like all great ideas it has to be disseminated.")]),e._v(" "),o("p",[e._v("Thus, we have long come upon the realisation that it has not received the attention it deserves. We also realise we build in a space where reason and real values are not a given or guarantee for success. There have been many examples in the past, not just in this space where a great idea or execution thereof was not enough for a venture’s success.\nWe have decided that it is high time we coordinated, orchestrated efforts so that we see $ATOM becoming known to this space and beyond, We are convinced that people who see the potential, inherent value and ethos of this project will not be able to unsee and that they will be converted to believers and evangelists like ourselves.")]),e._v(" "),o("p",[e._v("We need to have the support of all: community members, delegators, validators and teams that have tirelessly worked to ensure the flawless, successful completion of the Cosmos stack and vision of its roadmap.")]),e._v(" "),o("p",[e._v("We will need more than their vocal support. We will need their vote. We will need their subsequent support for this initiative. We all need to do nothing more than spread the knowledge. Disseminate this great idea.")]),e._v(" "),o("p",[e._v("We also need AiB (Tendermint)'s help to execute on this ambitious effort.")]),e._v(" "),o("p",[e._v("Our proposal is requesting from the entire cosmos family to grant access to a portion of the community pool and allow a community spend of 129,208 $ATOM for marketing contracts over a course of 3 months starting immediately upon its passing.")]),e._v(" "),o("p",[e._v("We are convinced that, by this community spend, we will increase awareness across blockchain space and get the $ATOM spaceship ready for its intergalactic journey that few - but us - have foreseen. This is not about shilling a project with no fundamentals, this is about making the best project out there known across blockchain space and beyond.")]),e._v(" "),o("p",[e._v("We also think that this initiative is not only helping the Cosmos Hub and ATOM, ultimately it is a great initiative with benefits for the massive and ever expanding galaxy of the Cosmos ecosystem. Yet we are aligned with the ATOM2021 initiative and understand that for us - $ATOM holders - the utility of $ATOM should become known and strengthened via similar initiatives.")]),e._v(" "),o("p",[e._v("Ultimately we deem imperative that this initiative coincides with the Stargate upgrade.")]),e._v(" "),o("p",[o("strong",[e._v("4 Types of Promotional Activities to be funded with 129,208 $ATOM:")])]),e._v(" "),o("p",[e._v("In order to achieve the goal of strengthening the public perception about the ATOM’s utility and understanding of communities about the value proposition of the Hub we have 4 main campaigns in mind for which we request your approval. The campaigns are detailed below:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project.")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote.\nAiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[o("strong",[e._v("Scope of Campaigns:")])]),e._v(" "),o("p",[e._v("The campaigns will be $ATOM related and should be aligned with the ATOM2021 initiative, increase awareness about the Cosmos Hub, the value proposition of $ATOM, the dynamics of IBC in relation to $ATOM without neglecting to point on the truly decentralised, sovereign, scalable, sustainable properties inherent in the project’s architecture and ethos as well as its non-competitive character to other chains within the ecosystem.\nSince we are aware of the superiority of the project over any similar efforts on interoperability, honest and informed comparisons by thought leaders in the space are anticipated and will be coordinated during the course of this undertaking.")]),e._v(" "),o("p",[o("strong",[e._v("Release of funds:")])]),e._v(" "),o("p",[e._v("Funds will be released to a multi-sig committee which in turn may - depending on each initiative and based on a majority multisignature approval - release the funds to: 1) Tendermint (AiB) that will act as a liaison between Cosmos Hub community and third parties and distribute the payments according with the marketing proposal or where appropriate, 2) directly to the entities or individuals ( e.g. contest winners or various contributors)")]),e._v(" "),o("p",[o("strong",[e._v("Funds’ Distribution:")])]),e._v(" "),o("p",[e._v("The distribution of funds will be administered by 5 community members that have been selected via the governance working group. At least 3 will have to approve each spend for it to be released to AiB or any third party, according with the marketing proposal.")]),e._v(" "),o("p",[e._v("@johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).")]),e._v(" "),o("p",[e._v("Every spend action related to this proposal has to be approved via multi-sig. At least 3/5 signatures are required to confirm a spend of the allocated marketing funds.")]),e._v(" "),o("p",[e._v("For administrative efforts, drafting the proposal and executing the marketing efforts, the 5 administrators will receive 100 ATOMs each for their time & efforts over the coming 3 months in helping to properly execute the above mentioned strategy.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("Refund of Unspent Funds to the Pool:")])]),e._v(" "),o("p",[e._v("It is expected that amounts requested and allocated for each campaign will be depleted and spent. In the event this does not happen within 3 months of the passing of the proposal, this amount will have to be refunded by either AiB or the mutli-sig committee (whomever is in custody of the funds) back to the community pool.")]),e._v(" "),o("p",[o("strong",[e._v("Expectations from the rest of entities involved in the Hub:")])]),e._v(" "),o("p",[e._v("We expect that our initiative will stand as a beacon for the rest of the teams/entities/individuals involved in the development of the Cosmos Hub in respect to pushing the project forward.")]),e._v(" "),o("p",[e._v("Educational material, articles on mainstream media, podcasts, interviews, social media campaigns, active promotion to e.g. the end of a Paypal listing, only form part of what we deem as an optimal and thorough and long-term strategy for establishing the Cosmos Hub ($ATOM) as the true game changer in people’s minds within this space. Since our resources are limited and the purpose here is not to deplete the Community pool, we expect the rest of the main teams involved in the development of the Hub or even teams earning value from their operations on the Cosmos hub and $ATOM to undertake efforts similar (at least in passion) to ours and support or supplement our efforts. Thus, we aim to motivate others by this limited in resources initiative.")]),e._v(" "),o("p",[o("strong",[e._v("AiB’s General Obligations to the Community:")])]),e._v(" "),o("p",[e._v("Specific work tasks like the banner campaign & the thought leader campaign are expected to be covered by AIB. This can be done right away even before the proposal is passed to enable a faster execution of the proposal. Any tasks which are agreed upon and that are signed off by the administrators will then be commissioned to AIB upon delivery. Administrators expect a fully transparent report every 2 weeks showing the state of the tasks and additional information that verifies the proper execution of the community tasks (Receipts & documentation).")]),e._v(" "),o("p",[o("strong",[e._v("Closing Remarks:")])]),e._v(" "),o("p",[e._v("Ultimately for us, the Community, Cosmos Hub ($ATOM) signals the second era of the so-called Blockchain Revolution. We can all be the messengers, but we need the message to be delivered sooner than later. Empower us with the necessary funding tools so that we disseminate and deliver the message across all corners of the space. For, beyond awesome code, we see an equally awesome community ready to undertake and support this ambitious initiative. We do not see this as a phoney attempt to shill an empty promise. We see this as an opportunity to inform, educate and create a larger follower base around the most important project in this space to date.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{529:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-34-luna-mission-funding-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" Proposal 34: Luna Mission - Funding $ATOM")]),e._v(" "),o("p",[o("strong",[e._v("ABSTRACT:")])]),e._v(" "),o("p",[e._v("This proposal is the by-product of an ambitious community driven initiative. Its purpose is to orchestrate and coordinate an effort to increase awareness on the value proposition of $ATOM and the Cøsmos Hub, informing communities, individuals, entities about the dynamics of $ATOM in the light of the upcoming Stargate upgrade. We aim to achieve this through undertaking a marketing campaign contracted to AiB. We propose that the community pool allocate "),o("strong",[e._v("129,208 $ATOM")]),e._v(" to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project;")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote.")]),e._v(" "),o("p",[e._v("AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[e._v("We have requested and shall receive the assistance of AiB (Tendermint). We believe AiB (Tendermint) is one of those entities that have demonstrated an unparalleled dedication to the Cosmos Hub.")]),e._v(" "),o("p",[e._v("A multi-sig committee of 5 community members will lead coordination of the effort, and approve the above specified actions and forward funds to AiB upon completion of objectives.")]),e._v(" "),o("p",[e._v("Unspent funds will be refunded to the community pool by the committee.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("FULL TEXT OF DRAFT PROPOSAL")])]),e._v(" "),o("p",[o("strong",[e._v("Preamble")])]),e._v(" "),o("p",[o("em",[o("strong",[e._v('"We reject siloed and centralised hegemonies; we believe in the promise of Cosmos for a truly interoperable and decentralised future for governance and finance; we provide the building blocks for the future of finance and beyond.”')])])]),e._v(" "),o("p",[e._v("We, the community of the Cosmos Hub ($ATOM) have patiently been awaiting the time when IBC, the protocol that will signal the second era of the Blockchain Revolution goes live.")]),e._v(" "),o("p",[e._v("We understand that it had been of the utmost importance to opt for and pursue excellence over marketing or shilling a (nonetheless amazing) project that was not yet finalised. This, in our view, aligned with the views and ethos of the founding fathers of this great project although we firmly believe that getting the merits of this project known is of equal importance.")]),e._v(" "),o("p",[e._v("This is for a reason: we have been students and true believers in the value proposition and fundamentals of this amazing technology since we laid our eyes on it and learnt about its merits/properties.")]),e._v(" "),o("p",[e._v("To us, Cosmos Hub is providing the building blocks for the future of DLT and beyond it. We believe that its impact on the world can be enormous. For us, it is hard to resist Cosmos once you get involved with the idea. But like all great ideas it has to be disseminated.")]),e._v(" "),o("p",[e._v("Thus, we have long come upon the realisation that it has not received the attention it deserves. We also realise we build in a space where reason and real values are not a given or guarantee for success. There have been many examples in the past, not just in this space where a great idea or execution thereof was not enough for a venture’s success.\nWe have decided that it is high time we coordinated, orchestrated efforts so that we see $ATOM becoming known to this space and beyond, We are convinced that people who see the potential, inherent value and ethos of this project will not be able to unsee and that they will be converted to believers and evangelists like ourselves.")]),e._v(" "),o("p",[e._v("We need to have the support of all: community members, delegators, validators and teams that have tirelessly worked to ensure the flawless, successful completion of the Cosmos stack and vision of its roadmap.")]),e._v(" "),o("p",[e._v("We will need more than their vocal support. We will need their vote. We will need their subsequent support for this initiative. We all need to do nothing more than spread the knowledge. Disseminate this great idea.")]),e._v(" "),o("p",[e._v("We also need AiB (Tendermint)'s help to execute on this ambitious effort.")]),e._v(" "),o("p",[e._v("Our proposal is requesting from the entire cosmos family to grant access to a portion of the community pool and allow a community spend of 129,208 $ATOM for marketing contracts over a course of 3 months starting immediately upon its passing.")]),e._v(" "),o("p",[e._v("We are convinced that, by this community spend, we will increase awareness across blockchain space and get the $ATOM spaceship ready for its intergalactic journey that few - but us - have foreseen. This is not about shilling a project with no fundamentals, this is about making the best project out there known across blockchain space and beyond.")]),e._v(" "),o("p",[e._v("We also think that this initiative is not only helping the Cosmos Hub and ATOM, ultimately it is a great initiative with benefits for the massive and ever expanding galaxy of the Cosmos ecosystem. Yet we are aligned with the ATOM2021 initiative and understand that for us - $ATOM holders - the utility of $ATOM should become known and strengthened via similar initiatives.")]),e._v(" "),o("p",[e._v("Ultimately we deem imperative that this initiative coincides with the Stargate upgrade.")]),e._v(" "),o("p",[o("strong",[e._v("4 Types of Promotional Activities to be funded with 129,208 $ATOM:")])]),e._v(" "),o("p",[e._v("In order to achieve the goal of strengthening the public perception about the ATOM’s utility and understanding of communities about the value proposition of the Hub we have 4 main campaigns in mind for which we request your approval. The campaigns are detailed below:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project.")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote.\nAiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[o("strong",[e._v("Scope of Campaigns:")])]),e._v(" "),o("p",[e._v("The campaigns will be $ATOM related and should be aligned with the ATOM2021 initiative, increase awareness about the Cosmos Hub, the value proposition of $ATOM, the dynamics of IBC in relation to $ATOM without neglecting to point on the truly decentralised, sovereign, scalable, sustainable properties inherent in the project’s architecture and ethos as well as its non-competitive character to other chains within the ecosystem.\nSince we are aware of the superiority of the project over any similar efforts on interoperability, honest and informed comparisons by thought leaders in the space are anticipated and will be coordinated during the course of this undertaking.")]),e._v(" "),o("p",[o("strong",[e._v("Release of funds:")])]),e._v(" "),o("p",[e._v("Funds will be released to a multi-sig committee which in turn may - depending on each initiative and based on a majority multisignature approval - release the funds to: 1) Tendermint (AiB) that will act as a liaison between Cosmos Hub community and third parties and distribute the payments according with the marketing proposal or where appropriate, 2) directly to the entities or individuals ( e.g. contest winners or various contributors)")]),e._v(" "),o("p",[o("strong",[e._v("Funds’ Distribution:")])]),e._v(" "),o("p",[e._v("The distribution of funds will be administered by 5 community members that have been selected via the governance working group. At least 3 will have to approve each spend for it to be released to AiB or any third party, according with the marketing proposal.")]),e._v(" "),o("p",[e._v("@johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).")]),e._v(" "),o("p",[e._v("Every spend action related to this proposal has to be approved via multi-sig. At least 3/5 signatures are required to confirm a spend of the allocated marketing funds.")]),e._v(" "),o("p",[e._v("For administrative efforts, drafting the proposal and executing the marketing efforts, the 5 administrators will receive 100 ATOMs each for their time & efforts over the coming 3 months in helping to properly execute the above mentioned strategy.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("Refund of Unspent Funds to the Pool:")])]),e._v(" "),o("p",[e._v("It is expected that amounts requested and allocated for each campaign will be depleted and spent. In the event this does not happen within 3 months of the passing of the proposal, this amount will have to be refunded by either AiB or the mutli-sig committee (whomever is in custody of the funds) back to the community pool.")]),e._v(" "),o("p",[o("strong",[e._v("Expectations from the rest of entities involved in the Hub:")])]),e._v(" "),o("p",[e._v("We expect that our initiative will stand as a beacon for the rest of the teams/entities/individuals involved in the development of the Cosmos Hub in respect to pushing the project forward.")]),e._v(" "),o("p",[e._v("Educational material, articles on mainstream media, podcasts, interviews, social media campaigns, active promotion to e.g. the end of a Paypal listing, only form part of what we deem as an optimal and thorough and long-term strategy for establishing the Cosmos Hub ($ATOM) as the true game changer in people’s minds within this space. Since our resources are limited and the purpose here is not to deplete the Community pool, we expect the rest of the main teams involved in the development of the Hub or even teams earning value from their operations on the Cosmos hub and $ATOM to undertake efforts similar (at least in passion) to ours and support or supplement our efforts. Thus, we aim to motivate others by this limited in resources initiative.")]),e._v(" "),o("p",[o("strong",[e._v("AiB’s General Obligations to the Community:")])]),e._v(" "),o("p",[e._v("Specific work tasks like the banner campaign & the thought leader campaign are expected to be covered by AIB. This can be done right away even before the proposal is passed to enable a faster execution of the proposal. Any tasks which are agreed upon and that are signed off by the administrators will then be commissioned to AIB upon delivery. Administrators expect a fully transparent report every 2 weeks showing the state of the tasks and additional information that verifies the proper execution of the community tasks (Receipts & documentation).")]),e._v(" "),o("p",[o("strong",[e._v("Closing Remarks:")])]),e._v(" "),o("p",[e._v("Ultimately for us, the Community, Cosmos Hub ($ATOM) signals the second era of the so-called Blockchain Revolution. We can all be the messengers, but we need the message to be delivered sooner than later. Empower us with the necessary funding tools so that we disseminate and deliver the message across all corners of the space. For, beyond awesome code, we see an equally awesome community ready to undertake and support this ambitious initiative. We do not see this as a phoney attempt to shill an empty promise. We see this as an opportunity to inform, educate and create a larger follower base around the most important project in this space to date.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/app.7144a29f.js b/main/assets/js/app.fb33ad2b.js similarity index 74% rename from main/assets/js/app.7144a29f.js rename to main/assets/js/app.fb33ad2b.js index 04f686593a1..395066a5643 100644 --- a/main/assets/js/app.7144a29f.js +++ b/main/assets/js/app.fb33ad2b.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],u=t[2],p=0,d=[];pe.data).catch(()=>console.log("Error in fetching data from "+this.topBannerUrl)),t=s.a.get(this.asideBannersUrl+"/index.json").then(e=>e.data).catch(()=>console.log("Error in fetching data from "+this.asideBannersUrl));Promise.all([e,t]).then(e=>{this.topBanner=e[0],this.asideBanners=e[1]})},mounted(){document.addEventListener("scroll",()=>{const e=this.$refs.asideBanners;e&&(this.heightBanners=e.offsetHeight);const t=document.querySelector("#content-scroll"),n=document.querySelector("#aside-scroll"),r=window.scrollY;n&&n.getBoundingClientRect().heightwindow.innerHeight&&(this.asideBottom=r+n.getBoundingClientRect().height>t.getBoundingClientRect().height-this.heightBanners)}),Object(o.a)("/",(e,t)=>{e.preventDefault(),this.searchPanel=!this.searchPanel}),Object(o.a)("escape",(e,t)=>{e.preventDefault(),this.searchPanel=!1});let e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh",e+"px")},computed:{algoliaConfig(){const e=this.$themeConfig.algolia;return e||{}},editLink(){if(!1===this.$page.frontmatter.editLink)return;const{repo:e,editLinks:t,docsDir:n="",docsBranch:r="master",docsRepo:o=e}=this.$site.themeConfig;return o&&t&&this.$page.relativePath?this.createEditLink(e,o,n,r,this.$page.relativePath):void 0},layout(){return this.$page.path?this.$frontmatter.layout?this.$frontmatter.layout:"LayoutDefault":"NotFound"},hasLocales(){return this.$site.locales&&Object.entries(this.$site.locales).length>1},directoryTree(){const e=this.$site.pages,t=Object.keys(this.$site.locales||{}).map(e=>e.replace(/\//g,"")),n=(this.$localeConfig.path||"").replace(/\//g,""),o=n.length>0;let i={};e.forEach(e=>{let t=e.relativePath.split("/");if(1===t.length)return i[t[0]]=e;t.reduce((t,n,r,o)=>(r===o.length-1&&(t[n]=e),t.hasOwnProperty(n)||(t[n]={}),t[n]),i)}),i=o?i[n]:Object(r.omit)(i,t),i=Object(r.omitBy)(i,e=>"string"==typeof e.key);const a=e=>Object(r.map)(e,(e,t)=>({title:t,...e.key&&Object(r.isString)(e.key)?e:{children:this.sortedList(a(e))}}));return i=a(i),this.sortedList(i)},tree(){return[(this.$themeConfig.sidebar.auto,{title:"",children:this.directoryTree}),...this.$themeConfig.sidebar.nav||[]]}},methods:{searchSelect(e){if(e.id){const t=Object(r.find)(this.$site.pages,["key",e.id]);t&&t.regularPath&&this.$page.regularPath!=t.regularPath&&(this.$router.push(t.regularPath),this.searchPanel=!1)}else e.url&&window.location.assign(e.url)},createEditLink(e,t,n,r,o){if(/bitbucket.org/.test(e)){return(u.test(t)?t:e).replace(l,"")+"/src"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o+`?mode=edit&spa=0&at=${r}&fileviewer=file-view-default`}const i="https://raw.githubusercontent.com/"+t+`/${r}/`+(n?n.replace(l,"")+"/":"")+o;s.a.get(i).then(e=>this.status=e.status).catch(()=>this.status=404);const a=u.test(t)?t:"https://github.com/"+t;return 200!==this.status?`https://github.com/${t}/issues`:a.replace(l,"")+"/edit"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o},searchVisible(e){this.searchPanel=e},overlayClick(e){this.sidebarVisible=!1,this.rsidebarVisible=!1,this.searchPanel=!1},selectHeader(e){e.length>0&&(this.headerSelected=e[0].target.id)},indexFile:e=>!!e.children&&Object(r.find)(e.children,e=>{const t=e.relativePath;return!!t&&(t.toLowerCase().match(/index.md$/i)||t.toLowerCase().match(/readme.md$/i))}),sortedList(e){if(!Object(r.isArray)(e))return e;return Object(r.sortBy)(e,e=>{if(e.frontmatter)return e.frontmatter.order;if(e.children){const t=this.indexFile(e);return t&&t.frontmatter&&t.frontmatter.parent&&t.frontmatter.parent.order}})}},props:{aside:{type:Boolean,default:!0},search:{type:Boolean,default:!1}}},p=(n(390),n(1)),d=Object(p.a)(c,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("cookie-banner"),n("tm-top-banner",e._b({},"tm-top-banner",{topBanner:e.topBanner},!1)),n("div",{staticClass:"layout"},[n("div",{staticClass:"layout__sidebar"},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree}})],1),n("div",{staticClass:"layout__main"},[n("div",{staticClass:"layout__main__navbar"},[n("tm-top-bar",{on:{sidebar:function(t){e.sidebarVisible=t},search:function(t){e.searchPanel=t}}})],1),n("div",{staticClass:"layout__main__content",class:["aside__"+!(!1===e.$frontmatter.aside)]},[n("div",{staticClass:"layout__main__content__body",attrs:{id:"content-scroll"}},[!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__body__breadcrumbs"},[n("tm-breadcrumbs",{on:{visible:function(t){e.rsidebarVisible=t}}})],1):e._e(),n("div",{staticClass:"layout__main__content__body__wrapper"},[n(e.layout,{key:e.$route.path,tag:"component",on:{search:function(t){e.searchPanel=t},prereq:function(t){e.prereq=t}}},[n("Content")],1)],1)]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__aside__container",style:{"--height-banners":e.heightBanners+"px"}},[n("div",{staticClass:"layout__main__content__aside",class:["aside__bottom__"+!!e.asideBottom]},[n("client-only",[n("tm-aside",e._b({attrs:{id:"aside-scroll"},on:{search:function(t){e.searchPanel=t},bannerError:function(t){e.asideBanners=null}}},"tm-aside",{asideBanners:e.asideBanners,asideBannersUrl:e.asideBannersUrl,prereq:e.prereq},!1))],1)],1),e.editLink?n("div",{ref:"banners",staticClass:"layout__main__content__aside__banners"},[n("a",{attrs:{href:e.editLink,target:"_blank"}},[n("card-banner")],1)]):e._e()]):e._e()]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__gutter"},[n("tm-footer-links",{attrs:{tree:e.tree}})],1):e._e(),n("div",{staticClass:"layout__main__footer"},[n("tm-footer",{attrs:{tree:e.directoryTree,full:e.$page.frontmatter.footer&&!1===e.$page.frontmatter.footer.newsletter}})],1)])]),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.sidebarVisible},on:{visible:function(t){e.sidebarVisible=t}}},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree,compact:!0}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.searchPanel,"max-width":"100vw",width:"480px",side:"right","box-shadow":"0 0 50px 10px rgba(0,0,0,.1)","background-color":"rgba(0,0,0,0)"},on:{visible:function(t){e.searchPanel=t}}},[n("section-search",{attrs:{base:e.$site.base,algoliaConfig:e.algoliaConfig,query:e.searchQuery,site:e.$site},on:{visible:function(t){e.searchPanel=t},cancel:function(t){e.searchPanel=!1},select:function(t){return e.searchSelect(t)},query:function(t){e.searchQuery=t}}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar sheet__sidebar__toc",attrs:{visible:e.rsidebarVisible,side:"right"},on:{visible:function(t){e.rsidebarVisible=t}}},[n("tm-toc-menu",{on:{visible:function(t){e.rsidebarVisible=t}}})],1)],1)}),[],!1,null,"58560e81",null);t.default=d.exports},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return r.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(102);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&","<":"<",">":">",'"':"""};function f(e){return h[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var g=n(52);t.lib={},t.lib.mdurl=n(103),t.lib.ucmicro=n(301),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,n){return t||function(e,t){var n=0;return o(c,t)?c[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return g.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,n){"use strict";var r=n(120),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;ne.data).catch(()=>console.log("Error in fetching data from "+this.topBannerUrl)),t=s.a.get(this.asideBannersUrl+"/index.json").then(e=>e.data).catch(()=>console.log("Error in fetching data from "+this.asideBannersUrl));Promise.all([e,t]).then(e=>{this.topBanner=e[0],this.asideBanners=e[1]})},mounted(){document.addEventListener("scroll",()=>{const e=this.$refs.asideBanners;e&&(this.heightBanners=e.offsetHeight);const t=document.querySelector("#content-scroll"),n=document.querySelector("#aside-scroll"),r=window.scrollY;n&&n.getBoundingClientRect().heightwindow.innerHeight&&(this.asideBottom=r+n.getBoundingClientRect().height>t.getBoundingClientRect().height-this.heightBanners)}),Object(o.a)("/",(e,t)=>{e.preventDefault(),this.searchPanel=!this.searchPanel}),Object(o.a)("escape",(e,t)=>{e.preventDefault(),this.searchPanel=!1});let e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh",e+"px")},computed:{algoliaConfig(){const e=this.$themeConfig.algolia;return e||{}},editLink(){if(!1===this.$page.frontmatter.editLink)return;const{repo:e,editLinks:t,docsDir:n="",docsBranch:r="master",docsRepo:o=e}=this.$site.themeConfig;return o&&t&&this.$page.relativePath?this.createEditLink(e,o,n,r,this.$page.relativePath):void 0},layout(){return this.$page.path?this.$frontmatter.layout?this.$frontmatter.layout:"LayoutDefault":"NotFound"},hasLocales(){return this.$site.locales&&Object.entries(this.$site.locales).length>1},directoryTree(){const e=this.$site.pages,t=Object.keys(this.$site.locales||{}).map(e=>e.replace(/\//g,"")),n=(this.$localeConfig.path||"").replace(/\//g,""),o=n.length>0;let i={};e.forEach(e=>{let t=e.relativePath.split("/");if(1===t.length)return i[t[0]]=e;t.reduce((t,n,r,o)=>(r===o.length-1&&(t[n]=e),t.hasOwnProperty(n)||(t[n]={}),t[n]),i)}),i=o?i[n]:Object(r.omit)(i,t),i=Object(r.omitBy)(i,e=>"string"==typeof e.key);const a=e=>Object(r.map)(e,(e,t)=>({title:t,...e.key&&Object(r.isString)(e.key)?e:{children:this.sortedList(a(e))}}));return i=a(i),this.sortedList(i)},tree(){return[(this.$themeConfig.sidebar.auto,{title:"",children:this.directoryTree}),...this.$themeConfig.sidebar.nav||[]]}},methods:{searchSelect(e){if(e.id){const t=Object(r.find)(this.$site.pages,["key",e.id]);t&&t.regularPath&&this.$page.regularPath!=t.regularPath&&(this.$router.push(t.regularPath),this.searchPanel=!1)}else e.url&&window.location.assign(e.url)},createEditLink(e,t,n,r,o){if(/bitbucket.org/.test(e)){return(u.test(t)?t:e).replace(l,"")+"/src"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o+`?mode=edit&spa=0&at=${r}&fileviewer=file-view-default`}const i="https://raw.githubusercontent.com/"+t+`/${r}/`+(n?n.replace(l,"")+"/":"")+o;s.a.get(i).then(e=>this.status=e.status).catch(()=>this.status=404);const a=u.test(t)?t:"https://github.com/"+t;return 200!==this.status?`https://github.com/${t}/issues`:a.replace(l,"")+"/edit"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o},searchVisible(e){this.searchPanel=e},overlayClick(e){this.sidebarVisible=!1,this.rsidebarVisible=!1,this.searchPanel=!1},selectHeader(e){e.length>0&&(this.headerSelected=e[0].target.id)},indexFile:e=>!!e.children&&Object(r.find)(e.children,e=>{const t=e.relativePath;return!!t&&(t.toLowerCase().match(/index.md$/i)||t.toLowerCase().match(/readme.md$/i))}),sortedList(e){if(!Object(r.isArray)(e))return e;return Object(r.sortBy)(e,e=>{if(e.frontmatter)return e.frontmatter.order;if(e.children){const t=this.indexFile(e);return t&&t.frontmatter&&t.frontmatter.parent&&t.frontmatter.parent.order}})}},props:{aside:{type:Boolean,default:!0},search:{type:Boolean,default:!1}}},p=(n(390),n(1)),d=Object(p.a)(c,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("cookie-banner"),n("tm-top-banner",e._b({},"tm-top-banner",{topBanner:e.topBanner},!1)),n("div",{staticClass:"layout"},[n("div",{staticClass:"layout__sidebar"},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree}})],1),n("div",{staticClass:"layout__main"},[n("div",{staticClass:"layout__main__navbar"},[n("tm-top-bar",{on:{sidebar:function(t){e.sidebarVisible=t},search:function(t){e.searchPanel=t}}})],1),n("div",{staticClass:"layout__main__content",class:["aside__"+!(!1===e.$frontmatter.aside)]},[n("div",{staticClass:"layout__main__content__body",attrs:{id:"content-scroll"}},[!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__body__breadcrumbs"},[n("tm-breadcrumbs",{on:{visible:function(t){e.rsidebarVisible=t}}})],1):e._e(),n("div",{staticClass:"layout__main__content__body__wrapper"},[n(e.layout,{key:e.$route.path,tag:"component",on:{search:function(t){e.searchPanel=t},prereq:function(t){e.prereq=t}}},[n("Content")],1)],1)]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__aside__container",style:{"--height-banners":e.heightBanners+"px"}},[n("div",{staticClass:"layout__main__content__aside",class:["aside__bottom__"+!!e.asideBottom]},[n("client-only",[n("tm-aside",e._b({attrs:{id:"aside-scroll"},on:{search:function(t){e.searchPanel=t},bannerError:function(t){e.asideBanners=null}}},"tm-aside",{asideBanners:e.asideBanners,asideBannersUrl:e.asideBannersUrl,prereq:e.prereq},!1))],1)],1),e.editLink?n("div",{ref:"banners",staticClass:"layout__main__content__aside__banners"},[n("a",{attrs:{href:e.editLink,target:"_blank"}},[n("card-banner")],1)]):e._e()]):e._e()]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__gutter"},[n("tm-footer-links",{attrs:{tree:e.tree}})],1):e._e(),n("div",{staticClass:"layout__main__footer"},[n("tm-footer",{attrs:{tree:e.directoryTree,full:e.$page.frontmatter.footer&&!1===e.$page.frontmatter.footer.newsletter}})],1)])]),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.sidebarVisible},on:{visible:function(t){e.sidebarVisible=t}}},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree,compact:!0}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.searchPanel,"max-width":"100vw",width:"480px",side:"right","box-shadow":"0 0 50px 10px rgba(0,0,0,.1)","background-color":"rgba(0,0,0,0)"},on:{visible:function(t){e.searchPanel=t}}},[n("section-search",{attrs:{base:e.$site.base,algoliaConfig:e.algoliaConfig,query:e.searchQuery,site:e.$site},on:{visible:function(t){e.searchPanel=t},cancel:function(t){e.searchPanel=!1},select:function(t){return e.searchSelect(t)},query:function(t){e.searchQuery=t}}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar sheet__sidebar__toc",attrs:{visible:e.rsidebarVisible,side:"right"},on:{visible:function(t){e.rsidebarVisible=t}}},[n("tm-toc-menu",{on:{visible:function(t){e.rsidebarVisible=t}}})],1)],1)}),[],!1,null,"58560e81",null);t.default=d.exports},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return r.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(102);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&","<":"<",">":">",'"':"""};function f(e){return h[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var g=n(52);t.lib={},t.lib.mdurl=n(103),t.lib.ucmicro=n(301),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,n){return t||function(e,t){var n=0;return o(c,t)?c[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return g.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,n){"use strict";var r=n(120),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n @@ -54,4 +54,4 @@ var r=Object.freeze({});function o(e){return null==e}function i(e){return null!= * vue-router v3.6.5 * (c) 2022 Evan You * @license MIT - */function Do(e,t){for(var n in t)e[n]=t[n];return e}var Mo=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Mo,Io).replace(Ro,",")};function qo(e){try{return decodeURIComponent(e)}catch(e){0}return e}var $o=function(e){return null==e||"object"==typeof e?e:String(e)};function zo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=qo(n.shift()),o=n.length>0?qo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function Bo(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Fo(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(Fo(t)):r.push(Fo(t)+"="+Fo(e)))})),r.join("&")}return Fo(t)+"="+Fo(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var No=/\/?$/;function Uo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Ho(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:Zo(t,o),matched:e?Go(e):[]};return n&&(a.redirectedFrom=Zo(n,o)),Object.freeze(a)}function Ho(e){if(Array.isArray(e))return e.map(Ho);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Ho(e[n]);return t}return e}var Vo=Uo(null,{path:"/"});function Go(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function Zo(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Bo)(r)+o}function Wo(e,t,n){return t===Vo?e===t:!!t&&(e.path&&t.path?e.path.replace(No,"")===t.path.replace(No,"")&&(n||e.hash===t.hash&&Ko(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&Ko(e.query,t.query)&&Ko(e.params,t.params))))}function Ko(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?Ko(i,a):String(i)===String(a)}))}function Jo(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),u=t&&t.path||"/",c=l.path?Qo(l.path,u,n||o.append):u,p=function(e,t,n){void 0===t&&(t={});var r,o=n||zo;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map($o):$o(a)}return r}(l.query,o.query,r&&r.options.parseQuery),d=o.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:c,query:p,hash:d}}var _i,ki=function(){},wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,p=null==u?"router-link-active":u,d=null==c?"router-link-exact-active":c,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=a.redirectedFrom?Uo(null,yi(a.redirectedFrom),null,n):a;l[f]=Wo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(No,"/").indexOf(t.path.replace(No,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){xi(e)&&(t.replace?n.replace(i,ki):n.push(i,ki))},b={click:xi};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=m})):b[this.event]=m;var y={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[h],isExactActive:l[f]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)y.on=b,y.attrs={href:s,"aria-current":g};else{var k=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=bi(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var h=0;h-1}function ea(e,t){return Qi(e)&&e._isRouter&&(null==t||e.type===t)}function ta(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function na(e){return function(t,n,r){var o=!1,i=0,a=null;ra(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=aa((function(t){var o;((o=t).__esModule||ia&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:_i.extend(t),n.components[s]=t,--i<=0&&r()})),c=aa((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Qi(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var p=l.component;p&&"function"==typeof p.then&&p.then(u,c)}}})),o||r()}}function ra(e,t){return oa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function oa(e){return Array.prototype.concat.apply([],e)}var ia="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function aa(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var sa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ci){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function la(e,t,n,r){var o=ra(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=_i.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return oa(r?o.reverse():o)}function ua(e,t){if(t)return function(){return e.apply(t,arguments)}}sa.prototype.listen=function(e){this.cb=e},sa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},sa.prototype.onError=function(e){this.errorCbs.push(e)},sa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ea(e,Wi.redirected)&&i===Vo||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},sa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ea(e)&&Qi(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(Wo(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&Ri(this.router,o,e,!1),s(((a=Xi(i=o,e,Wi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=Vi&&n;r&&this.listeners.push(Ii());var o=function(){var n=e.current,o=pa(e.base);e.current===Vo&&o===e._startLocation||e.transitionTo(o,(function(e){r&&Ri(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Gi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Zi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(pa(this.base)!==this.current.fullPath){var t=ei(this.base+this.current.fullPath);e?Gi(t):Zi(t)}},t.prototype.getCurrentLocation=function(){return pa(this.base)},t}(sa);function pa(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ei(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var da=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=pa(e);if(!/^\/#/.test(t))return window.location.replace(ei(e+"/#"+t)),!0}(this.base)||ha()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=Vi&&t;n&&this.listeners.push(Ii());var r=function(){var t=e.current;ha()&&e.transitionTo(fa(),(function(r){n&&Ri(e.router,r,t,!0),Vi||ba(r.fullPath)}))},o=Vi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ba(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;fa()!==t&&(e?ma(t):ba(t))},t.prototype.getCurrentLocation=function(){return fa()},t}(sa);function ha(){var e=fa();return"/"===e.charAt(0)||(ba("/"+e),!1)}function fa(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function va(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ma(e){Vi?Gi(va(e)):window.location.hash=e}function ba(e){Vi?Zi(va(e)):window.location.replace(va(e))}var ya=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ea(e,Wi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(sa),_a=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ei(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ci||(t="abstract"),this.mode=t,t){case"history":this.history=new ca(this,e.base);break;case"hash":this.history=new da(this,e.base,this.fallback);break;case"abstract":this.history=new ya(this,e.base);break;default:0}},ka={currentRoute:{configurable:!0}};_a.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ka.currentRoute.get=function(){return this.history&&this.history.current},_a.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof ca||n instanceof da){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;Vi&&o&&"fullPath"in e&&Ri(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},_a.prototype.beforeEach=function(e){return xa(this.beforeHooks,e)},_a.prototype.beforeResolve=function(e){return xa(this.resolveHooks,e)},_a.prototype.afterEach=function(e){return xa(this.afterHooks,e)},_a.prototype.onReady=function(e,t){this.history.onReady(e,t)},_a.prototype.onError=function(e){this.history.onError(e)},_a.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},_a.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},_a.prototype.go=function(e){this.history.go(e)},_a.prototype.back=function(){this.go(-1)},_a.prototype.forward=function(){this.go(1)},_a.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},_a.prototype.resolve=function(e,t,n){var r=yi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ei(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},_a.prototype.getRoutes=function(){return this.matcher.getRoutes()},_a.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},_a.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_a.prototype,ka);var wa=_a;function xa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}_a.install=function e(t){if(!e.installed||_i!==t){e.installed=!0,_i=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Xo),t.component("RouterLink",wi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},_a.version="3.6.5",_a.isNavigationFailure=ea,_a.NavigationFailureType=Wi,_a.START_LOCATION=Vo,Ci&&window.Vue&&window.Vue.use(_a);n(57);n(186);var Ca={GlobalLayout:()=>Promise.resolve().then(n.bind(null,0)),NotFound:()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,637)),Layout:()=>n.e(28).then(n.bind(null,525))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,526)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,528)),"v-127d50ca":()=>n.e(60).then(n.bind(null,529)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,531)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,532)),"v-f8267540":()=>n.e(65).then(n.bind(null,534)),"v-81da516a":()=>n.e(66).then(n.bind(null,535)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,537)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,538)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,540)),"v-0589512b":()=>n.e(74).then(n.bind(null,541)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,543)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,544)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,546)),"v-606149c6":()=>n.e(79).then(n.bind(null,547)),"v-66b4080b":()=>n.e(80).then(n.bind(null,549)),"v-9ff0f970":()=>n.e(83).then(n.bind(null,550)),"v-e4b2f83a":()=>n.e(84).then(n.bind(null,552)),"v-bf1b043c":()=>n.e(85).then(n.bind(null,553)),"v-39316e24":()=>n.e(86).then(n.bind(null,555)),"v-43a7e1f8":()=>n.e(87).then(n.bind(null,556)),"v-ff7fa248":()=>n.e(88).then(n.bind(null,558)),"v-4ac77b64":()=>n.e(89).then(n.bind(null,559)),"v-2758d5a0":()=>n.e(95).then(n.bind(null,561)),"v-6a4f1c80":()=>n.e(96).then(n.bind(null,562)),"v-7431790b":()=>n.e(97).then(n.bind(null,564)),"v-4b23576b":()=>n.e(98).then(n.bind(null,565)),"v-64792cc2":()=>n.e(100).then(n.bind(null,567)),"v-725866d9":()=>n.e(103).then(n.bind(null,568)),"v-230a9c4b":()=>n.e(105).then(n.bind(null,570)),"v-37169a5a":()=>n.e(109).then(n.bind(null,571)),"v-b8864dea":()=>n.e(110).then(n.bind(null,573)),"v-68a68850":()=>n.e(112).then(n.bind(null,574)),"v-768a4c68":()=>n.e(115).then(n.bind(null,576)),"v-780264ab":()=>n.e(117).then(n.bind(null,577)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,579)),"v-273748bf":()=>n.e(118).then(n.bind(null,580)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,583)),"v-414999cb":()=>n.e(124).then(n.bind(null,585)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,586)),"v-15244044":()=>n.e(127).then(n.bind(null,588)),"v-59c05d68":()=>n.e(129).then(n.bind(null,589)),"v-77046140":()=>n.e(130).then(n.bind(null,591)),"v-1916440a":()=>n.e(131).then(n.bind(null,592)),"v-25a92840":()=>n.e(132).then(n.bind(null,594)),"v-79b59060":()=>n.e(134).then(n.bind(null,595)),"v-aee924c0":()=>n.e(137).then(n.bind(null,597)),"v-5c94f8c0":()=>n.e(139).then(n.bind(null,598)),"v-3254b154":()=>n.e(140).then(n.bind(null,600)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,601)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,603)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,604)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,606)),"v-a3068aaa":()=>n.e(159).then(n.bind(null,607)),"v-26a4ecfe":()=>n.e(161).then(n.bind(null,609)),"v-071e366f":()=>n.e(162).then(n.bind(null,610)),"v-b9e98ed4":()=>n.e(163).then(n.bind(null,612)),"v-7df08ab4":()=>n.e(165).then(n.bind(null,613)),"v-0d07c820":()=>n.e(166).then(n.bind(null,615)),"v-75000dc1":()=>n.e(168).then(n.bind(null,616)),"v-0110ec16":()=>n.e(169).then(n.bind(null,618)),"v-79617eab":()=>n.e(170).then(n.bind(null,619)),"v-6d897402":()=>n.e(171).then(n.bind(null,621)),"v-37d38700":()=>n.e(172).then(n.bind(null,622)),"v-4da7b8c0":()=>n.e(173).then(n.bind(null,625)),"v-3bacdca0":()=>n.e(174).then(n.bind(null,626)),"v-c519eab8":()=>n.e(176).then(n.bind(null,628)),"v-1813a4ea":()=>n.e(177).then(n.bind(null,629)),"v-4cbea1b0":()=>n.e(179).then(n.bind(null,631)),"v-ec326d3c":()=>n.e(180).then(n.bind(null,632)),"v-dd4a8258":()=>n.e(181).then(n.bind(null,634)),"v-5c30b8f6":()=>n.e(183).then(n.bind(null,635)),"v-07cf9e68":()=>n.e(182).then(n.bind(null,506)),"v-a4aa1cc0":()=>n.e(185).then(n.bind(null,636)),"v-621d6140":()=>n.e(188).then(n.bind(null,633)),"v-f2b0d680":()=>n.e(189).then(n.bind(null,630)),"v-1731e69c":()=>n.e(190).then(n.bind(null,627)),"v-feb36d80":()=>n.e(192).then(n.bind(null,624)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,620)),"v-f385361c":()=>n.e(67).then(n.bind(null,617)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,614)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,611)),"v-27ea8460":()=>n.e(81).then(n.bind(null,608)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,605)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,602)),"v-6c706790":()=>n.e(91).then(n.bind(null,599)),"v-80c733e0":()=>n.e(92).then(n.bind(null,596)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,593)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,590)),"v-5d13e021":()=>n.e(99).then(n.bind(null,587)),"v-23577189":()=>n.e(101).then(n.bind(null,584)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,581)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,578)),"v-69e7af00":()=>n.e(114).then(n.bind(null,575)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,572)),"v-524c67f6":()=>n.e(128).then(n.bind(null,569)),"v-5d40e180":()=>n.e(133).then(n.bind(null,566)),"v-4251c2a0":()=>n.e(138).then(n.bind(null,563)),"v-63a66800":()=>n.e(143).then(n.bind(null,560)),"v-e9d91d38":()=>n.e(145).then(n.bind(null,557)),"v-83c64e00":()=>n.e(148).then(n.bind(null,554)),"v-1c0924cc":()=>n.e(150).then(n.bind(null,551)),"v-f6e780e8":()=>n.e(151).then(n.bind(null,548)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,545)),"v-69a7e640":()=>n.e(153).then(n.bind(null,509)),"v-1ed61780":()=>n.e(154).then(n.bind(null,539)),"v-08131412":()=>n.e(155).then(n.bind(null,536)),"v-c184b540":()=>n.e(157).then(n.bind(null,533)),"v-77c0d338":()=>n.e(158).then(n.bind(null,530)),"v-f8a9ba00":()=>n.e(160).then(n.bind(null,527)),"v-fc555fcc":()=>n.e(156).then(n.bind(null,524)),"v-611af834":()=>n.e(4).then(n.bind(null,505)),"v-55d7a0e0":()=>n.e(167).then(n.bind(null,504)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,503)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,502)),"v-dd937a80":()=>n.e(184).then(n.bind(null,501)),"v-29e61a5c":()=>n.e(187).then(n.bind(null,500)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,499)),"v-a8848234":()=>n.e(136).then(n.bind(null,498)),"v-568b0c40":()=>n.e(149).then(n.bind(null,497)),"v-91b151c0":()=>n.e(164).then(n.bind(null,496)),"v-2e2517eb":()=>n.e(107).then(n.bind(null,495)),"v-3cb8cfc8":()=>n.e(178).then(n.bind(null,494)),"v-26ead5fe":()=>n.e(186).then(n.bind(null,493)),"v-1d21baa0":()=>n.e(191).then(n.bind(null,492)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,491)),"v-56618330":()=>n.e(113).then(n.bind(null,490)),"v-f4d75640":()=>n.e(119).then(n.bind(null,489)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,488)),"v-7e931cdc":()=>n.e(135).then(n.bind(null,487)),"v-143a889c":()=>n.e(175).then(n.bind(null,486)),"v-17b4aa2d":()=>n.e(111).then(n.bind(null,485)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,484)),"v-9a504180":()=>n.e(126).then(n.bind(null,483)),"v-7cf7c3e0":()=>n.e(142).then(n.bind(null,482))};function Aa(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Ea=/-(\w)/g,Pa=Aa(e=>e.replace(Ea,(e,t)=>t?t.toUpperCase():"")),La=/\B([A-Z])/g,Oa=Aa(e=>e.replace(La,"-$1").toLowerCase()),Ta=Aa(e=>e.charAt(0).toUpperCase()+e.slice(1));function ja(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Ta(Pa(t))):e(Ta(t))||e(Oa(t))}const Da=Object.assign({},Ca,Sa),Ma=e=>Da[e],Ia=e=>Sa[e],Ra=e=>Ca[e],Fa=e=>jo.component(e);function qa(e){return ja(Ia,e)}function $a(e){return ja(Ra,e)}function za(e){return ja(Ma,e)}function Ba(e){return ja(Fa,e)}function Na(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!Ba(e)&&za(e)){const t=await za(e)();jo.component(e,t.default)}}))}var Ua=n(144),Ha=n.n(Ua),Va=n(145),Ga=n.n(Va);function Za(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function Wa(e=""){return e?``:""}function Ka(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function Ja(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Xa=[{created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${Ga()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=Wa(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=Ka(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return Ha()([{name:"description",content:this.$description}],e,this.siteMeta,Ja)},updateCanonicalLink(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Wa(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){Ka(null,this.currentMetaTags),Za()}}],Ya=n(0);!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ya.default,"mixins",Xa);const Qa=[{name:"v-27502720",path:"/DOCS_README.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27502720").then(n)}},{name:"v-5cedbb66",path:"/architecture/PROCESS.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5cedbb66").then(n)}},{name:"v-127d50ca",path:"/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("home","v-127d50ca").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-09de3eeb",path:"/architecture/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-09de3eeb").then(n)}},{path:"/architecture/index.html",redirect:"/architecture/"},{name:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7ccd641c").then(n)}},{name:"v-f8267540",path:"/architecture/adr-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8267540").then(n)}},{name:"v-81da516a",path:"/delegators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-81da516a").then(n)}},{path:"/delegators/index.html",redirect:"/delegators/"},{name:"v-4f6c3d8b",path:"/es/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4f6c3d8b").then(n)}},{path:"/es/index.html",redirect:"/es/"},{name:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a5d66b0").then(n)}},{name:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-19b6f5cc").then(n)}},{name:"v-0589512b",path:"/es/governance/community-pool-spend/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0589512b").then(n)}},{path:"/es/governance/community-pool-spend/index.html",redirect:"/es/governance/community-pool-spend/"},{name:"v-06e3b56e",path:"/getting-started/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-06e3b56e").then(n)}},{path:"/getting-started/index.html",redirect:"/getting-started/"},{name:"v-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").then(n)}},{name:"v-1c8e49b4",path:"/getting-started/quickstart.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c8e49b4").then(n)}},{name:"v-606149c6",path:"/getting-started/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-606149c6").then(n)}},{name:"v-66b4080b",path:"/governance/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-66b4080b").then(n)}},{path:"/governance/index.html",redirect:"/governance/"},{name:"v-9ff0f970",path:"/governance/process.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9ff0f970").then(n)}},{name:"v-e4b2f83a",path:"/governance/proposal-types/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e4b2f83a").then(n)}},{path:"/governance/proposal-types/index.html",redirect:"/governance/proposal-types/"},{name:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bf1b043c").then(n)}},{name:"v-39316e24",path:"/governance/proposal-types/param-change.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39316e24").then(n)}},{name:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-43a7e1f8").then(n)}},{name:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ff7fa248").then(n)}},{name:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4ac77b64").then(n)}},{name:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2758d5a0").then(n)}},{name:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").then(n)}},{name:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7431790b").then(n)}},{path:"/governance/proposals/2020-10-blocks-per-year/index.html",redirect:"/governance/proposals/2020-10-blocks-per-year/"},{name:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4b23576b").then(n)}},{path:"/governance/proposals/2020-11-inflation-rate-change/index.html",redirect:"/governance/proposals/2020-11-inflation-rate-change/"},{name:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-64792cc2").then(n)}},{path:"/governance/proposals/2021-01-delay-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{name:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-725866d9").then(n)}},{path:"/governance/proposals/2021-03-enable-ibc-transfers/index.html",redirect:"/governance/proposals/2021-03-enable-ibc-transfers/"},{name:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-230a9c4b").then(n)}},{path:"/governance/proposals/2021-04-lower-deposit-requirement/index.html",redirect:"/governance/proposals/2021-04-lower-deposit-requirement/"},{name:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37169a5a").then(n)}},{path:"/governance/proposals/2021-09-hub-ibc-router/index.html",redirect:"/governance/proposals/2021-09-hub-ibc-router/"},{name:"v-b8864dea",path:"/governance/proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b8864dea").then(n)}},{path:"/governance/proposals/index.html",redirect:"/governance/proposals/"},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-780264ab",path:"/hub-overview/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-780264ab").then(n)}},{path:"/hub-overview/index.html",redirect:"/hub-overview/"},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").then(n)}},{name:"v-273748bf",path:"/hub-tutorials/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-273748bf").then(n)}},{path:"/hub-tutorials/index.html",redirect:"/hub-tutorials/"},{name:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").then(n)}},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{name:"v-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-3169ddcb",path:"/ko/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3169ddcb").then(n)}},{path:"/ko/index.html",redirect:"/ko/"},{name:"v-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").then(n)}},{name:"v-79b59060",path:"/ko/launch/blog-2-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79b59060").then(n)}},{name:"v-aee924c0",path:"/ko/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-aee924c0").then(n)}},{name:"v-5c94f8c0",path:"/ko/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c94f8c0").then(n)}},{name:"v-3254b154",path:"/ko/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3254b154").then(n)}},{name:"v-bfd7ad74",path:"/ko/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bfd7ad74").then(n)}},{name:"v-7b5c086b",path:"/launch/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7b5c086b").then(n)}},{path:"/launch/index.html",redirect:"/launch/"},{name:"v-48a7c4e6",path:"/launch/blog-2-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-48a7c4e6").then(n)}},{name:"v-45ad53dd",path:"/migration/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-45ad53dd").then(n)}},{path:"/migration/index.html",redirect:"/migration/"},{name:"v-a3068aaa",path:"/modules/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a3068aaa").then(n)}},{path:"/modules/index.html",redirect:"/modules/"},{name:"v-26a4ecfe",path:"/proto/proto-docs.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26a4ecfe").then(n)}},{name:"v-071e366f",path:"/resources/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-071e366f").then(n)}},{path:"/resources/index.html",redirect:"/resources/"},{name:"v-b9e98ed4",path:"/resources/archives.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b9e98ed4").then(n)}},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").then(n)}},{name:"v-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").then(n)}},{name:"v-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{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-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-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-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-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-27ea8460",path:"/governance/best-practices.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27ea8460").then(n)}},{name:"v-fd3648c0",path:"/governance/formatting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fd3648c0").then(n)}},{name:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cd69f68").then(n)}},{name:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6c706790").then(n)}},{name:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-80c733e0").then(n)}},{name:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-16a2b68a").then(n)}},{name:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-405c4ac0").then(n)}},{name:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d13e021").then(n)}},{path:"/governance/proposals/2021-01-atom2021_marketing/index.html",redirect:"/governance/proposals/2021-01-atom2021_marketing/"},{name:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-23577189").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade-b/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade-b/"},{name:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-183e9cb3").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade/"},{name:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b74fdc6a").then(n)}},{path:"/governance/proposals/2021-04-advancing-ethermint/index.html",redirect:"/governance/proposals/2021-04-advancing-ethermint/"},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4aec61d8").then(n)}},{name:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-524c67f6").then(n)}},{name:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d40e180").then(n)}},{name:"v-4251c2a0",path:"/ko/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4251c2a0").then(n)}},{name:"v-63a66800",path:"/ko/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-63a66800").then(n)}},{name:"v-e9d91d38",path:"/launch/blog-1-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e9d91d38").then(n)}},{name:"v-83c64e00",path:"/migration/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-83c64e00").then(n)}},{name:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c0924cc").then(n)}},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{name:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f6e780e8").then(n)}},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{name:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").then(n)}},{name:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69a7e640").then(n)}},{name:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-08131412").then(n)}},{name:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c184b540").then(n)}},{name:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77c0d338").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2dfd010b").then(n)}},{path:"/governance/proposals/2021-07-atom-liquidity-incentives/index.html",redirect:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{name:"v-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-dd937a80",path:"/zh/launch/blog-1-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd937a80").then(n)}},{name:"v-29e61a5c",path:"/zh/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-29e61a5c").then(n)}},{name:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2acc3e00").then(n)}},{name:"v-a8848234",path:"/ko/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a8848234").then(n)}},{name:"v-568b0c40",path:"/migration/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-568b0c40").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{name:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2e2517eb").then(n)}},{path:"/governance/proposals/2021-05-gravity-bridge-deployment/index.html",redirect:"/governance/proposals/2021-05-gravity-bridge-deployment/"},{name:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3cb8cfc8").then(n)}},{name:"v-26ead5fe",path:"/zh/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26ead5fe").then(n)}},{name:"v-1d21baa0",path:"/zh/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1d21baa0").then(n)}},{name:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b5fc8180").then(n)}},{name:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-56618330").then(n)}},{name:"v-f4d75640",path:"/hub-tutorials/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f4d75640").then(n)}},{name:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").then(n)}},{name:"v-7e931cdc",path:"/ko/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7e931cdc").then(n)}},{name:"v-143a889c",path:"/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-143a889c").then(n)}},{name:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-17b4aa2d").then(n)}},{path:"/governance/proposals/previous-proposals/index.html",redirect:"/governance/proposals/previous-proposals/"},{name:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0ee0b71e").then(n)}},{name:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9a504180").then(n)}},{name:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cf7c3e0").then(n)}},{path:"*",component:Ya.default}],es={title:"Cosmos Hub",description:"",base:"/main/",headTags:[],pages:[{title:"Updating the docs",frontmatter:{description:"",parent:{order:!1}},regularPath:"/DOCS_README.html",relativePath:"DOCS_README.md",key:"v-27502720",path:"/DOCS_README.html",headers:[{level:2,title:"Internationalization",slug:"internationalization"},{level:2,title:"Docs Build Workflow",slug:"docs-build-workflow"},{level:3,title:"How It Works",slug:"how-it-works"},{level:2,title:"README",slug:"readme"},{level:2,title:"Links",slug:"links"},{level:3,title:"Relative",slug:"relative"},{level:3,title:"Absolute",slug:"absolute"},{level:3,title:"Full",slug:"full"},{level:2,title:"Building Locally",slug:"building-locally"},{level:2,title:"Search",slug:"search"},{level:3,title:"Update and Build the RPC docs",slug:"update-and-build-the-rpc-docs"}]},{title:"ADR Creation Process",frontmatter:{description:""},regularPath:"/architecture/PROCESS.html",relativePath:"architecture/PROCESS.md",key:"v-5cedbb66",path:"/architecture/PROCESS.html",headers:[{level:2,title:"ADR life cycle",slug:"adr-life-cycle"},{level:3,title:"ADR status",slug:"adr-status"},{level:2,title:"Language used in ADR",slug:"language-used-in-adr"}]},{title:"Contribute",frontmatter:{description:"",parent:{order:!1},layout:"home"},regularPath:"/",relativePath:"README.md",key:"v-127d50ca",path:"/",headers:[{level:2,title:"What is Gaia?",slug:"what-is-gaia"},{level:2,title:"Join the Cosmos Hub Mainnet",slug:"join-the-cosmos-hub-mainnet"},{level:2,title:"Join the Cosmos Hub Public Testnet",slug:"join-the-cosmos-hub-public-testnet"},{level:2,title:"Setup Your Own gaia Testnet",slug:"setup-your-own-gaia-testnet"},{level:2,title:"Additional Resources",slug:"additional-resources"}]},{title:"Architecture Decision Records (ADR)",frontmatter:{description:"",order:1,parent:{title:"Architecture Decision Records (ADR)",order:10}},regularPath:"/architecture/",relativePath:"architecture/README.md",key:"v-09de3eeb",path:"/architecture/",headers:[{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Creating new ADR",slug:"creating-new-adr"},{level:3,title:"Use RFC 2119 Keywords",slug:"use-rfc-2119-keywords"},{level:2,title:"ADR Table of Contents",slug:"adr-table-of-contents"},{level:3,title:"Accepted",slug:"accepted"},{level:3,title:"Proposed",slug:"proposed"},{level:3,title:"Draft",slug:"draft"},{level:3,title:"Rejected",slug:"rejected"}]},{title:"ADR 001: Interchain Accounts",frontmatter:{description:"",order:2},regularPath:"/architecture/adr-001-interchain-accounts.html",relativePath:"architecture/adr-001-interchain-accounts.md",key:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Desired Outcome",slug:"desired-outcome"},{level:2,title:"Consequences",slug:"consequences"},{level:2,title:"Technical Specification",slug:"technical-specification"},{level:2,title:"Development",slug:"development"},{level:2,title:"Governance [optional]",slug:"governance-optional"},{level:2,title:"Project Integrations [optional]",slug:"project-integrations-optional"},{level:2,title:"Support",slug:"support"},{level:2,title:"Additional Research & References",slug:"additional-research-references"}]},{title:"ADR {ADR-NUMBER}: {TITLE}",frontmatter:{description:"",order:!1},regularPath:"/architecture/adr-template.html",relativePath:"architecture/adr-template.md",key:"v-f8267540",path:"/architecture/adr-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:3,title:"Neutral",slug:"neutral"},{level:2,title:"References",slug:"references"}]},{title:"Delegators",frontmatter:{description:"",order:!1,parent:{title:"Delegators",order:4}},regularPath:"/delegators/",relativePath:"delegators/README.md",key:"v-81da516a",path:"/delegators/"},{title:"Versión",frontmatter:{description:""},regularPath:"/es/",relativePath:"es/README.md",key:"v-4f6c3d8b",path:"/es/",headers:[{level:2,title:"¿Qué es Gaia?",slug:"¿que-es-gaia"},{level:2,title:"Únase a la red principal del Hub de Cosmos",slug:"unase-a-la-red-principal-del-hub-de-cosmos"},{level:2,title:"Únase a la testnet pública del hub de Cosmos",slug:"unase-a-la-testnet-publica-del-hub-de-cosmos"},{level:2,title:"Prepare su propia Testnet de gaia",slug:"prepare-su-propia-testnet-de-gaia"},{level:2,title:"Recursos adicionales",slug:"recursos-adicionales"}]},{title:"Instalación de Gaia",frontmatter:{description:"",order:2},regularPath:"/es/gaia-tutorials/installation.html",relativePath:"es/gaia-tutorials/installation.md",key:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",headers:[{level:2,title:"Instalación de Go",slug:"instalacion-de-go"},{level:2,title:"Instalación de los binarios",slug:"instalacion-de-los-binarios"},{level:3,title:"Tags para la construcción",slug:"tags-para-la-construccion"},{level:3,title:"Instalación de los binarios via snap (Linux solamente)",slug:"instalacion-de-los-binarios-via-snap-linux-solamente"},{level:2,title:"Workflow para el desarrollador",slug:"workflow-para-el-desarrollador"},{level:2,title:"Siguiente",slug:"siguiente"}]},{title:"¿Qué es Gaia?",frontmatter:{description:""},regularPath:"/es/gaia-tutorials/what-is-gaia.html",relativePath:"es/gaia-tutorials/what-is-gaia.md",key:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html"},{title:"Cosmos Hub 3 y la Community Pool",frontmatter:{description:""},regularPath:"/es/governance/community-pool-spend/",relativePath:"es/governance/community-pool-spend/README.md",key:"v-0589512b",path:"/es/governance/community-pool-spend/",headers:[{level:2,title:"¿Por qué crear una propuesta para utilizar fondos de la Community Pool?",slug:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"},{level:2,title:"Creación de una propuesta de gastos a la comunidad",slug:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"},{level:2,title:"Sobre la Community Pool",slug:"sobre-la-community-pool"},{level:3,title:"¿Cómo está financiada la Community Pool?",slug:"¿como-esta-financiada-la-community-pool"},{level:3,title:"¿Cómo puede cambiar la financiación de la Community Pool?",slug:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"},{level:3,title:"¿Cuál es el saldo de la Community Pool?",slug:"¿cual-es-el-saldo-de-la-community-pool"},{level:3,title:"¿Cómo se pueden gastar los fondos de la Community Pool?",slug:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se deberían gastar los fondos de la Community Pool?",slug:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?",slug:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}]},{title:"Getting Started",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/getting-started/",relativePath:"getting-started/README.md",key:"v-06e3b56e",path:"/getting-started/"},{title:"Installation",frontmatter:{description:"",order:2,title:"Installing Gaia"},regularPath:"/getting-started/installation.html",relativePath:"getting-started/installation.md",key:"v-50a2c1ac",path:"/getting-started/installation.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Build Tools",slug:"build-tools"},{level:2,title:"Install Go",slug:"install-go"},{level:2,title:"Install the binaries",slug:"install-the-binaries"},{level:3,title:"Build Tags",slug:"build-tags"},{level:2,title:"Work with a Cosmos SDK Clone",slug:"work-with-a-cosmos-sdk-clone"},{level:2,title:"Next",slug:"next"}]},{title:"Join Mainnet Quick Start",frontmatter:{description:"",order:3,title:"Quick Start - Join Mainnet"},regularPath:"/getting-started/quickstart.html",relativePath:"getting-started/quickstart.md",key:"v-1c8e49b4",path:"/getting-started/quickstart.html",headers:[{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Sync Options",slug:"sync-options"}]},{title:"What is Gaia?",frontmatter:{description:"",order:1,title:"What is Gaia?"},regularPath:"/getting-started/what-is-gaia.html",relativePath:"getting-started/what-is-gaia.md",key:"v-606149c6",path:"/getting-started/what-is-gaia.html"},{title:"Governance Overview",frontmatter:{description:"",order:1,parent:{title:"Governance",order:6}},regularPath:"/governance/",relativePath:"governance/README.md",key:"v-66b4080b",path:"/governance/",headers:[{level:2,title:"Community",slug:"community"}]},{title:"On-Chain Proposal Process",frontmatter:{description:"",order:2},regularPath:"/governance/process.html",relativePath:"governance/process.md",key:"v-9ff0f970",path:"/governance/process.html",headers:[{level:2,title:"Governance Parameters",slug:"governance-parameters"},{level:2,title:"1. Deposit Period",slug:"_1-deposit-period"},{level:3,title:"Deposits",slug:"deposits"},{level:3,title:"Burned deposits",slug:"burned-deposits"},{level:2,title:"2. Voting Period",slug:"_2-voting-period"},{level:3,title:"What do the voting options mean?",slug:"what-do-the-voting-options-mean"},{level:3,title:"What determines whether or not a governance proposal passes?",slug:"what-determines-whether-or-not-a-governance-proposal-passes"},{level:3,title:"How is quorum determined?",slug:"how-is-quorum-determined"},{level:3,title:"How is voting tallied?",slug:"how-is-voting-tallied"}]},{title:"Proposal Types",frontmatter:{description:"",order:1,parent:{order:6}},regularPath:"/governance/proposal-types/",relativePath:"governance/proposal-types/README.md",key:"v-e4b2f83a",path:"/governance/proposal-types/",headers:[{level:2,title:"Drafting a Proposal",slug:"drafting-a-proposal"}]},{title:"Community Pool Spend",frontmatter:{description:"",order:3,parent:{order:1}},regularPath:"/governance/proposal-types/community-pool-spend.html",relativePath:"governance/proposal-types/community-pool-spend.md",key:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",headers:[{level:2,title:"Learn About the Community Pool",slug:"learn-about-the-community-pool"},{level:3,title:"How is the Community Pool funded?",slug:"how-is-the-community-pool-funded"},{level:3,title:"How can funding for the Community Pool change?",slug:"how-can-funding-for-the-community-pool-change"},{level:3,title:"How much money is in the Community Pool?",slug:"how-much-money-is-in-the-community-pool"},{level:3,title:"How can funds from the Community Pool be spent?",slug:"how-can-funds-from-the-community-pool-be-spent"},{level:3,title:"How should funds from the Community Pool be spent?",slug:"how-should-funds-from-the-community-pool-be-spent"},{level:3,title:"How are funds disbursed after a community-spend proposal is passed?",slug:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"},{level:2,title:"Why create a proposal to use Community Pool funds?",slug:"why-create-a-proposal-to-use-community-pool-funds"}]},{title:"Parameter Change",frontmatter:{description:"",order:4,parent:{order:1}},regularPath:"/governance/proposal-types/param-change.html",relativePath:"governance/proposal-types/param-change.md",key:"v-39316e24",path:"/governance/proposal-types/param-change.html",headers:[{level:2,title:"What parameters can be changed?",slug:"what-parameters-can-be-changed"},{level:2,title:"What are the current parameter values?",slug:"what-are-the-current-parameter-values"},{level:2,title:"Why create a parameter change proposal?",slug:"why-create-a-parameter-change-proposal"},{level:2,title:"Risks in parameter change proposals",slug:"risks-in-parameter-change-proposals"},{level:2,title:"Credits",slug:"credits"}]},{title:"`auth` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Auth.html",relativePath:"governance/proposal-types/params-change/Auth.md",key:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MaxMemoCharacters",slug:"maxmemocharacters"},{level:3,title:"TxSigLimit",slug:"txsiglimit"},{level:3,title:"TxSizeCostPerByte",slug:"txsizecostperbyte"},{level:3,title:"SigVerifyCostED25519",slug:"sigverifycosted25519"},{level:3,title:"SigVerifyCostSecp256k1",slug:"sigverifycostsecp256k1"}]},{title:"`bank` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Bank.html",relativePath:"governance/proposal-types/params-change/Bank.md",key:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SendEnabled",slug:"sendenabled"}]},{title:"`crisis` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Crisis.html",relativePath:"governance/proposal-types/params-change/Crisis.md",key:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"ConstantFee",slug:"constantfee"}]},{title:"Index of Governable Parameters",frontmatter:{description:"",order:2},regularPath:"/governance/proposal-types/params-change/param-index.html",relativePath:"governance/proposal-types/params-change/param-index.md",key:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",headers:[{level:2,title:"Querying on-chain parameters",slug:"querying-on-chain-parameters"},{level:2,title:"Current subspaces, keys, and values",slug:"current-subspaces-keys-and-values"}]},{title:"Text (Signaling)",frontmatter:{description:"",order:2,parent:{order:1}},regularPath:"/governance/proposal-types/text-prop.html",relativePath:"governance/proposal-types/text-prop.md",key:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",headers:[{level:2,title:"What are signaling proposals currently used for?",slug:"what-are-signaling-proposals-currently-used-for"},{level:3,title:"A note on historical text proposals",slug:"a-note-on-historical-text-proposals"},{level:2,title:"Why make a signaling proposal?",slug:"why-make-a-signaling-proposal"},{level:2,title:"What happens when a signaling proposal passes?",slug:"what-happens-when-a-signaling-proposal-passes"}]},{title:"Cosmos Hub Inflation variable modification: Blocks Per Year",frontmatter:{description:""},regularPath:"/governance/proposals/2020-10-blocks-per-year/",relativePath:"governance/proposals/2020-10-blocks-per-year/README.md",key:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/"},{frontmatter:{description:""},regularPath:"/governance/proposals/2020-11-inflation-rate-change/",relativePath:"governance/proposals/2020-11-inflation-rate-change/README.md",key:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/"},{title:"Delay of Hub Stargate Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-delay-stargate-upgrade/",relativePath:"governance/proposals/2021-01-delay-stargate-upgrade/README.md",key:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{title:"Enable IBC Transfers",frontmatter:{description:""},regularPath:"/governance/proposals/2021-03-enable-ibc-transfers/",relativePath:"governance/proposals/2021-03-enable-ibc-transfers/README.md",key:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",headers:[{level:2,title:"Security Model",slug:"security-model"},{level:2,title:"IBC",slug:"ibc"},{level:2,title:"Incentive Security Extensions",slug:"incentive-security-extensions"}]},{title:"Parameter change: lower minimum proposal deposit amount",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-lower-deposit-requirement/",relativePath:"governance/proposals/2021-04-lower-deposit-requirement/README.md",key:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Objectives",slug:"objectives"},{level:2,title:"Background",slug:"background"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Proposed Parameter Change",slug:"proposed-parameter-change"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Alternatives",slug:"alternatives"},{level:2,title:"Governance Votes",slug:"governance-votes"}]},{title:"⚛️ Make the Cosmos Hub the IBC Router ⚛️",frontmatter:{description:""},regularPath:"/governance/proposals/2021-09-hub-ibc-router/",relativePath:"governance/proposals/2021-09-hub-ibc-router/README.md",key:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/"},{title:"Proposals",frontmatter:{description:"",order:1,parent:{order:8}},regularPath:"/governance/proposals/",relativePath:"governance/proposals/README.md",key:"v-b8864dea",path:"/governance/proposals/"},{title:"[Proposal][Draft] Proposal Title",frontmatter:{description:""},regularPath:"/governance/proposals/proposal-template.html",relativePath:"governance/proposals/proposal-template.md",key:"v-68a68850",path:"/governance/proposals/proposal-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Authors and Credit",slug:"authors-and-credit"},{level:2,title:"Status",slug:"status"},{level:2,title:"Proposal",slug:"proposal"},{level:2,title:"Context",slug:"context"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Conclusion",slug:"conclusion"},{level:2,title:"References",slug:"references"}]},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{title:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{title:"Introduction",frontmatter:{description:"",order:1,title:"Introduction"},regularPath:"/hub-overview/overview.html",relativePath:"hub-overview/overview.md",key:"v-ac3ab000",path:"/hub-overview/overview.html",headers:[{level:3,title:"v11 Upgrade",slug:"v11-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{title:"Upgrade Your Node",frontmatter:{description:"",order:4,title:"Upgrading Your Node"},regularPath:"/hub-tutorials/upgrade-node.html",relativePath:"hub-tutorials/upgrade-node.md",key:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",headers:[{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Preparing an Upgrade",slug:"preparing-an-upgrade"},{level:2,title:"Manual Software Upgrade",slug:"manual-software-upgrade"},{level:2,title:"Upgrade Genesis File",slug:"upgrade-genesis-file"},{level:3,title:"Fetching from a Trusted Source",slug:"fetching-from-a-trusted-source"},{level:3,title:"Exporting State to a New Genesis Locally",slug:"exporting-state-to-a-new-genesis-locally"},{level:2,title:"Reset Data",slug:"reset-data"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{title:"Gaia Documentation",frontmatter:{description:""},regularPath:"/ko/",relativePath:"ko/README.md",key:"v-3169ddcb",path:"/ko/",headers:[{level:2,title:"코스모스 퍼블릭 테스트넷에 참가하세요",slug:"코스모스-퍼블릭-테스트넷에-참가하세요"},{level:2,title:"자체 gaia 테스트넷 세팅하기",slug:"자체-gaia-테스트넷-세팅하기"},{level:2,title:"추가 리소스",slug:"추가-리소스"}]},{frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/installation.html",relativePath:"ko/gaia-tutorials/installation.md",key:"v-15244044",path:"/ko/gaia-tutorials/installation.html",headers:[{level:2,title:"Gaia 설치하기",slug:"gaia-설치하기"},{level:3,title:"Go 설치하기",slug:"go-설치하기"},{level:3,title:"바이너리 설치하기",slug:"바이너리-설치하기"},{level:3,title:"빌드 태그",slug:"빌드-태그"},{level:3,title:"snap을 사용해 바이너리 설치하기 (리눅스에만 해당)",slug:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"},{level:2,title:"개발자 워크플로우",slug:"개발자-워크플로우"},{level:3,title:"다음 절차",slug:"다음-절차"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{title:"글을 마무리 하며",frontmatter:{description:""},regularPath:"/ko/launch/blog-2-kr.html",relativePath:"ko/launch/blog-2-kr.md",key:"v-79b59060",path:"/ko/launch/blog-2-kr.html",headers:[{level:2,title:"메인넷 후 개발 로드맵과 유저들을 위한 필수 정보",slug:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}]},{title:"HD 지갑",frontmatter:{description:""},regularPath:"/ko/resources/hd-wallets.html",relativePath:"ko/resources/hd-wallets.md",key:"v-aee924c0",path:"/ko/resources/hd-wallets.html"},{title:"노드 업그레이드 하기",frontmatter:{description:""},regularPath:"/ko/upgrade-node.html",relativePath:"ko/upgrade-node.md",key:"v-5c94f8c0",path:"/ko/upgrade-node.html",headers:[{level:2,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스 파일 업그레이드하기",slug:"제네시스-파일-업그레이드하기"},{level:3,title:"신뢰하는 소스에서 받기",slug:"신뢰하는-소스에서-받기"},{level:3,title:"로컬 환경에서 새로운 제네시스 내보내기",slug:"로컬-환경에서-새로운-제네시스-내보내기"},{level:2,title:"데이터 리셋하기",slug:"데이터-리셋하기"},{level:2,title:"노드 다시 시작하기",slug:"노드-다시-시작하기"}]},{title:"검증인(밸리데이터) 개요",frontmatter:{description:""},regularPath:"/ko/validators/overview.html",relativePath:"ko/validators/overview.md",key:"v-3254b154",path:"/ko/validators/overview.html",headers:[{level:2,title:"소개",slug:"소개"},{level:2,title:"하드웨어",slug:"하드웨어"},{level:2,title:"웹사이트 세팅하기",slug:"웹사이트-세팅하기"},{level:2,title:"법적 검토",slug:"법적-검토"},{level:2,title:"검증인 커뮤니티",slug:"검증인-커뮤니티"}]},{frontmatter:{description:""},regularPath:"/ko/validators/security.html",relativePath:"ko/validators/security.md",key:"v-bfd7ad74",path:"/ko/validators/security.html",headers:[{level:2,title:"검증인 보안",slug:"검증인-보안"},{level:2,title:"키 관리 - HSM",slug:"키-관리-hsm"},{level:2,title:"센트리노드 (DDOS 방어)",slug:"센트리노드-ddos-방어"},{level:2,title:"환경 변수",slug:"환경-변수"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/launch/",relativePath:"launch/README.md",key:"v-7b5c086b",path:"/launch/"},{title:"In Closing",frontmatter:{description:""},regularPath:"/launch/blog-2-en.html",relativePath:"launch/blog-2-en.md",key:"v-48a7c4e6",path:"/launch/blog-2-en.html",headers:[{level:2,title:"Post-Mainnet Development Roadmap & Expectations for Users",slug:"post-mainnet-development-roadmap-expectations-for-users"},{level:2,title:"State Reversions and Mainnet launch",slug:"state-reversions-and-mainnet-launch"}]},{title:"Migration Instructions",frontmatter:{description:"",order:!1,parent:{title:"Migration Instructions",order:9}},regularPath:"/migration/",relativePath:"migration/README.md",key:"v-45ad53dd",path:"/migration/"},{title:"Gaia Modules",frontmatter:{description:""},regularPath:"/modules/",relativePath:"modules/README.md",key:"v-a3068aaa",path:"/modules/",headers:[{level:2,title:"New Modules in Rho V8",slug:"new-modules-in-rho-v8"}]},{title:"Protobuf Documentation",frontmatter:{description:""},regularPath:"/proto/proto-docs.html",relativePath:"proto/proto-docs.md",key:"v-26a4ecfe",path:"/proto/proto-docs.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"gaia/globalfee/v1beta1/query.proto",slug:"gaia-globalfee-v1beta1-query-proto"},{level:3,title:"QueryParamsRequest",slug:"queryparamsrequest"},{level:3,title:"QueryParamsResponse",slug:"queryparamsresponse"},{level:3,title:"Query",slug:"query"},{level:2,title:"gaia/globalfee/v1beta1/genesis.proto",slug:"gaia-globalfee-v1beta1-genesis-proto"},{level:3,title:"GenesisState",slug:"genesisstate"},{level:3,title:"Params",slug:"params"},{level:2,title:"Scalar Value Types",slug:"scalar-value-types"}]},{title:"Resources",frontmatter:{description:"",order:!1,parent:{title:"Resources",order:8}},regularPath:"/resources/",relativePath:"resources/README.md",key:"v-071e366f",path:"/resources/"},{title:"Cosmos Hub Archives",frontmatter:{description:"",order:2,title:"Cosmos Hub Archives"},regularPath:"/resources/archives.html",relativePath:"resources/archives.md",key:"v-b9e98ed4",path:"/resources/archives.html",headers:[{level:3,title:"Big Dipper",slug:"big-dipper"}]},{title:"HD Wallets",frontmatter:{description:"",order:3,title:"HD Wallets"},regularPath:"/resources/hd-wallets.html",relativePath:"resources/hd-wallets.md",key:"v-7df08ab4",path:"/resources/hd-wallets.html"},{title:"Build Gaia Deterministically",frontmatter:{description:"",order:5,title:"Building Gaia Deterministically"},regularPath:"/resources/reproducible-builds.html",relativePath:"resources/reproducible-builds.md",key:"v-0d07c820",path:"/resources/reproducible-builds.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Build",slug:"build"}]},{title:"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:"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:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{title:"KMS - Key Management System",frontmatter:{description:"",order:5},regularPath:"/validators/kms/kms.html",relativePath:"validators/kms/kms.md",key:"v-6d897402",path:"/validators/kms/kms.html",headers:[{level:2,title:"Building",slug:"building"},{level:2,title:"Configuration",slug:"configuration"},{level:3,title:"Using a YubiHSM",slug:"using-a-yubihsm"},{level:3,title:"Using a Ledger device running the Tendermint app",slug:"using-a-ledger-device-running-the-tendermint-app"}]},{title:"Setting up Tendermint KMS + Ledger",frontmatter:{description:"",order:6},regularPath:"/validators/kms/kms_ledger.html",relativePath:"validators/kms/kms_ledger.md",key:"v-37d38700",path:"/validators/kms/kms_ledger.html",headers:[{level:2,title:"Tendermint Validator app (for Ledger devices)",slug:"tendermint-validator-app-for-ledger-devices"},{level:2,title:"KMS configuration",slug:"kms-configuration"},{level:3,title:"Config file",slug:"config-file"},{level:3,title:"Generate secret key",slug:"generate-secret-key"},{level:3,title:"Retrieve validator key",slug:"retrieve-validator-key"},{level:2,title:"Gaia configuration",slug:"gaia-configuration"}]},{title:"Validators Overview",frontmatter:{description:"",order:1,title:"Overview"},regularPath:"/validators/overview.html",relativePath:"validators/overview.md",key:"v-4da7b8c0",path:"/validators/overview.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"Create a Validator Website",slug:"create-a-validator-website"},{level:2,title:"Seek Legal Advice",slug:"seek-legal-advice"},{level:2,title:"Community",slug:"community"}]},{title:"Validator Security",frontmatter:{description:"",order:4,title:"Validator Security"},regularPath:"/validators/security.html",relativePath:"validators/security.md",key:"v-3bacdca0",path:"/validators/security.html",headers:[{level:2,title:"Key Management - HSM",slug:"key-management-hsm"},{level:2,title:"Sentry Nodes (DDOS Protection)",slug:"sentry-nodes-ddos-protection"},{level:2,title:"Environment Variables",slug:"environment-variables"}]},{title:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"加入公共测试网",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:"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:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"Off-Chain Proposal Process",frontmatter:{description:"",order:3},regularPath:"/governance/best-practices.html",relativePath:"governance/best-practices.md",key:"v-27ea8460",path:"/governance/best-practices.html",headers:[{level:2,title:"Engage directly with the voting community and seek feedback",slug:"engage-directly-with-the-voting-community-and-seek-feedback"},{level:2,title:"Stage 1: Your Idea",slug:"stage-1-your-idea"},{level:3,title:"Not yet confident about your idea?",slug:"not-yet-confident-about-your-idea"},{level:3,title:"Confident with your idea?",slug:"confident-with-your-idea"},{level:3,title:"Are you ready to draft a governance proposal?",slug:"are-you-ready-to-draft-a-governance-proposal"},{level:2,title:"Stage 2: Your Draft Proposal",slug:"stage-2-your-draft-proposal"},{level:3,title:"Proposal Elements",slug:"proposal-elements"},{level:3,title:"Begin with a well-considered draft proposal",slug:"begin-with-a-well-considered-draft-proposal"},{level:3,title:"Engage the community with your draft proposal",slug:"engage-the-community-with-your-draft-proposal"},{level:3,title:"Submit your proposal to the testnet",slug:"submit-your-proposal-to-the-testnet"},{level:2,title:"Stage 3: Your On-Chain Proposal",slug:"stage-3-your-on-chain-proposal"},{level:3,title:"The Deposit Period",slug:"the-deposit-period"},{level:3,title:"The Voting Period",slug:"the-voting-period"}]},{title:"Formatting a Proposal",frontmatter:{description:"",order:4},regularPath:"/governance/formatting.html",relativePath:"governance/formatting.md",key:"v-fd3648c0",path:"/governance/formatting.html",headers:[{level:2,title:"Text",slug:"text"},{level:3,title:"Real example",slug:"real-example"},{level:2,title:"Community Pool Spend",slug:"community-pool-spend"},{level:3,title:"Real example",slug:"real-example-2"},{level:2,title:"Param Change",slug:"param-change"},{level:3,title:"Real example",slug:"real-example-3"}]},{title:"`distribution` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Distribution.html",relativePath:"governance/proposal-types/params-change/Distribution.md",key:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"communitytax",slug:"communitytax"},{level:3,title:"baseproposerreward",slug:"baseproposerreward"},{level:3,title:"bonusproposerreward",slug:"bonusproposerreward"},{level:3,title:"withdrawaddrenabled",slug:"withdrawaddrenabled"},{level:2,title:"Known Bug",slug:"known-bug"}]},{title:"`gov` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Governance.html",relativePath:"governance/proposal-types/params-change/Governance.md",key:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"depositparams",slug:"depositparams"},{level:3,title:"votingparams",slug:"votingparams"},{level:3,title:"tallyparams",slug:"tallyparams"}]},{title:"`mint` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Mint.html",relativePath:"governance/proposal-types/params-change/Mint.md",key:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MintDenom",slug:"mintdenom"},{level:3,title:"InflationRateChange",slug:"inflationratechange"},{level:3,title:"InflationMax",slug:"inflationmax"},{level:3,title:"InflationMin",slug:"inflationmin"},{level:3,title:"GoalBonded",slug:"goalbonded"},{level:3,title:"BlocksPerYear",slug:"blocksperyear"}]},{title:"`slashing` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Slashing.html",relativePath:"governance/proposal-types/params-change/Slashing.md",key:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SignedBlocksWindow",slug:"signedblockswindow"},{level:3,title:"MinSignedPerWindow",slug:"minsignedperwindow"},{level:3,title:"DowntimeJailDuration",slug:"downtimejailduration"},{level:3,title:"SlashFractionDoubleSign",slug:"slashfractiondoublesign"},{level:3,title:"SlashFractionDowntime",slug:"slashfractiondowntime"},{level:3,title:"MaxEvidenceAge",slug:"maxevidenceage"}]},{title:"`staking` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Staking.html",relativePath:"governance/proposal-types/params-change/Staking.md",key:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"UnbondingTime",slug:"unbondingtime"},{level:2,title:"MaxValidators",slug:"maxvalidators"},{level:3,title:"KeyMaxEntries",slug:"keymaxentries"},{level:3,title:"Notes",slug:"notes-3"},{level:3,title:"BondDenom",slug:"bonddenom"},{level:3,title:"HistoricalEntries",slug:"historicalentries"}]},{title:"Proposal 34: Luna Mission - Funding $ATOM",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-atom2021_marketing/",relativePath:"governance/proposals/2021-01-atom2021_marketing/README.md",key:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/"},{title:"Stargate Upgrade- Second time is a charm",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade-b/",relativePath:"governance/proposals/2021-01-stargate-upgrade-b/README.md",key:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:3,title:"Aborting of Proposal 35",slug:"aborting-of-proposal-35"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade/",relativePath:"governance/proposals/2021-01-stargate-upgrade/README.md",key:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-advancing-ethermint/",relativePath:"governance/proposals/2021-04-advancing-ethermint/README.md",key:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",headers:[{level:3,title:"Author",slug:"author"},{level:2,title:"Summary",slug:"summary"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Multisig and release of funds",slug:"multisig-and-release-of-funds"},{level:2,title:"Product commitment",slug:"product-commitment"},{level:3,title:"Hard Commitments",slug:"hard-commitments"},{level:2,title:"Soft Commitments",slug:"soft-commitments"},{level:2,title:"Conclusion",slug:"conclusion"}]},{title:"Submitting a Proposal",frontmatter:{description:"",order:5},regularPath:"/governance/submitting.html",relativePath:"governance/submitting.md",key:"v-69e7af00",path:"/governance/submitting.html",headers:[{level:2,title:"Hosting supplementary materials",slug:"hosting-supplementary-materials"},{level:2,title:"Formatting the JSON file for the governance proposal",slug:"formatting-the-json-file-for-the-governance-proposal"},{level:2,title:"Sending the transaction that submits your governance proposal",slug:"sending-the-transaction-that-submits-your-governance-proposal"},{level:3,title:"Walkthrough example",slug:"walkthrough-example"},{level:3,title:"Verifying your transaction",slug:"verifying-your-transaction"},{level:3,title:"Troubleshooting a failed transaction",slug:"troubleshooting-a-failed-transaction"},{level:3,title:"Depositing funds after a proposal has been submitted",slug:"depositing-funds-after-a-proposal-has-been-submitted"},{level:3,title:"Submitting your proposal to the testnet",slug:"submitting-your-proposal-to-the-testnet"}]},{title:"Join the Cosmos Hub Public Testnet",frontmatter:{description:"",order:3,title:"Joining Testnet"},regularPath:"/hub-tutorials/join-testnet.html",relativePath:"hub-tutorials/join-testnet.md",key:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",headers:[{level:2,title:"Background",slug:"background"},{level:3,title:"Version History",slug:"version-history"},{level:2,title:"How to Join",slug:"how-to-join"},{level:2,title:"Sync Options",slug:"sync-options"},{level:2,title:"Step-by-Step Setup",slug:"step-by-step-setup"},{level:3,title:"Build Tools",slug:"build-tools"},{level:3,title:"Installation & Configuration",slug:"installation-configuration"},{level:3,title:"Cosmovisor Setup (Optional)",slug:"cosmovisor-setup-optional"},{level:3,title:"Create Service File",slug:"create-service-file"},{level:3,title:"Start the Service",slug:"start-the-service"},{level:2,title:"Create a Validator (Optional)",slug:"create-a-validator-optional"},{level:2,title:"Upgrading Your Node",slug:"upgrading-your-node"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-mainnet.html",relativePath:"ko/gaia-tutorials/join-mainnet.md",key:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:2,title:"최소 가스 가격(minimum-gas-prices) 설정하기",slug:"최소-가스-가격-minimum-gas-prices-설정하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"메인넷 검증하기",slug:"메인넷-검증하기"},{level:2,title:"검증인 노드로 업그레이드 하기",slug:"검증인-노드로-업그레이드-하기"}]},{title:"코스모스 허브 메인넷의 시작",frontmatter:{description:""},regularPath:"/ko/launch/blog-1-kr.html",relativePath:"ko/launch/blog-1-kr.md",key:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",headers:[{level:2,title:"런칭을 위해 남은 마일스톤",slug:"런칭을-위해-남은-마일스톤"},{level:3,title:"5: 코스모스 SDK 보안 감사 ✔",slug:"_5-코스모스-sdk-보안-감사-✔"},{level:3,title:"4: 코스모스 SDK 기능 동결 (feature freeze)",slug:"_4-코스모스-sdk-기능-동결-feature-freeze"},{level:3,title:"3: 게임 오브 스테이크 완료",slug:"_3-게임-오브-스테이크-완료"},{level:3,title:"2: 제네시스 트랜잭션 모으기",slug:"_2-제네시스-트랜잭션-모으기"},{level:3,title:"1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥",slug:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"},{level:2,title:"공식 코스모스 소통 채널",slug:"공식-코스모스-소통-채널"},{level:2,title:"메인넷 런칭때 안전할 수 있는 방법은?",slug:"메인넷-런칭때-안전할-수-있는-방법은"},{level:2,title:"다음은 코스모스 메인넷 런칭 준비 유의사항입니다",slug:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}]},{title:"지원",frontmatter:{description:""},regularPath:"/ko/resources/ledger.html",relativePath:"ko/resources/ledger.md",key:"v-4251c2a0",path:"/ko/resources/ledger.html",headers:[{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"시작하기 전에",slug:"시작하기-전에"},{level:3,title:"렛저 키 추가하기",slug:"렛저-키-추가하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기"},{level:3,title:"풀노드에 연결하기",slug:"풀노드에-연결하기"},{level:3,title:"트랜잭션 서명하기",slug:"트랜잭션-서명하기"},{level:3,title:"자산 받기",slug:"자산-받기"},{level:3,title:"추가 참고 문서",slug:"추가-참고-문서"},{level:3,title:"기기 연결하기",slug:"기기-연결하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기-2"}]},{title:"퍼블릭 테스트넷에서 밸리데이터 운영하기",frontmatter:{description:""},regularPath:"/ko/validators/validator-setup.html",relativePath:"ko/validators/validator-setup.md",key:"v-63a66800",path:"/ko/validators/validator-setup.html",headers:[{level:2,title:"밸리데이터란 무엇인가?",slug:"밸리데이터란-무엇인가"},{level:2,title:"밸리데이터 생성하기",slug:"밸리데이터-생성하기"},{level:2,title:"밸리데이터로써 제네시스 참가하기",slug:"밸리데이터로써-제네시스-참가하기"},{level:3,title:"제네시스 파일 복사, 제네시스 트랜잭션 처리하기",slug:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"},{level:2,title:"검증인 설명 수정하기",slug:"검증인-설명-수정하기"},{level:2,title:"밸리데이터 설명 확인하기",slug:"밸리데이터-설명-확인하기"},{level:2,title:"밸리데이터 서명 정보 추적하기",slug:"밸리데이터-서명-정보-추적하기"},{level:2,title:"밸리데이터 석방(Unjail)하기",slug:"밸리데이터-석방-unjail-하기"},{level:2,title:"밸리데이터 작동상태 확인",slug:"밸리데이터-작동상태-확인"},{level:2,title:"흔히 발생하는 문제들",slug:"흔히-발생하는-문제들"},{level:3,title:"문제 #1: 내 검증인의 보팅 파워가 0 입니다",slug:"문제-1-내-검증인의-보팅-파워가-0-입니다"},{level:3,title:"문제 #2: too many open files때문에 gaiad가 강제 종료됩니다",slug:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}]},{title:"Cosmos Hub to Launch Mainnet",frontmatter:{description:""},regularPath:"/launch/blog-1-en.html",relativePath:"launch/blog-1-en.md",key:"v-e9d91d38",path:"/launch/blog-1-en.html",headers:[{level:2,title:"Pre-launch Dependencies & How to Safely Claim Your Atoms",slug:"pre-launch-dependencies-how-to-safely-claim-your-atoms"},{level:2,title:"Remaining Milestones for Launch",slug:"remaining-milestones-for-launch"},{level:3,title:"5 Cosmos-SDK Security Audits ✔",slug:"_5-cosmos-sdk-security-audits-✔"},{level:3,title:"4 Cosmos SDK Feature Freeze",slug:"_4-cosmos-sdk-feature-freeze"},{level:3,title:"3 Game of Stakes Completed",slug:"_3-game-of-stakes-completed"},{level:3,title:"2 Genesis Transactions Collected",slug:"_2-genesis-transactions-collected"},{level:3,title:"1 Cosmos Hub Mainnet Launch",slug:"_1-cosmos-hub-mainnet-launch"},{level:2,title:"Official Cosmos Communication Channels",slug:"official-cosmos-communication-channels"},{level:2,title:"Staying Safe (and Secure!) for Mainnet Launch",slug:"staying-safe-and-secure-for-mainnet-launch"}]},{title:"Cosmos Hub 2 Upgrade Instructions",frontmatter:{description:"",title:"Cosmos Hub 2 Upgrade",order:6},regularPath:"/migration/cosmoshub-2.html",relativePath:"migration/cosmoshub-2.md",key:"v-83c64e00",path:"/migration/cosmoshub-2.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"State Sync",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3[ES_es].md",key:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",headers:[{level:2,title:"Preliminares",slug:"preliminares"},{level:2,title:"Principales actualizaciones",slug:"principales-actualizaciones"},{level:2,title:"Riesgos",slug:"riesgos"},{level:2,title:"Recuperación",slug:"recuperacion"},{level:2,title:"Procedimiento de actualización",slug:"procedimiento-de-actualizacion"},{level:2,title:"Notas para los proveedores de servicios",slug:"notas-para-los-proveedores-de-servicios"}]},{title:"스테이트 싱크",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3[KR_kr].md",key:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",headers:[{level:2,title:"사전 정보",slug:"사전-정보"},{level:2,title:"주요 업데이트",slug:"주요-업데이트"},{level:2,title:"위험 고지",slug:"위험-고지"},{level:2,title:"복구",slug:"복구"},{level:2,title:"업그레이드",slug:"업그레이드"},{level:2,title:"서비스 제공자를 위한 정보",slug:"서비스-제공자를-위한-정보"}]},{title:"Cosmos Hub 4, Delta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Delta Upgrade",order:4},regularPath:"/migration/cosmoshub-4-delta-upgrade.html",relativePath:"migration/cosmoshub-4-delta-upgrade.md",key:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place July 12, 2021",slug:"upgrade-will-take-place-july-12-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Public testnet",slug:"public-testnet"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1",slug:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0",slug:"target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"},{level:2,title:"Delta upgrade steps",slug:"delta-upgrade-steps"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"FAQ",slug:"faq"}]},{title:"Cosmos Hub 4, v10 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, v10 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v10-upgrade.html",relativePath:"migration/cosmoshub-4-v10-upgrade.md",key:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1",slug:"current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1",slug:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v11-upgrade.html",relativePath:"migration/cosmoshub-4-v11-upgrade.md",key:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v7-Theta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Theta Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v7-Theta-upgrade.html",relativePath:"migration/cosmoshub-4-v7-Theta-upgrade.md",key:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place April 12, 2022",slug:"upgrade-will-take-place-april-12-2022"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x",slug:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"},{level:3,title:"Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0",slug:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"},{level:2,title:"v7-Theta upgrade steps",slug:"v7-theta-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v9-Lambda Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Lambda Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",relativePath:"migration/cosmoshub-4-v9-Lambda-upgrade.md",key:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place March 14-16, 2023",slug:"upgrade-will-take-place-march-14-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1",slug:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0",slug:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"},{level:2,title:"v9-Lambda upgrade steps",slug:"v9-lambda-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v9.0.0 binary",slug:"manually-preparing-the-gaia-v9-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Vega Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Vega Upgrade",order:3},regularPath:"/migration/cosmoshub-4-vega-upgrade.html",relativePath:"migration/cosmoshub-4-vega-upgrade.md",key:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place December 14, 2021",slug:"upgrade-will-take-place-december-14-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0",slug:"current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"},{level:3,title:"Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4",slug:"target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"},{level:2,title:"Vega upgrade steps",slug:"vega-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Gaia Fee and Fees Checks",frontmatter:{description:""},regularPath:"/modules/globalfee.html",relativePath:"modules/globalfee.md",key:"v-f8a9ba00",path:"/modules/globalfee.html",headers:[{level:2,title:"Fee Parameters",slug:"fee-parameters"},{level:2,title:"Globalfee module",slug:"globalfee-module"},{level:3,title:"Globalfee Params: MinimumGasPricesParam",slug:"globalfee-params-minimumgaspricesparam"},{level:3,title:"Globalfee Params: BypassMinFeeMsgTypes and MaxTotalBypassMinFeeMsgGasUsage",slug:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"},{level:2,title:"Minimum-gas-prices (local fee requirement)",slug:"minimum-gas-prices-local-fee-requirement"},{level:2,title:"Fee AnteHandler Behaviour",slug:"fee-antehandler-behaviour"},{level:2,title:"Queries",slug:"queries"},{level:2,title:"Setting Up Globalfee Params via Gov Proposals",slug:"setting-up-globalfee-params-via-gov-proposals"},{level:2,title:"Examples",slug:"examples"},{level:3,title:"Case 1",slug:"case-1"},{level:3,title:"Case 2",slug:"case-2"},{level:3,title:"Case 3",slug:"case-3"},{level:3,title:"Case 4",slug:"case-4"},{level:3,title:"Case 5",slug:"case-5"},{level:3,title:"Case 6",slug:"case-6"},{level:3,title:"Case 7",slug:"case-7"},{level:3,title:"Case 8",slug:"case-8"},{level:2,title:"References",slug:"references"}]},{title:"Cosmos Hub 4, v8-Rho Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Rho Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v8-Rho-upgrade.html",relativePath:"migration/cosmoshub-4-v8-Rho-upgrade.md",key:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place Feb 16, 2023",slug:"upgrade-will-take-place-feb-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.1.1",slug:"current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0",slug:"target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"},{level:2,title:"v8-Rho upgrade steps",slug:"v8-rho-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v8.0.0 binary",slug:"manually-preparing-the-gaia-v8-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v8.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v8-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Ledger Nano Support",frontmatter:{description:"",order:4,title:"Ledger Support"},regularPath:"/resources/ledger.html",relativePath:"resources/ledger.md",key:"v-611af834",path:"/resources/ledger.html",headers:[{level:2,title:"Install the Cosmos Ledger application",slug:"install-the-cosmos-ledger-application"},{level:2,title:"Keplr + Ledger Nano",slug:"keplr-ledger-nano"},{level:3,title:"(Optional) Confirm your address",slug:"optional-confirm-your-address"},{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"Before you Begin",slug:"before-you-begin"},{level:3,title:"Add your Ledger key",slug:"add-your-ledger-key"},{level:3,title:"Confirm your address",slug:"confirm-your-address"},{level:3,title:"Connect to a full node",slug:"connect-to-a-full-node"},{level:3,title:"Sign a transaction",slug:"sign-a-transaction"},{level:3,title:"Receive funds",slug:"receive-funds"},{level:3,title:"Further documentation",slug:"further-documentation"},{level:2,title:"The Cosmos Standard Transaction",slug:"the-cosmos-standard-transaction"},{level:2,title:"Support",slug:"support"}]},{title:"Service Providers",frontmatter:{description:"",order:6,title:"Service Providers"},regularPath:"/resources/service-providers.html",relativePath:"resources/service-providers.md",key:"v-55d7a0e0",path:"/resources/service-providers.html",headers:[{level:2,title:"Connection Options",slug:"connection-options"},{level:2,title:"Running a Full Node",slug:"running-a-full-node"},{level:3,title:"What is a Full Node?",slug:"what-is-a-full-node"},{level:3,title:"Installation and Configuration",slug:"installation-and-configuration"},{level:2,title:"Command-Line Interface",slug:"command-line-interface"},{level:3,title:"Available Commands",slug:"available-commands"},{level:3,title:"Remote Access to gaiad",slug:"remote-access-to-gaiad"},{level:3,title:"Create a Key Pair",slug:"create-a-key-pair"},{level:3,title:"Check your Balance",slug:"check-your-balance"},{level:2,title:"REST API",slug:"rest-api"},{level:3,title:"Listen for Incoming Transactions",slug:"listen-for-incoming-transactions"}]},{title:"ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives",frontmatter:{description:""},regularPath:"/governance/proposals/2021-07-atom-liquidity-incentives/",relativePath:"governance/proposals/2021-07-atom-liquidity-incentives/README.md",key:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{title:"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:"Cosmos Hub主网上线计划",frontmatter:{description:""},regularPath:"/zh/launch/blog-1-cn.html",relativePath:"zh/launch/blog-1-cn.md",key:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",headers:[{level:2,title:"主网启动的里程碑",slug:"主网启动的里程碑"},{level:2,title:"Cosmos官方交流渠道",slug:"cosmos官方交流渠道"},{level:2,title:"在主网启动期间确保资产安全可靠",slug:"在主网启动期间确保资产安全可靠"},{level:2,title:"安全规则",slug:"安全规则"}]},{title:"创世(Genesis)文件",frontmatter:{description:""},regularPath:"/zh/resources/genesis.html",relativePath:"zh/resources/genesis.md",key:"v-29e61a5c",path:"/zh/resources/genesis.html",headers:[{level:2,title:"什么是创世文件",slug:"什么是创世文件"},{level:2,title:"Genesis 时间和链ID",slug:"genesis-时间和链id"},{level:2,title:"共识参数",slug:"共识参数"},{level:2,title:"应用程序状态",slug:"应用程序状态"},{level:3,title:"创世账号",slug:"创世账号"},{level:3,title:"银行(Bank)",slug:"银行-bank"},{level:3,title:"权益(Staking)",slug:"权益-staking"},{level:3,title:"挖矿(Mint)",slug:"挖矿-mint"},{level:3,title:"分配(Distribution)",slug:"分配-distribution"},{level:3,title:"治理(Governance)",slug:"治理-governance"},{level:3,title:"惩罚(Slashing )",slug:"惩罚-slashing"},{level:3,title:"创世交易(Genesis Transactions)",slug:"创世交易-genesis-transactions"}]},{title:"Especificaciones técnicas",frontmatter:{description:""},regularPath:"/es/governance/params-change/Governance.html",relativePath:"es/governance/params-change/Governance.md",key:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",headers:[{level:2,title:"1. depositparams",slug:"_1-depositparams"},{level:2,title:"mindeposit",slug:"mindeposit"},{level:3,title:"El depósito mínimo requerido para que una propuesta entre en el período de votación, en micro-ATOMs",slug:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias"},{level:2,title:"maxdepositperiod",slug:"maxdepositperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-2"},{level:2,title:"2. votingparams",slug:"_2-votingparams"},{level:2,title:"votingperiod",slug:"votingperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-3"},{level:2,title:"2. tallyparams",slug:"_2-tallyparams"},{level:2,title:"quorum",slug:"quorum"},{level:3,title:"La proporción mínima de poder de voto de la red que se requiere para que el resultado de una propuesta de gobierno se considere válido",slug:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-4"},{level:2,title:"threshold",slug:"threshold"},{level:3,title:"La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno",slug:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-5"},{level:2,title:"veto",slug:"veto"},{level:3,title:"La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno",slug:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-6"},{level:2,title:"Parámetros de Génesis (aka lanzamiento)",slug:"parametros-de-genesis-aka-lanzamiento"},{level:2,title:"Parámetros actuales",slug:"parametros-actuales"},{level:2,title:"Futuro",slug:"futuro"}]},{title:"제네시스 파일",frontmatter:{description:""},regularPath:"/ko/resources/genesis.html",relativePath:"ko/resources/genesis.md",key:"v-a8848234",path:"/ko/resources/genesis.html",headers:[{level:2,title:"제네시스 파일은 무엇인가?",slug:"제네시스-파일은-무엇인가"},{level:2,title:"제네시스 시간과 체인 아이디",slug:"제네시스-시간과-체인-아이디"},{level:2,title:"컨센서스 파라미터",slug:"컨센서스-파라미터"},{level:2,title:"애플리케이션 상태",slug:"애플리케이션-상태"},{level:3,title:"제네시스 계정",slug:"제네시스-계정"},{level:3,title:"뱅크(Bank)",slug:"뱅크-bank"},{level:3,title:"스테이킹(Staking)",slug:"스테이킹-staking"},{level:3,title:"민트(mint)",slug:"민트-mint"},{level:3,title:"분배(distribution)",slug:"분배-distribution"},{level:3,title:"거버넌스(governance)",slug:"거버넌스-governance"},{level:3,title:"슬래싱(slashing)",slug:"슬래싱-slashing"},{level:3,title:"제네시스 트랜잭션(genesis transactions)",slug:"제네시스-트랜잭션-genesis-transactions"}]},{title:"State Sync",frontmatter:{description:"",title:"Cosmos Hub 3 Upgrade",order:5},regularPath:"/migration/cosmoshub-3.html",relativePath:"migration/cosmoshub-3.md",key:"v-568b0c40",path:"/migration/cosmoshub-3.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"Genesis File",frontmatter:{description:"",order:1,title:"The Genesis File"},regularPath:"/resources/genesis.html",relativePath:"resources/genesis.md",key:"v-91b151c0",path:"/resources/genesis.html",headers:[{level:2,title:"What is a Genesis File",slug:"what-is-a-genesis-file"},{level:2,title:"Genesis Time and Chain_id",slug:"genesis-time-and-chain-id"},{level:2,title:"Consensus Parameters",slug:"consensus-parameters"},{level:2,title:"Application State",slug:"application-state"},{level:3,title:"Genesis Accounts",slug:"genesis-accounts"},{level:3,title:"Bank",slug:"bank"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Mint",slug:"mint"},{level:3,title:"Distribution",slug:"distribution"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Genesis Transactions",slug:"genesis-transactions"}]},{title:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",frontmatter:{description:""},regularPath:"/governance/proposals/2021-05-gravity-bridge-deployment/",relativePath:"governance/proposals/2021-05-gravity-bridge-deployment/README.md",key:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Vision",slug:"vision"},{level:2,title:"Cosmos, Ethereum, and Gravity",slug:"cosmos-ethereum-and-gravity"},{level:2,title:"How do validators support the Gravity Bridge?",slug:"how-do-validators-support-the-gravity-bridge"},{level:3,title:"Cosmos to Ethereum:",slug:"cosmos-to-ethereum"},{level:3,title:"Ethereum to Cosmos:",slug:"ethereum-to-cosmos"},{level:3,title:"Slashing Conditions Spec",slug:"slashing-conditions-spec"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Gravity.sol",slug:"gravity-sol"},{level:3,title:"Gravity Cosmos Module",slug:"gravity-cosmos-module"},{level:3,title:"Orchestrator",slug:"orchestrator"},{level:3,title:"Market of Relayers",slug:"market-of-relayers"},{level:2,title:"Security assumptions",slug:"security-assumptions"},{level:2,title:"Ongoing work",slug:"ongoing-work"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Audit:",slug:"audit"},{level:3,title:"Conclusion:",slug:"conclusion"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Appendix",slug:"appendix"},{level:3,title:"FAQ",slug:"faq"},{level:3,title:"Is running the Gravity Module difficult for Cosmos Validators?",slug:"is-running-the-gravity-module-difficult-for-cosmos-validators"},{level:3,title:"Is the Gravity bridge secure?",slug:"is-the-gravity-bridge-secure"},{level:3,title:"Are slashing conditions a problem for validators?",slug:"are-slashing-conditions-a-problem-for-validators"},{level:3,title:"What about peg zones?",slug:"what-about-peg-zones"},{level:3,title:"Why not use IBC to create a bridge to Ethereum?",slug:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}]},{title:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Guidelines",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);jo.component("home",()=>n.e(27).then(n.bind(null,457))),jo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,480))),jo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,479))),jo.component("IconArrow",()=>n.e(29).then(n.bind(null,478))),jo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,477))),jo.component("IconSearch",()=>n.e(31).then(n.bind(null,476))),jo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,475))),jo.component("IconWindow",()=>n.e(33).then(n.bind(null,474))),jo.component("ImageLetter",()=>n.e(34).then(n.bind(null,473))),jo.component("LayoutDefault",()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,456))),jo.component("LogoCore",()=>n.e(35).then(n.bind(null,471))),jo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,638))),jo.component("LogoHub",()=>n.e(37).then(n.bind(null,542))),jo.component("LogoHubText",()=>n.e(38).then(n.bind(null,522))),jo.component("LogoSdk",()=>n.e(39).then(n.bind(null,520))),jo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,519))),jo.component("SectionSearch",()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,455))),jo.component("TmAside",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,454))),jo.component("TmBreadcrumbs",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,453))),jo.component("TmCodeBlock",()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,452))),jo.component("TmContentCards",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,451))),jo.component("TmFooter",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,450))),jo.component("TmFooterLinks",()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,460))),jo.component("TmHelpSupport",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,449))),jo.component("TmIconBasics",()=>n.e(41).then(n.bind(null,508))),jo.component("TmIconCore",()=>n.e(42).then(n.bind(null,481))),jo.component("TmIconDash",()=>n.e(43).then(n.bind(null,472))),jo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,518))),jo.component("TmIconHex",()=>n.e(44).then(n.bind(null,515))),jo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,514))),jo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,513))),jo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,512))),jo.component("TmIconModules",()=>n.e(48).then(n.bind(null,511))),jo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,510))),jo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,459))),jo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,623))),jo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,523))),jo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),jo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,521))),jo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),jo.component("TmLogoIbc",()=>n.e(56).then(n.bind(null,467))),jo.component("TmLogoSdk",()=>n.e(57).then(n.bind(null,466))),jo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,517))),jo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,516))),jo.component("TmSearch",()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,465))),jo.component("TmSelectLanguage",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,464))),jo.component("TmSelectVersion",()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,463))),jo.component("TmSidebar",()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,462))),jo.component("TmSidebarContent",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,461))),jo.component("TmSidebarTree",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,448))),jo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,470))),jo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,458))),jo.component("TmTopBar",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,507)));var os=n(149),is=n.n(os),as=[({Vue:e})=>{e.component("df",ts.c),e.mixin({methods:{md:e=>`
${new rs.a({html:!0,linkify:!0}).renderInline(e)}
`}}),n(391)},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({router:e})=>{var t,n,r,o,i,a;"undefined"!=typeof window&&(t=window,n=document,r="script",o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,i=n.createElement(r),a=n.getElementsByTagName(r)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a),ga("create","UA-51029217-2","auto"),ga("set","anonymizeIp",!0),e.afterEach((function(t){ga("set","page",e.app.$withBase(t.fullPath)),ga("send","pageview")})))},({Vue:e})=>e.use(is.a)],ss=[];class ls extends class{constructor(){this.store=new jo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){jo.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(ls.prototype,{getPageAsyncComponent:qa,getLayoutAsyncComponent:$a,getAsyncComponent:za,getVueComponent:Ba});var us={install(e){const t=new ls;e.$vuepress=t,e.prototype.$vuepress=t}};function cs(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var ps={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;var n,r;return n="pageKey",r=t,"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[n]=r),jo.component(t)||jo.component(t,qa(t)),jo.component(t)?e(t):e("")}},ds={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},hs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},fs=(n(393),n(394),n(1)),vs=Object(fs.a)(hs,(function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports,gs={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};jo.config.productionTip=!1,jo.use(wa),jo.use(us),jo.mixin(function(e,t,n=jo){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!jo.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(cs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";cs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";cs(e,o)?r(o):cs(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(as.filter(e=>"function"==typeof e).map(t=>t({Vue:jo,options:r,router:n,siteData:es,isServer:e})))}catch(e){console.error(e)}return{app:new jo(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},ss.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file + */function Do(e,t){for(var n in t)e[n]=t[n];return e}var Mo=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Mo,Io).replace(Ro,",")};function qo(e){try{return decodeURIComponent(e)}catch(e){0}return e}var $o=function(e){return null==e||"object"==typeof e?e:String(e)};function zo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=qo(n.shift()),o=n.length>0?qo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function Bo(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Fo(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(Fo(t)):r.push(Fo(t)+"="+Fo(e)))})),r.join("&")}return Fo(t)+"="+Fo(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var No=/\/?$/;function Uo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Ho(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:Zo(t,o),matched:e?Go(e):[]};return n&&(a.redirectedFrom=Zo(n,o)),Object.freeze(a)}function Ho(e){if(Array.isArray(e))return e.map(Ho);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Ho(e[n]);return t}return e}var Vo=Uo(null,{path:"/"});function Go(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function Zo(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Bo)(r)+o}function Wo(e,t,n){return t===Vo?e===t:!!t&&(e.path&&t.path?e.path.replace(No,"")===t.path.replace(No,"")&&(n||e.hash===t.hash&&Ko(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&Ko(e.query,t.query)&&Ko(e.params,t.params))))}function Ko(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?Ko(i,a):String(i)===String(a)}))}function Jo(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),u=t&&t.path||"/",c=l.path?Qo(l.path,u,n||o.append):u,p=function(e,t,n){void 0===t&&(t={});var r,o=n||zo;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map($o):$o(a)}return r}(l.query,o.query,r&&r.options.parseQuery),d=o.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:c,query:p,hash:d}}var _i,ki=function(){},wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,p=null==u?"router-link-active":u,d=null==c?"router-link-exact-active":c,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=a.redirectedFrom?Uo(null,yi(a.redirectedFrom),null,n):a;l[f]=Wo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(No,"/").indexOf(t.path.replace(No,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){xi(e)&&(t.replace?n.replace(i,ki):n.push(i,ki))},b={click:xi};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=m})):b[this.event]=m;var y={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[h],isExactActive:l[f]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)y.on=b,y.attrs={href:s,"aria-current":g};else{var k=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=bi(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var h=0;h-1}function ea(e,t){return Qi(e)&&e._isRouter&&(null==t||e.type===t)}function ta(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function na(e){return function(t,n,r){var o=!1,i=0,a=null;ra(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=aa((function(t){var o;((o=t).__esModule||ia&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:_i.extend(t),n.components[s]=t,--i<=0&&r()})),c=aa((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Qi(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var p=l.component;p&&"function"==typeof p.then&&p.then(u,c)}}})),o||r()}}function ra(e,t){return oa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function oa(e){return Array.prototype.concat.apply([],e)}var ia="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function aa(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var sa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ci){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function la(e,t,n,r){var o=ra(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=_i.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return oa(r?o.reverse():o)}function ua(e,t){if(t)return function(){return e.apply(t,arguments)}}sa.prototype.listen=function(e){this.cb=e},sa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},sa.prototype.onError=function(e){this.errorCbs.push(e)},sa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ea(e,Wi.redirected)&&i===Vo||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},sa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ea(e)&&Qi(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(Wo(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&Ri(this.router,o,e,!1),s(((a=Xi(i=o,e,Wi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=Vi&&n;r&&this.listeners.push(Ii());var o=function(){var n=e.current,o=pa(e.base);e.current===Vo&&o===e._startLocation||e.transitionTo(o,(function(e){r&&Ri(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Gi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Zi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(pa(this.base)!==this.current.fullPath){var t=ei(this.base+this.current.fullPath);e?Gi(t):Zi(t)}},t.prototype.getCurrentLocation=function(){return pa(this.base)},t}(sa);function pa(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ei(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var da=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=pa(e);if(!/^\/#/.test(t))return window.location.replace(ei(e+"/#"+t)),!0}(this.base)||ha()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=Vi&&t;n&&this.listeners.push(Ii());var r=function(){var t=e.current;ha()&&e.transitionTo(fa(),(function(r){n&&Ri(e.router,r,t,!0),Vi||ba(r.fullPath)}))},o=Vi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ba(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;fa()!==t&&(e?ma(t):ba(t))},t.prototype.getCurrentLocation=function(){return fa()},t}(sa);function ha(){var e=fa();return"/"===e.charAt(0)||(ba("/"+e),!1)}function fa(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function va(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ma(e){Vi?Gi(va(e)):window.location.hash=e}function ba(e){Vi?Zi(va(e)):window.location.replace(va(e))}var ya=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ea(e,Wi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(sa),_a=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ei(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ci||(t="abstract"),this.mode=t,t){case"history":this.history=new ca(this,e.base);break;case"hash":this.history=new da(this,e.base,this.fallback);break;case"abstract":this.history=new ya(this,e.base);break;default:0}},ka={currentRoute:{configurable:!0}};_a.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ka.currentRoute.get=function(){return this.history&&this.history.current},_a.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof ca||n instanceof da){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;Vi&&o&&"fullPath"in e&&Ri(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},_a.prototype.beforeEach=function(e){return xa(this.beforeHooks,e)},_a.prototype.beforeResolve=function(e){return xa(this.resolveHooks,e)},_a.prototype.afterEach=function(e){return xa(this.afterHooks,e)},_a.prototype.onReady=function(e,t){this.history.onReady(e,t)},_a.prototype.onError=function(e){this.history.onError(e)},_a.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},_a.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},_a.prototype.go=function(e){this.history.go(e)},_a.prototype.back=function(){this.go(-1)},_a.prototype.forward=function(){this.go(1)},_a.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},_a.prototype.resolve=function(e,t,n){var r=yi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ei(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},_a.prototype.getRoutes=function(){return this.matcher.getRoutes()},_a.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},_a.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_a.prototype,ka);var wa=_a;function xa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}_a.install=function e(t){if(!e.installed||_i!==t){e.installed=!0,_i=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Xo),t.component("RouterLink",wi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},_a.version="3.6.5",_a.isNavigationFailure=ea,_a.NavigationFailureType=Wi,_a.START_LOCATION=Vo,Ci&&window.Vue&&window.Vue.use(_a);n(57);n(186);var Ca={GlobalLayout:()=>Promise.resolve().then(n.bind(null,0)),NotFound:()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,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-5cedbb66":()=>n.e(61).then(n.bind(null,638)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,636)),"v-7ccd641c":()=>n.e(63).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-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-bf1b043c":()=>n.e(85).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-37169a5a":()=>n.e(109).then(n.bind(null,589)),"v-b8864dea":()=>n.e(110).then(n.bind(null,588)),"v-68a68850":()=>n.e(112).then(n.bind(null,587)),"v-768a4c68":()=>n.e(115).then(n.bind(null,586)),"v-780264ab":()=>n.e(117).then(n.bind(null,585)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,584)),"v-273748bf":()=>n.e(118).then(n.bind(null,583)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,581)),"v-414999cb":()=>n.e(124).then(n.bind(null,580)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,579)),"v-15244044":()=>n.e(127).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-1916440a":()=>n.e(131).then(n.bind(null,575)),"v-25a92840":()=>n.e(132).then(n.bind(null,574)),"v-79b59060":()=>n.e(134).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-3254b154":()=>n.e(140).then(n.bind(null,570)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,569)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,568)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,567)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,566)),"v-a3068aaa":()=>n.e(160).then(n.bind(null,565)),"v-26a4ecfe":()=>n.e(162).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-75000dc1":()=>n.e(169).then(n.bind(null,559)),"v-0110ec16":()=>n.e(170).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-37d38700":()=>n.e(173).then(n.bind(null,555)),"v-4da7b8c0":()=>n.e(174).then(n.bind(null,554)),"v-3bacdca0":()=>n.e(175).then(n.bind(null,553)),"v-c519eab8":()=>n.e(177).then(n.bind(null,552)),"v-1813a4ea":()=>n.e(178).then(n.bind(null,551)),"v-4cbea1b0":()=>n.e(180).then(n.bind(null,550)),"v-ec326d3c":()=>n.e(181).then(n.bind(null,549)),"v-dd4a8258":()=>n.e(182).then(n.bind(null,548)),"v-07cf9e68":()=>n.e(183).then(n.bind(null,547)),"v-5c30b8f6":()=>n.e(184).then(n.bind(null,546)),"v-a4aa1cc0":()=>n.e(186).then(n.bind(null,545)),"v-621d6140":()=>n.e(189).then(n.bind(null,544)),"v-f2b0d680":()=>n.e(190).then(n.bind(null,614)),"v-1731e69c":()=>n.e(191).then(n.bind(null,542)),"v-feb36d80":()=>n.e(193).then(n.bind(null,541)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,540)),"v-f385361c":()=>n.e(67).then(n.bind(null,539)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,538)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,537)),"v-27ea8460":()=>n.e(81).then(n.bind(null,536)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,535)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,534)),"v-6c706790":()=>n.e(91).then(n.bind(null,533)),"v-80c733e0":()=>n.e(92).then(n.bind(null,532)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,531)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,530)),"v-5d13e021":()=>n.e(99).then(n.bind(null,529)),"v-23577189":()=>n.e(101).then(n.bind(null,528)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,527)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,526)),"v-69e7af00":()=>n.e(114).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-3a6c3c60":()=>n.e(151).then(n.bind(null,516)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,515)),"v-69a7e640":()=>n.e(153).then(n.bind(null,514)),"v-15fddba0":()=>n.e(155).then(n.bind(null,513)),"v-1ed61780":()=>n.e(154).then(n.bind(null,512)),"v-08131412":()=>n.e(156).then(n.bind(null,511)),"v-fc555fcc":()=>n.e(157).then(n.bind(null,510)),"v-c184b540":()=>n.e(158).then(n.bind(null,509)),"v-77c0d338":()=>n.e(159).then(n.bind(null,508)),"v-f8a9ba00":()=>n.e(161).then(n.bind(null,507)),"v-611af834":()=>n.e(4).then(n.bind(null,506)),"v-55d7a0e0":()=>n.e(168).then(n.bind(null,505)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,504)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,503)),"v-dd937a80":()=>n.e(185).then(n.bind(null,502)),"v-29e61a5c":()=>n.e(188).then(n.bind(null,501)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,500)),"v-a8848234":()=>n.e(136).then(n.bind(null,499)),"v-68a36ea0":()=>n.e(149).then(n.bind(null,498)),"v-91b151c0":()=>n.e(165).then(n.bind(null,497)),"v-2e2517eb":()=>n.e(107).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-5cedbb66",path:"/architecture/PROCESS.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5cedbb66").then(n)}},{name:"v-09de3eeb",path:"/architecture/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-09de3eeb").then(n)}},{path:"/architecture/index.html",redirect:"/architecture/"},{name:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7ccd641c").then(n)}},{name:"v-f8267540",path:"/architecture/adr-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8267540").then(n)}},{name:"v-81da516a",path:"/delegators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-81da516a").then(n)}},{path:"/delegators/index.html",redirect:"/delegators/"},{name:"v-4f6c3d8b",path:"/es/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4f6c3d8b").then(n)}},{path:"/es/index.html",redirect:"/es/"},{name:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a5d66b0").then(n)}},{name:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-19b6f5cc").then(n)}},{name:"v-0589512b",path:"/es/governance/community-pool-spend/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0589512b").then(n)}},{path:"/es/governance/community-pool-spend/index.html",redirect:"/es/governance/community-pool-spend/"},{name:"v-06e3b56e",path:"/getting-started/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-06e3b56e").then(n)}},{path:"/getting-started/index.html",redirect:"/getting-started/"},{name:"v-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").then(n)}},{name:"v-1c8e49b4",path:"/getting-started/quickstart.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c8e49b4").then(n)}},{name:"v-606149c6",path:"/getting-started/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-606149c6").then(n)}},{name:"v-66b4080b",path:"/governance/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-66b4080b").then(n)}},{path:"/governance/index.html",redirect:"/governance/"},{name:"v-9ff0f970",path:"/governance/process.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9ff0f970").then(n)}},{name:"v-e4b2f83a",path:"/governance/proposal-types/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e4b2f83a").then(n)}},{path:"/governance/proposal-types/index.html",redirect:"/governance/proposal-types/"},{name:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bf1b043c").then(n)}},{name:"v-39316e24",path:"/governance/proposal-types/param-change.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39316e24").then(n)}},{name:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-43a7e1f8").then(n)}},{name:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ff7fa248").then(n)}},{name:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4ac77b64").then(n)}},{name:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2758d5a0").then(n)}},{name:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").then(n)}},{name:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7431790b").then(n)}},{path:"/governance/proposals/2020-10-blocks-per-year/index.html",redirect:"/governance/proposals/2020-10-blocks-per-year/"},{name:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4b23576b").then(n)}},{path:"/governance/proposals/2020-11-inflation-rate-change/index.html",redirect:"/governance/proposals/2020-11-inflation-rate-change/"},{name:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-64792cc2").then(n)}},{path:"/governance/proposals/2021-01-delay-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{name:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-725866d9").then(n)}},{path:"/governance/proposals/2021-03-enable-ibc-transfers/index.html",redirect:"/governance/proposals/2021-03-enable-ibc-transfers/"},{name:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-230a9c4b").then(n)}},{path:"/governance/proposals/2021-04-lower-deposit-requirement/index.html",redirect:"/governance/proposals/2021-04-lower-deposit-requirement/"},{name:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37169a5a").then(n)}},{path:"/governance/proposals/2021-09-hub-ibc-router/index.html",redirect:"/governance/proposals/2021-09-hub-ibc-router/"},{name:"v-b8864dea",path:"/governance/proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b8864dea").then(n)}},{path:"/governance/proposals/index.html",redirect:"/governance/proposals/"},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-780264ab",path:"/hub-overview/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-780264ab").then(n)}},{path:"/hub-overview/index.html",redirect:"/hub-overview/"},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").then(n)}},{name:"v-273748bf",path:"/hub-tutorials/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-273748bf").then(n)}},{path:"/hub-tutorials/index.html",redirect:"/hub-tutorials/"},{name:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").then(n)}},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{name:"v-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-3169ddcb",path:"/ko/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3169ddcb").then(n)}},{path:"/ko/index.html",redirect:"/ko/"},{name:"v-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").then(n)}},{name:"v-79b59060",path:"/ko/launch/blog-2-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79b59060").then(n)}},{name:"v-aee924c0",path:"/ko/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-aee924c0").then(n)}},{name:"v-5c94f8c0",path:"/ko/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c94f8c0").then(n)}},{name:"v-3254b154",path:"/ko/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3254b154").then(n)}},{name:"v-bfd7ad74",path:"/ko/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bfd7ad74").then(n)}},{name:"v-7b5c086b",path:"/launch/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7b5c086b").then(n)}},{path:"/launch/index.html",redirect:"/launch/"},{name:"v-48a7c4e6",path:"/launch/blog-2-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-48a7c4e6").then(n)}},{name:"v-45ad53dd",path:"/migration/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-45ad53dd").then(n)}},{path:"/migration/index.html",redirect:"/migration/"},{name:"v-a3068aaa",path:"/modules/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a3068aaa").then(n)}},{path:"/modules/index.html",redirect:"/modules/"},{name:"v-26a4ecfe",path:"/proto/proto-docs.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26a4ecfe").then(n)}},{name:"v-071e366f",path:"/resources/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-071e366f").then(n)}},{path:"/resources/index.html",redirect:"/resources/"},{name:"v-b9e98ed4",path:"/resources/archives.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b9e98ed4").then(n)}},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").then(n)}},{name:"v-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").then(n)}},{name:"v-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{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-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").then(n)}},{name:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-07cf9e68").then(n)}},{name:"v-5c30b8f6",path:"/zh/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c30b8f6").then(n)}},{name:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").then(n)}},{name:"v-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-27ea8460",path:"/governance/best-practices.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27ea8460").then(n)}},{name:"v-fd3648c0",path:"/governance/formatting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fd3648c0").then(n)}},{name:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cd69f68").then(n)}},{name:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6c706790").then(n)}},{name:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-80c733e0").then(n)}},{name:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-16a2b68a").then(n)}},{name:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-405c4ac0").then(n)}},{name:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d13e021").then(n)}},{path:"/governance/proposals/2021-01-atom2021_marketing/index.html",redirect:"/governance/proposals/2021-01-atom2021_marketing/"},{name:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-23577189").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade-b/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade-b/"},{name:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-183e9cb3").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade/"},{name:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b74fdc6a").then(n)}},{path:"/governance/proposals/2021-04-advancing-ethermint/index.html",redirect:"/governance/proposals/2021-04-advancing-ethermint/"},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4aec61d8").then(n)}},{name:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-524c67f6").then(n)}},{name:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d40e180").then(n)}},{name:"v-4251c2a0",path:"/ko/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4251c2a0").then(n)}},{name:"v-63a66800",path:"/ko/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-63a66800").then(n)}},{name:"v-e9d91d38",path:"/launch/blog-1-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e9d91d38").then(n)}},{name:"v-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-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-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").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-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-08131412").then(n)}},{name:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").then(n)}},{name:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c184b540").then(n)}},{name:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77c0d338").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-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-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-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-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-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:"ADR Creation Process",frontmatter:{description:""},regularPath:"/architecture/PROCESS.html",relativePath:"architecture/PROCESS.md",key:"v-5cedbb66",path:"/architecture/PROCESS.html",headers:[{level:2,title:"ADR life cycle",slug:"adr-life-cycle"},{level:3,title:"ADR status",slug:"adr-status"},{level:2,title:"Language used in ADR",slug:"language-used-in-adr"}]},{title:"Architecture Decision Records (ADR)",frontmatter:{description:"",order:1,parent:{title:"Architecture Decision Records (ADR)",order:10}},regularPath:"/architecture/",relativePath:"architecture/README.md",key:"v-09de3eeb",path:"/architecture/",headers:[{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Creating new ADR",slug:"creating-new-adr"},{level:3,title:"Use RFC 2119 Keywords",slug:"use-rfc-2119-keywords"},{level:2,title:"ADR Table of Contents",slug:"adr-table-of-contents"},{level:3,title:"Accepted",slug:"accepted"},{level:3,title:"Proposed",slug:"proposed"},{level:3,title:"Draft",slug:"draft"},{level:3,title:"Rejected",slug:"rejected"}]},{title:"ADR 001: Interchain Accounts",frontmatter:{description:"",order:2},regularPath:"/architecture/adr-001-interchain-accounts.html",relativePath:"architecture/adr-001-interchain-accounts.md",key:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Desired Outcome",slug:"desired-outcome"},{level:2,title:"Consequences",slug:"consequences"},{level:2,title:"Technical Specification",slug:"technical-specification"},{level:2,title:"Development",slug:"development"},{level:2,title:"Governance [optional]",slug:"governance-optional"},{level:2,title:"Project Integrations [optional]",slug:"project-integrations-optional"},{level:2,title:"Support",slug:"support"},{level:2,title:"Additional Research & References",slug:"additional-research-references"}]},{title:"ADR {ADR-NUMBER}: {TITLE}",frontmatter:{description:"",order:!1},regularPath:"/architecture/adr-template.html",relativePath:"architecture/adr-template.md",key:"v-f8267540",path:"/architecture/adr-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:3,title:"Neutral",slug:"neutral"},{level:2,title:"References",slug:"references"}]},{title:"Delegators",frontmatter:{description:"",order:!1,parent:{title:"Delegators",order:4}},regularPath:"/delegators/",relativePath:"delegators/README.md",key:"v-81da516a",path:"/delegators/"},{title:"Versión",frontmatter:{description:""},regularPath:"/es/",relativePath:"es/README.md",key:"v-4f6c3d8b",path:"/es/",headers:[{level:2,title:"¿Qué es Gaia?",slug:"¿que-es-gaia"},{level:2,title:"Únase a la red principal del Hub de Cosmos",slug:"unase-a-la-red-principal-del-hub-de-cosmos"},{level:2,title:"Únase a la testnet pública del hub de Cosmos",slug:"unase-a-la-testnet-publica-del-hub-de-cosmos"},{level:2,title:"Prepare su propia Testnet de gaia",slug:"prepare-su-propia-testnet-de-gaia"},{level:2,title:"Recursos adicionales",slug:"recursos-adicionales"}]},{title:"Instalación de Gaia",frontmatter:{description:"",order:2},regularPath:"/es/gaia-tutorials/installation.html",relativePath:"es/gaia-tutorials/installation.md",key:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",headers:[{level:2,title:"Instalación de Go",slug:"instalacion-de-go"},{level:2,title:"Instalación de los binarios",slug:"instalacion-de-los-binarios"},{level:3,title:"Tags para la construcción",slug:"tags-para-la-construccion"},{level:3,title:"Instalación de los binarios via snap (Linux solamente)",slug:"instalacion-de-los-binarios-via-snap-linux-solamente"},{level:2,title:"Workflow para el desarrollador",slug:"workflow-para-el-desarrollador"},{level:2,title:"Siguiente",slug:"siguiente"}]},{title:"¿Qué es Gaia?",frontmatter:{description:""},regularPath:"/es/gaia-tutorials/what-is-gaia.html",relativePath:"es/gaia-tutorials/what-is-gaia.md",key:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html"},{title:"Cosmos Hub 3 y la Community Pool",frontmatter:{description:""},regularPath:"/es/governance/community-pool-spend/",relativePath:"es/governance/community-pool-spend/README.md",key:"v-0589512b",path:"/es/governance/community-pool-spend/",headers:[{level:2,title:"¿Por qué crear una propuesta para utilizar fondos de la Community Pool?",slug:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"},{level:2,title:"Creación de una propuesta de gastos a la comunidad",slug:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"},{level:2,title:"Sobre la Community Pool",slug:"sobre-la-community-pool"},{level:3,title:"¿Cómo está financiada la Community Pool?",slug:"¿como-esta-financiada-la-community-pool"},{level:3,title:"¿Cómo puede cambiar la financiación de la Community Pool?",slug:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"},{level:3,title:"¿Cuál es el saldo de la Community Pool?",slug:"¿cual-es-el-saldo-de-la-community-pool"},{level:3,title:"¿Cómo se pueden gastar los fondos de la Community Pool?",slug:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se deberían gastar los fondos de la Community Pool?",slug:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?",slug:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}]},{title:"Getting Started",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/getting-started/",relativePath:"getting-started/README.md",key:"v-06e3b56e",path:"/getting-started/"},{title:"Installation",frontmatter:{description:"",order:2,title:"Installing Gaia"},regularPath:"/getting-started/installation.html",relativePath:"getting-started/installation.md",key:"v-50a2c1ac",path:"/getting-started/installation.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Build Tools",slug:"build-tools"},{level:2,title:"Install Go",slug:"install-go"},{level:2,title:"Install the binaries",slug:"install-the-binaries"},{level:3,title:"Build Tags",slug:"build-tags"},{level:2,title:"Work with a Cosmos SDK Clone",slug:"work-with-a-cosmos-sdk-clone"},{level:2,title:"Next",slug:"next"}]},{title:"Join Mainnet Quick Start",frontmatter:{description:"",order:3,title:"Quick Start - Join Mainnet"},regularPath:"/getting-started/quickstart.html",relativePath:"getting-started/quickstart.md",key:"v-1c8e49b4",path:"/getting-started/quickstart.html",headers:[{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Sync Options",slug:"sync-options"}]},{title:"What is Gaia?",frontmatter:{description:"",order:1,title:"What is Gaia?"},regularPath:"/getting-started/what-is-gaia.html",relativePath:"getting-started/what-is-gaia.md",key:"v-606149c6",path:"/getting-started/what-is-gaia.html"},{title:"Governance Overview",frontmatter:{description:"",order:1,parent:{title:"Governance",order:6}},regularPath:"/governance/",relativePath:"governance/README.md",key:"v-66b4080b",path:"/governance/",headers:[{level:2,title:"Community",slug:"community"}]},{title:"On-Chain Proposal Process",frontmatter:{description:"",order:2},regularPath:"/governance/process.html",relativePath:"governance/process.md",key:"v-9ff0f970",path:"/governance/process.html",headers:[{level:2,title:"Governance Parameters",slug:"governance-parameters"},{level:2,title:"1. Deposit Period",slug:"_1-deposit-period"},{level:3,title:"Deposits",slug:"deposits"},{level:3,title:"Burned deposits",slug:"burned-deposits"},{level:2,title:"2. Voting Period",slug:"_2-voting-period"},{level:3,title:"What do the voting options mean?",slug:"what-do-the-voting-options-mean"},{level:3,title:"What determines whether or not a governance proposal passes?",slug:"what-determines-whether-or-not-a-governance-proposal-passes"},{level:3,title:"How is quorum determined?",slug:"how-is-quorum-determined"},{level:3,title:"How is voting tallied?",slug:"how-is-voting-tallied"}]},{title:"Proposal Types",frontmatter:{description:"",order:1,parent:{order:6}},regularPath:"/governance/proposal-types/",relativePath:"governance/proposal-types/README.md",key:"v-e4b2f83a",path:"/governance/proposal-types/",headers:[{level:2,title:"Drafting a Proposal",slug:"drafting-a-proposal"}]},{title:"Community Pool Spend",frontmatter:{description:"",order:3,parent:{order:1}},regularPath:"/governance/proposal-types/community-pool-spend.html",relativePath:"governance/proposal-types/community-pool-spend.md",key:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",headers:[{level:2,title:"Learn About the Community Pool",slug:"learn-about-the-community-pool"},{level:3,title:"How is the Community Pool funded?",slug:"how-is-the-community-pool-funded"},{level:3,title:"How can funding for the Community Pool change?",slug:"how-can-funding-for-the-community-pool-change"},{level:3,title:"How much money is in the Community Pool?",slug:"how-much-money-is-in-the-community-pool"},{level:3,title:"How can funds from the Community Pool be spent?",slug:"how-can-funds-from-the-community-pool-be-spent"},{level:3,title:"How should funds from the Community Pool be spent?",slug:"how-should-funds-from-the-community-pool-be-spent"},{level:3,title:"How are funds disbursed after a community-spend proposal is passed?",slug:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"},{level:2,title:"Why create a proposal to use Community Pool funds?",slug:"why-create-a-proposal-to-use-community-pool-funds"}]},{title:"Parameter Change",frontmatter:{description:"",order:4,parent:{order:1}},regularPath:"/governance/proposal-types/param-change.html",relativePath:"governance/proposal-types/param-change.md",key:"v-39316e24",path:"/governance/proposal-types/param-change.html",headers:[{level:2,title:"What parameters can be changed?",slug:"what-parameters-can-be-changed"},{level:2,title:"What are the current parameter values?",slug:"what-are-the-current-parameter-values"},{level:2,title:"Why create a parameter change proposal?",slug:"why-create-a-parameter-change-proposal"},{level:2,title:"Risks in parameter change proposals",slug:"risks-in-parameter-change-proposals"},{level:2,title:"Credits",slug:"credits"}]},{title:"`auth` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Auth.html",relativePath:"governance/proposal-types/params-change/Auth.md",key:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MaxMemoCharacters",slug:"maxmemocharacters"},{level:3,title:"TxSigLimit",slug:"txsiglimit"},{level:3,title:"TxSizeCostPerByte",slug:"txsizecostperbyte"},{level:3,title:"SigVerifyCostED25519",slug:"sigverifycosted25519"},{level:3,title:"SigVerifyCostSecp256k1",slug:"sigverifycostsecp256k1"}]},{title:"`bank` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Bank.html",relativePath:"governance/proposal-types/params-change/Bank.md",key:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SendEnabled",slug:"sendenabled"}]},{title:"`crisis` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Crisis.html",relativePath:"governance/proposal-types/params-change/Crisis.md",key:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"ConstantFee",slug:"constantfee"}]},{title:"Index of Governable Parameters",frontmatter:{description:"",order:2},regularPath:"/governance/proposal-types/params-change/param-index.html",relativePath:"governance/proposal-types/params-change/param-index.md",key:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",headers:[{level:2,title:"Querying on-chain parameters",slug:"querying-on-chain-parameters"},{level:2,title:"Current subspaces, keys, and values",slug:"current-subspaces-keys-and-values"}]},{title:"Text (Signaling)",frontmatter:{description:"",order:2,parent:{order:1}},regularPath:"/governance/proposal-types/text-prop.html",relativePath:"governance/proposal-types/text-prop.md",key:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",headers:[{level:2,title:"What are signaling proposals currently used for?",slug:"what-are-signaling-proposals-currently-used-for"},{level:3,title:"A note on historical text proposals",slug:"a-note-on-historical-text-proposals"},{level:2,title:"Why make a signaling proposal?",slug:"why-make-a-signaling-proposal"},{level:2,title:"What happens when a signaling proposal passes?",slug:"what-happens-when-a-signaling-proposal-passes"}]},{title:"Cosmos Hub Inflation variable modification: Blocks Per Year",frontmatter:{description:""},regularPath:"/governance/proposals/2020-10-blocks-per-year/",relativePath:"governance/proposals/2020-10-blocks-per-year/README.md",key:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/"},{frontmatter:{description:""},regularPath:"/governance/proposals/2020-11-inflation-rate-change/",relativePath:"governance/proposals/2020-11-inflation-rate-change/README.md",key:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/"},{title:"Delay of Hub Stargate Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-delay-stargate-upgrade/",relativePath:"governance/proposals/2021-01-delay-stargate-upgrade/README.md",key:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{title:"Enable IBC Transfers",frontmatter:{description:""},regularPath:"/governance/proposals/2021-03-enable-ibc-transfers/",relativePath:"governance/proposals/2021-03-enable-ibc-transfers/README.md",key:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",headers:[{level:2,title:"Security Model",slug:"security-model"},{level:2,title:"IBC",slug:"ibc"},{level:2,title:"Incentive Security Extensions",slug:"incentive-security-extensions"}]},{title:"Parameter change: lower minimum proposal deposit amount",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-lower-deposit-requirement/",relativePath:"governance/proposals/2021-04-lower-deposit-requirement/README.md",key:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Objectives",slug:"objectives"},{level:2,title:"Background",slug:"background"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Proposed Parameter Change",slug:"proposed-parameter-change"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Alternatives",slug:"alternatives"},{level:2,title:"Governance Votes",slug:"governance-votes"}]},{title:"⚛️ Make the Cosmos Hub the IBC Router ⚛️",frontmatter:{description:""},regularPath:"/governance/proposals/2021-09-hub-ibc-router/",relativePath:"governance/proposals/2021-09-hub-ibc-router/README.md",key:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/"},{title:"Proposals",frontmatter:{description:"",order:1,parent:{order:8}},regularPath:"/governance/proposals/",relativePath:"governance/proposals/README.md",key:"v-b8864dea",path:"/governance/proposals/"},{title:"[Proposal][Draft] Proposal Title",frontmatter:{description:""},regularPath:"/governance/proposals/proposal-template.html",relativePath:"governance/proposals/proposal-template.md",key:"v-68a68850",path:"/governance/proposals/proposal-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Authors and Credit",slug:"authors-and-credit"},{level:2,title:"Status",slug:"status"},{level:2,title:"Proposal",slug:"proposal"},{level:2,title:"Context",slug:"context"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Conclusion",slug:"conclusion"},{level:2,title:"References",slug:"references"}]},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{title:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{title:"Introduction",frontmatter:{description:"",order:1,title:"Introduction"},regularPath:"/hub-overview/overview.html",relativePath:"hub-overview/overview.md",key:"v-ac3ab000",path:"/hub-overview/overview.html",headers:[{level:3,title:"v12 Upgrade",slug:"v12-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{title:"Upgrade Your Node",frontmatter:{description:"",order:4,title:"Upgrading Your Node"},regularPath:"/hub-tutorials/upgrade-node.html",relativePath:"hub-tutorials/upgrade-node.md",key:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",headers:[{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Preparing an Upgrade",slug:"preparing-an-upgrade"},{level:2,title:"Manual Software Upgrade",slug:"manual-software-upgrade"},{level:2,title:"Upgrade Genesis File",slug:"upgrade-genesis-file"},{level:3,title:"Fetching from a Trusted Source",slug:"fetching-from-a-trusted-source"},{level:3,title:"Exporting State to a New Genesis Locally",slug:"exporting-state-to-a-new-genesis-locally"},{level:2,title:"Reset Data",slug:"reset-data"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{title:"Gaia Documentation",frontmatter:{description:""},regularPath:"/ko/",relativePath:"ko/README.md",key:"v-3169ddcb",path:"/ko/",headers:[{level:2,title:"코스모스 퍼블릭 테스트넷에 참가하세요",slug:"코스모스-퍼블릭-테스트넷에-참가하세요"},{level:2,title:"자체 gaia 테스트넷 세팅하기",slug:"자체-gaia-테스트넷-세팅하기"},{level:2,title:"추가 리소스",slug:"추가-리소스"}]},{frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/installation.html",relativePath:"ko/gaia-tutorials/installation.md",key:"v-15244044",path:"/ko/gaia-tutorials/installation.html",headers:[{level:2,title:"Gaia 설치하기",slug:"gaia-설치하기"},{level:3,title:"Go 설치하기",slug:"go-설치하기"},{level:3,title:"바이너리 설치하기",slug:"바이너리-설치하기"},{level:3,title:"빌드 태그",slug:"빌드-태그"},{level:3,title:"snap을 사용해 바이너리 설치하기 (리눅스에만 해당)",slug:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"},{level:2,title:"개발자 워크플로우",slug:"개발자-워크플로우"},{level:3,title:"다음 절차",slug:"다음-절차"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{title:"글을 마무리 하며",frontmatter:{description:""},regularPath:"/ko/launch/blog-2-kr.html",relativePath:"ko/launch/blog-2-kr.md",key:"v-79b59060",path:"/ko/launch/blog-2-kr.html",headers:[{level:2,title:"메인넷 후 개발 로드맵과 유저들을 위한 필수 정보",slug:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}]},{title:"HD 지갑",frontmatter:{description:""},regularPath:"/ko/resources/hd-wallets.html",relativePath:"ko/resources/hd-wallets.md",key:"v-aee924c0",path:"/ko/resources/hd-wallets.html"},{title:"노드 업그레이드 하기",frontmatter:{description:""},regularPath:"/ko/upgrade-node.html",relativePath:"ko/upgrade-node.md",key:"v-5c94f8c0",path:"/ko/upgrade-node.html",headers:[{level:2,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스 파일 업그레이드하기",slug:"제네시스-파일-업그레이드하기"},{level:3,title:"신뢰하는 소스에서 받기",slug:"신뢰하는-소스에서-받기"},{level:3,title:"로컬 환경에서 새로운 제네시스 내보내기",slug:"로컬-환경에서-새로운-제네시스-내보내기"},{level:2,title:"데이터 리셋하기",slug:"데이터-리셋하기"},{level:2,title:"노드 다시 시작하기",slug:"노드-다시-시작하기"}]},{title:"검증인(밸리데이터) 개요",frontmatter:{description:""},regularPath:"/ko/validators/overview.html",relativePath:"ko/validators/overview.md",key:"v-3254b154",path:"/ko/validators/overview.html",headers:[{level:2,title:"소개",slug:"소개"},{level:2,title:"하드웨어",slug:"하드웨어"},{level:2,title:"웹사이트 세팅하기",slug:"웹사이트-세팅하기"},{level:2,title:"법적 검토",slug:"법적-검토"},{level:2,title:"검증인 커뮤니티",slug:"검증인-커뮤니티"}]},{frontmatter:{description:""},regularPath:"/ko/validators/security.html",relativePath:"ko/validators/security.md",key:"v-bfd7ad74",path:"/ko/validators/security.html",headers:[{level:2,title:"검증인 보안",slug:"검증인-보안"},{level:2,title:"키 관리 - HSM",slug:"키-관리-hsm"},{level:2,title:"센트리노드 (DDOS 방어)",slug:"센트리노드-ddos-방어"},{level:2,title:"환경 변수",slug:"환경-변수"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/launch/",relativePath:"launch/README.md",key:"v-7b5c086b",path:"/launch/"},{title:"In Closing",frontmatter:{description:""},regularPath:"/launch/blog-2-en.html",relativePath:"launch/blog-2-en.md",key:"v-48a7c4e6",path:"/launch/blog-2-en.html",headers:[{level:2,title:"Post-Mainnet Development Roadmap & Expectations for Users",slug:"post-mainnet-development-roadmap-expectations-for-users"},{level:2,title:"State Reversions and Mainnet launch",slug:"state-reversions-and-mainnet-launch"}]},{title:"Migration Instructions",frontmatter:{description:"",order:!1,parent:{title:"Migration Instructions",order:9}},regularPath:"/migration/",relativePath:"migration/README.md",key:"v-45ad53dd",path:"/migration/"},{title:"Gaia Modules",frontmatter:{description:""},regularPath:"/modules/",relativePath:"modules/README.md",key:"v-a3068aaa",path:"/modules/",headers:[{level:2,title:"New Modules in Rho V8",slug:"new-modules-in-rho-v8"}]},{title:"Protobuf Documentation",frontmatter:{description:""},regularPath:"/proto/proto-docs.html",relativePath:"proto/proto-docs.md",key:"v-26a4ecfe",path:"/proto/proto-docs.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"gaia/globalfee/v1beta1/query.proto",slug:"gaia-globalfee-v1beta1-query-proto"},{level:3,title:"QueryParamsRequest",slug:"queryparamsrequest"},{level:3,title:"QueryParamsResponse",slug:"queryparamsresponse"},{level:3,title:"Query",slug:"query"},{level:2,title:"gaia/globalfee/v1beta1/genesis.proto",slug:"gaia-globalfee-v1beta1-genesis-proto"},{level:3,title:"GenesisState",slug:"genesisstate"},{level:3,title:"Params",slug:"params"},{level:2,title:"Scalar Value Types",slug:"scalar-value-types"}]},{title:"Resources",frontmatter:{description:"",order:!1,parent:{title:"Resources",order:8}},regularPath:"/resources/",relativePath:"resources/README.md",key:"v-071e366f",path:"/resources/"},{title:"Cosmos Hub Archives",frontmatter:{description:"",order:2,title:"Cosmos Hub Archives"},regularPath:"/resources/archives.html",relativePath:"resources/archives.md",key:"v-b9e98ed4",path:"/resources/archives.html",headers:[{level:3,title:"Big Dipper",slug:"big-dipper"}]},{title:"HD Wallets",frontmatter:{description:"",order:3,title:"HD Wallets"},regularPath:"/resources/hd-wallets.html",relativePath:"resources/hd-wallets.md",key:"v-7df08ab4",path:"/resources/hd-wallets.html"},{title:"Build Gaia Deterministically",frontmatter:{description:"",order:5,title:"Building Gaia Deterministically"},regularPath:"/resources/reproducible-builds.html",relativePath:"resources/reproducible-builds.md",key:"v-0d07c820",path:"/resources/reproducible-builds.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Build",slug:"build"}]},{title:"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:"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:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{title:"KMS - Key Management System",frontmatter:{description:"",order:5},regularPath:"/validators/kms/kms.html",relativePath:"validators/kms/kms.md",key:"v-6d897402",path:"/validators/kms/kms.html",headers:[{level:2,title:"Building",slug:"building"},{level:2,title:"Configuration",slug:"configuration"},{level:3,title:"Using a YubiHSM",slug:"using-a-yubihsm"},{level:3,title:"Using a Ledger device running the Tendermint app",slug:"using-a-ledger-device-running-the-tendermint-app"}]},{title:"Setting up Tendermint KMS + Ledger",frontmatter:{description:"",order:6},regularPath:"/validators/kms/kms_ledger.html",relativePath:"validators/kms/kms_ledger.md",key:"v-37d38700",path:"/validators/kms/kms_ledger.html",headers:[{level:2,title:"Tendermint Validator app (for Ledger devices)",slug:"tendermint-validator-app-for-ledger-devices"},{level:2,title:"KMS configuration",slug:"kms-configuration"},{level:3,title:"Config file",slug:"config-file"},{level:3,title:"Generate secret key",slug:"generate-secret-key"},{level:3,title:"Retrieve validator key",slug:"retrieve-validator-key"},{level:2,title:"Gaia configuration",slug:"gaia-configuration"}]},{title:"Validators Overview",frontmatter:{description:"",order:1,title:"Overview"},regularPath:"/validators/overview.html",relativePath:"validators/overview.md",key:"v-4da7b8c0",path:"/validators/overview.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"Create a Validator Website",slug:"create-a-validator-website"},{level:2,title:"Seek Legal Advice",slug:"seek-legal-advice"},{level:2,title:"Community",slug:"community"}]},{title:"Validator Security",frontmatter:{description:"",order:4,title:"Validator Security"},regularPath:"/validators/security.html",relativePath:"validators/security.md",key:"v-3bacdca0",path:"/validators/security.html",headers:[{level:2,title:"Key Management - HSM",slug:"key-management-hsm"},{level:2,title:"Sentry Nodes (DDOS Protection)",slug:"sentry-nodes-ddos-protection"},{level:2,title:"Environment Variables",slug:"environment-variables"}]},{title:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"加入公共测试网",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-testnet.html",relativePath:"zh/gaia-tutorials/join-testnet.md",key:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"升级之前的 Testnet",slug:"升级之前的-testnet"},{level:3,title:"重置数据",slug:"重置数据"},{level:3,title:"升级软件",slug:"升级软件"}]},{title:"Gaia是什么",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/what-is-gaia.html",relativePath:"zh/gaia-tutorials/what-is-gaia.md",key:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 创世状态(Genesis State)",frontmatter:{description:""},regularPath:"/zh/genesis-state.html",relativePath:"zh/genesis-state.md",key:"v-5c30b8f6",path:"/zh/genesis-state.html",headers:[{level:2,title:"账户(Accounts)",slug:"账户-accounts"}]},{title:"**Cosmos主网上线三部曲**",frontmatter:{description:""},regularPath:"/zh/launch/blog-2-cn.html",relativePath:"zh/launch/blog-2-cn.md",key:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",headers:[{level:2,title:"🚨第一阶段:网络逐步趋于稳定🚨",slug:"🚨第一阶段-网络逐步趋于稳定🚨"},{level:2,title:"第二阶段:链上交易开启",slug:"第二阶段-链上交易开启"},{level:2,title:"第三阶段:启用IBC协议",slug:"第三阶段-启用ibc协议"},{level:2,title:"验证人提示: 提交您的主网gentx文件",slug:"验证人提示-提交您的主网gentx文件"},{level:2,title:"总结",slug:"总结"}]},{title:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"Off-Chain Proposal Process",frontmatter:{description:"",order:3},regularPath:"/governance/best-practices.html",relativePath:"governance/best-practices.md",key:"v-27ea8460",path:"/governance/best-practices.html",headers:[{level:2,title:"Engage directly with the voting community and seek feedback",slug:"engage-directly-with-the-voting-community-and-seek-feedback"},{level:2,title:"Stage 1: Your Idea",slug:"stage-1-your-idea"},{level:3,title:"Not yet confident about your idea?",slug:"not-yet-confident-about-your-idea"},{level:3,title:"Confident with your idea?",slug:"confident-with-your-idea"},{level:3,title:"Are you ready to draft a governance proposal?",slug:"are-you-ready-to-draft-a-governance-proposal"},{level:2,title:"Stage 2: Your Draft Proposal",slug:"stage-2-your-draft-proposal"},{level:3,title:"Proposal Elements",slug:"proposal-elements"},{level:3,title:"Begin with a well-considered draft proposal",slug:"begin-with-a-well-considered-draft-proposal"},{level:3,title:"Engage the community with your draft proposal",slug:"engage-the-community-with-your-draft-proposal"},{level:3,title:"Submit your proposal to the testnet",slug:"submit-your-proposal-to-the-testnet"},{level:2,title:"Stage 3: Your On-Chain Proposal",slug:"stage-3-your-on-chain-proposal"},{level:3,title:"The Deposit Period",slug:"the-deposit-period"},{level:3,title:"The Voting Period",slug:"the-voting-period"}]},{title:"Formatting a Proposal",frontmatter:{description:"",order:4},regularPath:"/governance/formatting.html",relativePath:"governance/formatting.md",key:"v-fd3648c0",path:"/governance/formatting.html",headers:[{level:2,title:"Text",slug:"text"},{level:3,title:"Real example",slug:"real-example"},{level:2,title:"Community Pool Spend",slug:"community-pool-spend"},{level:3,title:"Real example",slug:"real-example-2"},{level:2,title:"Param Change",slug:"param-change"},{level:3,title:"Real example",slug:"real-example-3"}]},{title:"`distribution` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Distribution.html",relativePath:"governance/proposal-types/params-change/Distribution.md",key:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"communitytax",slug:"communitytax"},{level:3,title:"baseproposerreward",slug:"baseproposerreward"},{level:3,title:"bonusproposerreward",slug:"bonusproposerreward"},{level:3,title:"withdrawaddrenabled",slug:"withdrawaddrenabled"},{level:2,title:"Known Bug",slug:"known-bug"}]},{title:"`gov` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Governance.html",relativePath:"governance/proposal-types/params-change/Governance.md",key:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"depositparams",slug:"depositparams"},{level:3,title:"votingparams",slug:"votingparams"},{level:3,title:"tallyparams",slug:"tallyparams"}]},{title:"`mint` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Mint.html",relativePath:"governance/proposal-types/params-change/Mint.md",key:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MintDenom",slug:"mintdenom"},{level:3,title:"InflationRateChange",slug:"inflationratechange"},{level:3,title:"InflationMax",slug:"inflationmax"},{level:3,title:"InflationMin",slug:"inflationmin"},{level:3,title:"GoalBonded",slug:"goalbonded"},{level:3,title:"BlocksPerYear",slug:"blocksperyear"}]},{title:"`slashing` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Slashing.html",relativePath:"governance/proposal-types/params-change/Slashing.md",key:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SignedBlocksWindow",slug:"signedblockswindow"},{level:3,title:"MinSignedPerWindow",slug:"minsignedperwindow"},{level:3,title:"DowntimeJailDuration",slug:"downtimejailduration"},{level:3,title:"SlashFractionDoubleSign",slug:"slashfractiondoublesign"},{level:3,title:"SlashFractionDowntime",slug:"slashfractiondowntime"},{level:3,title:"MaxEvidenceAge",slug:"maxevidenceage"}]},{title:"`staking` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Staking.html",relativePath:"governance/proposal-types/params-change/Staking.md",key:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"UnbondingTime",slug:"unbondingtime"},{level:2,title:"MaxValidators",slug:"maxvalidators"},{level:3,title:"KeyMaxEntries",slug:"keymaxentries"},{level:3,title:"Notes",slug:"notes-3"},{level:3,title:"BondDenom",slug:"bonddenom"},{level:3,title:"HistoricalEntries",slug:"historicalentries"}]},{title:"Proposal 34: Luna Mission - Funding $ATOM",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-atom2021_marketing/",relativePath:"governance/proposals/2021-01-atom2021_marketing/README.md",key:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/"},{title:"Stargate Upgrade- Second time is a charm",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade-b/",relativePath:"governance/proposals/2021-01-stargate-upgrade-b/README.md",key:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:3,title:"Aborting of Proposal 35",slug:"aborting-of-proposal-35"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade/",relativePath:"governance/proposals/2021-01-stargate-upgrade/README.md",key:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-advancing-ethermint/",relativePath:"governance/proposals/2021-04-advancing-ethermint/README.md",key:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",headers:[{level:3,title:"Author",slug:"author"},{level:2,title:"Summary",slug:"summary"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Multisig and release of funds",slug:"multisig-and-release-of-funds"},{level:2,title:"Product commitment",slug:"product-commitment"},{level:3,title:"Hard Commitments",slug:"hard-commitments"},{level:2,title:"Soft Commitments",slug:"soft-commitments"},{level:2,title:"Conclusion",slug:"conclusion"}]},{title:"Submitting a Proposal",frontmatter:{description:"",order:5},regularPath:"/governance/submitting.html",relativePath:"governance/submitting.md",key:"v-69e7af00",path:"/governance/submitting.html",headers:[{level:2,title:"Hosting supplementary materials",slug:"hosting-supplementary-materials"},{level:2,title:"Formatting the JSON file for the governance proposal",slug:"formatting-the-json-file-for-the-governance-proposal"},{level:2,title:"Sending the transaction that submits your governance proposal",slug:"sending-the-transaction-that-submits-your-governance-proposal"},{level:3,title:"Walkthrough example",slug:"walkthrough-example"},{level:3,title:"Verifying your transaction",slug:"verifying-your-transaction"},{level:3,title:"Troubleshooting a failed transaction",slug:"troubleshooting-a-failed-transaction"},{level:3,title:"Depositing funds after a proposal has been submitted",slug:"depositing-funds-after-a-proposal-has-been-submitted"},{level:3,title:"Submitting your proposal to the testnet",slug:"submitting-your-proposal-to-the-testnet"}]},{title:"Join the Cosmos Hub Public Testnet",frontmatter:{description:"",order:3,title:"Joining Testnet"},regularPath:"/hub-tutorials/join-testnet.html",relativePath:"hub-tutorials/join-testnet.md",key:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",headers:[{level:2,title:"Background",slug:"background"},{level:3,title:"Version History",slug:"version-history"},{level:2,title:"How to Join",slug:"how-to-join"},{level:2,title:"Sync Options",slug:"sync-options"},{level:2,title:"Step-by-Step Setup",slug:"step-by-step-setup"},{level:3,title:"Build Tools",slug:"build-tools"},{level:3,title:"Installation & Configuration",slug:"installation-configuration"},{level:3,title:"Cosmovisor Setup (Optional)",slug:"cosmovisor-setup-optional"},{level:3,title:"Create Service File",slug:"create-service-file"},{level:3,title:"Start the Service",slug:"start-the-service"},{level:2,title:"Create a Validator (Optional)",slug:"create-a-validator-optional"},{level:2,title:"Upgrading Your Node",slug:"upgrading-your-node"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-mainnet.html",relativePath:"ko/gaia-tutorials/join-mainnet.md",key:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:2,title:"최소 가스 가격(minimum-gas-prices) 설정하기",slug:"최소-가스-가격-minimum-gas-prices-설정하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"메인넷 검증하기",slug:"메인넷-검증하기"},{level:2,title:"검증인 노드로 업그레이드 하기",slug:"검증인-노드로-업그레이드-하기"}]},{title:"코스모스 허브 메인넷의 시작",frontmatter:{description:""},regularPath:"/ko/launch/blog-1-kr.html",relativePath:"ko/launch/blog-1-kr.md",key:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",headers:[{level:2,title:"런칭을 위해 남은 마일스톤",slug:"런칭을-위해-남은-마일스톤"},{level:3,title:"5: 코스모스 SDK 보안 감사 ✔",slug:"_5-코스모스-sdk-보안-감사-✔"},{level:3,title:"4: 코스모스 SDK 기능 동결 (feature freeze)",slug:"_4-코스모스-sdk-기능-동결-feature-freeze"},{level:3,title:"3: 게임 오브 스테이크 완료",slug:"_3-게임-오브-스테이크-완료"},{level:3,title:"2: 제네시스 트랜잭션 모으기",slug:"_2-제네시스-트랜잭션-모으기"},{level:3,title:"1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥",slug:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"},{level:2,title:"공식 코스모스 소통 채널",slug:"공식-코스모스-소통-채널"},{level:2,title:"메인넷 런칭때 안전할 수 있는 방법은?",slug:"메인넷-런칭때-안전할-수-있는-방법은"},{level:2,title:"다음은 코스모스 메인넷 런칭 준비 유의사항입니다",slug:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}]},{title:"지원",frontmatter:{description:""},regularPath:"/ko/resources/ledger.html",relativePath:"ko/resources/ledger.md",key:"v-4251c2a0",path:"/ko/resources/ledger.html",headers:[{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"시작하기 전에",slug:"시작하기-전에"},{level:3,title:"렛저 키 추가하기",slug:"렛저-키-추가하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기"},{level:3,title:"풀노드에 연결하기",slug:"풀노드에-연결하기"},{level:3,title:"트랜잭션 서명하기",slug:"트랜잭션-서명하기"},{level:3,title:"자산 받기",slug:"자산-받기"},{level:3,title:"추가 참고 문서",slug:"추가-참고-문서"},{level:3,title:"기기 연결하기",slug:"기기-연결하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기-2"}]},{title:"퍼블릭 테스트넷에서 밸리데이터 운영하기",frontmatter:{description:""},regularPath:"/ko/validators/validator-setup.html",relativePath:"ko/validators/validator-setup.md",key:"v-63a66800",path:"/ko/validators/validator-setup.html",headers:[{level:2,title:"밸리데이터란 무엇인가?",slug:"밸리데이터란-무엇인가"},{level:2,title:"밸리데이터 생성하기",slug:"밸리데이터-생성하기"},{level:2,title:"밸리데이터로써 제네시스 참가하기",slug:"밸리데이터로써-제네시스-참가하기"},{level:3,title:"제네시스 파일 복사, 제네시스 트랜잭션 처리하기",slug:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"},{level:2,title:"검증인 설명 수정하기",slug:"검증인-설명-수정하기"},{level:2,title:"밸리데이터 설명 확인하기",slug:"밸리데이터-설명-확인하기"},{level:2,title:"밸리데이터 서명 정보 추적하기",slug:"밸리데이터-서명-정보-추적하기"},{level:2,title:"밸리데이터 석방(Unjail)하기",slug:"밸리데이터-석방-unjail-하기"},{level:2,title:"밸리데이터 작동상태 확인",slug:"밸리데이터-작동상태-확인"},{level:2,title:"흔히 발생하는 문제들",slug:"흔히-발생하는-문제들"},{level:3,title:"문제 #1: 내 검증인의 보팅 파워가 0 입니다",slug:"문제-1-내-검증인의-보팅-파워가-0-입니다"},{level:3,title:"문제 #2: too many open files때문에 gaiad가 강제 종료됩니다",slug:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}]},{title:"Cosmos Hub to Launch Mainnet",frontmatter:{description:""},regularPath:"/launch/blog-1-en.html",relativePath:"launch/blog-1-en.md",key:"v-e9d91d38",path:"/launch/blog-1-en.html",headers:[{level:2,title:"Pre-launch Dependencies & How to Safely Claim Your Atoms",slug:"pre-launch-dependencies-how-to-safely-claim-your-atoms"},{level:2,title:"Remaining Milestones for Launch",slug:"remaining-milestones-for-launch"},{level:3,title:"5 Cosmos-SDK Security Audits ✔",slug:"_5-cosmos-sdk-security-audits-✔"},{level:3,title:"4 Cosmos SDK Feature Freeze",slug:"_4-cosmos-sdk-feature-freeze"},{level:3,title:"3 Game of Stakes Completed",slug:"_3-game-of-stakes-completed"},{level:3,title:"2 Genesis Transactions Collected",slug:"_2-genesis-transactions-collected"},{level:3,title:"1 Cosmos Hub Mainnet Launch",slug:"_1-cosmos-hub-mainnet-launch"},{level:2,title:"Official Cosmos Communication Channels",slug:"official-cosmos-communication-channels"},{level:2,title:"Staying Safe (and Secure!) for Mainnet Launch",slug:"staying-safe-and-secure-for-mainnet-launch"}]},{title:"Cosmos Hub 2 Upgrade Instructions",frontmatter:{description:"",title:"Cosmos Hub 2 Upgrade",order:6},regularPath:"/migration/cosmoshub-2/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:"스테이트 싱크",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, 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:"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, 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, 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, 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:"Gaia Fee and Fees Checks",frontmatter:{description:""},regularPath:"/modules/globalfee.html",relativePath:"modules/globalfee.md",key:"v-f8a9ba00",path:"/modules/globalfee.html",headers:[{level:2,title:"Fee Parameters",slug:"fee-parameters"},{level:2,title:"Globalfee module",slug:"globalfee-module"},{level:3,title:"Globalfee Params: MinimumGasPricesParam",slug:"globalfee-params-minimumgaspricesparam"},{level:3,title:"Globalfee Params: BypassMinFeeMsgTypes and MaxTotalBypassMinFeeMsgGasUsage",slug:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"},{level:2,title:"Minimum-gas-prices (local fee requirement)",slug:"minimum-gas-prices-local-fee-requirement"},{level:2,title:"Fee AnteHandler Behaviour",slug:"fee-antehandler-behaviour"},{level:2,title:"Queries",slug:"queries"},{level:2,title:"Setting Up Globalfee Params via Gov Proposals",slug:"setting-up-globalfee-params-via-gov-proposals"},{level:2,title:"Examples",slug:"examples"},{level:3,title:"Case 1",slug:"case-1"},{level:3,title:"Case 2",slug:"case-2"},{level:3,title:"Case 3",slug:"case-3"},{level:3,title:"Case 4",slug:"case-4"},{level:3,title:"Case 5",slug:"case-5"},{level:3,title:"Case 6",slug:"case-6"},{level:3,title:"Case 7",slug:"case-7"},{level:3,title:"Case 8",slug:"case-8"},{level:2,title:"References",slug:"references"}]},{title:"Ledger Nano Support",frontmatter:{description:"",order:4,title:"Ledger Support"},regularPath:"/resources/ledger.html",relativePath:"resources/ledger.md",key:"v-611af834",path:"/resources/ledger.html",headers:[{level:2,title:"Install the Cosmos Ledger application",slug:"install-the-cosmos-ledger-application"},{level:2,title:"Keplr + Ledger Nano",slug:"keplr-ledger-nano"},{level:3,title:"(Optional) Confirm your address",slug:"optional-confirm-your-address"},{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"Before you Begin",slug:"before-you-begin"},{level:3,title:"Add your Ledger key",slug:"add-your-ledger-key"},{level:3,title:"Confirm your address",slug:"confirm-your-address"},{level:3,title:"Connect to a full node",slug:"connect-to-a-full-node"},{level:3,title:"Sign a transaction",slug:"sign-a-transaction"},{level:3,title:"Receive funds",slug:"receive-funds"},{level:3,title:"Further documentation",slug:"further-documentation"},{level:2,title:"The Cosmos Standard Transaction",slug:"the-cosmos-standard-transaction"},{level:2,title:"Support",slug:"support"}]},{title:"Service Providers",frontmatter:{description:"",order:6,title:"Service Providers"},regularPath:"/resources/service-providers.html",relativePath:"resources/service-providers.md",key:"v-55d7a0e0",path:"/resources/service-providers.html",headers:[{level:2,title:"Connection Options",slug:"connection-options"},{level:2,title:"Running a Full Node",slug:"running-a-full-node"},{level:3,title:"What is a Full Node?",slug:"what-is-a-full-node"},{level:3,title:"Installation and Configuration",slug:"installation-and-configuration"},{level:2,title:"Command-Line Interface",slug:"command-line-interface"},{level:3,title:"Available Commands",slug:"available-commands"},{level:3,title:"Remote Access to gaiad",slug:"remote-access-to-gaiad"},{level:3,title:"Create a Key Pair",slug:"create-a-key-pair"},{level:3,title:"Check your Balance",slug:"check-your-balance"},{level:2,title:"REST API",slug:"rest-api"},{level:3,title:"Listen for Incoming Transactions",slug:"listen-for-incoming-transactions"}]},{title:"ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives",frontmatter:{description:""},regularPath:"/governance/proposals/2021-07-atom-liquidity-incentives/",relativePath:"governance/proposals/2021-07-atom-liquidity-incentives/README.md",key:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{title:"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:"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:"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:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Guidelines",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);jo.component("home",()=>n.e(27).then(n.bind(null,457))),jo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,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("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 diff --git a/main/delegators/delegator-faq.html b/main/delegators/delegator-faq.html index dba92569699..00d3298d605 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 45678adce7b..bd175289eae 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 65e7922dc88..9faee303a61 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 86222a73f2f..bdd62244297 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 f987ec644d1..e575728a506 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 d5ab0d2c973..73a28dce5e3 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 2cca7abe5cc..acc0a7ff9a8 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 84231148015..f80c9452515 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 5fc99eabc2b..0c4d44ce86e 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 fb01d176de2..5ef15da7e3e 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 a89f48fa50f..b79eb0dd261 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 33fedfd07fa..5fd29dd3dc8 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 2e4377ee247..b31a5766b8d 100644 --- a/main/getting-started/quickstart.html +++ b/main/getting-started/quickstart.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@ Copy # Build gaiad binary and initialize chain cd $HOME -git clone -b v11.0.0 https://github.com/cosmos/gaia --depth=1 +git clone -b v12.0.0 https://github.com/cosmos/gaia --depth=1 cd gaiad make install gaiad init CUSTOM_MONIKER --chain-id cosmoshub-4 @@ -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 20603e9e032..bf50d4cc031 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 bf193808311..ac62a363fdf 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 29789da32a5..06b63a65121 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 a0deaf47547..6ec24ef7e86 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 7bc18fc667b..579c76bcde7 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 665af461ef0..7399d65e344 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 82144149c27..74f67a87386 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 2258351e9fa..76a30f4f302 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 2bdadb85fbe..ffbce8ea8dd 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 c0a7bebc7a4..9e73cbece20 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 b6847fca0de..c9d8a321a9e 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 a293cf939b4..91f7695f046 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 8c21c423713..233eda56402 100644 --- a/main/governance/proposal-types/params-change/Governance.html +++ b/main/governance/proposal-types/params-change/Governance.html @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@ "denom": "uatom" } ]
  • Proposal 47 (opens new window) change: 64000000 uatom
  • cosmoshub-4 default: 512000000 uatom
  • cosmoshub-3 default: 512000000 uatom
  • Prior to a governance proposal entering the voting period (ie. for the proposal to be voted upon), there must be at least a minimum number of ATOMs deposited. Anyone may contribute to this deposit. Deposits of passed and failed proposals are returned to the contributors. Deposits are burned when proposals 1) expire, 2) fail to reach quorum, or 3) are vetoed. This parameter subkey value represents the minimum deposit required for a proposal to enter the voting period in micro-ATOMs, where 512000000uatom is equivalent to 512 ATOM.

    # Decreasing the value of mindeposit

    Decreasing the value of the mindeposit subkey will enable governance proposals to enter the voting period with fewer ATOMs at risk. This will likely increase the volume of new governance proposals.

    # Increasing the value of mindeposit

    Increasing the value of the mindeposit subkey will require risking a greater number of ATOMs before governance proposals may enter the voting period. This will likely decrease the volume of new governance proposals.

    # max_deposit_period

    The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.

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

    Prior to a governance proposal entering the voting period, there must be at least a minimum number of ATOMs deposited. This parameter subkey value represents the maximum amount of time that the proposal has to reach the minimum deposit amount before expiring. The maximum amount of time that a proposal can accept deposit contributions before expiring is currently 1209600000000000 nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned.

    # Decreasing the value of maxdepositperiod

    Decreasing the value of the maxdepositperiod subkey will decrease the time for deposit contributions to governance proposals. This will likely decrease the time that some proposals remain visible and potentially decrease the likelihood that they will enter the voting period. This may increase the likelihood that proposals will expire and have their deposits burned.

    # Increasing the value of maxdepositperiod

    Increasing the value of the maxdepositperiod subkey will extend the time for deposit contributions to governance proposals. This will likely increase the time that some proposals remain visible and potentially increase the likelihood that they will enter the voting period. This may decrease the likelihood that proposals will expire and have their deposits burned.

    # Notes

    Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the voting period. This means that a proposal with a small deposit (eg. 0.001 ATOM) will have the same visibility as those with a full 512 ATOM deposit in the voting period.

    # votingparams

    # votingperiod

    The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.

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

    Once a governance proposal enters the voting period, there is a maximum period of time that may elapse before the voting period concludes. This parameter subkey value represents the maximum amount of time that the proposal has to accept votes, which is currently 1209600000000000 nanoseconds or 14 days. If the proposal vote does not reach quorum ((ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal's outcome will not be considered to be valid. Voters may change their vote any number of times before the voting period ends. This voting period is currently the same for any kind of governance proposal.

    # Decreasing the value of votingperiod

    Decreasing the value of the votingperiod subkey will decrease the time for voting on governance proposals. This will likely:

    1. decrease the proportion of the network that participates in voting, and
    2. decrease the likelihood that quorum will be reached.
    # Increasing the value of votingperiod

    Increasing the value of the votingperiod subkey will increase the time for voting on governance proposals. This may:

    1. increase the proportion of the network that participates in voting, and
    2. increase the likelihood that quorum will be reached.
    # Notes

    Historically, off-chain discussions and engagement appears to be have been greater occurred during the voting period of a governance proposal than when the proposal is posted off-chain as a draft. A non-trivial amount of the voting power has voted in the second week of the voting period. Proposals 23, 19, and 13 each had approximately 80% network participation or more.

    # tallyparams

    # quorum

    The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.

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

    Quorum is required for the outcome of a governance proposal vote to be considered valid and for deposit contributors to recover their deposit amounts, and this parameter subkey value represents the minimum value for quorum. Voting power, whether backing a vote of 'yes', 'abstain', 'no', or 'no-with-veto', counts toward quorum. If the proposal vote does not reach quorum (ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal outcome will not be considered to be valid.

    # Decreasing the value of quorum

    Decreasing the value of the quorum subkey will enable a smaller proportion of the network to legitimize the outcome of a proposal. This increases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while decreasing the risk that a proposal will be considered invalid. This will likely decrease the risk of a proposal's deposit being burned.

    # Increasing the value of quorum

    Increasing the value of the quorum subkey will require a larger proportion of the network to legitimize the outcome of a proposal. This decreases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while increasing the risk that a proposal will be considered invalid. This will likely increase the risk of a proposal's deposit being burned.

    # threshold

    The minimum proportion of participating voting power required for a governance proposal to pass.

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

    A simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass. Though necessary, a simple majority 'yes' vote may not be sufficient to pass a proposal in two scenarios:

    1. Failure to reach quorum of 40% network power or
    2. A 'no-with-veto' vote of 33.4% of participating voting power or greater.

    If a governance proposal passes, deposit amounts are returned to contributors. If a text-based proposal passes, nothing is enacted automatically, but there is a social expectation that participants will co-ordinate to enact the commitments signalled in the proposal. If a parameter change proposal passes, the protocol parameter will automatically change immediately after the voting period ends, and without the need to run new software. If a community-spend proposal passes, the Community Pool balance will decrease by the number of ATOMs indicated in the proposal and the recipient's address will increase by this same number of ATOMs immediately after the voting period ends.

    # Decreasing the value of threshold

    Decreasing the value of the threshold subkey will decrease the proportion of voting power required to pass a proposal. This may:

    1. increase the likelihood that a proposal will pass, and
    2. increase the likelihood that a minority group will effect changes to the network.
    # Increasing the value of threshold

    Increasing the value of the threshold subkey will increase the proportion of voting power required to pass a proposal. This may:

    1. decrease the likelihood that a proposal will pass, and
    2. decrease the likelihood that a minority group will effect changes to the network.

    # veto_threshold

    The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.

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

    Though a simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a 'no-with-veto' vote of 33.4% of participating voting power or greater can override this outcome and cause the proposal to fail. This enables a minority group representing greater than 1/3 of voting power to fail a proposal that would otherwise pass.

    # Decreasing the value of veto_threshold

    Decreasing the value of the veto_threshold subkey will decrease the proportion of participating voting power required to veto. This will likely:

    1. enable a smaller minority group to prevent proposals from passing, and
    2. decrease the likelihood that contentious proposals will pass.
    # Increasing the value of veto_threshold

    Increasing the value of the veto_threshold subkey will increase the proportion of participating voting power required to veto. This will require a larger minority group to prevent proposals from passing, and will likely increase the likelihood that contentious proposals will pass.

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

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

    The inflation rate increases when under 67% of the token supply is staking, and it will take less time to reach the maximum of rate of 20% inflation if (for example) 30% of the token supply is staking than if 50% is staking.

    # Decreasing the value of InflationRateChange

    Decreasing the value of the InflationRateChange parameter will decrease both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take longer for inflation to reach InflationMin or InflationMax. This may lessen the response of staking behaviour to the incentive mechanism described in the notes below.

    # Increasing the value of InflationRateChange

    Increasing the value of the InflationRateChange parameter will increase both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take less time for inflation to reach InflationMin or InflationMax. This may quicken the response of staking behaviour to the incentive mechanism described in the notes below.

    # Notes

    Example: if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change:

    (1 - 73%/67%) * 13% = -1.16% per year

    This means that if the staking participation rate stays the same, the inflation rate will decrease by 1.16% over the course of one year, during which time the Hub's inflation rate will decrease by about 0.1% per month.

    If InflationRateChange is 26% and the current staking participation ratio (aka "bond ratio") is 73%, then the inflation will decrease by 2.33% over the course of one year, during which time inflation will decrease by about 0.19% per month.

    The Cosmos Hub's inflation rate is tied to its staking participation ratio in order to make staking more or less desirable, since most of the Hub's inflation is used to fund staking rewards. If the speed of inflation responds more strongly to staking participation, it could be that staking behaviour will also respond more strongly.

    # InflationMax

    The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.

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

    The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by InflationMax, which is 20% (0.200000000000000000) of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see BlocksPerYear). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below GoalBonded(67%) for long enough, its inflation setting will eventually reach this maximum.

    # Decreasing the value of InflationMax

    Decreasing the value of the InflationMax parameter will lower the maximum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.

    # Increasing the value of InflationMax

    Increasing the value of the InflationMax parameter will raise the maximum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.

    # Notes

    The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.

    # InflationMin

    The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.

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

    The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by InflationMin, which is 7% (0.070000000000000000) of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see BlocksPerYear). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above GoalBonded(67%) for long enough, its inflation setting will eventually reach this minimum.

    # Decreasing the value of InflationMin

    Decreasing the value of the InflationMin parameter will lower the minimum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation.

    # Increasing the value of InflationMin

    Increasing the value of the InflationMin parameter will raise the minimum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation.

    # Notes

    The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate.

    # GoalBonded

    The target proportion of staking participation, relative to the ATOM supply.

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

    GoalBonded is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% (0.670000000000000000) of the total ATOM supply bonded and participating in staking. When over 67% of the supply is staked, the inflation set rate begins decreasing at a maximum yearly rate of InflationRateChange until it reaches and remains at the InflationMin of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of InflationRateChange until it reaches and remains at the InflationMax of 20%.

    # Decreasing the value of GoalBonded

    Decreasing the value of the GoalBonded parameter will cause the Cosmos Hub's inflation setting to begin decreasing at a lower participation rate, and this may reduce the incentive for staking participation.

    # Increasing the value of GoalBonded

    Increasing the value of the GoalBonded parameter will cause the Cosmos Hub's inflation setting to begin increasing at a lower participation rate, and this may increase the incentive for staking participation.

    # BlocksPerYear

    The system's assumed number of blocks that the Cosmos Hub will produce in one year.

    BlocksPerYear is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. BlocksPerYear is currently {{ $themeConfig.currentParameters.mint.BlocksPerYear } and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see Proposal 30 (opens new window)) seconds over one year. BlocksPerYear is most notably used in by the system to determine the rate that new ATOMs are minted, which can vary if block times vary from 6.50 seconds per block, since effectively a different number of blocks will be produced in one year and ATOMs are minted each block.

    # Changing the BlocksPerYear parameter

    Changing the BlocksPerYear parameter will change the assumption that system makes about how many Cosmos Hub blocks will be produced per year. If block times are greater than 6.50 seconds, then this parameter should be decreased to make the Cosmos Hub's inflationary behaviour more aligned with its settings. If block times are less than 6.50 seconds, then this parameter should be increased to make the Cosmos Hub's behaviour more aligned with its settings.

    # Notes

    The calculation for seconds in one year:

    365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds

    Example: If block times are 7.12 seconds per block and 31556736 seconds per year:

    31556736 / 7.12 = ~4432126 blocks per year

    - + diff --git a/main/governance/proposal-types/params-change/Slashing.html b/main/governance/proposal-types/params-change/Slashing.html index 7d06807d879..59b3c50dab8 100644 --- a/main/governance/proposal-types/params-change/Slashing.html +++ b/main/governance/proposal-types/params-change/Slashing.html @@ -8,11 +8,11 @@ - +

    # slashing subspace

    The slashing module is responsible for enabling the Cosmos Hub to penalize any validator for an attributable violation of protocol rules by slashing (ie. partially destroying) the bonded ATOMs of their stake-backing. Penalties may include a) burning some amount of a staked bond and b) removing the ability to vote on future blocks and governance proposals for a period of time. Parameters include:

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

    # Governance notes on parameters

    # SignedBlocksWindow

    Window for being offline without being slashed, in blocks.

    • on-chain value: 10000
    • cosmoshub-4 default: 0.200000000000000000
    • cosmoshub-3 default: 0.200000000000000000

    If a validator in the active set is offline for too long, the validator will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least the DowntimeJailDuration, which is 10 minutes.

    How long is being offline for too long? There are two components: SignedBlocksWindow and MinSignedPerWindow. Since MinSignedPerWindow is 5% and SignedBlocksWindow is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The time window for being offline without breaking system rules is proportional to this parameter.

    More about liveness here (opens new window).

    # Decreasing the value of SignedBlocksWindow

    Decreasing the value of the SignedBlocksWindow parameter will decrease the window for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least DowntimeJailDuration. While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.

    Example:

    If we pass a proposal to cut SignedBlocksWindow in half from 10,000 to 5,000 blocks, what happens?

    Validators must now sign at least 5% of 5,000 blocks, which is 250 blocks. That means that a validator that misses 4,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.

    That's ~9.25 hours instead of ~18.5 hours, assuming 7s block times.

    # Increasing the value of SignedBlocksWindow

    Increasing the value of the SignedBlocksWindow parameter will increase the window for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least DowntimeJailDuration.

    Example:

    If we pass a proposal to double SignedBlocksWindow from 10,000 to 20,000 blocks, what happens?

    Validators must now sign at least 5% of 20,000 blocks, which is 1000 blocks. That means that a validator that misses 19,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.

    That's ~37 hours instead of ~18.5 hours, assuming 7s block times.

    # MinSignedPerWindow

    Minimum proportion of blocks signed per window without being slashed.

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

    If a validator in the active set is offline for too long, the validator will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least the DowntimeJailDuration, which is 10 minutes.

    How long is being offline for too long? There are two components: SignedBlocksWindow and MinSignedPerWindow. Since MinSignedPerWindow is 5% and SignedBlocksWindow is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The threshold-proportion of blocks is determined by this parameter, so the greater that MinSignedPerWindow is, the lower the tolerance for missed blocks by the system.

    More about liveness here (opens new window).

    # Decreasing the value of MinSignedPerWindow

    Decreasing the value of the MinSignedPerWindow parameter will increase the threshold for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least DowntimeJailDuration. While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.

    Example:

    If we pass a proposal to cut MinSignedPerWindow in half from 0.050000000000000000 (5%) to 0.025000000000000000 (2.5%), what happens?

    Validators must now sign at least 2.5% of 10,000 blocks, which is 250 blocks. That means that a validator that misses 9,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.

    That's ~19 hours instead of ~18.5 hours, assuming 7s block times.

    # Increasing the value of MinSignedPerWindow

    Increasing the value of the MinSignedPerWindow parameter will decrease the threshold for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by SlashFractionDowntime and temporarily removed from the active set for at least DowntimeJailDuration. While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.

    Example:

    If we pass a proposal to double the MinSignedPerWindow from 0.050000000000000000 (5%) to 0.100000000000000000 (10%), what happens?

    Validators must now sign at least 10% of 10,000 blocks, which is 1000 blocks. That means that a validator that misses 9,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules.

    That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times.

    # DowntimeJailDuration

    The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.

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

    A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka "jailed (opens new window)") for at least DowntimeJailDuration, which is 10 minutes (600000000000 nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the DowntimeJailDuration period has passed, the validator operator may send an "unjail (opens new window)" transaction to resume validator operations.

    More about liveness here (opens new window).

    # Decreasing the value of DowntimeJailDuration

    Decreasing the value of the DowntimeJailDuration parameter will require a validator to wait less time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.

    # Increasing the value of DowntimeJailDuration

    Increasing the value of the DowntimeJailDuration parameter will require a validator to wait more time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards.

    # SlashFractionDoubleSign

    Proportion of stake-backing that is bruned for equivocation (aka double-signing).

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

    A validator proven to have signed two blocks at the same height is considered to have committed equivocation, and the system will then permanently burn ("slash") that validator's total delegations (aka stake-backing) by 0.050000000000000000 (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "tombstoned (opens new window)," which means the validator will be permanently removed from the active set of validators, and the validator's stake-backing will only be slashed one time (regardless of how many equivocations).

    # Decreasing the value of SlashFractionDoubleSign

    Decreasing the value of the SlashFractionDoubleSign parameter will lessen the penalty for equivocation, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are secure.

    # Increasing the value of SlashFractionDoubleSign

    Increasing the value of the SlashFractionDoubleSign parameter will heighten the penalty for equivocation, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are secure.

    # SlashFractionDowntime

    Proportion of stake that is slashed for being offline too long.

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

    If a validator in the active set is offline for too long, the system will permanently burn ("slash") that validator's total delegations (aka stake-backing) by a SlashFractionDowntime of 0.000100000000000000 (0.01%). All delegators to an offending validator will lose 0.01% of all ATOMs delegated to this validator. At this point the validator will be "jailed (opens new window)," which means the validator will be temporarily removed from the active set of validators so the validator's stake-backing will only be slashed one time.

    # Decreasing the value of SlashFractionDowntime

    Decreasing the value of the SlashFractionDowntime parameter will lessen the penalty for liveness violations, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are online.

    # Increasing the value of SlashFractionDowntime

    Increasing the value of the SlashFractionDowntime parameter will heighten the penalty for liveness violations, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are online.

    # MaxEvidenceAge

    • deprecated in cosmoshub-4
    • cosmoshub-3 default: 1814400000000000

    This parameter was present in cosmoshub-3, but was deprecated (opens new window) for cosmoshub-4 genesis.

    - + diff --git a/main/governance/proposal-types/params-change/Staking.html b/main/governance/proposal-types/params-change/Staking.html index 7950062c21e..2c4898c07c4 100644 --- a/main/governance/proposal-types/params-change/Staking.html +++ b/main/governance/proposal-types/params-change/Staking.html @@ -8,11 +8,11 @@ - +

    # staking subspace

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

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

    The staking module is responsible for supporting an advanced Proof of Stake (PoS) system. In this system, holders of the native staking token of the chain can become validators and can delegate tokens to validators, ultimately determining the effective validator set for the system.

    # Governance notes on parameters

    # UnbondingTime

    The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.

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

    In order to participate as a Cosmos Hub validator or delegator, ATOMs must be bonded (also known as staking). Once bonded, ATOMs are locked by the protocol and are no longer transferrable. When ATOM unbonding is initiated, the UnbondingTime of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable.

    ATOMs are used as a bond when staking. A bond may be slashed (ie. partially destroyed) when a validator has been proven to have broken protocol rules. Why? Primarily as a solution to the "nothing-at-stake (opens new window)" problem. In the scenario of an accidental or malicious attempt to rewrite history and reverse a transaction, a new chain ("fork") may be created in parallel with the primary chain. Without the risk of losing this bond, the optimal strategy for any validator is to validate blocks on both chains so that the validator gets their reward no matter which fork wins. A bond makes it more likely that the optimal strategy for validators will be to only validate blocks for the true ("canonical") chain.

    Why is UnbondingTime so long? It can take time to discover that a validator has committed equivocation ie. signed two blocks at the same block height. If a validator commits equivocation and then unbonds before being caught, the protocol can no longer slash (ie. partially destroy) the validator's bond.

    # Decreasing the value of UnbondingTime

    Decreasing the value of the UnbondingTime parameter will reduce the time it takes to unbond ATOMs. This will make it less likely for a validator's bond to be slashed after committing equivocation (aka double-signing).

    # Increasing the value of UnbondingTime

    Increasing the value of the UnbondingTime parameter will increase the time it takes to unbond ATOMs. This will make it more likely for a validator's bond to be slashed after committing equivocation (aka double-signing).

    # Notes

    The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees.

    1 second is equal to 1,000,000,000 nanoseconds.

    # MaxValidators

    The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.

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

    Validators are ranked by stake-backing based upon the sum of their delegations, and only the top 125 are designated to be active (aka "the active set"). The active set may change any time delegation amounts change. Only active validators may participate in validating blocks, earning rewards, and governance voting. ATOM-holders may participate in staking by delegating their bonded ATOMs to one or more validators in the active set. Delegators may only earn rewards and have their governance votes count if they are delegating to an active validator, the set of which is capped by MaxValidators.

    # Decreasing the value of MaxValidators

    Decreasing the value of the MaxValidators parameter will likely reduce the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may decrease the time it takes to produce each new Cosmos Hub block.

    # Increasing the value of MaxValidators

    Increasing the value of the MaxValidators parameter will likely increase the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may increase the time it takes to produce each new Cosmos Hub block.

    # Notes

    Prior to cosmoshub-3, the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal Prop10 (opens new window) signalled agreement that the active set be increased to 125 validators. Block times were ~6.94 seconds/block with 100 validators, and are now ~7.08 seconds/block with 125 validators.

    It may be argued that after the Cosmos creators, the validator cohort may be the largest group of contributors to the Cosmos Hub community. Changes to the number of active validator participants may also affect the non-validator contributions to the Cosmos Hub.

    # KeyMaxEntries

    • The maximum number of unbondings between a delegator and validator within the unbonding period.

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

    • on-chain value:

    • cosmoshub-4 default: 7

    • cosmoshub-3 default: 7

    Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the unbonding period. Each delegator also has a limited number of times that they may redelegate from one unique validator to another unique validator within the unbonding period. This limit is set by the parameter KeyMaxEntries, which is currently 7. To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators.

    # Decreasing the value of KeyMaxEntries

    Decreasing the value of the KeyMaxEntries parameter will, within the unbonding period, decrease the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also decrease the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, decreasing this parameter's value decreases the likelihood of a performance reduction in the network.

    # Increasing the value of KeyMaxEntries

    Increasing the value of the KeyMaxEntries parameter will, within the unbonding period, increase the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also increase the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, increasing this parameter's value may increase the likelihood of a performance reduction in the network.

    # Notes

    Aleksandr (All in Bits; Fission Labs) wrote more about KeyMaxEntries here in this article (opens new window).

    # BondDenom

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

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

    When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the uatom, or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom.

    # Changing the value of BondDenom

    Changing the BondDenom parameter will make any bond transactions with uatom fail and will require the new BondDenom parameter string in order for bond transactions to be successful. Changing this parameter is likely to have breaking changes for applications that offer staking and delegation functionality.

    # HistoricalEntries

    The number of HistoricalEntries to keep.

    • on-chain value: 10000
    • cosmoshub-4 default: 10000
    • Did not exist in cosmoshub-3 genesis

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

    - + diff --git a/main/governance/proposal-types/params-change/param-index.html b/main/governance/proposal-types/params-change/param-index.html index cdb71b9d243..e48c2255948 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 8cde8be3939..465d907cbff 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 9f8c8c7fc30..6f6c29af90b 100644 --- a/main/governance/proposals/2020-10-blocks-per-year/index.html +++ b/main/governance/proposals/2020-10-blocks-per-year/index.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@ to be fine tuned over the coming years / decades. This seems like a very good starting place and a greatly beneficial change before we enter the post star gate world ☺

    - + diff --git a/main/governance/proposals/2020-11-inflation-rate-change/index.html b/main/governance/proposals/2020-11-inflation-rate-change/index.html index 67ad6567ad0..589542e4143 100644 --- a/main/governance/proposals/2020-11-inflation-rate-change/index.html +++ b/main/governance/proposals/2020-11-inflation-rate-change/index.html @@ -8,12 +8,12 @@ - +

    Cosmos Hub Inflation variable modification: Inflation Rate Change

    Quick Summary of issue

    There are 6 main variables that control the maximum, minimum, & change of the atom inflation rate for the cosmos hub. These variables can be found inside the mint module via the attached hyperlink: https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md (opens new window)

    In this proposal we will be looking at adjusting the inflation rate change variable.

    • When the cosmos hub inflation dynamics were originally designed, the goal was for the hub to go from the minimum rate (7%) to the maximum rate (20%) in roughly one year after a shock had unbond occurred. Thus, for the variable “inflation rate change” a value of .13 was chosen. Unfortunately, in practice the variable didn’t work as intended due to the fact the change in the inflation rate for the hub is proportional to the Target Bonded / current bonded ratio.

    How to select “inflation rate change” AKA Maximum Slope of the inflation curve

    The purpose of changing the network's inflation rate is to protect it from unbonding shocks that can threaten to compromise the security of the network. When the bonded ratio gets below the goal bonded ratio (currently at 66% on the hub) the inflation rate & effective yield of staked atoms goes up in order to incentivize holders to bond new ATOMs with a view to securing the network. Inversely, if we regain a desired amount of staked tokens, the yield will drop and thusly decrease effective yields for all delegators. Ideally the inflation rate starts changing fast, optimizing network security over monetary hardness. To figure out what an appropriate selection for the cosmos hub would be, I created excel sheets to run through all the different scenarios to find what value made the inflation rate react in an optimal manner. I came to the conclusion that 1 (AKA 100% per year is the maximum slope of the inflation curve) gave the most ideal characteristics, with the added benefit of simplifying the equation. I’ll give some examples on how it would react. Since unbonding is what we are protecting against, I will look at flash unbonds while the inflation rate is at the floor due to that being the #1 time of vulnerability.

    Scenarios of Shock Unbonds #1. Cosmos hub Bonded ratio flash crashes to 60%, which is not bad, but still 10% below the target. With our current variable of .13, it would take approx. 9.6 years to make it to the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach it ceiling 17.2 months after the unbond shock (assuming bonded % stays at 60% the entire time for simplicity).

    #2 Cosmos hub Bonded ratio flash crashes to 50%, starting to get a little scary, but only 25% below the 66% target. With our current variable of .13, it would take aprox. 4 years to make it to the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach it ceiling 6.4 months after the unbond.

    #3 Cosmos hub Bonded ratio flash crashes to 35%, NOT GOOD!!!! We need to get more atoms staked ASAP! With our current variable of .13, it would take aprox 25 months to reach the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach its ceiling 3.3 months after the unbond and the inflation rate would be increasing at a rate of 3.91% per month.

    All of the data above, graphs, and much more can be found at https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0 (opens new window)

    Possible Risks / Benefits

    I will split this up into two sections, doing nothing & doing the proposed changes.

    Inflation rate Change (Max Slope of inflation curve)

    1a) Doing nothing Risks / Benefits: In this case, I do believe there are risks to do nothing. Currently the inflation rate of the hub is not very reactive to unbond shocks (as seen above). This can lead to network security risks if an economic actor with bad intent wanted to try and destabilize the hub. On the other hand, changing any variable within a system can cause unwanted consequences. There is no way to get rid of this risk entirely, luckily the inflation mechanics are fairly simple and easy to model with excel spreadsheets. Additionally, none of these changes will affect the consensus mechanism, they will just impact the minting of new atoms.

    1b) Changing rate to 1 Risks / Benefits: As stated above, there are always risks to changing variables within complex systems. Changing this variable will undoubtedly greatly increase the reactivity of the hub to unbonding shocks. Overall, this seems very beneficial due to the extremely slow reaction time of the hub currently. Also, it brings the hub closer to the original goal of 1 year from the min to the max in a unbonding shock scenario. Due to the fact the inflation curve slope is proportional to the goal vs current bonded ratio, it isn’t possible to hit the original goal directly, but this brings it much closer to reality.

    Conclusion

    I know there isn’t a right answer for maximum slope. I fully expect this to be fine-tuned over the coming years / decades. Future proposals may adjust this number by a factor of (.5 – 2+) but this gets us in the right ball park just in time for Stargate. ☺

    - + diff --git a/main/governance/proposals/2021-01-atom2021_marketing/index.html b/main/governance/proposals/2021-01-atom2021_marketing/index.html index 47511826b6c..dd6b7dde731 100644 --- a/main/governance/proposals/2021-01-atom2021_marketing/index.html +++ b/main/governance/proposals/2021-01-atom2021_marketing/index.html @@ -8,7 +8,7 @@ - + @@ -16,6 +16,6 @@ We have decided that it is high time we coordinated, orchestrated efforts so that we see $ATOM becoming known to this space and beyond, We are convinced that people who see the potential, inherent value and ethos of this project will not be able to unsee and that they will be converted to believers and evangelists like ourselves.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Scope of Campaigns:

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

    Release of funds:

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

    Funds’ Distribution:

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

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

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

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

    MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k

    Refund of Unspent Funds to the Pool:

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

    Expectations from the rest of entities involved in the Hub:

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

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

    AiB’s General Obligations to the Community:

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

    Closing Remarks:

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

    - + diff --git a/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html b/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html index c282764c5e1..9be525afdaa 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 5c09ce1c846..3d9032c0c20 100644 --- a/main/governance/proposals/2021-01-stargate-upgrade-b/index.html +++ b/main/governance/proposals/2021-01-stargate-upgrade-b/index.html @@ -8,11 +8,11 @@ - +

    # Stargate Upgrade- Second time is a charm

    Stargate Upgrade banner graphic

    # by Iqlusion

    Jan 28, 2021

    # Key Results


    If passed, this governance proposal would commit the Cosmos Hub to halting the cosmoshub-3 at 06:00 UTC on Feb 18th exporting the state and starting cosmoshub-4 based on gaia 4.0.0

    # Context


    In Proposal 27 (opens new window), Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.

    Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate.

    After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub.

    # Aborting of Proposal 35

    Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade.

    # The Stargate Plan


    The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the original Stargate Upgrade Proposal 27 (opens new window). It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:

    1. Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software.

    2. Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade.

    3. Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready.

    4. Report back to the Hub on the success of the integration process.

      • We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.

      • Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.

    5. At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.

    # Stargate Plan Results


    # 1. Ecoystem Participation

    The results of ecosystem participation and engagement are available in our Stargate Ecosystem Readiness Report (opens new window). We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved.

    The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post "How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe" (opens new window).

    Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented.

    We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.

    # 2. Critical Partner Support

    We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the IBC Readiness Matrix (opens new window) that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.

    We also completed and delivered a completed legacy Amino Audit, AminoRest & You (opens new window). The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data.

    All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain.

    # 3. Documentation and Self-Certification

    Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces.

    Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos #stargate Discord (opens new window) channel.

    We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality.

    # Conclusion

    The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate repository (opens new window).

    # Cosmos Stargate Integration Success

    Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.

    # Prop 29

    This upgrade also implements the fund recovery procedure defined in proposal 29. The code is here (opens new window). As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet.

    # Stargate Upgrade Steps


    The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:

    The upgrade instructions will continue to improve as a living document (opens new window). The Gaia maintainers will continue to improve the instruction below.

    This section is with the current gaia 2.0.* implementation.

    1. Validators should set their gaia with a halt time of 1613628000ie. 06:00 UTC on Feb 18th in Unix time.

    2. Validators should then export the current cosmos state with gaiad export > cosmoshub-3-export.json

    3. Validators should determine the height of the last block as last-cosmoshub-3_block. This can be easily determined from gaia logs.

    4. Validators should back up their .gaiad directory.

    This section is with the upgraded gaia 4.0.* implemenataion.

    1. Validators should then migrate the exported genesis state. gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json
    2. Validators should (AFTER ENSURING IT IS BACKED UP!) delete their ~/.gaiad directory and create a new one with gaiad init [name] and then edit their configuration files or recover the config files from backups.
    3. Validators should then start cosmoshub-4 with gaiad start. Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by gaiad start --x-crisis-skip-assert-invariants.

    Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.

    # Time of the Upgrade


    We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC

    • West Coast USA: 10 PM on Feb 17
    • East Coast USA: 1 AM on Feb 18
    • Central Europe: 7 AM on Feb 18
    • Seoul: 5 PM on Feb 18

    # The git commit of Gaia that we are upgrading to


    a279d091c6f66f8a91c87943139ebaecdd84f689

    # What we're doing while voting is happening


    We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.

    We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets.

    Stargate Ecosystem Readiness Report (opens new window) is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating.

    # What is the upgrade abort process


    There are multiple circumstances where the proposal should be abandoned even if it passes:

    1. A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A signaling proposal will be made to indicate a vulnerability or defect in the upgrade has been found. A future proposal will be made to the Hub to upgrade to the new target commit.

    2. The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from cosmoshub-4. In this case, the validator set should restart cosmoshub-3 at last-cosmoshub-3_block and a future governance proposal will be done to initiate another upgrade.

    - + diff --git a/main/governance/proposals/2021-01-stargate-upgrade/index.html b/main/governance/proposals/2021-01-stargate-upgrade/index.html index a6864ae796e..48a32064ec0 100644 --- a/main/governance/proposals/2021-01-stargate-upgrade/index.html +++ b/main/governance/proposals/2021-01-stargate-upgrade/index.html @@ -8,11 +8,11 @@ - +

    # Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade

    Stargate Upgrade banner graphic

    # by Iqlusion

    Jan 11, 2021

    # Key Results


    If passed, this governance proposal would commit the Cosmos Hub to halting the cosmoshub-3 at 06:00 UTC on Jan 28th exporting the state and starting cosmoshub-4 based on gaia 3.0.

    # Context


    In Proposal 27 (opens new window), Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.

    Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate.

    After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub.

    # The Stargate Plan


    The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the original Stargate Upgrade Proposal 27 (opens new window). It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:

    1. Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software.

    2. Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade.

    3. Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready.

    4. Report back to the Hub on the success of the integration process.

      • We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.

      • Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.

    5. At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.

    # Stargate Plan Results


    # 1. Ecoystem Participation

    The results of ecosystem participation and engagement are available in our Stargate Ecosystem Readiness Report (opens new window). We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved.

    The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post "How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe" (opens new window).

    Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented.

    We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.

    # 2. Critical Partner Support

    We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the IBC Readiness Matrix (opens new window) that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.

    We also completed and delivered a completed legacy Amino Audit, AminoRest & You (opens new window). The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data.

    All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain.

    # 3. Documentation and Self-Certification

    Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces.

    Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos #stargate Discord (opens new window) channel.

    We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality.

    # Conclusion

    The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate repository (opens new window).

    # Cosmos Stargate Integration Success

    Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.

    # Prop 29

    This upgrade also implements the fund recovery procedure defined in proposal 29. The code is here (opens new window). As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet.

    # Stargate Upgrade Steps


    The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:

    This section is with the current gaia 2.0.* implementation.

    1. Validators should set their gaia with a halt time of 1611813600ie. 06:00 UTC on Jan 28th in Unix time.

    2. Validators should then export the current cosmos state with gaiad export > cosmoshub-3-export.json

    3. Validators should determine the height of the last block as last-cosmoshub-3_block.

    4. Validators should back up their .gaiad directory.

    This section is with the upgraded gaia 3.0.* implemenataion.

    1. Validators should then migrate the exported genesis state. gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json
    2. Validators should (AFTER ENSURING IT IS BACKED UP!) delete their ~/.gaiad directory and create a new one with gaiad init [name] and then edit their configuration files or recover the config files from backups.
    3. Validators should then start cosmoshub-4 with gaiad start. Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by gaiad start --x-crisis-skip-assert-invariants.

    Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.

    # Time of the Upgrade


    We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Jan 28th, 2021 at 0600 UTC

    • West Coast USA: 10 PM on Jan 27
    • East Coast USA: 1 AM on Jan 28
    • Central Europe: 7 AM on Jan 28
    • Seoul: 5 PM on Jan 28

    # The git commit of Gaia that we are upgrading to


    d974b27a8caf8cad3b06fbe4678871e4b0b69a51

    # What we're doing while voting is happening


    We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.

    A testnet with the final version of Gaia 3.0 will be running to assist with integrations.

    Stargate Ecosystem Readiness Report (opens new window) is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating.

    # What is the upgrade abort process


    There are multiple circumstances where the proposal should be abandoned even if it passes:

    1. A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A future proposal will be made to the Hub to upgrade to the new target commit.

    2. The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from cosmoshub-4. In this case, the validator set should restart cosmoshub-3 at last-cosmoshub-3_block and a future governance proposal will be done to initiate another upgrade.

    - + diff --git a/main/governance/proposals/2021-03-enable-ibc-transfers/index.html b/main/governance/proposals/2021-03-enable-ibc-transfers/index.html index 1a501f84fe9..45ac5395a94 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 53c64a1db5b..61c83a248db 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 d29e0edb947..ad1b016484e 100644 --- a/main/governance/proposals/2021-04-lower-deposit-requirement/index.html +++ b/main/governance/proposals/2021-04-lower-deposit-requirement/index.html @@ -8,11 +8,11 @@ - +

    # Parameter change: lower minimum proposal deposit amount

    # Summary

    The current deposit amount of 512 ATOMs prohibits valuable governance activity from small holders or those with most of their ATOM staked. We propose lowering the requirement to 64 ATOMS.

    # Objectives

    1. Enable community members with good ideas but little capital to participate in governance and request resources from the community pool treasury.
    2. Improve the governance UX for holders who keep most of their ATOM staked.
    3. Increase utilisation of treasury (currently 666,457 ATOM, approximately $14 MM USD, at time of writing).
    4. Accelerate Cosmos Hub development and growth.

    # Background

    Current deposit is 512 ATOMs (approximately $10k USD today). The ATOM price when the community treasury was activated (2019-05-03) was $4.99 (source: CoinMarketCap), meaning the total required deposit to submit a proposal was $2,555. Today, most proposers must coordinate with large ATOM holders to request additional funds in order to meet the minimum deposit requirements. This also applies to large ATOM holders who want to be active in governance but do not have enough liquid ATOM to meet the deposit requirements, as staked ATOM cannot be used to post deposits.

    # Proposers

    Federico Kunze Küllmer (Tharsis) and Sam Hart (Interchain).

    Credit to Gavin Birch (Figment Networks) and the Cosmos Governance Working Group (GWG) for initiating a recent conversation that motivated this proposal.

    # Proposed Parameter Change

    Change the minimum proposal deposit requirement from 512 ATOMs (aprox. $10,000 USD) to 64 ATOMs (aprox. $1,300 USD).

    Note: Parameters are denominated in micro-ATOMs, as described in the governance parameter list (opens new window).

    # Risks

    This change makes it easier to submit spam proposals.

    While this is true, in order to fully mitigate spam the Cosmos Hub must increase the minimum deposit required for proposal submission (opens new window).

    By increasing the number of submissions, voter participation or the level of consideration given to each proposal may decrease.

    We believe this is a justifiable trade-off for promoting more community-driven initiatives and enthusiasm for advancing Cosmos. As we lower the barrier to entry for governance participation, we invite community members to take this opportunity to enact more effective and efficient governance practices. The upcoming Groups, Authz, and Interchain Accounts modules will provide powerful abstractions to this end.

    # Alternatives

    Wait for the Cosmos Hub to adopt proposed changes to the Governance module for variable deposit amounts, quorom thresholds, and voting periods.

    These initiatives should not be mutually exclusive. While research and development of these features is ongoing, the Cosmos Hub will benefit from this parameter change today, as well as the precedent it sets for self-improving governance.

    Since the ATOM price fluctuates with respect to USD, make proposal thresholds reference a stable price oracle

    This is an interesting design space, however it becomes more plausible if and when the Cosmos Hub adds a decentralized exchange that can be used to produce a reference rate. Lowering the proposal threshold is a temporary solution that will help in the short-term.

    # Governance Votes

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

    • YES: You approve the parameter change proposal to decrease the governance proposal deposit requirements from 512 to 64 ATOMs.
    • NO: You disapprove of the parameter change in its current form (please indicate in the Cosmos Forum why this is the case).
    • NO WITH VETO: You are strongly opposed to this change and will exit the network if passed.
    • ABSTAIN: You are impartial to the outcome of the proposal.
    - + diff --git a/main/governance/proposals/2021-04-prop34-continuation/index.html b/main/governance/proposals/2021-04-prop34-continuation/index.html index c0d02431a37..f5ac694efea 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 46f6f175f72..ebc1e753c93 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 43a93d31495..de8f43c3e85 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.

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

    Strangelove Ventures has delivered an IBC Middleware module (opens new window) that will allow the hub to play the role of IBC Router that was always envisioned for it. Passing of this propsal will begin the era of the Hub offering interchain services to other chains and profiting from those relationships.

    To pay the hub validators and stakers, this proposal implements a governance configurable fee (which we propose should be initially set to 0.0 to encourage adoption) that will be taken out of each packet and given to the community pool. The community pool will then periodically trade these fees for ATOM and distribute them to staked holders. The exact distribution method of these fees is left TBD in this proposal as it is not initially required and can be implemented in a future governance proposal. One way to do this would be using the Groups module (opens new window), Community spend proposals and the Gravity DEX.

    A vote YES on this proposal indicates that this feature should be included in the next hub upgrade. We (as the Hub) believe that time is critical right now and we cannot wait to begin providing this service to other chains. A NO vote indicates that this shouldn't be included in the next upgrade.

    - + diff --git a/main/governance/proposals/index.html b/main/governance/proposals/index.html index 5bfe903f2f9..89cca18c1f7 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 78834afed75..a74923fcc55 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 e995a4f867e..c8c2b0f625d 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 65ecfcac8af..6686a28f402 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 5cebcf62b4d..4319ef64c0e 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 f6ba649ed2a..07d5d747fb3 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 6f291cf62f3..b1a1aa1b678 100644 --- a/main/guidelines/code-guidelines.html +++ b/main/guidelines/code-guidelines.html @@ -8,7 +8,7 @@ - + @@ -732,6 +732,6 @@

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

    # Use Subtests

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

    # Avoid writing directly in the stdout

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

    # Avoid panic

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

    - + diff --git a/main/hub-overview/index.html b/main/hub-overview/index.html index 42b4d8d7c2c..08bc814be2e 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 7499f0462db..96d647f9373 100644 --- a/main/hub-overview/overview.html +++ b/main/hub-overview/overview.html @@ -8,11 +8,11 @@ - + -

    # v11 Upgrade

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

    To upgrade from v10 check the upgrade guide

    Welcome to the Cosmos Hub

    # Introduction

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

    # The ATOM

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

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

    # Cosmos Hub Wallets

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

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

    # Cosmos Hub Explorers

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

    # Cosmos Hub CLI

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

    # Running a full-node on the Cosmos Hub Mainnet

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

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

    # Join the Community

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

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

    - +

    # v12 Upgrade

    Cosmos Hub will be upgraded to v12 (opens new window) at block height: 16,985,500 (opens new window)

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

    # 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 1904bb05123..af6b9d55926 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 2e48e201458..150e9f1f33e 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 ed199bc5b31..997236835aa 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 e182f3983ef..3711806100c 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 v13 upgrade directory cp ~/go/bin/gaiad ~/.gaia/cosmovisor/upgrades/v13/bin/gaiad

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

    - + diff --git a/main/hub-tutorials/live-upgrade-tutorial.html b/main/hub-tutorials/live-upgrade-tutorial.html index 619d13df01c..7ad812d6971 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 9969d1914a7..fbda0d2493d 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 e91b8871812..5ee51f285ad 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 46535c98aa7..69eb7f9900a 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 cf8f4f2bc2e..1d21ac6eaec 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 a1cbcfbed26..730085e345f 100644 --- a/main/ko/gaia-tutorials/installation.html +++ b/main/ko/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ build_tags: netgo,ledger go: go version go1.12.5 darwin/amd64

    # 빌드 태그

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

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

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

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

    # 개발자 워크플로우

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

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

    # 다음 절차

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

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

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

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

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

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

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

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

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

    - + diff --git a/main/ko/gaia-tutorials/what-is-gaia.html b/main/ko/gaia-tutorials/what-is-gaia.html index 612362162b3..7ddfbc09806 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 b1ae99470f0..5cea188fb1e 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 e6169dc9785..3947d44f8af 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 354fc5835fa..f11b88e1997 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 6172a0636a5..9a7b6d32810 100644 --- a/main/ko/launch/blog-1-kr.html +++ b/main/ko/launch/blog-1-kr.html @@ -8,11 +8,11 @@ - +

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    # 공식 코스모스 소통 채널

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

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

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

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

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

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

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

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

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

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

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

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

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

    # Thank you to Cosmos Korea

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

    - + diff --git a/main/ko/launch/blog-2-kr.html b/main/ko/launch/blog-2-kr.html index 771ba0fb072..56f21cf5a0b 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 615819fc99a..127c8d711ae 100644 --- a/main/ko/resources/gaiad.html +++ b/main/ko/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -343,6 +343,6 @@ echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc

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

    - + diff --git a/main/ko/resources/genesis.html b/main/ko/resources/genesis.html index d0bd9e6f4ff..27db5af70e9 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 47f860712be..5cc32cb579f 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 1a282aec0f5..2fc281d8159 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 8e3f785b10e..5d7b4e55059 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 f39b49e008f..caac2a708c1 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 59b69ffdc5e..982a535ac15 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 016fbbd34cd..1a2d035fa40 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 94b372a4f87..b6277846b51 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 8f8c27bbf9e..1df327b5805 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 76a74a1dbd2..d6d8e53daad 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 c45760d0965..182a16ccab7 100644 --- a/main/launch/index.html +++ b/main/launch/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/migration/cosmoshub-2.html b/main/migration/cosmoshub-2/cosmoshub-2.html similarity index 66% rename from main/migration/cosmoshub-2.html rename to main/migration/cosmoshub-2/cosmoshub-2.html index d0974d45682..90eb179012b 100644 --- a/main/migration/cosmoshub-2.html +++ b/main/migration/cosmoshub-2/cosmoshub-2.html @@ -8,11 +8,11 @@ - + -

    # Cosmos Hub 2 Upgrade Instructions

    The following document describes the necessary steps involved that full-node operators +

    # Cosmos Hub 2 Upgrade Instructions

    The following document describes the necessary steps involved that full-node operators must take in order to upgrade from cosmoshub-2 to cosmoshub-3. The Tendermint team will post an official updated genesis file, but it is recommended that validators execute the following instructions in order to verify the resulting genesis file.

    There is a strong social consensus around proposal Cosmos Hub 3 Upgrade Proposal E @@ -117,7 +117,7 @@ found in the riot validator room (opens new window).

  • We expect that developers with iOS or Android based apps may have to notify their users of downtime 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.
  • - +be able to just spin up new nodes and migrate to the new apis.
    + diff --git a/main/migration/cosmoshub-3.html b/main/migration/cosmoshub-3/cosmoshub-3.html similarity index 70% rename from main/migration/cosmoshub-3.html rename to main/migration/cosmoshub-3/cosmoshub-3.html index d8b5c79b03a..f824af957aa 100644 --- a/main/migration/cosmoshub-3.html +++ b/main/migration/cosmoshub-3/cosmoshub-3.html @@ -8,11 +8,11 @@ - + -

    # Cosmos Hub 3 Upgrade Instructions

    The following document describes the necessary steps involved that validators and full node operators +

    # Cosmos Hub 3 Upgrade Instructions

    The following document describes the necessary steps involved that validators and full node operators must take in order to upgrade from cosmoshub-3 to cosmoshub-4. The Cosmos teams will post an official cosmoshub-4 genesis file, but it is recommended that validators execute the following instructions in order to verify the resulting genesis file.

    There is a strong social consensus around proposal Cosmos Hub 4 Upgrade Proposal @@ -26,7 +26,7 @@ 1. Starting the Gaia v4.0.x instance to resume the Cosmos hub chain at a height of + 1.

    Specific instructions for validators are available in Upgrade Procedure, and specific instructions for full node operators are available in Guidance for Full Node Operators.

    Upgrade coordination and support for validators will be available on the #validators-verified channel of the Cosmos Discord (opens new window).

    The network upgrade can take the following potential pathways:

    1. Happy path: Validator successfully migrates the cosmoshub-3 genesis file to a cosmoshub-4 genesis file, and the validator can successfully start Gaia v4 with the cosmoshub-4 genesis within 1-2 hours of the scheduled upgrade.
    2. Not-so-happy path: Validators have trouble migrating the cosmoshub-3 genesis to a cosmoshub-4 genesis, but can obtain the genesis file from the Cosmos mainnet github repo and can successfully start Gaia v4 within 1-2 hours of the scheduled upgrade.
    3. Abort path: In the rare event that the team becomes aware of critical issues, which result in an unsuccessful migration within a few hours, the upgrade will be announced as aborted on the #validators-verified channel of Discord (opens new window), and validators will need to resume running cosmoshub-3 network without any updates or changes. -A new governance proposal for the upgrade will need to be issued and voted on by the community.

    # Migrations

    These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.

    If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.

    1. App and Modules Migration (opens new window)
    2. Chain Upgrade Guide to v0.40 (opens new window)
    3. REST Endpoints Migration (opens new window)
    4. Collection of breaking changes from changelogs
    5. Inter-Blockchain Communication (IBC)– cross-chain transactions (opens new window)
    6. Protobuf Migration – blockchain performance & dev acceleration (opens new window)
    7. State Sync – minutes to sync new nodes (opens new window)
    8. Full-Featured Light Clients (opens new window)
    9. Chain Upgrade Module – upgrade automation (opens new window)

    If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:

    https://github.com/cosmos/gaia/issues/569#issuecomment-767910963 (opens new window)

    # Preliminary

    Many changes have occurred to the Cosmos SDK and the Gaia application since the latest +A new governance proposal for the upgrade will need to be issued and voted on by the community.

    # Migrations

    These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.

    If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.

    1. App and Modules Migration (opens new window)
    2. Chain Upgrade Guide to v0.40 (opens new window)
    3. REST Endpoints Migration (opens new window)
    4. Collection of breaking changes from changelogs
    5. Inter-Blockchain Communication (IBC)– cross-chain transactions (opens new window)
    6. Protobuf Migration – blockchain performance & dev acceleration (opens new window)
    7. State Sync – minutes to sync new nodes (opens new window)
    8. Full-Featured Light Clients (opens new window)
    9. Chain Upgrade Module – upgrade automation (opens new window)

    If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:

    https://github.com/cosmos/gaia/issues/569#issuecomment-767910963 (opens new window)

    # Preliminary

    Many changes have occurred to the Cosmos SDK and the Gaia application since the latest major upgrade (cosmoshub-3). These changes notably consist of many new features, protocol changes, and application structural changes that favor developer ergonomics and application development.

    First and foremost, IBC (opens new window) following @@ -186,7 +186,7 @@ snapshot-interval = 0 # snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). snapshot-keep-recent = 2 -

    - +
    + diff --git a/main/migration/cosmoshub-3[ES_es].html b/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html similarity index 71% rename from main/migration/cosmoshub-3[ES_es].html rename to main/migration/cosmoshub-3/cosmoshub-3[ES_es].html index 904553da3a6..244fe22e612 100644 --- a/main/migration/cosmoshub-3[ES_es].html +++ b/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html @@ -8,11 +8,11 @@ - + -

    # Instrucciones de actualización del Cosmos Hub 3

    El siguiente documento describe los pasos necesarios que deben seguir los operadores de un full node para actualizar de cosmoshub-3 a cosmoshub-4. 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.

    Existe un amplio consenso social en torno a la propuesta de actualización del Cosmos Hub 4 sobre el cosmoshub-3. Siguiendo las propuestas #27 (opens new window), #35 (opens new window) y #36 (opens new window). Se indica que el procedimiento de actualización debe realizarse el 18 de febrero de 2021 a las 06:00 UTC.

    # Migraciones

    Estos capítulos contienen todas las guías de migración para actualizar tu aplicación y módulos a Cosmos v0.40 Stargate.

    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.

    1. Migración de aplicaciones y módulos
    2. Guía de actualización de la cadena a v0.41 (opens new window)
    3. Migración de endpoints REST (opens new window)
    4. Recopilación de modificaciones de ruptura de los registros de cambios (opens new window)
    5. Comunicación entre cadenas de bloques (IBC) - transacciones entre cadenas (opens new window)
    6. Migración de Protobuf - rendimiento de la cadena de bloques y aceleración del desarrollo (opens new window)
    7. Sincronización de estados - minutos para sincronizar nuevos nodos (opens new window)
    8. Clientes ligeros con todas las funciones (opens new window)
    9. Módulo de actualización de la cadena - automatización de la actualización (opens new window)

    Si quieres probar el procedimiento antes de que se produzca la actualización el 18 de febrero, consulta este post (opens new window) en relación a ello.

    # Preliminares

    Se han producido muchos cambios en el SDK de Cosmos y en la aplicación Gaia desde la última gran actualización (cosmoshub-3). 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.

    En primer lugar, se habilitará IBC (opens new window) siguiendo los estándares de Interchain (opens new window). 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 sitio web de Stargate (opens new window).

    La aplicación Gaia (opens new window) v4.0.0 es lo que los operadores de nodos actualizarán y ejecutarán en esta próxima gran actualización. Tras la versión v0.41.0 del SDK de Cosmos y la v0.34.3 de Tendermint.

    # Principales actualizaciones

    Hay muchas características y cambios notables en la próxima versión del SDK. Muchos de ellos se discuten a de forma general aquí (opens new window).

    Algunos de los principales cambios que hay que tener en cuenta a la hora de actualizar como desarrollador o cliente son los siguientes:

    • Protocol Buffers: Inicialmente el SDK de Cosmos utilizaba codecs 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 aquí (opens new window).
    • CLI: 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, gaiad y gaiacli, que estaban separados y podían utilizarse para diferentes interacciones con la cadena de bloques. Ambos se han fusionado en un solo comando gaiad que ahora soporta los comandos que antes soportaba el gaiacli.
    • Configuración del nodo: Anteriormente los datos de la cadena de bloques y la configuración de los nodos se almacenaban en ~/.gaia/, ahora residirán en ~/.gaia/, 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.

    # Riesgos

    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.

    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.

    # Recuperación

    Antes de exportar el estado de cosmoshub-3, 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 .gaia.

    Es muy importante hacer una copia de seguridad del archivo .gaia/data/priv_validator_state.json 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.

    En el caso de que la actualización no tenga éxito, los validadores y operadores deben volver a actualizar a +

    # Instrucciones de actualización del Cosmos Hub 3

    El siguiente documento describe los pasos necesarios que deben seguir los operadores de un full node para actualizar de cosmoshub-3 a cosmoshub-4. 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.

    Existe un amplio consenso social en torno a la propuesta de actualización del Cosmos Hub 4 sobre el cosmoshub-3. Siguiendo las propuestas #27 (opens new window), #35 (opens new window) y #36 (opens new window). Se indica que el procedimiento de actualización debe realizarse el 18 de febrero de 2021 a las 06:00 UTC.

    # Migraciones

    Estos capítulos contienen todas las guías de migración para actualizar tu aplicación y módulos a Cosmos v0.40 Stargate.

    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.

    1. Migración de aplicaciones y módulos
    2. Guía de actualización de la cadena a v0.41 (opens new window)
    3. Migración de endpoints REST (opens new window)
    4. Recopilación de modificaciones de ruptura de los registros de cambios (opens new window)
    5. Comunicación entre cadenas de bloques (IBC) - transacciones entre cadenas (opens new window)
    6. Migración de Protobuf - rendimiento de la cadena de bloques y aceleración del desarrollo (opens new window)
    7. Sincronización de estados - minutos para sincronizar nuevos nodos (opens new window)
    8. Clientes ligeros con todas las funciones (opens new window)
    9. Módulo de actualización de la cadena - automatización de la actualización (opens new window)

    Si quieres probar el procedimiento antes de que se produzca la actualización el 18 de febrero, consulta este post (opens new window) en relación a ello.

    # Preliminares

    Se han producido muchos cambios en el SDK de Cosmos y en la aplicación Gaia desde la última gran actualización (cosmoshub-3). 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.

    En primer lugar, se habilitará IBC (opens new window) siguiendo los estándares de Interchain (opens new window). 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 sitio web de Stargate (opens new window).

    La aplicación Gaia (opens new window) v4.0.0 es lo que los operadores de nodos actualizarán y ejecutarán en esta próxima gran actualización. Tras la versión v0.41.0 del SDK de Cosmos y la v0.34.3 de Tendermint.

    # Principales actualizaciones

    Hay muchas características y cambios notables en la próxima versión del SDK. Muchos de ellos se discuten a de forma general aquí (opens new window).

    Algunos de los principales cambios que hay que tener en cuenta a la hora de actualizar como desarrollador o cliente son los siguientes:

    • Protocol Buffers: Inicialmente el SDK de Cosmos utilizaba codecs 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 aquí (opens new window).
    • CLI: 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, gaiad y gaiacli, que estaban separados y podían utilizarse para diferentes interacciones con la cadena de bloques. Ambos se han fusionado en un solo comando gaiad que ahora soporta los comandos que antes soportaba el gaiacli.
    • Configuración del nodo: Anteriormente los datos de la cadena de bloques y la configuración de los nodos se almacenaban en ~/.gaia/, ahora residirán en ~/.gaia/, 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.

    # Riesgos

    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.

    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.

    # Recuperación

    Antes de exportar el estado de cosmoshub-3, 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 .gaia.

    Es muy importante hacer una copia de seguridad del archivo .gaia/data/priv_validator_state.json 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.

    En el caso de que la actualización no tenga éxito, los validadores y operadores deben volver a actualizar a gaia v2.0.15 con v0.37.15 del Cosmos SDK y restaurar a su último snapshot antes de reiniciar sus nodos.

    # Procedimiento de actualización

    Nota: Se asume que actualmente está operando un nodo completo ejecutando gaia v2.0.15 con v0.37.15 del Cosmos SDK.

    El hash de la versión/commit de Gaia v2.0.15: 89cf7e6fc166eaabf47ad2755c443d455feda02e

    1. Compruebe que está ejecutando la versión correcta (v2.0.15) de gaiad:

      Copy $ gaiad version --long @@ -103,6 +103,6 @@ # (0 para conservar todas). snapshot-keep-recent = 2
    - + diff --git a/main/migration/cosmoshub-3[KR_kr].html b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html similarity index 67% rename from main/migration/cosmoshub-3[KR_kr].html rename to main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html index c5fac8feaf9..f7cfd2379f0 100644 --- a/main/migration/cosmoshub-3[KR_kr].html +++ b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html @@ -8,13 +8,13 @@ - + -

    # 코스모스 허브 3 업그레이드 매뉴얼

    이 문서는 풀노드 운영자가 cosmoshub-3에서 cosmoshub-4 업그레이드를 진행하기 위한 과정을 설명합니다. +

    # 코스모스 허브 3 업그레이드 매뉴얼

    이 문서는 풀노드 운영자가 cosmoshub-3에서 cosmoshub-4 업그레이드를 진행하기 위한 과정을 설명합니다. 텐더민트 팀이 공식적인 업데이트된 제네시스 파일을 업로드할 예정이나, 각 검증인이 해당 제네시스 파일을 각자 검증할 것을 권장합니다.

    현재 cosmoshub-3에서는 Cosmos Hub 4 Upgrade Proposal에 대한 사회적 합의가 도달된 것으로 판단됩니다. -프로포절 #27 (opens new window), #35 (opens new window) and #36 (opens new window)의 내용에 따라 업그레이드 과정은 2021년 2월 18일, 06:00 UTC에 진행될 예정입니다.

    # 마이그레이션

    다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.

    만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.

    1. 앱 및 모듈 마이그레이션 (opens new window)
    2. 코스모스 v0.40 체인 업그레이드 가이드 (opens new window)
    3. REST 엔드포인트 마이그레이션 (opens new window)
    4. 각 버전 체인지로그의 breaking change 모음
    5. Inter-Blockchain Communication (IBC)– 체인간 트랜잭션 (opens new window)
    6. Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선 (opens new window)
    7. State Sync – 몇 분 내에 완료되는 노드 동기화 (opens new window)
    8. 강력한 기능을 포함한 라이트 클라이언트 (opens new window)
    9. 체인 업그레이드 모듈 – 업그레이드 자동화 (opens new window)

    만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 이 글 (opens new window)을 참고하세요

    # 사전 정보

    지난 코스모스 허브 업그레이드(cosmoshub-3) 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다. +프로포절 #27 (opens new window), #35 (opens new window) and #36 (opens new window)의 내용에 따라 업그레이드 과정은 2021년 2월 18일, 06:00 UTC에 진행될 예정입니다.

    # 마이그레이션

    다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.

    만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.

    1. 앱 및 모듈 마이그레이션 (opens new window)
    2. 코스모스 v0.40 체인 업그레이드 가이드 (opens new window)
    3. REST 엔드포인트 마이그레이션 (opens new window)
    4. 각 버전 체인지로그의 breaking change 모음
    5. Inter-Blockchain Communication (IBC)– 체인간 트랜잭션 (opens new window)
    6. Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선 (opens new window)
    7. State Sync – 몇 분 내에 완료되는 노드 동기화 (opens new window)
    8. 강력한 기능을 포함한 라이트 클라이언트 (opens new window)
    9. 체인 업그레이드 모듈 – 업그레이드 자동화 (opens new window)

    만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 이 글 (opens new window)을 참고하세요

    # 사전 정보

    지난 코스모스 허브 업그레이드(cosmoshub-3) 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다. 변경사항에는 신규 기능, 프로토콜 변경사항, 애플리케이션 구조 변경 등이 포함되었으며, 애플리케이션 개발 과정의 개선이 기대됩니다.

    우선, 인터체인 표준 (opens new window)를 따른 IBC (opens new window)이 활성화될 예정입니다. 또한 효율성, 노드 동기화, 추후 블록체인 업데이트 과정이 개선됩니다. 자세한 내용은 스타게이트 웹사이트 (opens new window)를 참고하세요.

    __이번 업그레이드에서 풀 노드 운영자 업그레이드를 진행하는 것은 Gaia (opens new window) 애플리케이션 v4.0.0입니다. 이번 버전의 Gaia 애플리케이션은 코스모스 SDK v0.41.0 그리고 텐더민트 v0.34.3 기반으로 빌드되었습니다.

    # 주요 업데이트

    이번 SDK의 릴리즈에서는 다수의 기능 및 변경사항이 적용되어 있습니다. 이에 대한 설명은 여기 (opens new window)에서 확인하실 수 있습니다.

    개발자 또는 클라이언트로서 참고해야할 점은 다음과 같습니다:

    • 프로토콜 버퍼(Protocol BufferS): 이전 버전의 코스모스 SDK에서는 인코딩 및 디코딩 과정에서 아미노 코덱을 사용했습니다. 이번 코스모스 SDK 버전에서는 프로토콜 버퍼가 내장되어있습니다. 프로토콜 버퍼를 통해 애플리케이션은 속도, 가독성, 편의성, 프로그래밍 언어 간 상호호환성 등의 부분에서 상당한 개선이 있을 것으로 기대됩니다. 더 읽기 (opens new window)
    • CLI: 이전 버전의 코스모스 SDK에서는 블록체인의 CLI와 데몬은 별도의 바이너리로 구성되었으며, 실행하는 블록체인 인터랙션에 따라 gaiadgaiacli 바이너리가 구분되었습니다. 이번 버전의 코스모스 SDK에서는 두 바이너리가 하나의 gaiad 바이너리로 통합되었으며 해당 바이너리 내에서 기존에 gaiacli에서 사용했던 명령어를 지원합니다.
    • 노드 구성: 이전 버전의 코스모스 SDK에서는 블록체인 데이터와 노드 설정이 ~/.gaia/에 저장되었지만, 이번 버전에서는 해당 정보다 ~/.gaia/ 디렉토리에 보관됩니다. 만약 블록체인 데이터 또는 노드 설정을 관리하는 스크립트를 사용하시는 경우 해당 스크립트에서 패스를 변경해야합니다.

    # 위험 고지

    검증인이 컨센서스 노드 업그레이드를 진행하는 절차에서 이중서명에 따른 슬래싱의 위험이 존재합니다. 이 과정에서 가장 중요한 것은 검증인을 가동하고 서명을 시작하기 전 소프트웨어 버전을 확인하고 제네시스 파일의 해시를 확인하시기를 바랍니다.

    블록체인 검증인이 할 수 있는 가장 위험한 행동은 네트워크 시작 과정에서 존재했던 실수를 인지하고 업그레이드 과정을 처음부터 다시 시작하는 것입니다. 만약 업그레이드 과정에서 실수가 발생했다면 네트워크가 시작되는 것을 기다린 후에 실수를 고치는 것을 권장합니다. 만약 네트워크가 중단되었고 본인의 검증인을 실제 시작된 네트워크가 아닌 다른 제네시스 파일로 가동한 경우, 검증인을 리셋하는 과정에 대해 텐더민트 검증인으로 부터 조언을 구할 것을 권장합니다.

    # 복구

    각 검증인은 cosmoshub-3 상태를 내보내기(export) 전에 내보내는 블록 하이트의 풀 데이터 스냅샷을 진행할 것을 권장합니다. 스냅샷 과정은 각 검증인의 인프라에 따라 다를 수 있지만, 통상 .gaia 디렉토리를 백업하는 것으로 진행합니다.

    gaiad 프로세스를 멈춘 후 .gaia/data/priv_validator_state.json 파일을 백업하는 것은 매우 중요합니다. 이 파일은 검증인이 컨센서스 라운드에 참여할 때마다 업데이트됩니다. 만약 업그레이드 과정이 실패하여 이전 체인을 다시 시작해야되는 경우 검증인의 이중서명을 방지하기 위해서 이 파일은 필수입니다.

    만약 업그레이드 과정이 실패하는 경우, 검증인과 노드 운영자는 gaia v2.0.15(코스모스 SDK v0.37.15 기반)으로 다운그레이드를 진행하고 가장 최근 진행했던 스냅샷을 복구한 이후에 노드를 시작해야합니다.

    # 업그레이드

    참고: 이 가이드는 코스모스 SDK의 v0.37.15 기반의 gaia v2.0.15를 운영한다는 가정에 작성된 가이드입니다.

    Gaia v2.0.15의 버전/커밋 해시값: 89cf7e6fc166eaabf47ad2755c443d455feda02e

    1. 올바른 gaiad 버전 (v2.0.15)를 운영하고 있는 것을 확인하세요:

      Copy @@ -99,7 +99,7 @@ snapshot-interval = 0 # snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). snapshot-keep-recent = 2 -
    - +
    + diff --git a/main/migration/cosmoshub-4-delta-upgrade.html b/main/migration/cosmoshub-4-delta-upgrade.html index 1a3de7f6d15..c38dfd66d48 100644 --- a/main/migration/cosmoshub-4-delta-upgrade.html +++ b/main/migration/cosmoshub-4-delta-upgrade.html @@ -8,14 +8,14 @@ - +

    # Cosmos Hub 4, Delta Upgrade, Instructions

    This document describes the steps for validator and full node operators for the successful execution of the Delta Upgrade (opens new window), which adds the Gravity DEX to the Cosmos Hub.

    TOC:

    # On-chain governance proposal attains consensus

    Proposal #51 (opens new window) 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 fully decentralized way.

    # Upgrade will take place July 12, 2021

    The upgrade will take place at a block height of 6910000. At current block times (around 7s/block), this block height corresponds approximately to Mon Jul 12 2021 11:00:00 GMT+0000. This date/time is approximate as blocks are not generated at a constant interval.

    # Chain-id will remain the same

    The chain-id of the network will remain the same, cosmoshub-4. This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.

    # Preparing for the upgrade

    # Backups

    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 .gaia directory.

    It is critically important for validator operators to back-up the .gaia/data/priv_validator_state.json 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.

    # Testing

    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 gravity-dex-upgrade-test (opens new window) 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.

    # Public testnet

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

    # Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1

    The Cosmos Hub mainnet network, cosmoshub-4, is currently running Gaia v4.2.1 (opens new window). 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.

    # Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0

    The Comsos Hub mainnet network, cosmoshub-4, will run Gaia v5.0.0 (opens new window). Operators MUST use this version post-upgrade to remain connected to the network.

    # Delta upgrade steps

    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.

    1. Prior to the upgrade, operators MUST be running Gaia v4.2.1.
    2. At the upgrade block height of 6910000, the Gaia software will panic with a message similar to the below:

    ERR UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08

    panic: UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08

    IMPORTANT: PLEASE WAIT FOR THE BINARY TO HALT ON ITS OWN. 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.

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

    - +

    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 0a2c1239651..38a03f2894f 100644 --- a/main/migration/cosmoshub-4-v10-upgrade.html +++ b/main/migration/cosmoshub-4-v10-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@ Copy ERR UPGRADE "v10" NEEDED at height: 15816200: upgrade to v10 and applying upgrade "v10" at height:15816200

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 15816200

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 15816200

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

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

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 16596000

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 16596000

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    + diff --git a/main/migration/cosmoshub-4-v12-upgrade.html b/main/migration/cosmoshub-4-v12-upgrade.html new file mode 100644 index 00000000000..2c8874fb3ad --- /dev/null +++ b/main/migration/cosmoshub-4-v12-upgrade.html @@ -0,0 +1,95 @@ + + + + + + Cosmos Hub 4, Gaia v12 Upgrade | Cosmos Hub + + + + + + + + +

    # Cosmos Hub 4, Gaia v12 Upgrade, Instructions

    This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v12 release. +For more details on the release, please see the release notes (opens new window)

    # Instructions

    # On-chain governance proposal attains consensus

    Proposal 821 (opens new window) 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 fully decentralized way.

    # Liquid Staking

    Validators please be aware that this release will include a new liquid staking module which has been included via the Cosmos SDK. Please see the release notes (opens new window) for v12 for more information about this module.

    IMPORTANT: Inclusion of this module requires validators to set a validation-bond to be eligiable for Liquid Staked delegations. Please see the Validator FAQ for more information.

    # Upgrade date

    The upgrade will take place at a block height of 16985500. 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 live countdown (opens new window) page.

    # Chain-id will remain the same

    The chain-id of the network will remain the same, cosmoshub-4. This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.

    # Preparing for the upgrade

    # System requirement

    32GB RAM is recommended to ensure a smooth upgrade.

    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 +allow your machine to run the binary than it could run in RAM alone.

    + Copy + sudo fallocate -l 16G /swapfile +sudo chmod 600 /swapfile +sudo mkswap /swapfile +sudo swapon /swapfile +

    # Backups

    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 .gaia directory. +If you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below upgrade using cosmovisor section.

    It is critically important for validator operators to back-up the .gaia/data/priv_validator_state.json 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.

    # Testing

    For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a v12 Local Testnet (opens new window) or join in our Cosmos Hub Public Testnet (opens new window).

    # Current runtime

    The Cosmos Hub mainnet network, cosmoshub-4, is currently running Gaia v11.0.0 (opens new window). We anticipate that operators who are running on v11.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 1.20.

    # Target runtime

    The Cosmos Hub mainnet network, cosmoshub-4, will run Gaia v12.0.0 (opens new window). Operators MUST use this version post-upgrade to remain connected to the network.

    # Upgrade steps

    There are 2 major ways to upgrade a node:

    • Manual upgrade
    • Upgrade using Cosmovisor (opens new window)
      • Either by manually preparing the new binary
      • Or by using the auto-download functionality (this is not yet recommended)

    If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.

    # Method I: Manual Upgrade

    Make sure Gaia v12.0.0 is installed by either downloading a compatible binary (opens new window), or building from source. Building from source requires Golang 1.20.

    Run Gaia v11.0.0 till upgrade height, the node will panic:

    + Copy + ERR UPGRADE "v12" NEEDED at height: 16985500: upgrade to v12 and applying upgrade "v12" at height:16985500 +

    Stop the node, and switch the binary to Gaia v12.0.0 and re-start by gaiad start.

    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.

    # Method II: Upgrade using Cosmovisor

    # Manually preparing the binary

    # Preparation

    Install the latest version of Cosmovisor (1.5.0):

    + Copy + go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest +

    Verify Cosmovisor Version

    + Copy + cosmovisor version +cosmovisor version: v1.5.0 +

    Create a cosmovisor folder:

    create a Cosmovisor folder inside $GAIA_HOME and move Gaia v11.0.0 into $GAIA_HOME/cosmovisor/genesis/bin

    + Copy + mkdir -p $GAIA_HOME/cosmovisor/genesis/bin +cp $(which gaiad) $GAIA_HOME/cosmovisor/genesis/bin +

    build Gaia v12.0.0, and move gaiad v12.0.0 to $GAIA_HOME/cosmovisor/upgrades/v12/bin

    + Copy + mkdir -p $GAIA_HOME/cosmovisor/upgrades/v12/bin +cp $(which gaiad) $GAIA_HOME/cosmovisor/upgrades/v12/bin +

    Then you should get the following structure:

    + Copy + . +├── current -> genesis or upgrades/<name> +├── genesis +│ └── bin +│ └── gaiad #v11.0.x +└── upgrades + └── v12 + └── bin + └── gaiad #v12.0.0 +

    Export the environmental variables:

    + Copy + export DAEMON_NAME=gaiad +# please change to your own gaia home dir +# please note `DAEMON_HOME` has to be absolute path +export DAEMON_HOME=$GAIA_HOME +export DAEMON_RESTART_AFTER_UPGRADE=true +

    Start the node:

    + Copy + cosmovisor run start --x-crisis-skip-assert-invariants --home $DAEMON_HOME +

    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.

    # Expected upgrade result

    When the upgrade block height is reached, Gaia will panic and stop:

    This may take 7 minutes to a few hours. +After upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.

    # Auto-Downloading the Gaia binary

    This method is not recommended!

    # Preparation

    Install the latest version of Cosmovisor (1.5.0):

    + Copy + go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest +

    Create a cosmovisor folder:

    create a cosmovisor folder inside gaia home and move gaiad v11.0.x into $GAIA_HOME/cosmovisor/genesis/bin

    + Copy + mkdir -p $GAIA_HOME/cosmovisor/genesis/bin +cp $(which gaiad) $GAIA_HOME/cosmovisor/genesis/bin + + Copy + . +├── current -> genesis or upgrades/<name> +└── genesis + └── bin + └── gaiad #v11.0.x +

    Export the environmental variables:

    + Copy + export DAEMON_NAME=gaiad +# please change to your own gaia home dir +export DAEMON_HOME=$GAIA_HOME +export DAEMON_RESTART_AFTER_UPGRADE=true +export DAEMON_ALLOW_DOWNLOAD_BINARIES=true +

    Start the node:

    + Copy + cosmovisor run start --x-crisis-skip-assert-invariants --home $DAEMON_HOME +

    Skipping the invariant checks can help decrease the upgrade time significantly.

    # Expected result

    When the upgrade block height is reached, you can find the following information in the log:

    + Copy + 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-v7-Theta-upgrade.html b/main/migration/cosmoshub-4-v7-Theta-upgrade.html index 8659458fee3..eda2f547436 100644 --- a/main/migration/cosmoshub-4-v7-Theta-upgrade.html +++ b/main/migration/cosmoshub-4-v7-Theta-upgrade.html @@ -8,7 +8,7 @@ - + @@ -88,7 +88,7 @@ Copy 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)

    - +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 4976598d365..8d9fea0bae7 100644 --- a/main/migration/cosmoshub-4-v8-Rho-upgrade.html +++ b/main/migration/cosmoshub-4-v8-Rho-upgrade.html @@ -8,7 +8,7 @@ - + @@ -87,7 +87,7 @@ Copy 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)

    - +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 56272c5898c..99657cac5d0 100644 --- a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html +++ b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@ Copy ERR UPGRADE "v9-Lambda" NEEDED at height: 14470501: upgrade to v9-Lambda and applying upgrade "v9-Lambda" at height:14470501

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 14470501

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 14470501

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    + diff --git a/main/migration/cosmoshub-4-vega-upgrade.html b/main/migration/cosmoshub-4-vega-upgrade.html index 40844c292c3..3eb0ee59d23 100644 --- a/main/migration/cosmoshub-4-vega-upgrade.html +++ b/main/migration/cosmoshub-4-vega-upgrade.html @@ -8,7 +8,7 @@ - + @@ -88,7 +88,7 @@ Copy 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)

    - +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 4761a67756d..9d6fb6f11ac 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 323362d3397..d27d6b6fd8e 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 d3af29aea67..9e3a45f413d 100644 --- a/main/modules/index.html +++ b/main/modules/index.html @@ -8,12 +8,12 @@ - +

    # Gaia Modules

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

    # New Modules in Rho V8

    - + diff --git a/main/proto/proto-docs.html b/main/proto/proto-docs.html index e3a7a35442f..c54f2f6f937 100644 --- a/main/proto/proto-docs.html +++ b/main/proto/proto-docs.html @@ -8,13 +8,13 @@ - +

    # Protobuf Documentation

    # Table of Contents

    Top

    # gaia/globalfee/v1beta1/query.proto

    # QueryParamsRequest

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

    # QueryParamsResponse

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

    Field Type Label Description
    params Params

    # Query

    Query defines the gRPC querier service.

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

    Top

    # gaia/globalfee/v1beta1/genesis.proto

    # GenesisState

    GenesisState - initial state of module

    Field Type Label Description
    params Params Params of this module

    # Params

    Params defines the set of module parameters.

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

    # Scalar Value Types

    .proto Type Notes C++ Java Python Go C# PHP Ruby
    double double double float float64 double float Float
    float float float float float32 float float Float
    int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
    int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
    uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
    uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
    sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
    sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
    fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
    fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
    sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
    sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
    bool bool boolean boolean bool bool boolean TrueClass/FalseClass
    string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
    bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)
    - + diff --git a/main/resources/archives.html b/main/resources/archives.html index e624569f079..9c2dcbd15cd 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 a7caae240ed..03116466eae 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 ae5675d2a90..7ca18cd4a0c 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 bdc67bad544..994a2f1f9e9 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 68af4ca11cd..582cad0b5f6 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 0c3bf0e87e3..eb4e5e8a1e0 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 0f1552d9164..182ce5208ca 100644 --- a/main/resources/service-providers.html +++ b/main/resources/service-providers.html @@ -8,7 +8,7 @@ - + @@ -152,7 +152,7 @@ Copy gaiad tx bank send [from_key_or_address] [to_address] [amount] [flags]

    Parameters:

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

    Flags:

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

    # REST API

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

    # Listen for Incoming Transactions

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

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

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

    # Listen for Incoming Transactions

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

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

    + diff --git a/main/roadmap/cosmos-hub-roadmap-2.0.html b/main/roadmap/cosmos-hub-roadmap-2.0.html index 1058e57e9a9..b8a86f10e48 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 a9a84f48ce0..da7a5f33965 100644 --- a/main/roadmap/index.html +++ b/main/roadmap/index.html @@ -8,7 +8,7 @@ - + @@ -24,6 +24,6 @@
  • IBC Packet Forward Middleware v3.1.1
  • IBC Msg Whitelist to skip MinFee in CheckTX
  • Global Fee Module
  • # v9-Lambda Upgrade (expected Q1 2023)

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

    # Cosmos Hub Summary

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

    build tags 指定了可执行程序具有的特殊特性。

    Build Tag Description
    netgo Name resolution will use pure Go code
    ledger 支持 Ledger 设备(硬件钱包)

    # 接下来

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

    - + diff --git a/main/zh/gaia-tutorials/join-mainnet.html b/main/zh/gaia-tutorials/join-mainnet.html index 6cccbbe4551..32f31bd2584 100644 --- a/main/zh/gaia-tutorials/join-mainnet.html +++ b/main/zh/gaia-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -71,6 +71,6 @@ 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 b59744f2a5f..76050f5824e 100644 --- a/main/zh/gaia-tutorials/join-testnet.html +++ b/main/zh/gaia-tutorials/join-testnet.html @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@

    ::: 提示 注意:如果在这一步出现问题,请检查是否安装了最新稳定版本的 Go。 :::

    注意这里我们使用的是包含最新稳定发布版本的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 90c90eb0611..d406f68bf50 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

    - + diff --git a/main/zh/genesis-state.html b/main/zh/genesis-state.html index a292c651c3c..fa1c8f62377 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 b192946b4af..35cbda67619 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 28384efe49b..8d4bbefbbfb 100644 --- a/main/zh/launch/blog-1-cn.html +++ b/main/zh/launch/blog-1-cn.html @@ -8,12 +8,12 @@ - +

    # Cosmos Hub主网上线计划

    • 2016年夏天,Cosmos首次发表了项目白皮书。
    • 2017年春天,Cosmos完成了首次募资。
    • 2019年一月,Cosmos Hub软件完成功能开发。
    • 至此,Cosmos Hub主网即将启动。
    • 那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?

    如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。

    Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令

    CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。

    请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。

    Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!

    如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。

    注册链接:gotowebinar.com/register/ (opens new window)

    # 主网启动的里程碑

    欢迎收藏cosmos.network/launch (opens new window),跟踪主网启动全过程。

    • Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。
    • Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。
    • 权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。GoS记分准则 (opens new window)
    • 创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中
    • Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。

    # Cosmos官方交流渠道

    以下是Cosmos有关主网启动的官方渠道

    如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。

    切记,我们绝不会要求您提供您的私钥或者助记词。

    # 在主网启动期间确保资产安全可靠

    任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。

    虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。

    # 安全规则

    # 参与Cosmos主网启动,您需要熟记以下规则

    • 直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。
    • 不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。
    • 对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,请在此处对钓鱼邮件进行测试 (opens new window)
    • 在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。
    • Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。
    • 对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。
    • 在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。

    如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。

    - + diff --git a/main/zh/launch/blog-2-cn.html b/main/zh/launch/blog-2-cn.html index 1863db976f4..faf5795ff28 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 4e9a43874bd..e50601b1837 100644 --- a/main/zh/resources/gaiad.html +++ b/main/zh/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -339,6 +339,6 @@ echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc

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

    - + diff --git a/main/zh/resources/genesis.html b/main/zh/resources/genesis.html index 4c1c33d044d..73840130eff 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 d232c5d10ba..c23b0d8574d 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 bec1186f3a7..9ca28d08db7 100644 --- a/main/zh/validators/overview.html +++ b/main/zh/validators/overview.html @@ -8,11 +8,11 @@ - +

    # 验证人概览

    # 介绍

    Cosmos Hub基于CometBFT,它依赖于一组负责在区块链中提交新区块的验证人。这些验证人通过广播投票来参与共识协议,投票包含由每个验证人的私钥签名的加密签名。

    验证人候选者可以绑定他们自己的Atoms=,还能让token持有者将Atoms=“委托”或“抵押”给他们。Cosmos Hub将有100个验证人,但随着时间的推移,将根据预定义的时间表增加到300个验证人。验证人根据谁拥有最多的投票权来确定——拥有最多股权的前100名验证人候选者将成为Cosmos的验证人。

    验证人及其委托人能通过执行CometBFT共识协议赚取Atom作为区块增发奖励和作为交易手续费的其他token。最初,交易费用将以Atom支付,但在将来,Cosmos生态中的任何token如果通过治理加入到白名单中,就能作为有效的交易手续费。请注意,验证人可以设置从他们的委托人身上收取的佣金作为额外奖励。

    如果验证人双签,频繁下线或不参与治理,则可以削减其抵押的Atom(包括那些用户委托给他们的Atom)。处罚取决于违规的严重程度。

    # 硬件

    目前还没有合适的针对验证人密钥管理的云解决方案。这可能会等到2018年云解决方案SGX变得更加普及时才会有所改善。由于这个原因,验证人必须设置一个受限访问的物理操作。例如,安置在安全的数据中心。

    验证人期望为他们的数据中心装备充足的电力,带宽及存储备份。期望有数个充足的对应光纤,防火墙还有路由的需求的网络设备,一台有着足够硬盘和容错能力的小型服务器。硬件可以先从低端的数据中心配置开始。

    我们预计最初的网络需求是比较低的。当前的测试网络只需要极小的资源。之后,带宽,CPU和内存的需求将会随着网络的发展而增长。要存储数年区块链的历史信息的话,推荐配置足够大的的硬盘。

    # 创建一个网站

    建立一个专门的用以显示验证人信息网站,并在我们的论坛 (opens new window)上表明您想成为验证人的意图。这非常重要,因为委托人希望获得关于他们予以Atom委托的验证人的信息。

    # 寻求法律建议

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

    # 社区

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

    - + diff --git a/main/zh/validators/security.html b/main/zh/validators/security.html index 66e04b36f0c..a729ed11afa 100644 --- a/main/zh/validators/security.html +++ b/main/zh/validators/security.html @@ -8,7 +8,7 @@ - + @@ -26,6 +26,6 @@ private_peer_ids = "ipaddress of validator nodes"

    # 环境变量

    默认情况下,具有以下前缀的大写环境变量将替换小写命令行标志:

    • GA(对应Gaia的标识)
    • TM(对应Tendermint, 现在 CometBFT的标识)
    • BC(对应democli或basecli的标识)

    例如,环境变量GA_CHAIN_ID将映射到命令行标识--chain-id。注意,虽然显式命令行标识优先于环境变量,但环境变量优先于任何配置文件。因此,必须锁定环境,以便在CLI上将任何关键参数定义为标识或防止修改任何环境变量。

    - + diff --git a/main/zh/validators/validator-faq.html b/main/zh/validators/validator-faq.html index c2ce1d964cf..b2b5b484ece 100644 --- a/main/zh/validators/validator-faq.html +++ b/main/zh/validators/validator-faq.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@
    • 注意:验证人的操作员的私钥直接绑定到应用程序私钥,但为此目的保留前缀:cosmosvalopercosmosvaloperpub

    # 验证人可以具有哪些不同的状态

    使用create-validator交易创建验证人后,它可以处于三种状态:

    • bonded : 验证人在活跃集合中并参与共识。验证人正在获得奖励,并且可能因为不当行为而遭到削减处罚。
    • unbonding : 验证人不在活跃集合中,也不参与共识。验证人没有获得奖励,但仍然可能因为不当行为而遭到削减处罚。这是从bondedunbonding的过渡状态。如果验证人在unbonding模式下未发送rebond交易,则状态转换将需要三周时间才能完成。
    • unbonded : 验证人不在活跃集合中,因此不签署区块。验证人不能遭到削减处罚,也不会获得任何奖励。仍然可以将Atom委托给此验证人。从unbonded状态的验证人取消委托是立即的。

    委托人与其验证人具有相同的状态。

    请注意,委托不一定是绑定的。Atom可以是delegated和bonded状态,delegated和unbonding状态,delegated和unbonded状态,或流通状态。

    # 什么是self-bond?怎样增加我的self-bond?有水龙头吗?

    如果你想获得测试网的测试币,你可以使用这个水龙头 (opens new window)

    # 成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?

    没有最小限制。总股权(总股权=自抵押股权+委托股权)最高的前100名是活跃验证人。

    # 委托人要怎样选择验证人?

    委托人可以根据他们的主观判断随意去选择验证人。也就是说,包括对以下内容的判断相当重要:

    • 自抵押的Atom数量:一个验证人在股权池里自抵押的Atom数量。有着更多自抵押Atom的验证人承担了更大的风险,将促使其对自己的行为更加负责。
    • 委托的Atom总量: 委托给某个验证人的Atom总量。大量的股权显示社区对该验证人的信任,但这也意味着该验证人更容易成为黑客们的目标。实际上,黑客更倾向攻击更大的验证人,这样他们可能会从不能抵御攻击的验证人那里获得更多。随着委托的Atom的增长,验证人也被期待不要太过引人注目。
    • 佣金比率: 在把奖励分散给委托人之前抽成一部分佣金来奖励验证人。
    • 跟踪记录:委托人很可能去查看他们计划去委托的验证人的行为记录。包括资历,过去对提议的投票,历史的平均运行时长和验证人节点掉线的频率。

    除去这些会展示在Cosmos Voyager上的评判标准,验证人还可能向公众展示一个网站来完善他们的简历。验证人需要通过多种方式去树立良好的声誉来吸引委托人。比如,验证人让第三方来审计他们的设置就是一个很好的实践。注意,CometBFT团队将不会批准和引导任何对自身的审计。有关尽职调查的更多信息,请参阅此博客 (opens new window)

    # 责任

    # 验证人需要公开表明身份吗?

    不需要。每个委托人会用他们自己的评判标准去衡量验证人的价值。验证人可以(也被推荐)在他们提名自己时注册一个网站,以便他们可以按照自己的意愿宣传自己的行动。一些委托人可能更喜欢通过一个清楚展示团队是如何去运行验证人节点以及团队成员的简历的网站来帮助选择,尽管其他一些委托人更偏好那些隐藏了行为记录的匿名验证人。最有可能的是身份明确的验证人和匿名的验证人都会存在于验证人集合中。

    # 一个验证人要担负哪些责任?

    验证人有两个主要的职责:

    • 能够不断运行软件的正确版本:验证人需要去保证他们的服务器任何时刻都在线,保护其私钥避免遭到窃取。
    • 积极地参与治理:验证人需要对每个提案投票表决。

    此外,验证人应该是社区的活跃成员。他们应该始终与生态系统的当前状态保持同步,以便他们能够轻松适应任何变化。

    # "参与治理"需要?

    Cosmos Hub中的验证人员和委托人可以就改变运行参数(例如区块燃料限制),协调升级以及对治理Cosmos Hub的宪法的修正方案进行投票表决。

    验证人在治理系统中发挥着特殊作用。身为系统的支柱他们需要对每一个提案进行投票表决。这是尤其重要的,因为委托人把票权给了验证人而自己无法直接去投票。每次当某个验证人不去对一个提案投票表决时,他就会遭受削减处罚。

    # 抵押是指?

    抵押Atom可以被认为是一种在验证活动中进行的安全储蓄。当一个验证人或者委托人想要拿回部分甚至所有的存款时,他们就发送一笔unbonding交易。然后,Atom会经历一个3周的解绑周期,在unbonding开始前他们容易因错误提交而遭到削减处罚。

    验证人,和与其形成联盟的委托人,得到区块增发奖励,区块奖励和手续费奖励,还有参与治理的权利。如果一个验证人行为不端,它的总股份的一部分会遭削减处罚(处罚的严厉性取决于错误行为的类型)。这意味着每一个往验证人委托Atom的用户也会受到一定比例的处罚。因此委托人倾向于把Atom委托给那些规范安全运作的验证人。

    # 验证人可以卷走委托人的Atom跑路吗?

    向一个验证人委托,用户只是委托了他的股权。验证人有更多的股权,在共识和治理工程中也就有了更大的权重。这不意味着验证人可以扣押其委托人的Atom。一个验证人是绝不可能带着委托人的Atom跑路的。

    尽管委托资金不可能被验证人盗取,委托人仍然要对他们的验证人做出的不端行为负责。这种情况下,每个委托人的股权也会按其股权比例遭到部分的削减处罚。

    # 一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?

    被选作提议下一个区块的验证人称为提案人。每个提案人都是由明确的方式选出来的,被选的频率也与他们的总股权相等(总股权=自抵押股权+委托股权)。比如,如果所有验证人总的抵押股权是100个Atom,一个验证人的总股权是10个Atom,那么有10%的时间该验证人会被选作下一个提案人。

    # Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?

    是的,他们会如此。最初,Cosmos Hub的验证人还会验证第一个公共Ethermint分区。如果通过治理决定这么做,Cosmos Hub的验证人可能需要去验证Cosmos生态系统里的其它分区。就Ethermint分区而言,对每个额外的分区奖励都会以区块奖励和交易手续费的形式来提供。

    # 激励

    # 抵押有什么激励?

    一个验证人股权池里的每个成员赚取不同类型的收益:

    • 区块增发奖励: 验证人运行的应用里的原生的token(例如Cosmos Hub中的Atom)会是通胀的,用作区块增发奖励。这些增发奖励激励Atom持有者去抵押他们的股权,所以未绑定的Atom会随着时间的流逝而稀释。
    • 区块奖励: 对于Ethermint分区,区块奖励会以Photon来支付。对Ethereum进行硬分叉来完成初始的分配。这意味着Photon会按和Ether的比例1:1发放。
    • 交易手续费:Cosmos Hub维持一个token的白名单,上面的token都能作为手续费。

    这些总收益会按验证人股权池中每个验证人所占的权重来进行分配。然后,每个验证人的股权池的收益又会根据其每一个委托人的股权来分配。注意,会在分配前从委托人所得中抽取佣金给予验证人。

    # 运行一个验证人有什么激励?

    由于能抽成佣金,验证人比起他们的委托人能按比例赚取更多的收益。

    验证人在治理中充当一个重要角色。如果一个委托人没有投票,他也能从他的验证人那里继承到投票权。这样验证人在生态里承担主要的责任。

    # 什么是验证人的佣金?

    一个验证人的股权池收到的收益会被拆分为给验证人的部分和给委托人的部分。验证人可以从给其委托人的收益中抽取一部分作为给自己佣金奖励。这个佣金被设置成一个百分比。每个验证人可以随意设置初始佣金,最大每日佣金变化率和最大佣金。Cosmos Hub强制每个验证人都要明确设置这些参数。这些参数只能在一开始声明竞选时设置,也只可能在声明之后被进一步限制。

    # 区块增发奖励怎么分配?

    区块增发奖励会按验证人的总股权来成比例地发放。这意味着即使每个验证人每次增发奖励时都获得了Atom,但所有验证人仍然会维持相等的权重。

    让我们举一个例子:我们有着股权相等的10个验证人,佣金比例是1%。然后我们假设一个区块的增发奖励是1000个Atom,每一个验证人有20%的自抵押Atom。这些token不会直接分给提案人。而是被均匀地分发给验证人。所以现在每个验证人的股权池获得100个Atom。这100个Atom会依据每个参与者的股权来分发:

    • 佣金:100*80%*1% = 0.8 Atoms
    • 验证人获得部分: 100*20% + 佣金 = 20.8 Atoms
    • 委托人获得部分: 100*80% - 佣金 = 79.2 Atoms

    然后,每个委托人可以按照他们在验证人股权池中的股权,从79.2个Atom中等比例地索要属于他们应得的那一份。注意验证人的佣金不仅只适用于区块增发奖励,也适用于区块奖励(使用Photon支付)。

    # 交易手续费怎么分配?

    手续费以类似的方式分发,不同之处在于,如果区块的提案人有多于明确的提交所需的最小值,区块提案人就可以在由其提议的区块手续费中获得一笔奖励。

    当一个验证人被选作去提议下一个区块时,必须要含有对当前区块至少2/3的验证人签名许可。尽管如此,仍然存在有一个激励去奖励那些超过2/3的验证人签名许可。这个奖励是线性的:如果提案人含有2/3的签名许可(区块有效的最小值),比例是1%, 如果提案人含有100%的签名许可,比例是5%。当然,提案人不应该等待太久去做提案,或许其他的验证人有可能超时,长时间的等待容易造成提案的延误。这样的话,验证人不得不在获取最多签名的等待时间和失去对下个区块的提案之间寻找一个平衡点。这个机制旨在提案人不要去提案空块,维护验证人之间更好的网络,还有减轻审查。

    让我们举一个实际的例子来说明上面的概念。在这个例子中,有着10个股权相等的验证人。每个验证人采用1%的佣金比例,有20%的自抵押Atom。现在,产出了一个有着1025.51020408个Atom手续费的区块。

    首先,一个 2% 的税是必须的。这部分Atom会进入贮存池中。贮存池里的资金会通过治理来分配,用来作奖赏和更新升级的花费。

    • 2% * 1025.51020408 = 20.51020408 Atoms 进入到贮存池中

    现在只剩下了1005个Atom。让我们假设提案人提案的区块包含了100%的验证人签名。因此提案人能获得手续费奖励中的5%的额外奖励。

    我们解这个简单的算式得出给每一个验证人的奖励R :

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

    • 对于发起提案的验证人:
      • 奖金池获得 R + R * 5% = 105 Atoms
      • 佣金: 105 * 80% * 1% = 0.84 Atoms
      • 验证人的奖励: 105 * 20% + 佣金 = 21.84 Atoms
      • 委托人的奖励: 105 * 80% - 佣金 = 83.16 Atoms(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)
    • 对于每个非提案验证人:
      • 奖金池获得 R = 100 Atoms
      • 佣金: 100 * 80% * 1% = 0.8 Atoms
      • 验证人的奖励: 100 * 20% + 佣金 = 20.8 Atoms
      • 委托人的奖励: 100 * 80% - 佣金 = 79.2 Atoms(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)

    # 遭到削减处罚的原因?

    如果一个验证人行为不端,其抵押的股权,连同其委托人的股权都会遭到削减处罚。处罚的严重性依据错误的类型来定。有3个主要的错误会导致验证人和其委托人的资金遭到削减处罚:

    • 双签:如果某人反馈在A链上,一个验证人在相同高度的A链和B链上签署了两个区块,这个验证人会被A链处罚。
    • 不在线: 如果一个验证人的签名没有被最近的X个区块包含,对该验证人会按与X成比例的最低额度来处罚。如果X高于某个限制Y,这个验证人会被赎回下线。
    • 不投票: 如果一个验证人没有对某个提案投票表决,一旦被某个人举报,他的股权会受到削减处罚。

    请注意,即使一个验证人并不是有意作恶,在出现节点崩溃,失去连接,被DDOS攻击,或者是私钥泄露的情况时,仍然会被遭受削减处罚。

    # 验证人需要去自抵押一些Atom吗?

    不,他们不必。一个验证人的总股权等于其自抵押股权和受委托股权的总和。这意味着一个验证人可以通过吸引更多委托人来补偿其低额的自抵押股权。这也是为何对验证人而言,良好的声誉是极其重要的。

    尽管对验证人来说是并没有义务去自抵押Atom,委托人还是希望他们的验证人在其股权池里有一定的自抵押Atom。换句话说,验证人应该共担风险。

    为了委托人能获得一些与之共担风险的验证人给予的保证,验证人可以声明一个最小数量的自抵押Atom额度。如果一个验证人的自抵押额度低于预先定义的限制,该验证人和其所有的委托人的股权都会被赎回。

    # 怎样预防股权集中到少数的验证人手中?

    目前我们期望社区能有更明智的和有自我保护意识的行为表现。当一个Bitcoin的矿池获得过多的算力时,社区通常会停止向该矿池贡献算力。Cosmos Hub在初期也将会依赖同样的方式。之后,其他的机制会被应用,来尽可能地使这个过程更顺畅:

    • 免处罚的重新委托 :这允许委托人轻易地从一个验证人切换到另一个验证人,从而降低对验证人的粘性
    • 黑客赏金: 激励社区去攻击验证人。攻击者将获得与所攻击的验证人规模成比例的赏金,促使一个验证人随着其总股权的增长,成为一个受人关注的攻击目标。
    • UI警告: 如果用户想要去委托股权给一个已经有了大量股权的验证人的话,用户会收到来自Cosmos Voyager的警告。

    # 技术要求

    # 对硬件的要求是什么?

    我们期望验证人供应一个或多个的有着充足电力,网络资源,防火墙安全,HSM和服务器的数据中心。

    我们期望初期能有一个适度级别的硬件规格说明书,会随着网络使用的增长而逐步提高标准。参与到测试网络是了解更多情况的不错方式。

    # 对软件有什么要求?

    除了能运行一个Cosmos Hub节点,验证人还应该开发相关的监控,预警和管理工具。

    # 对带宽有什么要求?

    与像Ethereum或Bitcoin这样的区块链相比,Cosmos网络要有高吞吐量的性能。

    我们建议数据中心只在云服务上连接信任的全节点或者是熟知的验证人节点,这会减轻数据中心遭受DDOS攻击的压力。

    最后,随着网络越来越被重度使用,具有单日GB级别的带宽是可能的。

    # 运行一个验证人节点意味着什么?

    运行一个成功的验证人节点需要多方面的高超技艺的和持久关注的共同努力。相比运行一个Bitcoin矿工节点要付出更多。

    # 怎样去进行密钥管理?

    我们期望验证人去运行一个HSM来支持ed25519密钥。下面是可能的选择:

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

    CometBFT团队不会推荐上面的其中之一。鼓励社区最好加强改进HSM和密钥管理的安全性。

    # 在操作上我们期望验证人可以做到哪些?

    进行有效率的操作是避免验证人节点的意外掉线或遭到削减处罚的关键所在。这包括良好的攻击应对方法,断电情况,还有维持数据中心的安全性和独立性。

    # 维护需要什么?

    验证人应该去执行常规的软件升级以适应更新和修复漏洞。在启动阶段的前期阶段不可避免的会出现一些网络问题,这需要大量的警觉。

    # 验证人怎样保护自己免于DDOS攻击?

    当一个攻击者向一个IP地址发送海量的因特网流量来阻止该IP地址上的网络服务时,这就是DDOS攻击。

    一个攻击者扫描网络,尽量去获得多个验证人节点的IP地址,然后通过向他们发送海量流量来阻断他们之间的连接。

    一个降低这样的风险的推荐做法是验证人在所谓的哨兵节点的架构中精心去构建他们的网络拓扑结构。

    验证人节点应该只连接到他们所信任的全节点上,因为他们可以操作自身,也可以被他们熟知的其他验证人运行。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以使用去连接云服务中的哨兵节点。验证人节点直接连接到他们的哨兵节点,这样减缓了DOS攻击带来的压力,可能需要新的哨兵节点被激活去减轻已存在的哨兵节点所遭受到的攻击。

    哨兵节点能够迅速地被轮换或者改变它们的IP地址。因为与哨兵节点的连接是私有的IP网段,基于因特网的攻击不可能直接骚扰到它们。这将确保验证人区块的提交和投票总是能传播到网络中的其余节点。

    期待验证人在这方面良好的操作将完全消除这些威胁。

    了解哨兵节点架构的更多信息请看这里 (opens new window)

    - + diff --git a/main/zh/validators/validator-setup.html b/main/zh/validators/validator-setup.html index bcfdf678591..79211f3320e 100644 --- a/main/zh/validators/validator-setup.html +++ b/main/zh/validators/validator-setup.html @@ -8,7 +8,7 @@ - + @@ -111,6 +111,6 @@ [Install] WantedBy=multi-user.target
    - +