diff --git a/index.html b/index.html index e9f2ffdaa98..bdef330c4f2 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,11 @@ - - + +
- + diff --git a/main/404.html b/main/404.html index 70f81bfa67f..f580ca947fa 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 e6579a4ad65..0ec03b02bb4 100644 --- a/main/DOCS_README.html +++ b/main/DOCS_README.html @@ -8,8 +8,8 @@ - - + +

# Updating the docs

If you want to open a PR on Gaia to update the documentation, please follow the guidelines in the CONTRIBUTING.md (opens new window)

# Internationalization

  • Translations for documentation live in a docs/<locale>/ folder, where <locale> is the language code for a specific language. For example, zh for Chinese, ko for Korean, es for Spanish, etc.
  • Each docs/<locale>/ folder must follow the same folder structure within docs/, but only content in the following folders needs to be translated and included in the respective docs/<locale>/ folder
  • Each docs/<locale>/ folder must also have a README.md that includes a translated version of both the layout and content within the root-level README.md (opens new window). The layout defined in the README.md is used to build the homepage.
  • For additional configuration options, please see VuePress Internationalization (opens new window).

# Docs Build Workflow

The documentation for Gaia is hosted at:

built from the files in this (/docs) directory for main (opens new window).

# How It Works

There is a Github Action (opens new window) @@ -36,6 +36,6 @@ Copy make install

- + diff --git a/main/architecture/PROCESS.html b/main/architecture/PROCESS.html index a1f6dc932c6..52a5e2bd7a8 100644 --- a/main/architecture/PROCESS.html +++ b/main/architecture/PROCESS.html @@ -8,8 +8,8 @@ - - + +

# ADR Creation Process

  1. Copy the adr-template.md file. Use the following filename pattern: adr-next_number-title.md
  2. Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback.
  3. 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.
  4. Add an entry to a list in the README file Table of Contents.
  5. Create a Pull Request to propose a new ADR.

# ADR life cycle

ADR creation is an iterative 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.

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

  2. Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the adr-template.md.

  3. An ADR doesn't have to arrive to main with an accepted 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 proposed status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.

  4. If a proposed ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.

  5. The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a rejected status. The only time the ADR SHOULD NOT be merged is if the author abandons it.

  6. Merged ADRs SHOULD NOT be deleted.

# ADR status

Status has two components:

@@ -24,6 +24,6 @@ C --> E[ACCEPTED or REJECTED] E --> F[SUPERSEDED by ADR-xxx]
  • DRAFT: [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.
  • PROPOSED: an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet.
  • LAST CALL <date for the last call>: [optional] clear notify that we are close to accept updates. Changing a status to LAST CALL 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.
  • ACCEPTED: ADR which will represent a currently implemented or to be implemented architecture design.
  • REJECTED: ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so.
  • SUPERSEEDED by ADR-xxx: ADR which has been superseded by a new ADR.
  • ABANDONED: the ADR is no longer pursued by the original authors.

# Language used in ADR

  • The context/background should be written in the present tense.
  • Avoid using a first, personal form.
- + diff --git a/main/architecture/adr-001-interchain-accounts.html b/main/architecture/adr-001-interchain-accounts.html index 9b0056a398c..8d1fa02ae1a 100644 --- a/main/architecture/adr-001-interchain-accounts.html +++ b/main/architecture/adr-001-interchain-accounts.html @@ -8,8 +8,8 @@ - - + +

# ADR 001: Interchain Accounts

# Changelog

  • 2022-02-04: added content
  • 2022-01-19: init
  • 2023-06-28: mark as rejected

# Status

REJECTED Not Implemented

Reason: The IBC team decided to integrate this functionality directly into their codebase and maintain it, because multiple users require it.

# Abstract

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.

# Rationale

This allows the Hub to participate in advanced cross-chain defi operations, like Liquid Staking and various protocol controlled value applications.

# Desired Outcome

The hub can be used trustlessly as a host chain in the configuration of Interchain Accounts.

# Consequences

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.

# Backwards Compatibility

This is the first of its kind.

# Forward Compatibility

There are future releases of Interchain Accounts which are expected to be backwards compatible.

# Technical Specification

ICS-27 Spec (opens new window)

# Development

# Project Integrations [optional]

# Downstream User Impact Report

(Needs to be created)

# Upstream Partner Impact Report

(Needs to be created)

# Inter-module Dependence Report

(Needs to be created)

# Support

Documentation (opens new window)

# Additional Research & References

- + diff --git a/main/architecture/adr-002-globalfee.html b/main/architecture/adr-002-globalfee.html index 5dda9e32b55..5b0c73b3987 100644 --- a/main/architecture/adr-002-globalfee.html +++ b/main/architecture/adr-002-globalfee.html @@ -8,8 +8,8 @@ - - + +

# ADR 002: Globalfee Module

# Changelog

  • 2023-06-12: Initial Draft

# Status

ACCEPTED Implemented

# Context

The globalfee module was created to manage a parameter called MinimumGasPricesParam, 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:

  • In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the MinimumGasPricesParam. The MinimumGasPricesParam is of sdk.DecCoins type. In the Cosmos SDK, sdk.DecCoins are sanitized (opens new window) to remove zero-value coins. As a result, several methods from sdk.Coins were redefined in the Gaia fee antehandler (opens new window).

  • BypassMinFeeMsgTypes exists in app.toml, 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.

  • The fee check logic is only executed in CheckTx. This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.

# Decision

To fix these problems, the following changes are added to the globalfee module:

  • ZeroCoins in MinimumGasPricesParam:
    @@ -101,6 +101,6 @@ }
    • Deterministic Bypass Parameters: The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, BypassMinFeeMsgTypes and MaxTotalBypassMinFeeMsgGasUsage parameters are moved to a persistent store.

    • Module Initialization Order: The genutils module must be initialized before the globalfee module. This is due to the DeliverGenTxs in the genutils module, is called during initGenesis. This function executes DeliverTx, which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in DeliverTx. To prevent the DeliverGenTxs 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 Gaia Issue #2489 (opens new window) for more context.

    # Consequences

    # Positive

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

    # Negative

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

    # References

- + diff --git a/main/architecture/adr-template.html b/main/architecture/adr-template.html index 3b59fd47ab0..f90ed3a4a02 100644 --- a/main/architecture/adr-template.html +++ b/main/architecture/adr-template.html @@ -8,8 +8,8 @@ - - + +

# ADR {ADR-NUMBER}:

# Changelog

  • {date}:

# Status

{DRAFT | PROPOSED} Not Implemented

Please have a look at the PROCESS page. @@ -22,6 +22,6 @@ If the proposed change will be large, please also indicate a way to do the change to maximize ease of review. (e.g. the optimal split of things to do between separate PR's)

# Consequences

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

# Positive

# Negative

# Neutral

# References

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

- + diff --git a/main/architecture/index.html b/main/architecture/index.html index 524cc80e9c0..7ab1e97cb0a 100644 --- a/main/architecture/index.html +++ b/main/architecture/index.html @@ -8,8 +8,8 @@ - - + +

# Architecture Decision Records (ADR)

This is a location to record all high-level architecture decisions for new feature and module proposals in the Cosmos Hub.

An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. @@ -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

  • n/a

# Draft

  • n/a

# Rejected

- + diff --git a/main/assets/css/0.styles.7ce41f59.css b/main/assets/css/0.styles.a891c478.css similarity index 98% rename from main/assets/css/0.styles.7ce41f59.css rename to main/assets/css/0.styles.a891c478.css index f9c9915e02d..3ee1de7b8f0 100644 --- a/main/assets/css/0.styles.7ce41f59.css +++ b/main/assets/css/0.styles.a891c478.css @@ -1 +1 @@ -.overlay[data-v-d098955a]{position:fixed;top:0;left:0;z-index:100000;height:100vh;width:100vw}.sidebar[data-v-d098955a]{position:fixed;overflow-y:hidden;z-index:100000;transform:translateX(var(--sidebar-translate-x)) translateY(var(--sidebar-translate-y));-webkit-overflow-scrolling:touch}.close[data-v-d098955a]{border-radius:50%;stroke:hsla(0,0%,100%,.75);box-sizing:border-box;padding:8px;width:48px;height:48px;position:absolute;top:0;right:0;margin:1rem;cursor:pointer}.close__icon[data-v-d098955a]{display:block}.sidebar.sidebar__side__left[data-v-d098955a]{left:0;right:auto}.sidebar.sidebar__side__left[data-v-d098955a],.sidebar.sidebar__side__right[data-v-d098955a]{top:0;width:var(--sidebar-width,300px);max-width:var(--sidebar-max-width,75%);height:var(--sidebar-height,100%);max-height:var(--sidebar-max-height,100%);box-shadow:var(--sidebar-box-shadow)}.sidebar.sidebar__side__right[data-v-d098955a]{left:auto;right:0}.sidebar.sidebar__side__bottom[data-v-d098955a]{top:0;left:0;right:0;max-width:none;overflow-y:scroll;-webkit-overflow-scrolling:touch;width:var(--sidebar-width,100%);max-width:var(--sidebar-width,100%);height:100%;margin-left:auto;margin-right:auto}.sidebar.sidebar__side__center[data-v-d098955a]{top:0;left:0;right:0;bottom:0;width:100%;max-width:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch;pointer-events:all;height:100vh}.sidebar__content[data-v-d098955a]{background:#fff;position:absolute;pointer-events:all;overflow-y:scroll;-webkit-overflow-scrolling:touch;width:100%;height:100%}.sidebar__content.sidebar__content__side__bottom[data-v-d098955a]{margin-top:var(--sidebar-margin-top);overflow-y:hidden;height:auto;box-shadow:var(--sidebar-box-shadow)}.sidebar__content.sidebar__content__side__center[data-v-d098955a]{pointer-events:all;position:absolute;width:var(--sidebar-width,600px);max-width:var(--sidebar-max-width,90%);height:var(--sidebar-height,auto);max-height:var(--sidebar-max-height,none);top:var(--sidebar-margin-top);transform:translateX(-50%);left:50%;border-radius:var(--sidebar-border-radius);box-shadow:var(--sidebar-box-shadow);margin-bottom:20px;border-radius:.5rem}.sidebar__content.sidebar__content__side__center.sidebar__fullscreen__true[data-v-d098955a]{top:0;width:100%;height:100%;max-width:100%;max-height:100%;margin-bottom:0;border-radius:0}.overlay-enter-active[data-v-d098955a]{transition:all .25s ease-out}.overlay-enter[data-v-d098955a]{opacity:0}.overlay-enter-to[data-v-d098955a]{opacity:1}.overlay-leave-active[data-v-d098955a]{transition:all .25s}.overlay-leave[data-v-d098955a]{opacity:1}.overlay-leave-to[data-v-d098955a]{opacity:0}.sidebar__bottom-enter-active[data-v-d098955a],.sidebar__bottom-leave-active[data-v-d098955a],.sidebar__center-enter-active[data-v-d098955a],.sidebar__center-leave-active[data-v-d098955a],.sidebar__left-enter-active[data-v-d098955a],.sidebar__left-leave-active[data-v-d098955a],.sidebar__right-enter-active[data-v-d098955a],.sidebar__right-leave-active[data-v-d098955a]{transition:all .5s}.sidebar__left-enter[data-v-d098955a],.sidebar__left-leave-to[data-v-d098955a]{transform:translateX(-100%)}.sidebar__right-enter[data-v-d098955a],.sidebar__right-leave-to[data-v-d098955a]{transform:translateX(100%)}.sidebar__left-enter-to[data-v-d098955a],.sidebar__left-leave .sidebar__right-enter-to[data-v-d098955a],.sidebar__right-leave[data-v-d098955a]{transform:translateX(0)}.sidebar__bottom-enter[data-v-d098955a],.sidebar__bottom-leave-to[data-v-d098955a]{transform:translateY(100%)}.sidebar__bottom-enter-to[data-v-d098955a],.sidebar__bottom-leave[data-v-d098955a]{transform:translateY(0)}.sidebar__center-enter[data-v-d098955a],.sidebar__center-leave-to[data-v-d098955a]{opacity:0;transform:scale(.95)}.sidebar__center-enter-to[data-v-d098955a],.sidebar__center-leave[data-v-d098955a]{opacity:1;transform:scale(1)}@media screen and (max-width:500px){.sidebar__content.sidebar__content__side__center[data-v-d098955a]{margin-top:3rem}}button[data-v-849e11fe]{background:none;border:none;font-size:inherit;font-family:inherit;padding:0}.term[data-v-849e11fe]{cursor:pointer}.term[data-v-849e11fe]:active{outline:none}.tooltip[data-v-849e11fe]{position:absolute;width:var(--width);left:auto;right:var(--right);font-size:.75rem;line-height:1.5;padding-right:1rem;opacity:0;pointer-events:none;outline:none;transition:all .1s ease-in;transform:translateY(-1em);z-index:1000000;box-sizing:border-box}.tooltip__wrapper[data-v-849e11fe]{padding:.75em 1em;background:var(--white-100,#fff);box-shadow:0 .25em 1.5em rgba(0,0,0,.15);border-radius:.5em}.tooltip[data-v-849e11fe]:focus{transform:translateY(0);opacity:1;pointer-events:all}@media screen and (max-width:600px){.tooltip[data-v-849e11fe]{border-radius:0;width:100vw;left:var(--left);padding:0 1em}}.page-header[data-v-93ef1dde]{background:#f8f9fc}.page-header__container[data-v-93ef1dde]{padding:2rem}.page-header__text[data-v-93ef1dde]{margin-top:1.5rem}.page-header__title[data-v-93ef1dde]{margin-bottom:1rem;font-size:2.5rem;line-height:1.16;font-weight:300}.page-header__subtitle[data-v-93ef1dde]{color:rgba(0,0,0,.667)}.page-header__project-title[data-v-93ef1dde]{font-family:var(--ds-font-family,inherit);font-weight:500;font-size:var(--ds-h4-font-size);line-height:1.25rem;letter-spacing:.25rem;text-transform:uppercase;margin-bottom:1.25rem;color:rgba(0,0,0,.8)}@media screen and (max-width:1680px){.page-header__container[data-v-93ef1dde]{padding:5.75rem 8rem 2rem}}@media screen and (max-width:1024px){.page-header__container[data-v-93ef1dde]{padding:5.75rem 5.75rem 2rem}}@media screen and (max-width:768px){.page-header__container[data-v-93ef1dde]{padding:2rem}}.banner-wrapper[data-v-40401285]{box-sizing:border-box;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);position:fixed;bottom:2rem;left:50%;transform:translateX(-50%);z-index:3000;background:var(--white-100,#fff);border:.0625rem solid transparent;-o-border-image:initial;border-image:initial;border-radius:.5rem}.wrapper[data-v-40401285]{display:flex}.message[data-v-40401285]{font-size:.8125rem;line-height:1.125rem;letter-spacing:.01em;align-items:stretch;justify-content:center;padding:.8125rem 0 .8125rem .8125rem;position:relative}.box[data-v-40401285]{width:3.5rem;flex:0 0 3.5rem;flex-direction:column;padding:0;position:relative;cursor:pointer}.box[data-v-40401285],.icon-cross[data-v-40401285]{display:flex;justify-content:center;align-items:center}.box:hover .icon-cross[data-v-40401285]{height:2rem;width:2rem;background-color:var(--grey-95,#eff0f5);border-radius:1rem;transition:background-color .2s}.box:hover path[data-v-40401285]{stroke:var(--grey-44,#686a79);transition:stroke .2s}.fade-enter-active[data-v-40401285]{transition:opacity .2s ease-out,transform .5s cubic-bezier(.22,1,.36,1)}.fade-leave-active[data-v-40401285]{transition:opacity .3s cubic-bezier(.32,0,.67,0),transform .3s cubic-bezier(.32,0,.67,0)}.fade-enter[data-v-40401285],.fade-leave-to[data-v-40401285]{opacity:0;transform:translate(-50%,100%)}@media screen and (max-width:435px){.banner-wrapper[data-v-40401285]{border-radius:.5rem;bottom:1rem;white-space:normal;width:90%}.message[data-v-40401285]{font-size:.9rem;line-height:1.125rem}}a[data-v-6c0fa742]{color:inherit;text-decoration:none}.component__footer__container[data-v-6c0fa742]{font-family:var(--ds-font-family,inherit);background-color:var(--grey-14,#151831);color:var(--white-100,#fff);padding-top:2rem;padding-bottom:2rem;overflow-x:hidden}.grid[data-v-6c0fa742]{display:grid;grid-template-columns:1fr 2fr;margin-bottom:2rem}.header[data-v-6c0fa742]{display:grid;gap:1rem;grid-auto-flow:row;align-content:space-between;justify-content:space-between}.header__title[data-v-6c0fa742]{font-size:1.25rem;margin-bottom:2rem}.header__links[data-v-6c0fa742]{display:flex;flex-direction:row;flex-wrap:wrap;position:relative}.header__links__popover[data-v-6c0fa742]{position:absolute;top:-3.5rem;transform:translate(var(--pos-x),var(--pos-y));pointer-events:none;transition:all .25s}.header__links__popover__content[data-v-6c0fa742]{background:var(--white-100,#fff);color:var(--black,#000);position:absolute;white-space:nowrap;transform:translateX(-50%);font-size:.8125rem;padding:7px 12px;border-radius:.25rem}.header__links__popover__content[data-v-6c0fa742]:after{content:"";position:absolute;width:8px;height:8px;display:block;background-color:var(--white-100,#fff);-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;left:50%;transform:translateX(-50%) translateY(-13%) scaleX(2)}.header__links__item[data-v-6c0fa742]{fill:var(--white-100,#fff);margin-right:.75rem;margin-bottom:.75rem;display:block;height:24px;width:24px}.header__links__item__image[data-v-6c0fa742]{position:block}.menu[data-v-6c0fa742]{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.menu__item__title[data-v-6c0fa742]{margin-bottom:1rem;font-weight:var(--ds-h6-font-weight,800);font-size:var(--ds-h6-font-size,.75rem);text-transform:var(--ds-h6-text-transform,uppercase);letter-spacing:var(--ds-h6-letter-spacing,.2em)}.menu__item__item[data-v-6c0fa742]{padding-top:.5rem;padding-bottom:.5rem;display:block;font-size:var(--ds-p2-font-size,.875rem);line-height:var(--ds-p2-line-height,1.25)}.smallprint[data-v-6c0fa742]{font-size:var(--ds-p3-font-size,.825rem)}.fade-active-enter[data-v-6c0fa742]{transition:all .25s}.fade-enter[data-v-6c0fa742]{opacity:0}.fade-enter-to[data-v-6c0fa742]{opacity:1}.fade-active-leave[data-v-6c0fa742]{transition:all .25s}.fade-leave[data-v-6c0fa742]{opacity:1}.fade-leave-to[data-v-6c0fa742]{opacity:0}@media screen and (max-width:800px){.grid[data-v-6c0fa742]{display:block}.header[data-v-6c0fa742]{grid-auto-flow:column;margin-bottom:3rem}}@media screen and (max-width:400px){.header[data-v-6c0fa742]{display:block}}a[data-v-b6cbde80]{text-decoration:none}.body__code[data-v-b6cbde80]{white-space:pre}span[data-v-b6cbde80]{display:block}.fade-enter-active[data-v-b6cbde80],.fade-leave-active[data-v-b6cbde80]{transition:opacity .2s}.fade-enter[data-v-b6cbde80],.fade-leave-to[data-v-b6cbde80]{opacity:0}.fade-enter-to[data-v-b6cbde80],.fade-leave[data-v-b6cbde80]{opacity:1}.container[data-v-b6cbde80]{border-radius:.5rem;background:#2e3148}.body__container[data-v-b6cbde80]{position:relative}.body__container:hover .icons[data-v-b6cbde80]{opacity:1}.body[data-v-b6cbde80]{color:hsla(0,0%,100%,.8);overflow-x:scroll;padding:1.375rem 1rem 1rem;overflow-y:hidden;position:relative;line-height:1.75;scrollbar-color:hsla(0,0%,100%,.2) hsla(0,0%,100%,.1);scrollbar-width:thin;font-size:.8125rem;line-height:1.25rem}.body[data-v-b6cbde80]::-webkit-scrollbar{background:hsla(0,0%,100%,.1);height:6px}.body[data-v-b6cbde80]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:6px}.codeblock__is-expandable__true .body[data-v-b6cbde80]{max-height:700px}.codeblock__is-expandable__true.codeblock__expanded__true .body[data-v-b6cbde80]{max-height:var(--max-height)}.body__wrapper[data-v-b6cbde80]{font-family:JetBrains Mono,Menlo,Monaco,monospace;-webkit-font-feature-settings:"liga" on,"calt" on;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:.8125rem;display:inline-block;line-height:1.25rem}.body.body__hasfooter__true[data-v-b6cbde80]{border-bottom-left-radius:0;border-bottom-right-radius:0}.expand[data-v-b6cbde80]{position:absolute;bottom:0;display:grid;grid-template-columns:1fr 1fr 1fr;width:100%;color:#161931;padding:1.5rem;font-family:var(--ds-font-family,inherit);box-sizing:border-box}.codeblock__expanded__false .expand[data-v-b6cbde80]{background:linear-gradient(180deg,rgba(22,25,49,0),#161931)}.codeblock__hasfooter__false.codeblock__expanded__false .expand[data-v-b6cbde80]{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.expand__item[data-v-b6cbde80]{text-transform:uppercase;background-color:#dadce6;display:grid;justify-self:center;grid-auto-flow:column;gap:.5rem;align-items:center;font-weight:500;padding:.5rem 1rem;line-height:1;letter-spacing:.02em;font-size:.8125rem;height:2rem;cursor:pointer;border-radius:1000px;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);box-sizing:border-box}.expand__item__expand[data-v-b6cbde80]{grid-area:1/2/1/3;justify-self:center}.expand__item__collapse[data-v-b6cbde80]{grid-area:1/3/1/4;justify-self:flex-end;height:2rem;max-width:3rem;padding-top:.3rem;padding-bottom:.3rem}.expand__item__icon[data-v-b6cbde80]{height:1em;width:auto}.icons[data-v-b6cbde80]{transition:all .1s;position:absolute;top:0;right:0;padding:.5rem;opacity:0;display:flex;z-index:100}.icons__item[data-v-b6cbde80]{margin-left:.5rem;cursor:pointer;border-radius:.25rem;position:relative;background:rgba(46,49,72,.7)}.icons__item:active .icons__item__icon[data-v-b6cbde80]{fill:#66a1ff}.icons__item:hover .icons__item__tooltip[data-v-b6cbde80]{opacity:1}.icons__item:hover .icons__item__tooltip[data-v-b6cbde80]:hover{opacity:0}.icons__item__tooltip[data-v-b6cbde80]{font-family:var(--ds-font-family,inherit);color:#fff;position:absolute;top:-2.05rem;left:50%;transform:translateX(-50%);background:#161931;font-size:.8125rem;opacity:0;border-radius:.25rem;padding:.5rem .75rem;transition:all .25s .5s}.icons__item__tooltip[data-v-b6cbde80]:before{content:"";width:8px;height:8px;display:block;background-color:#161931;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;transform:translateX(-50%) translateY(-13%) scaleX(2);position:absolute;font-size:1rem;left:50%}.icons__item__icon[data-v-b6cbde80]{fill:#fff;padding:.75rem;display:block}.icons__item[data-v-b6cbde80]:hover{fill:#66a1ff;background:#43465a}.footer[data-v-b6cbde80]{background-color:#161931;color:#fff;display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;font-size:.8125rem;line-height:1;font-family:var(--ds-font-family,inherit)}.footer__source[data-v-b6cbde80]{color:#66a1ff;font-weight:500;stroke:#66a1ff;align-items:center;display:flex;box-shadow:none;outline:none}.footer__source[data-v-b6cbde80]:after{display:none}.footer__source[data-v-b6cbde80]:visited,.footer__source[data-v-b6cbde80]:visited:hover{color:#66a1ff}.footer__source[data-v-b6cbde80]:hover{box-shadow:none;color:#66a1ff}.footer__source[data-v-b6cbde80]:active{color:#66a1ff}.footer__source__icon[data-v-b6cbde80]{margin-left:.5rem}[data-v-b6cbde80] .token.keyword{color:#c678dd}[data-v-b6cbde80] .token.comment{opacity:.5}[data-v-b6cbde80] .token.function{color:#61afef}[data-v-b6cbde80] .token.builtin{color:#e06c75}[data-v-b6cbde80] .token.string{color:#98c379}[data-v-b6cbde80] .token.operator{color:#56b6c2}[data-v-b6cbde80] .token.boolean{color:#d19a66}.component__button[data-v-02d19c16]{border:none;font-family:var(--ds-font-family,inherit);font-size:medium;margin:0;padding:.875em 1.15em;border-radius:.35em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;transition:all .25s;text-align:center;text-transform:uppercase;font-weight:500;line-height:1.25;letter-spacing:.02em;text-decoration:none;background-color:var(--background-color,#5064fb);color:#fff;white-space:nowrap}button[data-v-02d19c16]:disabled{opacity:.5}.component__button[data-v-02d19c16]:focus,.component__button[data-v-02d19c16]:hover{box-shadow:0 16px 32px rgba(0,0,0,.08),0 8px 12px rgba(0,0,0,.06),0 1px 0 rgba(0,0,0,.05);opacity:.8}.button__size__xs[data-v-02d19c16]{font-size:.75rem}.button__size__s[data-v-02d19c16]{font-size:.875rem}.button__size__m[data-v-02d19c16]{font-size:1rem}.button__size__l[data-v-02d19c16]{font-size:1.25rem}.button__size__xl[data-v-02d19c16]{font-size:1.5rem}.wrapper[data-v-5eac6964]{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.container[data-v-5eac6964]{font-family:var(--ds-font-family,inherit);padding:4rem 1rem;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);border-radius:.75rem}.h1[data-v-5eac6964]{font-weight:500;font-size:2rem;line-height:2.5rem;text-align:center;letter-spacing:-.04em;color:var(--white-100,#fff);margin-bottom:2rem}.p[data-v-5eac6964]{font-size:1.25rem;line-height:1.75rem;text-align:center;color:var(--white-80)}.footer[data-v-5eac6964]{margin-top:3rem;display:flex;justify-content:center}@media screen and (max-width:600px){.wrapper[data-v-5eac6964]{grid-template-columns:1fr}.container[data-v-5eac6964]{padding:3rem 1rem}.h1[data-v-5eac6964]{font-size:1.5rem}.p[data-v-5eac6964]{font-size:1.05rem}.footer[data-v-5eac6964]{margin-top:2rem}}a[data-v-05f587fd]{color:var(--primary-light);text-decoration:none}.section-content[data-v-05f587fd]{display:flex;flex-direction:column;padding:1rem;align-self:center;color:var(--white-100,#fff);background:var(--grey-14);font-family:var(--ds-font-family,inherit)}.container[data-v-05f587fd]{display:flex;flex-direction:column;padding:0;max-width:44rem;width:100%;align-self:center}.icon[data-v-05f587fd]{stroke:var(--secondary);display:flex;width:100%;justify-content:center}.icon__icon[data-v-05f587fd]{max-width:4rem;max-height:4rem}.content[data-v-05f587fd]{align-self:center;margin:0 6rem;display:contents}.title[data-v-05f587fd]{font-weight:500;font-size:2.5rem;line-height:1.3;color:var(--white-100,#fff);text-align:center;letter-spacing:-.04em;margin:2rem 0}.subtitle[data-v-05f587fd]{font-size:1.25rem;line-height:1.4;color:var(--white-80)}.notes[data-v-05f587fd]{font-size:1.25rem;line-height:1.75rem;color:var(--white-80)}ul[data-v-05f587fd]{list-style-type:disc;padding-left:1rem}ul li[data-v-05f587fd]{margin-bottom:1.25rem}ul ul[data-v-05f587fd]{list-style-type:none;padding:0}ul ul li[data-v-05f587fd]{margin:1.25rem auto}ul li.note[data-v-05f587fd]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em}@media screen and (max-width:600px){.title[data-v-05f587fd]{font-size:1.2rem;margin:1rem 0}.notes[data-v-05f587fd],.subtitle[data-v-05f587fd]{font-size:1rem}}.container[data-v-d4e7da22]{overflow-wrap:anywhere;margin-left:1rem;margin-right:1rem}.row[data-v-d4e7da22]{background-color:var(--grey-23,#2e3148);color:var(--white-100,#fff);font-family:var(--ds-font-family,inherit);display:grid;grid-auto-flow:column;grid-template-columns:-webkit-min-content 1fr;grid-template-columns:min-content 1fr;text-decoration:none;border-radius:.5rem;transition:all .25s}.row[data-v-d4e7da22]:focus,.row[data-v-d4e7da22]:hover{background-color:#373a52;box-shadow:var(--ds-elevation-4)}.row:focus .icon[data-v-d4e7da22],.row:hover .icon[data-v-d4e7da22]{opacity:.8}.row:focus .h2[data-v-d4e7da22],.row:hover .h2[data-v-d4e7da22]{color:#fff}.row:focus .aside__icon[data-v-d4e7da22],.row:hover .aside__icon[data-v-d4e7da22]{stroke:hsla(0,0%,100%,.8)}.row[data-v-d4e7da22]:active{opacity:.8}.row:active .aside__icon[data-v-d4e7da22]{opacity:inherit}.icon[data-v-d4e7da22],.icon__wrapper[data-v-d4e7da22]{display:flex;align-items:center}.icon[data-v-d4e7da22]{grid-column-start:1;width:4rem;height:4rem;fill:var(--white-100,#fff);opacity:.32;margin:1.5rem 3rem;justify-content:center;transition:opacity .25s}.details[data-v-d4e7da22]{padding-top:1.5rem;padding-bottom:1.5rem;grid-column-start:2;display:grid;grid-auto-flow:column;align-items:center;gap:1rem;justify-content:space-between;margin-left:1.5rem;margin-right:1.5rem}.h1[data-v-d4e7da22]{font-weight:500;font-size:1.25rem;line-height:var(--ds-h5-line-height);letter-spacing:-.01em;color:var(--white-100,#fff);display:block;text-decoration:none}.h2[data-v-d4e7da22]{font-size:var(--ds-body2-font-size,.875rem);line-height:var(--ds-body2-line-height,1.25rem);line-height:24px;color:var(--white-51);font-weight:400;transition:color .25s}.body[data-v-d4e7da22]{margin-top:.75rem;line-height:var(--ds-body1-line-height,1.5rem);color:hsla(0,0%,100%,.8);font-size:var(--ds-body1-font-size,1rem)}.h3[data-v-d4e7da22]{font-size:.875rem;line-height:20px;letter-spacing:.01em;color:var(--white-80);text-align:right;text-transform:none;font-weight:400}.indicator[data-v-d4e7da22]{display:flex;flex-direction:row;align-items:flex-end}.progress__wrapper[data-v-d4e7da22]{display:flex;flex-direction:column;align-items:flex-end}.progress[data-v-d4e7da22]{position:relative;height:.25rem;width:7rem;background:var(--white-20);margin-bottom:.75rem;border-radius:.5rem}.progress__bar[data-v-d4e7da22]{height:100%;width:var(--progress-bar-width,0);background:var(--success);border-radius:inherit}.aside__icon__wrapper[data-v-d4e7da22]{padding:1rem .75rem;margin-left:.5rem}.aside__icon[data-v-d4e7da22]{height:1rem;width:auto;display:block;stroke:hsla(0,0%,100%,.32);transition:all .25s}@media screen and (max-width:600px){.icon[data-v-d4e7da22]{display:none}.h1[data-v-d4e7da22]{font-size:var(--ds-body2-font-size,.875rem)}.h2[data-v-d4e7da22]{font-size:var(--ds-caption-book-font-size,.8125rem)}.details[data-v-d4e7da22]{margin-left:1rem;margin-right:1rem;padding-top:1rem;padding-bottom:1rem}.progress__true .aside__icon__wrapper[data-v-d4e7da22]{display:none}.progress[data-v-d4e7da22]{width:3rem}.h3__label[data-v-d4e7da22]{display:none}}.row[data-v-68662012]{margin-bottom:1rem}.row[data-v-68662012]:last-child{margin-bottom:0}.container[data-v-1aec3751]{color:#fff;font-family:var(--ds-font-family,inherit);margin-left:2rem;margin-right:2rem}.row[data-v-1aec3751]{display:grid;grid-template-columns:25% 1fr;gap:2rem}.row__aside[data-v-1aec3751]{text-align:right;font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:hsla(0,0%,100%,.51);padding-top:1.5rem;padding-bottom:1.5rem;margin-top:.3rem}.row__body[data-v-1aec3751]{border-bottom:1px solid hsla(0,0%,100%,.1);padding-top:1.5rem;padding-bottom:1.5rem;line-height:1.5}[data-v-1aec3751]{font-size:1rem}[data-v-1aec3751] p{margin:0}[data-v-1aec3751] a{color:#66a1ff;text-decoration:none}[data-v-1aec3751] ul{padding-left:2em}[data-v-1aec3751] li{margin-top:.75rem;margin-bottom:.75rem;list-style-type:disc}@media screen and (max-width:600px){.row[data-v-1aec3751]{display:block}.row__aside[data-v-1aec3751]{text-align:initial;padding-bottom:.5rem;font-size:.75rem}.row__body[data-v-1aec3751]{padding-top:0}[data-v-1aec3751]{font-size:.875rem}}.component__hero__container[data-v-322ca003]{font-family:var(--ds-font-family,inherit);position:relative;min-height:100vh}.component__hero__container[data-v-322ca003]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(22,25,49,0) 68.75%,rgba(22,25,49,.8) 88.02%)}.container[data-v-322ca003]{padding:14rem 1rem;border-radius:.75rem;margin-left:auto;margin-right:auto}.section[data-v-322ca003]{display:flex;justify-content:center;align-items:center}.section__img[data-v-322ca003]{height:7.5rem;width:100%;max-width:65rem;position:absolute}.footer[data-v-322ca003]{bottom:3rem;position:absolute}.subtitle[data-v-322ca003]{color:var(--white-100,#fff);font-size:1.5rem;line-height:2rem;text-align:center;letter-spacing:-.01em;max-width:34.4162rem;width:100%}.button[data-v-322ca003]{display:grid;grid-auto-flow:column;align-items:center;justify-content:center;white-space:nowrap;gap:.75rem;box-sizing:border-box;color:var(--white-100,#fff)}.button__style__standard[data-v-322ca003]{background:var(--secondary-dark);display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;justify-content:center;align-items:center;margin:1.5rem auto}.button__style__standard[data-v-322ca003]:focus,.button__style__standard[data-v-322ca003]:hover{background:var(--secondary)}.button__icon[data-v-322ca003]{width:1.75rem;height:2rem;fill:var(--white-100,#fff)}@media screen and (max-width:600px){.footer[data-v-322ca003]{margin:auto 1rem}}@media screen and (max-width:414px){.container[data-v-322ca003]{padding:12rem 0}.footer[data-v-322ca003]{bottom:1rem}.section__img[data-v-322ca003]{max-width:18rem}}@media screen and (max-width:375px){.container[data-v-322ca003]{padding:13rem 0}}@media screen and (max-width:320px){.container[data-v-322ca003]{padding:10rem 0}.subtitle[data-v-322ca003]{font-size:1.3rem}}.button[data-v-15043a38]{border:none;font-family:var(--ds-font-family,inherit);font-size:medium;margin:0;border-radius:.35em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;transition:all .25s;text-align:center;text-transform:uppercase;font-weight:600;letter-spacing:.02em;text-decoration:none;padding:0;width:100%;display:flex;justify-content:center}.button[data-v-15043a38]:disabled{opacity:.5;cursor:not-allowed}.button__content[data-v-15043a38]{white-space:nowrap;display:grid;grid-auto-flow:column;align-items:center}.button__text[data-v-15043a38]{padding-left:.25rem;padding-right:.25rem}.button__icon[data-v-15043a38]{display:flex;align-items:center}.button__type__text .button__text[data-v-15043a38]{padding-left:0;padding-right:0}.button__size__s[data-v-15043a38]{font-size:.8125rem;line-height:1rem;padding-top:.5rem;padding-bottom:.5rem}.button__size__s.button__type__contained[data-v-15043a38]{padding-left:.75rem;padding-right:.75rem}.button__size__s .button__content[data-v-15043a38]{gap:.25rem}.button__size__s .button__icon[data-v-15043a38]{width:1rem;height:1rem}.button__size__m[data-v-15043a38]{font-size:1rem;line-height:1.5rem;padding-top:.75rem;padding-bottom:.75rem}.button__size__m .button__content[data-v-15043a38]{gap:.5rem}.button__size__m .button__icon[data-v-15043a38]{width:1.5rem;height:1.5rem}.button__size__m.button__type__contained[data-v-15043a38]{padding-left:1rem;padding-right:1rem}.button__size__l[data-v-15043a38]{font-size:1.25rem;line-height:2rem;padding-top:1rem;padding-bottom:1rem}.button__size__l .button__content[data-v-15043a38]{gap:.75rem}.button__size__l .button__icon[data-v-15043a38]{width:2rem;height:2rem}.button__size__l.button__type__contained[data-v-15043a38]{padding-left:1.5rem;padding-right:1.5rem}.container[data-v-18c36b6e]{background-color:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:8px;display:grid;grid-template-columns:25% 60% 15%;min-height:7.25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;transition:background-color .25s,border-color .25s,box-shadow .15s ease-out,transform .15s ease-out;padding-top:1rem;padding-bottom:1rem;box-sizing:border-box;outline:none}[data-v-18c36b6e] .container:focus,[data-v-18c36b6e] .container:hover{box-shadow:0 12px 24px rgba(0,0,0,.07),0 4px 8px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05)}[data-v-18c36b6e] .container:hover{transform:translateY(-2px)}[data-v-18c36b6e] .value__false.container:hover .checkbox__icon{stroke:hsla(0,0%,100%,.8)}[data-v-18c36b6e] .value__false.container:focus:not(:hover) .checkbox__icon{stroke:#66a1ff}[data-v-18c36b6e] .value__true.container:focus:not(:hover) .checkbox__icon{fill:#66a1ff}.container[data-v-18c36b6e]:active{transform:translateY(0);transition-duration:0s}.value__true.container[data-v-18c36b6e]{background-color:#161931}.icon[data-v-18c36b6e]{grid-column-start:1;display:flex;align-items:center;justify-content:center}.icon__image[data-v-18c36b6e]{width:4rem;height:4rem;stroke:hsla(0,0%,100%,.5);fill:none;margin:1rem}.value__true .icon__image[data-v-18c36b6e]{stroke:#66a1ff}[data-v-18c36b6e] .container:active .checkbox,[data-v-18c36b6e] .container:active .h1,[data-v-18c36b6e] .container:active .icon__image,[data-v-18c36b6e] .container:active .p{opacity:.6}.body[data-v-18c36b6e]{grid-column-start:2;display:flex;align-items:center}.h1[data-v-18c36b6e]{font-weight:600;font-size:1.25rem;line-height:1.75rem;letter-spacing:-.02em;color:#fff;margin-bottom:.5rem}.p[data-v-18c36b6e]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;color:hsla(0,0%,100%,.8)}.checkbox[data-v-18c36b6e]{grid-column-start:3;display:flex;align-items:center;justify-content:center}.checkbox__icon[data-v-18c36b6e]{width:1.5rem;height:1.5rem}.value__true .checkbox__icon[data-v-18c36b6e]{fill:#fff}.value__false .checkbox__icon[data-v-18c36b6e]{fill:none;stroke:hsla(0,0%,100%,.32)}@media screen and (max-width:400px){.h1[data-v-18c36b6e]{font-size:1rem}.p[data-v-18c36b6e]{font-size:.8125rem}}.background-stars-container[data-v-3572cdf7]{position:absolute;top:0;left:0;right:0;bottom:0;background:url(/main/assets/img/stars.d8924548.svg) repeat top,linear-gradient(145.11deg,#202854 9.49%,#171b39 91.06%)}a[data-v-185099e4]{color:#66a1ff;text-decoration:none}.icon-hero[data-v-185099e4]{width:4rem;height:4rem;margin:1.5rem 0 2rem;color:hsla(0,0%,100%,.5)}.container[data-v-185099e4]{background:var(--newsletter-background);font-family:var(--ds-font-family,inherit);color:#fff;position:relative}.wrapper[data-v-185099e4]{display:grid;grid-template-columns:50% 50%;grid-template-rows:1fr;align-items:center;width:100%}.image[data-v-185099e4]{width:100%;height:100%;position:relative;overflow:hidden;transform:translateZ(0)}.image__img[data-v-185099e4]{position:absolute;top:50%;left:100%;transform:translate(-85%,-50%)}.text[data-v-185099e4]{max-width:36rem;position:relative;width:100%;overflow-y:hidden;transition:min-height .5s ease-in-out;height:100%;min-height:var(--page-min-height)}.page[data-v-185099e4]{box-sizing:border-box;padding:5rem 1rem;width:100%;display:flex;align-items:center}.page__wrapper[data-v-185099e4]{width:100%}.page__container[data-v-185099e4]{display:flex;align-items:center;height:100%}.h1[data-v-185099e4]{font-size:2rem;font-weight:600;line-height:1.25;color:var(--white-100,#fff);margin-bottom:1.5rem;display:block}.fullscreen__true .h1[data-v-185099e4]{font-size:2.5rem}.h2[data-v-185099e4]{font-size:2rem;color:#fff;font-weight:600;line-height:1.25;margin-top:2.5rem;margin-bottom:2.5rem}.h3[data-v-185099e4]{font-size:.8125rem;font-weight:600;color:hsla(0,0%,100%,.8);text-transform:none;margin:initial;letter-spacing:normal;line-height:1.25rem}.h4[data-v-185099e4]{margin-bottom:.5rem;font-weight:800;line-height:20px;letter-spacing:.07em;text-transform:uppercase;color:hsla(0,0%,100%,.5)}.p1[data-v-185099e4]{color:hsla(0,0%,100%,.8);font-size:1.25rem;line-height:1.4;font-weight:400;margin-bottom:2rem}.p2[data-v-185099e4]{font-size:.8125rem;color:hsla(0,0%,100%,.5);line-height:1.25rem}.email__form[data-v-185099e4]{display:grid;grid-auto-flow:column;grid-template-columns:1fr -webkit-min-content;grid-template-columns:1fr min-content;gap:1rem;margin-top:2.5rem;margin-bottom:1.5rem}.email__form__input__input[data-v-185099e4]{outline:none;width:100%;background:hsla(0,0%,100%,.1);border:none;border-radius:.25rem;color:#fff;font-size:1rem;padding:.75rem 1rem;line-height:1.5;height:auto;box-sizing:border-box;transition:all .15s;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--ds-font-family,inherit);font-weight:400;margin:0}.email__form__input__input[data-v-185099e4]:hover{background-color:hsla(0,0%,100%,.13)}.email__form__input__input[data-v-185099e4]:focus{box-shadow:inset 0 0 0 1.5px #66a1ff;background-color:rgba(0,0,0,.2)}.email__form__input__input[data-v-185099e4]:hover:not(:focus)::-webkit-input-placeholder,.email__form__input__input[data-v-185099e4]:hover:not(:focus)::placeholder{color:hsla(0,0%,100%,.8)}.card-checkbox-list[data-v-185099e4]{margin-top:2.5rem;margin-bottom:2.5rem;display:grid;grid-auto-flow:row;gap:1rem}.backwards-enter-active[data-v-185099e4],.backwards-leave-active[data-v-185099e4],.forwards-enter-active[data-v-185099e4],.forwards-leave-active[data-v-185099e4]{transition:all .5s ease-in-out;position:absolute}.forwards-enter[data-v-185099e4]{opacity:0;transform:translateY(50px)}.forwards-enter-to[data-v-185099e4],.forwards-leave[data-v-185099e4]{opacity:1;transform:translateY(0)}.backwards-enter[data-v-185099e4],.forwards-leave-to[data-v-185099e4]{opacity:0;transform:translateY(-50px)}.backwards-enter-to[data-v-185099e4],.backwards-leave[data-v-185099e4]{opacity:1;transform:translateY(0)}.backwards-leave-to[data-v-185099e4]{opacity:0;transform:translateY(50px)}.fade-enter-active[data-v-185099e4],.fade-leave-active[data-v-185099e4]{transition:opacity 5s}.fade-enter[data-v-185099e4],.fade-leave-to[data-v-185099e4]{opacity:0}.fade-enter-to[data-v-185099e4],.fade-leave[data-v-185099e4]{opacity:1}@media screen and (max-width:800px){.icon-hero[data-v-185099e4]{display:flex;justify-content:center;width:100%}.wrapper[data-v-185099e4]{grid-template-columns:1fr}.page__container[data-v-185099e4]{align-items:flex-start}.page[data-v-185099e4]{padding-bottom:0}.image[data-v-185099e4]{height:250px;display:flex;justify-content:center}.image__img[data-v-185099e4]{position:relative;left:0;top:0;transform:translateY(-100%)}.image__img__img[data-v-185099e4]{width:500px;left:50%;position:absolute;transform:translateX(-50%)}.text[data-v-185099e4]{transform:translateY(-75px);justify-self:center;max-width:560px;height:auto}.h1[data-v-185099e4],.h3[data-v-185099e4],.h4[data-v-185099e4],.p1[data-v-185099e4],.p2[data-v-185099e4]{text-align:center}}@media screen and (max-width:400px){.email__form[data-v-185099e4]{grid-template-columns:1fr;grid-auto-flow:row}.fullscreen__true .h1[data-v-185099e4],.h1[data-v-185099e4],.h2[data-v-185099e4]{font-size:1.5rem}.h2[data-v-185099e4]{margin-top:1rem;margin-bottom:1rem}.p1[data-v-185099e4]{font-size:1rem}.h4[data-v-185099e4]{font-size:.8125rem}}a[data-v-4b2eb8c8]{color:#5064fb;text-decoration:none}.container[data-v-4b2eb8c8]{color:var(--white-100,#fff);font-family:var(--ds-font-family,inherit);padding:4rem 1rem;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);margin-left:auto;margin-right:auto;overflow-x:hidden}.section[data-v-4b2eb8c8]{max-width:33rem;margin-left:auto;margin-right:auto}.icon[data-v-4b2eb8c8]{display:flex;justify-content:center}.icon__icon[data-v-4b2eb8c8]{stroke:var(--white-100,#fff);width:4rem;height:4rem}.icon__icon.icon__icon__active[data-v-4b2eb8c8]{stroke:var(--primary-light);opacity:1}.icon__icon.icon__icon__error[data-v-4b2eb8c8]{stroke:var(--danger);opacity:1}.h1[data-v-4b2eb8c8]{text-align:center;font-size:40px;font-weight:500;line-height:3rem;letter-spacing:-.03em;color:#000;margin-top:1.5rem;margin-bottom:1.5rem}.p[data-v-4b2eb8c8]{font-size:1.125rem;line-height:1.6875rem;text-align:center;letter-spacing:-.01em;color:rgba(0,0,0,.8)}.form[data-v-4b2eb8c8]{margin-top:3rem;display:grid;gap:1rem;grid-auto-flow:column;grid-template-columns:1fr -webkit-min-content;grid-template-columns:1fr min-content;max-width:30rem;margin-left:auto;margin-right:auto}.form__input__input[data-v-4b2eb8c8]{background:none;border:2px solid rgba(59,66,125,.12);padding:.75rem 1rem;font-size:1rem;font-family:var(--ds-font-family,inherit);line-height:1.5;border-radius:.25rem;width:100%;box-sizing:border-box;color:rgba(0,0,0,.667);opacity:.7}.form__input__input[data-v-4b2eb8c8]:hover{background-color:hsla(0,0%,100%,.13)}.form__input__input[data-v-4b2eb8c8]:focus{outline:none;border:2px solid #5064fb}.form__button[data-v-4b2eb8c8]{position:relative;display:flex;justify-content:center}.form__button__content[data-v-4b2eb8c8]{display:grid;white-space:nowrap;gap:.75rem;grid-auto-flow:column;align-items:center;justify-content:center;box-sizing:border-box;color:#fff}.button__style__standard[data-v-4b2eb8c8]{background:#5064fb}.form__button__content.form__button__content__in-flight__true[data-v-4b2eb8c8]{opacity:0}.form__button__spinner[data-v-4b2eb8c8]{width:1.5rem;height:1.5rem;position:absolute;-webkit-animation:spin-data-v-4b2eb8c8 1s linear infinite;animation:spin-data-v-4b2eb8c8 1s linear infinite}@-webkit-keyframes spin-data-v-4b2eb8c8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin-data-v-4b2eb8c8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.form__button__icon[data-v-4b2eb8c8]{fill:#fff;width:1.5rem;height:1.5rem}.form__input__input[data-v-4b2eb8c8]::-moz-placeholder{color:inherit;opacity:.7}.form__input__input[data-v-4b2eb8c8]::placeholder{color:inherit;opacity:.7}.form__p[data-v-4b2eb8c8]{text-align:center;color:rgba(0,0,0,.667);margin-top:1.5rem;font-size:.8125rem}.box[data-v-4b2eb8c8]{box-sizing:border-box;border-radius:8px;padding:1.5rem;margin-top:2.5rem;font-size:.875rem;line-height:1.25rem;text-align:center;letter-spacing:.01em;margin-bottom:.5rem}.box__h1[data-v-4b2eb8c8]{font-weight:500;color:rgba(0,0,0,.667)}.box__p[data-v-4b2eb8c8]{color:rgba(0,0,0,.667)}.fade-enter-active[data-v-4b2eb8c8]{transition:all .4s ease-out}.fade-leave-active[data-v-4b2eb8c8]{transition:all .2s ease-out}.fade-enter[data-v-4b2eb8c8]{opacity:0;transform:scale(1.5)}.fade-enter-to[data-v-4b2eb8c8],.fade-leave[data-v-4b2eb8c8]{opacity:1;transform:scale(1)}.fade-leave-to[data-v-4b2eb8c8]{opacity:0;transform:scale(.85)}@media screen and (max-width:600px){.h1[data-v-4b2eb8c8]{font-size:2rem;font-weight:500;line-height:2.5rem}.form[data-v-4b2eb8c8]{margin-top:2rem;grid-auto-flow:row;grid-template-columns:1fr}}.shortcuts[data-v-ec0d5cce]{display:flex;justify-content:center;flex-direction:column;padding-top:4rem;padding-bottom:4rem;font-family:var(--ds-font-family,inherit)}.shortcuts__h1[data-v-ec0d5cce]{text-align:center;color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;margin-bottom:2rem}.shortcuts__table__row[data-v-ec0d5cce]{display:grid;grid-template-columns:3fr 7fr;gap:1.5rem;align-items:center;margin-top:.5rem;margin-bottom:.5rem}.shortcuts__table__row__keys[data-v-ec0d5cce]{display:flex;justify-content:flex-end}.shortcuts__table__row__keys__item[data-v-ec0d5cce]{color:#46509f;background-color:rgba(176,180,207,.2);border:1px solid rgba(176,180,207,.09);border-radius:.25rem;font-size:.8125rem;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;margin:2px}.shortcuts__table__row__desc[data-v-ec0d5cce]{color:rgba(22,25,49,.65)}.results__noresults__container[data-v-37a9a987]{height:100%;flex-grow:1;padding:4rem 2rem;font-family:var(--ds-font-family,inherit);overflow-x:hidden;word-break:break-all}.results__noresults[data-v-37a9a987],.results__noresults__container[data-v-37a9a987]{display:flex;flex-direction:column;align-items:center;justify-content:center}.results__noresults__icon[data-v-37a9a987]{max-width:80px;margin-bottom:2rem;fill:#ccc}.results__noresults__h1[data-v-37a9a987]{color:rgba(22,25,49,.65);font-size:1.5rem;margin-bottom:1rem;text-align:center}.results__noresults__p[data-v-37a9a987]{color:rgba(22,25,49,.65)}.results__noresults__a[data-v-37a9a987]{cursor:pointer;color:var(--accent-color,#000)}.search-box[data-v-e97dbd96]{width:100%;display:grid;grid-auto-flow:column;align-items:center;box-shadow:inset 0 -1px 0 0 rgba(176,180,207,.2);padding-left:2rem;padding-right:2rem;grid-template-columns:1.5rem 1fr 1.25rem;gap:1rem;box-sizing:border-box;font-family:var(--ds-font-family,inherit)}.search-box__input__input[data-v-e97dbd96]{border:none;background:none;outline:none;font-size:1.25rem;width:100%;padding:1.5rem .5rem}.search-box__input__input[data-v-e97dbd96]::-webkit-input-placeholder{color:rgba(14,33,37,.26)}.search-box__clear__icon[data-v-e97dbd96]{cursor:pointer;fill:rgba(0,0,0,.15);margin-top:.25rem}.search-box__clear__icon[data-v-e97dbd96]:focus,.search-box__clear__icon[data-v-e97dbd96]:hover{fill:rgba(0,0,0,.25);outline:none}.search-box__button[data-v-e97dbd96]{text-transform:uppercase;color:var(--accent-color,#000);font-weight:500;cursor:pointer;height:100%;display:flex;align-items:center}.results__item[data-v-3746c5a5]{padding:1rem 2rem;cursor:pointer}.results__item__selected__true[data-v-3746c5a5]{background-color:#fff}.results__item__title[data-v-3746c5a5]{color:var(--accent-color,#000)}.results__item__h2[data-v-3746c5a5]{margin-top:.25rem;margin-bottom:.25rem;font-weight:500;font-size:.875rem}.results__item__h2__item[data-v-3746c5a5]{display:inline-block}.results__item__h2__item[data-v-3746c5a5]:after{content:">";margin-left:.25rem;margin-right:.25rem}.results__item__h2__item[data-v-3746c5a5]:last-child:after{content:""}.results__item__desc[data-v-3746c5a5]{opacity:.5;white-space:nowrap;overflow:hidden;position:relative;font-size:.875rem}.results__item__desc[data-v-3746c5a5]:after{content:"";background:linear-gradient(90deg,rgba(248,249,252,.5) 0,#f8f9fc);height:1em;width:2em;padding-bottom:.25rem;text-align:right;position:absolute;top:0;right:0}strong[data-v-14dc0fe4]{font-weight:500}.container[data-v-14dc0fe4]{height:100vh;overflow-y:scroll;-webkit-overflow-scrolling:touch;flex-direction:column;background-color:#f8f9fc;font-family:var(--ds-font-family)}.results[data-v-14dc0fe4]{padding-bottom:3rem;display:flex;flex-direction:column;flex-grow:1}.sheet__sidebar[data-v-58560e81]{z-index:10000;position:relative;scrollbar-color:#eee #fff}.sheet__sidebar__toc[data-v-58560e81]{display:none}.layout__main__content__aside.aside__bottom__true[data-v-58560e81]{position:absolute;bottom:var(--height-banners,0);right:0;max-height:none;top:auto;height:auto}.layout__main__content.aside__false[data-v-58560e81]{display:block}.layout[data-v-58560e81]{display:grid;width:100%;grid-template-columns:var(--sidebar-width) calc(100% - var(--sidebar-width));max-width:var(--layout-max-width,1540px);margin-left:auto;margin-right:auto;position:relative}.layout__sidebar[data-v-58560e81]{position:sticky;top:0;height:100vh;overflow-y:scroll;scrollbar-color:#eee #fff}.layout__sidebar[data-v-58560e81]::-webkit-scrollbar{background:hsla(0,0%,100%,0);width:6px;-webkit-transition:background .25s;transition:background .25s}.layout__sidebar[data-v-58560e81]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,0);border-radius:6px;-webkit-transition:background .25s;transition:background .25s}.layout__sidebar[data-v-58560e81]:hover::-webkit-scrollbar{background:hsla(0,0%,100%,0)}.layout__sidebar[data-v-58560e81]:hover::-webkit-scrollbar-thumb{background:#eee}.layout__main__navbar[data-v-58560e81]{padding-left:2.5rem;padding-right:2.5rem;display:none;position:sticky;top:0;width:100%;background:#fff;z-index:500}.layout__main__content[data-v-58560e81]{display:grid;grid-template-columns:calc(100% - var(--aside-width)) var(--aside-width)}.layout__main__content__body__breadcrumbs[data-v-58560e81]{padding-left:3.25rem;padding-right:3.25rem;padding-top:6.5rem}.layout__main__content__body__wrapper[data-v-58560e81]{padding-left:4rem;padding-right:4rem}.layout__main__content__aside[data-v-58560e81]{position:sticky;top:0;max-height:100vh;overflow-y:scroll;scrollbar-color:#eee #fff}.layout__main__content__aside[data-v-58560e81]::-webkit-scrollbar{background:hsla(0,0%,100%,0);width:6px;-webkit-transition:background .25s;transition:background .25s}.layout__main__content__aside[data-v-58560e81]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,0);border-radius:6px;-webkit-transition:background .25s;transition:background .25s}.layout__main__content__aside[data-v-58560e81]:hover::-webkit-scrollbar{background:hsla(0,0%,100%,0)}.layout__main__content__aside[data-v-58560e81]:hover::-webkit-scrollbar-thumb{background:#eee}.layout__main__content__aside__container[data-v-58560e81]{position:relative;height:100%;padding-bottom:var(--height-banners,0)}.layout__main__content__aside__banners[data-v-58560e81]{width:100%;position:absolute;bottom:0;right:0;padding-left:2rem;padding-right:1.5rem;box-sizing:border-box}.layout__main__gutter[data-v-58560e81]{max-width:calc(100% - var(--aside-width));padding:4rem}.layout__main__footer[data-v-58560e81]{padding-left:4rem;padding-right:4rem}@media screen and (max-width:1392px){.layout[data-v-58560e81]{--sidebar-width:256px}}@media screen and (max-width:1136px){.layout__main__content[data-v-58560e81]{display:block}.layout__main__content__aside[data-v-58560e81],.layout__main__content__aside__banners[data-v-58560e81]{display:none}.layout__main__gutter[data-v-58560e81]{max-width:none}}@media screen and (max-width:832px){.layout[data-v-58560e81]{display:block}.layout__sidebar[data-v-58560e81]{display:none}.layout__main__navbar[data-v-58560e81]{display:block;padding-left:1.75rem;padding-right:1.75rem}.layout__main__content[data-v-58560e81]{padding-top:1rem}.layout__main__content__body[data-v-58560e81]{padding-top:0}.layout__main__content__body__breadcrumbs[data-v-58560e81]{padding-left:1.75rem;padding-right:1.75rem;padding-top:0}.layout__main__content__body__wrapper[data-v-58560e81],.layout__main__footer[data-v-58560e81],.layout__main__gutter[data-v-58560e81]{padding-left:2.5rem;padding-right:2.5rem}}@media screen and (max-width:732px){.sheet__sidebar__toc[data-v-58560e81]{display:block}.layout__main__content__body__breadcrumbs[data-v-58560e81],.layout__main__navbar[data-v-58560e81]{padding-left:1.75rem;padding-right:1.75rem}}@media screen and (max-width:480px){.layout__main__content__body__breadcrumbs[data-v-58560e81],.layout__main__navbar[data-v-58560e81]{padding-left:.25rem;padding-right:.25rem}.layout__main__content__body__wrapper[data-v-58560e81],.layout__main__footer[data-v-58560e81],.layout__main__gutter[data-v-58560e81]{padding-left:1rem;padding-right:1rem}}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-ExtraLight.woff2) format("woff2");font-weight:200}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-Regular.woff2) format("woff2");font-weight:400}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-SemiBold.woff2) format("woff2");font-weight:600}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-Bold.woff2) format("woff2");font-weight:700}@font-face{font-family:JetBrains Mono;src:url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}a,abbr,acronym,address,applet,big,blockquote,body,button,caption,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,form,h1,h2,h3,h4,h5,h6,html,iframe,img,input,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,ul,var{font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline;margin:0;padding:0;box-sizing:border-box}a[href]{color:inherit;text-decoration:initial}html{scrollbar-color:#eee #fff}body{margin:0;font-weight:400;font-family:Metropolis,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Helvetica Neue,sans-serif;letter-spacing:.03em;-webkit-font-smoothing:antialiased;color:var(--color-text,#000);text-rendering:optimizeLegibility}:root{--sidebar-width:19rem;--aside-width:280px;--topbar-height:100px;--color-text:#000;--color-text-dim:rgba(0,0,0,0.667);--color-link:#5064fb;--color-primary:#5064fb;--color-code:inherit;--sidebar-bg:#fff;--sidebar-footer-height:100px;--layout-width:1540px}code{-webkit-font-feature-settings:"liga" on,"calt" on;font-family:JetBrains Mono,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}select{font-size:inherit;font-family:inherit}[hide]{display:none}.search__container{visibility:visible!important}.layout__main__content__aside__container{margin-top:60px}#aside-scroll .container .search__container{display:none}.tabs-component{margin:2em 0}.tabs-component li.tabs-component-tab{margin-bottom:0!important}.tabs-component-tabs{border:1px solid #ddd;border-radius:6px;margin-bottom:5px;padding-left:0}ul.tabs-component-tabs{margin-bottom:-1px!important}.custom-block.warning{background-color:rgba(255,229,100,.3);color:#6b5900;padding:.1rem 1.5rem;border-left:.5rem solid;border-color:#e7c000;margin:1rem 0}.tabs-component-tab{color:#999;font-size:14px;font-weight:600;margin-right:0;list-style:none}.tabs-component-tab:hover{color:#666}.tabs-component-tab.is-active{color:#3eaf7c}.tabs-component-tab.is-disabled *{color:#cdcdcd;cursor:not-allowed!important}.tabs-component-tab-a{align-items:center;color:inherit;display:flex;padding:.25em .5em;text-decoration:none}.tabs-component-panels{padding:1em 0}@media (min-width:700px){.tabs-component-tabs{border:0;align-items:stretch;display:flex;justify-content:flex-start;margin-bottom:-1px}.tabs-component-tab{background-color:#fff;border:1px solid #ddd;border-radius:3px 3px 0 0;margin-right:.25em;transition:transform .3s ease}.is-active{border-bottom:1px solid #fff;z-index:2;transform:translateY(0)}.tabs-component-panels{border-top-left-radius:0;background-color:#fff;border:1px solid #ddd;border-radius:0 6px 6px 6px;box-shadow:0 0 10px rgba(0,0,0,.05);padding:1em}}:root{--color-link:#9214b1;--color-primary:#ba3fd9}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}img[data-v-08694257]{width:100%;margin-bottom:1rem;margin-top:1rem}a[data-v-08694257]{color:var(--color-link,#00f);outline-color:var(--color-primary,#00f);border-radius:.25rem;transition:opacity .3s ease-out}a[data-v-08694257]:hover{text-decoration:underline}a[data-v-08694257]:active{opacity:.65;transition-duration:0s}.h1[data-v-08694257]{font-size:1.5rem;line-height:2.5rem;letter-spacing:-.02em;font-weight:700}.p[data-v-08694257]{font-size:1.125rem;line-height:1.8125rem;margin-top:1em;margin-bottom:1em}.container[data-v-31935645]{background:#f8f9fc;padding:1rem;text-align:center;border-radius:.5rem;position:relative;transition:all .1s}.container[data-v-31935645]:hover:not(:active){box-shadow:0 12px 24px rgba(0,0,0,.07),0 4px 8px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition:transform .15s ease-out,box-shadow .15s ease-out}.container:hover:not(:active) .icon[data-v-31935645]{fill:rgba(0,0,0,.4)}.container[data-v-31935645]:active{transition-duration:0s}.icon[data-v-31935645]{position:absolute;padding:.75rem;width:1rem;height:1rem;top:0;right:0;fill:rgba(0,0,0,.2)}.image[data-v-31935645]{display:flex;justify-content:center;padding:.5rem}.h1[data-v-31935645]{margin-top:.875rem;margin-bottom:.25rem;line-height:1.25rem;font-weight:600}.h2[data-v-31935645]{font-size:.8125rem;line-height:1.125rem;color:rgba(22,25,49,.65)}[data-v-0e8cb6f4] .container h1{margin-bottom:1.5rem}.search[data-v-0e8cb6f4]{display:flex;align-items:center;color:rgba(22,25,49,.65);cursor:pointer;transition:color .15s ease-out}.search[data-v-0e8cb6f4]:hover{color:var(--color-text,#000)}.search__container[data-v-0e8cb6f4]{display:flex;justify-content:flex-end;margin-top:1rem;margin-bottom:1rem;padding-top:1rem}.search__container__right[data-v-0e8cb6f4]{display:grid;grid-auto-flow:column;gap:2rem}.search__icon[data-v-0e8cb6f4]{width:1.5rem;height:1.5rem;fill:#aaa;margin-right:.5rem;transition:fill .15s ease-out}.search:hover .search__icon[data-v-0e8cb6f4]{fill:var(--color-text,#000)}.intro[data-v-0e8cb6f4]{width:100%;max-width:800px}.h1[data-v-0e8cb6f4]{font-size:3rem;font-weight:700;margin-bottom:1.5rem;line-height:3.25rem;letter-spacing:-.02em;padding-top:2.5rem}.h2[data-v-0e8cb6f4]{font-size:2rem;font-weight:700;margin-top:4.5rem;margin-bottom:1rem;line-height:2.25rem;letter-spacing:-.01em}.p[data-v-0e8cb6f4]{font-size:1.5rem;line-height:2.25rem}.p__alt[data-v-0e8cb6f4]{margin-top:.75rem;margin-bottom:2rem;font-size:1.25rem;line-height:1.75rem}.features[data-v-0e8cb6f4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:5rem;margin-top:2.25rem}.features__item[data-v-0e8cb6f4]{cursor:pointer;display:grid;grid-auto-flow:column;grid-template-columns:minmax(6rem,1fr) 2fr;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);position:relative;border-radius:.5rem;background:linear-gradient(302.07deg,#fff 48.96%,#ebedff);outline:none;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.features__item[data-v-0e8cb6f4]:focus:not(:active),.features__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.features__item[data-v-0e8cb6f4]:active{opacity:.7;transition-duration:0s}.features__item__dark[data-v-0e8cb6f4]{background:linear-gradient(112.22deg,#161831,#2e3148)}.features__item__dark .features__item__text__h2[data-v-0e8cb6f4]{color:#fff;opacity:.5}.features__item__dark .features__item__text__h1[data-v-0e8cb6f4]{color:#fff}.features__item__dark .features__item__text__p[data-v-0e8cb6f4]{color:#fff;opacity:.8}.features__item__icon[data-v-0e8cb6f4]{position:absolute;top:0;right:0;padding:.75rem;width:1rem;height:1rem;fill:#fff;opacity:.35}.features__item:hover .features__item__icon[data-v-0e8cb6f4]{opacity:.6}.features__item__image[data-v-0e8cb6f4]{display:flex;align-items:center;justify-content:center;align-self:center;max-height:10rem;transition:transform .2s ease-out}.features__item__image__img[data-v-0e8cb6f4]{max-height:14rem;max-width:10rem;min-width:8rem}.features__item:hover:not(:active) .features__item__image[data-v-0e8cb6f4]{transform:translateY(-.25rem) scale(1.02);transition-duration:.1s}.features__item__text[data-v-0e8cb6f4]{padding:1.75rem 2rem 2rem;display:flex;flex-direction:column;justify-content:center}.features__item__text__h2[data-v-0e8cb6f4]{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--color-text-dim,inherit);margin-bottom:.25rem}.features__item__text__h1[data-v-0e8cb6f4]{font-size:1.25rem;color:var(--color-text,#000);line-height:1.75rem;letter-spacing:.01em;font-weight:600;margin-top:.25rem;margin-bottom:.75rem}.features__item__text__p[data-v-0e8cb6f4]{color:var(--color-text-dim,inherit);font-size:.875rem;line-height:1.25rem}.sections[data-v-0e8cb6f4]{display:grid;margin-top:3rem;margin-bottom:5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.sections__item[data-v-0e8cb6f4]{position:relative;color:initial;border-radius:.5rem;padding:1.5rem 1.5rem 1.5rem 5.5rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.sections__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.sections__item[data-v-0e8cb6f4]:active{transition-duration:0s;opacity:.7}.sections__item__icon[data-v-0e8cb6f4]{position:absolute;top:1rem;left:1.25rem;font-size:1.5rem;display:flex;align-items:center;justify-content:center;width:3rem;height:3rem}.sections__item__title[data-v-0e8cb6f4]{font-weight:600;margin-bottom:.5rem}.sections__item__desc[data-v-0e8cb6f4]{font-size:.875rem;line-height:1.25rem;color:var(--color-text-dim,inherit)}.stack[data-v-0e8cb6f4]{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:4rem}.stack__item[data-v-0e8cb6f4]{position:relative;min-height:120px;display:flex;align-items:center;padding:2rem 1.25rem;border-radius:.5rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);color:var(--color-text,#000);background:#fff;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.stack__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.stack__item[data-v-0e8cb6f4]:active{opacity:.7;transition-duration:0s}.stack__item__icon[data-v-0e8cb6f4]{position:absolute;top:0;right:0;padding:1rem;opacity:.26;transition:opacity .15s}.stack__item:hover .stack__item__icon[data-v-0e8cb6f4]{opacity:.36}.stack__item__h1[data-v-0e8cb6f4]{font-size:1.25rem;line-height:1.5rem;margin-bottom:.75rem;font-weight:600}.stack__item__p[data-v-0e8cb6f4]{font-size:.875rem;color:rgba(22,25,49,.65);line-height:1.25rem}.stack__item__wrapper[data-v-0e8cb6f4]{display:grid;grid-auto-flow:column;grid-template-columns:30% 1fr;gap:1.25rem}.stack__item[data-v-0e8cb6f4]:before{position:absolute;top:0;left:0;content:"";width:50%;height:100%;background:linear-gradient(90deg,var(--accent),hsla(0,0%,100%,0));border-radius:.5rem;opacity:.1}.stack__item__logo[data-v-0e8cb6f4]{height:72px;width:auto}@media screen and (max-width:1136px){.p[data-v-0e8cb6f4]{font-size:1.25rem;line-height:1.75rem}}@media screen and (max-width:832px){.h1[data-v-0e8cb6f4]{padding-top:3.5rem}.search__container[data-v-0e8cb6f4]{display:none}}@media screen and (max-width:752px){.search[data-v-0e8cb6f4]{display:none}}@media screen and (max-width:500px){.h1[data-v-0e8cb6f4]{font-size:2rem;line-height:2.25rem;margin-bottom:1rem}.h2[data-v-0e8cb6f4]{font-size:1.5rem;line-height:2rem;margin-top:3rem;margin-bottom:.75rem}.p__alt[data-v-0e8cb6f4]{font-size:1rem;line-height:1.5rem}.features[data-v-0e8cb6f4]{margin-bottom:1.5rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.features__item[data-v-0e8cb6f4]{display:block}.features__item[data-v-0e8cb6f4]:not(:active){box-shadow:0 24px 40px rgba(0,0,0,.1),0 10px 16px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.05)}.features__item__image[data-v-0e8cb6f4]{max-height:9rem;padding-top:1rem}.features__item__text[data-v-0e8cb6f4]{padding:1.5rem}.sections[data-v-0e8cb6f4]{gap:0;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:2rem -1rem 0}.sections__item[data-v-0e8cb6f4]{margin-bottom:0;padding:1.25rem 1rem 0 5.5rem}.sections__item[data-v-0e8cb6f4],.sections__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:none}.sections__item__icon[data-v-0e8cb6f4]{top:1rem;left:1.25rem}.sections__item__wrapper[data-v-0e8cb6f4]{padding-bottom:1.25rem;border-bottom:1px solid rgba(140,145,177,.32)}.sections__item:last-child .sections__item__wrapper[data-v-0e8cb6f4]{border-bottom:none}.sections__wrapper[data-v-0e8cb6f4]{position:relative;padding:.1px 1rem 1rem;background:#fff;border-radius:.5rem}.sections__wrapper[data-v-0e8cb6f4]:before{position:absolute;content:"";top:0;left:0;right:0;bottom:0;border-radius:.5rem;box-shadow:0 24px 40px rgba(0,0,0,.1),0 10px 16px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.05)}.stack[data-v-0e8cb6f4]{gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:3rem}.stack__item[data-v-0e8cb6f4]{padding:1.25rem}.stack__item[data-v-0e8cb6f4]:not(:active){box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05)}.stack__item__wrapper[data-v-0e8cb6f4]{grid-template-columns:3rem 1fr}.stack__item__h1[data-v-0e8cb6f4]{font-size:inherit;line-height:inherit;margin-bottom:.5rem}}.search[data-v-c85ed208]{display:flex;align-items:center;color:rgba(22,25,49,.65);padding-top:1rem;width:calc(var(--aside-width) - 6rem);cursor:pointer;position:absolute;top:1rem;right:4rem;justify-content:flex-end;transition:color .15s ease-out}.search[data-v-c85ed208]:hover{color:var(--color-text,#000)}.search__container[data-v-c85ed208]{visibility:hidden;display:flex;justify-content:flex-end;margin-top:1rem;margin-bottom:1rem}.search__icon[data-v-c85ed208]{width:1.5rem;height:1.5rem;fill:#aaa;margin-right:.5rem;transition:fill .15s ease-out}.search:hover .search__icon[data-v-c85ed208]{fill:var(--color-text,#000)}.footer__links[data-v-c85ed208]{padding-top:5rem;padding-bottom:1rem;border-top:1px solid rgba(176,180,207,.2);margin-top:5rem}.links[data-v-c85ed208]{display:flex;justify-content:space-between;margin-top:4rem}.links a[data-v-c85ed208]{box-shadow:none;color:var(--color-link,#00f)}.container[data-v-c85ed208]{position:relative;width:100%;max-width:45rem}.content[data-v-c85ed208]{padding-right:var(--sidebar-width);width:100%;position:relative}.content.noAside[data-v-c85ed208]{padding-right:0}.content__container[data-v-c85ed208]{width:100%;padding-left:4rem;padding-right:2rem}.content__container.noAside[data-v-c85ed208]{max-width:none}[data-v-c85ed208] .codeblock{margin-top:2rem;margin-bottom:2rem;letter-spacing:0}[data-v-c85ed208] .custom-block.danger{margin-top:1.5rem;margin-bottom:1.5rem}[data-v-c85ed208] .custom-block.danger,[data-v-c85ed208] .custom-block.tip,[data-v-c85ed208] .custom-block.warning{padding:1rem 1.5rem 1rem 3.5rem;border-radius:.5rem;position:relative}[data-v-c85ed208] .custom-block.danger :first-child,[data-v-c85ed208] .custom-block.tip :first-child,[data-v-c85ed208] .custom-block.warning :first-child{margin-top:0}[data-v-c85ed208] .custom-block.danger :last-child,[data-v-c85ed208] .custom-block.tip :last-child,[data-v-c85ed208] .custom-block.warning :last-child{margin-bottom:0}[data-v-c85ed208] .custom-block.danger:before,[data-v-c85ed208] .custom-block.tip:before,[data-v-c85ed208] .custom-block.warning:before{content:"";height:24px;width:24px;position:absolute;display:block;top:1rem;left:1rem;background-repeat:no-repeat}[data-v-c85ed208] .custom-block.danger{background:#fff6f9}[data-v-c85ed208] .custom-block.danger:before{background-image:url(/main/assets/img/icon-danger.14c07ce1.svg)}[data-v-c85ed208] .custom-block.warning:before{background-image:url(/main/assets/img/icon-warning.165cee8d.svg)}[data-v-c85ed208] .custom-block.tip:before{background-image:url(/main/assets/img/icon-tip.d35d900a.svg)}[data-v-c85ed208] h2:hover a.header-anchor,[data-v-c85ed208] h3:hover a.header-anchor,[data-v-c85ed208] h4:hover a.header-anchor,[data-v-c85ed208] h5:hover a.header-anchor,[data-v-c85ed208] h6:hover a.header-anchor{opacity:1}[data-v-c85ed208] a.header-anchor{opacity:0;position:absolute;font-weight:400;left:-1.5em;width:1.5em;text-align:center;box-sizing:border-box;color:rgba(0,0,0,.4);outline-color:var(--color-link,#00f);transition:all .25s}[data-v-c85ed208] a.header-anchor:after{border-radius:.25rem;content:attr(data-header-anchor-text);max-width:4rem;color:#fff;top:-2.4em;padding:7px 12px;white-space:nowrap;font-size:.8125rem;line-height:1;letter-spacing:0;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);background:var(--color-text,#000)}[data-v-c85ed208] a.header-anchor:after,[data-v-c85ed208] a.header-anchor:before{transition:all .25s;position:absolute;left:50%;transform:translateX(-50%);opacity:0}[data-v-c85ed208] a.header-anchor:before{content:"";background-image:url('data:image/svg+xml;charset=utf-8,');width:8px;height:8px;top:-.7em;font-size:.5rem}[data-v-c85ed208] a.header-anchor:focus,[data-v-c85ed208] a.header-anchor:focus:after,[data-v-c85ed208] a.header-anchor:focus:before,[data-v-c85ed208] a.header-anchor:hover:after,[data-v-c85ed208] a.header-anchor:hover:before{opacity:1}[data-v-c85ed208] h1[id*=requisite],[data-v-c85ed208] h2[id*=requisite],[data-v-c85ed208] h3[id*=requisite],[data-v-c85ed208] h4[id*=requisite],[data-v-c85ed208] h5[id*=requisite],[data-v-c85ed208] h6[id*=requisite]{display:none;align-items:baseline;cursor:pointer}[data-v-c85ed208] h1[id*=requisite]:before,[data-v-c85ed208] h2[id*=requisite]:before,[data-v-c85ed208] h3[id*=requisite]:before,[data-v-c85ed208] h4[id*=requisite]:before,[data-v-c85ed208] h5[id*=requisite]:before,[data-v-c85ed208] h6[id*=requisite]:before{content:"";width:1.5rem;height:1.5rem;display:block;flex:none;margin-right:.5rem;background:url(/main/assets/img/icon-chevron.621f8508.svg);transition:transform .2s ease-out}[data-v-c85ed208] h1[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h2[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h3[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h4[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h5[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h6[id*=requisite].prereqTitleShow:before{transform:rotate(90deg)}[data-v-c85ed208] h1[id*=requisite]+ul,[data-v-c85ed208] h2[id*=requisite]+ul,[data-v-c85ed208] h3[id*=requisite]+ul,[data-v-c85ed208] h4[id*=requisite]+ul,[data-v-c85ed208] h5[id*=requisite]+ul,[data-v-c85ed208] h6[id*=requisite]+ul{display:none}[data-v-c85ed208] li[prereq]{display:none;max-width:28rem;margin-left:2rem}[data-v-c85ed208] li[prereq].prereqLinkShow{display:block}[data-v-c85ed208] li[prereq] a[href]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);padding:1rem;border-radius:.5rem;color:var(--color-text,#000);font-size:1rem;font-weight:600;line-height:1.25rem;margin:1rem 0;display:block;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}[data-v-c85ed208] li[prereq] a[href]:hover:not(:active){color:inherit;text-decoration:none;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition-duration:.1s}[data-v-c85ed208] li[prereq] a[href]:active{opacity:.7;transition-duration:0s}[data-v-c85ed208] [synopsis]{padding:1.5rem 2rem;background-color:rgba(176,180,207,.09);border-radius:.5rem;margin-top:3rem;margin-bottom:3rem;color:rgba(22,25,49,.9);font-size:1rem;line-height:1.625rem}[data-v-c85ed208] [synopsis]:before{content:"Synopsis";display:block;color:rgba(22,25,49,.65);text-transform:uppercase;font-size:.75rem;margin-bottom:.5rem;letter-spacing:.2em}[data-v-c85ed208] a[target=_blank]:after{content:"↗";position:absolute;bottom:.166em;padding-left:.1875em;font-size:.75em;line-height:1;word-break:none;transition:transform .2s ease-out}[data-v-c85ed208] a[target=_blank]:focus:after,[data-v-c85ed208] a[target=_blank]:hover:after{transform:translate(2px,-2px)}[data-v-c85ed208] .icon.outbound{display:none}[data-v-c85ed208] table{display:block;width:100%;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;overflow:auto;line-height:1.5rem;margin-top:2rem;margin-bottom:2rem;box-shadow:0 0 0 1px rgba(140,145,177,.32);border-radius:.5rem;border-collapse:collapse;font-size:1rem}[data-v-c85ed208] th{text-align:left;font-weight:700;font-size:.875rem}[data-v-c85ed208] td,[data-v-c85ed208] th{padding:.75rem}[data-v-c85ed208] tr{box-shadow:0 1px 0 0 rgba(140,145,177,.32)}[data-v-c85ed208] tr:only-child{box-shadow:none}[data-v-c85ed208] thead tr:only-child{box-shadow:0 1px 0 0 rgba(140,145,177,.32)}[data-v-c85ed208] tr+tr:last-child{box-shadow:none}[data-v-c85ed208] tr:last-child td{border-bottom:none}[data-v-c85ed208] .code-block__container{margin-top:2rem;margin-bottom:2rem}[data-v-c85ed208] .content__default{width:100%}[data-v-c85ed208] h1,[data-v-c85ed208] h2,[data-v-c85ed208] h3,[data-v-c85ed208] h4{font-weight:700}[data-v-c85ed208] h1 code,[data-v-c85ed208] h2 code,[data-v-c85ed208] h3 code{font-weight:400}[data-v-c85ed208] .content__container img{max-width:100%}[data-v-c85ed208] .term{text-decoration:underline}[data-v-c85ed208] img{width:100%;height:auto;display:block;margin-bottom:2rem;margin-top:2rem}[data-v-c85ed208] .tooltip__wrapper{background:#fff;padding:1rem}[data-v-c85ed208] .tooltip h1{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;font-weight:600;margin-top:0;margin-bottom:0}[data-v-c85ed208] .tooltip p{font-size:.8125rem;line-height:1.125rem;margin-top:.375rem;margin-bottom:0}[data-v-c85ed208] hr{border:1px solid rgba(0,0,0,.1);margin-top:2.5rem;margin-bottom:2.5rem}[data-v-c85ed208] strong{font-weight:600;letter-spacing:.01em}[data-v-c85ed208] em{font-style:italic}[data-v-c85ed208] h1{font-size:3rem;margin-top:4rem;margin-bottom:4rem;line-height:3.5rem;letter-spacing:-.02em}[data-v-c85ed208] h1:first-child{margin-top:0}[data-v-c85ed208] h2{font-size:2rem;margin-top:3.75rem;margin-bottom:1.25rem;line-height:2.5rem;letter-spacing:-.01em}[data-v-c85ed208] h3{font-size:1.5rem;margin-top:2.5rem;margin-bottom:1rem;letter-spacing:0;line-height:2rem}[data-v-c85ed208] h4{font-size:1.25rem;margin-top:2.25rem;margin-bottom:.875rem;line-height:1.75rem;letter-spacing:.01em}[data-v-c85ed208] ol,[data-v-c85ed208] p,[data-v-c85ed208] ul{font-size:1.125rem;line-height:1.8125rem}[data-v-c85ed208] p{margin-top:1em;margin-bottom:1em}[data-v-c85ed208] ol,[data-v-c85ed208] ul{margin-top:1em;margin-bottom:1.5em;margin-left:0;padding-left:0}[data-v-c85ed208] li{padding-left:0;margin-left:2rem;margin-bottom:1rem;position:relative}[data-v-c85ed208] blockquote{padding-left:2rem;padding-right:2rem;border-left:.25rem solid rgba(0,0,0,.1);color:var(--color-text-dim,inherit);margin-top:1.75rem;margin-bottom:1.75rem}[data-v-c85ed208] code{background-color:rgba(176,180,207,.175);border:1px solid rgba(176,180,207,.09);border-radius:.25em;padding-left:.25em;padding-right:.25em;font-size:.8333em;line-height:1.06666em;letter-spacing:0;color:var(--color-code,inherit);margin-top:3rem;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word}[data-v-c85ed208] h1 code,[data-v-c85ed208] h2 code,[data-v-c85ed208] h3 code,[data-v-c85ed208] h4 code,[data-v-c85ed208] h5 code,[data-v-c85ed208] h6 code{font-size:inherit}[data-v-c85ed208] h1 a,[data-v-c85ed208] h2 a,[data-v-c85ed208] h3 a,[data-v-c85ed208] h4 a,[data-v-c85ed208] h5 a,[data-v-c85ed208] h6 a{color:var(--color-link,#00f);outline:none;position:relative}[data-v-c85ed208] h1 a[target=_blank]:after,[data-v-c85ed208] h2 a[target=_blank]:after,[data-v-c85ed208] h3 a[target=_blank]:after,[data-v-c85ed208] h4 a[target=_blank]:after,[data-v-c85ed208] h5 a[target=_blank]:after,[data-v-c85ed208] h6 a[target=_blank]:after{position:relative}[data-v-c85ed208] ol a,[data-v-c85ed208] p a,[data-v-c85ed208] ul a{color:var(--color-link,#00f);outline-color:var(--color-link,#00f);border-radius:.25rem;position:relative;transition:opacity .3s ease-out;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word}[data-v-c85ed208] ol a[target=_blank],[data-v-c85ed208] p a[target=_blank],[data-v-c85ed208] ul a[target=_blank]{margin-right:.888em}[data-v-c85ed208] ol a:hover,[data-v-c85ed208] p a:hover,[data-v-c85ed208] ul a:hover{text-decoration:underline}[data-v-c85ed208] ol a:active,[data-v-c85ed208] p a:active,[data-v-c85ed208] ul a:active{opacity:.65;transition-duration:0s}[data-v-c85ed208] ol a code,[data-v-c85ed208] p a code,[data-v-c85ed208] ul a code{color:inherit;transition:background-color .15s ease-out}[data-v-c85ed208] ol a:focus code,[data-v-c85ed208] ol a:hover code,[data-v-c85ed208] p a:focus code,[data-v-c85ed208] p a:hover code,[data-v-c85ed208] ul a:focus code,[data-v-c85ed208] ul a:hover code{background-color:rgba(59,66,125,.12)}[data-v-c85ed208] td a{color:var(--color-link,#00f);position:relative;transition:opacity .3s ease-out;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:inherit}[data-v-c85ed208] td a[target=_blank]:after{display:none}@media screen and (max-width:1136px){[data-v-c85ed208] h2,[data-v-c85ed208] h3,[data-v-c85ed208] h4,[data-v-c85ed208] h5,[data-v-c85ed208] h6{padding-right:1.75rem}[data-v-c85ed208] a.header-anchor{left:auto;right:0;text-align:right;opacity:1}[data-v-c85ed208] a.header-anchor:after{transform:none;left:auto;right:-5px}[data-v-c85ed208] h1 a.header-anchor{display:none}}@media screen and (max-width:1024px){.content[data-v-c85ed208]{padding-right:0}.content__container[data-v-c85ed208]{padding-left:2rem}}@media screen and (max-width:1136px) and (min-width:833px){.search__container[data-v-c85ed208]{visibility:visible}}@media screen and (max-width:1136px){[data-v-c85ed208] h1[id*=requisite],[data-v-c85ed208] h2[id*=requisite],[data-v-c85ed208] h3[id*=requisite],[data-v-c85ed208] h4[id*=requisite],[data-v-c85ed208] h5[id*=requisite],[data-v-c85ed208] h6[id*=requisite]{display:flex}[data-v-c85ed208] h1[id*=requisite]+ul,[data-v-c85ed208] h2[id*=requisite]+ul,[data-v-c85ed208] h3[id*=requisite]+ul,[data-v-c85ed208] h4[id*=requisite]+ul,[data-v-c85ed208] h5[id*=requisite]+ul,[data-v-c85ed208] h6[id*=requisite]+ul{display:block}}@media screen and (max-width:480px){[data-v-c85ed208] h1{font-size:2.5rem;margin-bottom:3rem;line-height:3rem}[data-v-c85ed208] h2{font-size:1.75rem;margin-top:3.5rem;margin-bottom:1rem;line-height:2.25rem}[data-v-c85ed208] h3{font-size:1.25rem;margin-top:2.25rem;margin-bottom:.875rem;line-height:1.75rem}[data-v-c85ed208] h4{font-size:1.125rem;margin-top:2rem;margin-bottom:.75rem;line-height:1.5rem}[data-v-c85ed208] ol,[data-v-c85ed208] p,[data-v-c85ed208] ul{font-size:1rem;line-height:1.625rem}[data-v-c85ed208] [synopsis]{padding:1rem;font-size:.875rem;line-height:1.25rem}}.shortcuts[data-v-510c93ce]{display:flex;justify-content:center;flex-direction:column}.shortcuts__h1[data-v-510c93ce]{text-align:center;color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;margin-top:4rem;margin-bottom:2rem}.shortcuts__table__row[data-v-510c93ce]{display:grid;grid-template-columns:3fr 7fr;gap:1.5rem;align-items:center;margin-top:.5rem;margin-bottom:.5rem}.shortcuts__table__row__keys[data-v-510c93ce]{display:flex;justify-content:flex-end}.shortcuts__table__row__keys__item[data-v-510c93ce]{color:#46509f;background-color:rgba(176,180,207,.2);border:1px solid rgba(176,180,207,.09);border-radius:.25rem;font-size:.8125rem;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;margin:2px}.shortcuts__table__row__desc[data-v-510c93ce]{color:rgba(22,25,49,.65)}strong[data-v-510c93ce]{font-weight:600}.container[data-v-510c93ce]{height:100vh;overflow-y:scroll;-webkit-overflow-scrolling:touch;flex-direction:column;background-color:#f8f9fc}.search-box[data-v-510c93ce]{width:100%;display:grid;grid-auto-flow:column;align-items:center;box-shadow:inset 0 -1px 0 0 rgba(176,180,207,.2);padding-left:1.5rem;padding-right:1.5rem;grid-template-columns:2rem 1fr 1.25rem;gap:.5rem}.search-box__icon[data-v-510c93ce]{margin-left:.5rem}.search-box__input__input[data-v-510c93ce]{border:none;background:none;outline:none;font-size:1.25rem;width:100%;padding:1.5rem .5rem}.search-box__input__input[data-v-510c93ce]::-webkit-input-placeholder{color:rgba(0,0,0,.46)}.search-box__input__input[data-v-510c93ce]:hover::-webkit-input-placeholder{color:rgba(0,0,0,.67)}.search-box__input__input[data-v-510c93ce]:focus::-webkit-input-placeholder{color:rgba(0,0,0,.46)}.search-box__clear__icon[data-v-510c93ce]{cursor:pointer;fill:rgba(0,0,0,.15);margin-top:.25rem}.search-box__clear__icon[data-v-510c93ce]:focus,.search-box__clear__icon[data-v-510c93ce]:hover{fill:rgba(0,0,0,.25);outline:none}.search-box__clear__icon[data-v-510c93ce]:active{opacity:.7}.search-box__button[data-v-510c93ce]{text-transform:uppercase;color:var(--color-link);font-weight:600;cursor:pointer;height:100%;display:flex;padding-left:.5rem;padding-right:.5rem;align-items:center;outline:0;transition:opacity .2s ease-out}.search-box__button[data-v-510c93ce]:focus{background-color:rgba(176,180,207,.087)}.search-box__button[data-v-510c93ce]:active{opacity:.7;transition-duration:0s}.results[data-v-510c93ce]{padding-bottom:3rem;display:flex;flex-direction:column;flex-grow:1}.results__noresults__container[data-v-510c93ce]{height:100%;flex-grow:1;margin-top:4rem}.results__noresults[data-v-510c93ce],.results__noresults__container[data-v-510c93ce]{display:flex;flex-direction:column;align-items:center;justify-content:center}.results__noresults__icon[data-v-510c93ce]{max-width:80px;margin-bottom:2rem;fill:#ccc}.results__noresults__h1[data-v-510c93ce]{color:rgba(22,25,49,.65);font-size:1.5rem;margin-bottom:1rem}.results__noresults__p[data-v-510c93ce]{color:rgba(22,25,49,.65)}.results__noresults__a[data-v-510c93ce]{cursor:pointer;color:var(--color-link)}.results__item[data-v-510c93ce]{padding:.75rem 2rem;cursor:pointer}.results__item[data-v-510c93ce]:focus,.results__item[data-v-510c93ce]:hover{outline:none;background-color:rgba(176,180,207,.087)}.results__item__title[data-v-510c93ce]{color:var(--color-link);line-height:1.5rem}.results__item__h2[data-v-510c93ce]{margin-top:.25rem;margin-bottom:.25rem;font-weight:600;font-size:.875rem;line-height:1.25rem}.results__item__h2__item[data-v-510c93ce]{display:inline-block}.results__item__h2__item[data-v-510c93ce]:after{content:">";margin-left:.25rem;margin-right:.25rem}.results__item__h2__item[data-v-510c93ce]:last-child:after{content:""}.results__item__desc[data-v-510c93ce]{opacity:.5;white-space:nowrap;overflow:hidden;position:relative;font-size:.875rem;line-height:1.25rem}.results__item__desc[data-v-510c93ce]:after{content:"";background:linear-gradient(90deg,transparent 0,#f8f9fc);height:1em;width:2.5em;padding-bottom:.25rem;text-align:right;position:absolute;top:0;right:0}@media screen and (max-width:768px){.search-box[data-v-510c93ce]{padding-left:1rem;padding-right:1rem}.shortcuts[data-v-510c93ce]{display:none}}.container[data-v-4ac7d60e]{padding:1rem 1rem 1rem 2rem}.search__container[data-v-4ac7d60e]{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:3.5rem}.banners[data-v-4ac7d60e]{margin-bottom:3rem}.banners__item[data-v-4ac7d60e]{margin-bottom:.5rem}.banners__item a[data-v-4ac7d60e]{display:block;transition:transform .15s ease-out,opacity .15s ease-out,box-shadow .15s ease-out;outline-color:var(--color-primary,#00f)}.banners__item a[data-v-4ac7d60e]:focus:not(:active),.banners__item a[data-v-4ac7d60e]:hover:not(:active){transform:translateY(-2px);opacity:.85;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05)}.banners__item a[data-v-4ac7d60e]:active{transition:none}.search[data-v-4ac7d60e]{cursor:pointer;display:flex;justify-content:flex-end;align-items:center}.search__icon[data-v-4ac7d60e]{height:1.5rem;width:1.5rem;margin-right:.5rem;fill:#aaa;transition:fill .15s ease-out}.search__text[data-v-4ac7d60e]{color:rgba(22,25,49,.65);transition:color .15s ease-out}.search:hover .search__icon[data-v-4ac7d60e]{fill:var(--color-text,#000)}.search:hover .search__text[data-v-4ac7d60e]{color:var(--color-text,#000)}.selected[data-v-4ac7d60e]{font-weight:700}.aside__image[data-v-4ac7d60e]{width:100%;border-radius:.25rem;display:block}.aside__title[data-v-4ac7d60e]{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--color-text-dim,inherit);margin-top:3rem;margin-bottom:.75rem}.aside__link[data-v-4ac7d60e]{color:var(--color-text-dim,inherit);padding-top:.375rem;padding-bottom:.375rem;font-size:.875rem;line-height:1.125rem;word-break:break-word}.aside__link__href[data-v-4ac7d60e]:hover{color:var(--color-text,#000)}.aside__link__active__true[data-v-4ac7d60e]{color:var(--color-text,#000);font-weight:700}.prereq__item[data-v-4ac7d60e]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);padding:1rem;border-radius:.5rem;color:var(--color-text,#000);font-size:.875rem;font-weight:600;line-height:1.25rem;margin:1rem 0;display:block;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.prereq__item[data-v-4ac7d60e]:hover:not(:active){color:inherit;text-decoration:none;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition-duration:.1s}.prereq__item[data-v-4ac7d60e]:active{opacity:.7;transition-duration:0s}.fade-enter-active[data-v-48fb2d7a],.fade-leave-active[data-v-48fb2d7a]{transition:all .25s;transform-origin:top right}.fade-enter[data-v-48fb2d7a]{transform:scale(.75);opacity:0}.fade-enter-to[data-v-48fb2d7a],.fade-leave[data-v-48fb2d7a]{transform:scale(1);opacity:1}.fade-leave-to[data-v-48fb2d7a]{transform:scale(1);opacity:0}.container[data-v-48fb2d7a]{display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;padding-left:.75rem}.crumbs__item[data-v-48fb2d7a]{display:inline-block;font-size:.8125rem;outline-color:var(--color-primary,#00f)}.crumbs__item[data-v-48fb2d7a]:hover:not(:last-child){color:var(--color-link,#00f)}.crumbs__item[data-v-48fb2d7a]:hover:not(:last-child):after{color:var(--color-text,#000)}.crumbs__item[data-v-48fb2d7a]:after{content:"/";padding-left:.25rem;padding-right:.25rem}.crumbs__item[data-v-48fb2d7a]:last-child{opacity:.667;cursor:default}.crumbs__item[data-v-48fb2d7a]:last-child:after{content:""}.menu[data-v-48fb2d7a]{height:3rem}.menu__item[data-v-48fb2d7a]{position:relative;display:none}.menu__item__icon[data-v-48fb2d7a]{cursor:pointer;width:1.5rem;height:1.5rem;padding:.75rem;border-radius:.25rem;fill:rgba(51,54,74,.4)}.menu__item__icon[data-v-48fb2d7a]:active{fill:#5064fb;background:rgba(102,161,255,.15)}.menu__item__modal[data-v-48fb2d7a]{position:absolute;width:16rem;z-index:1000;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);right:0;border-radius:.25rem;background-color:#fff}.menu__item__modal__title[data-v-48fb2d7a]{color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;padding:1.5rem 1.5rem 1rem}.menu__item__modal__item[data-v-48fb2d7a]{padding:.625rem 1.5rem;font-size:.875rem;outline:none;cursor:pointer}.menu__item__modal__item[data-v-48fb2d7a]:active{color:var(--color-link);font-weight:600;box-shadow:inset 2px 0 0 0 var(--color-link)}@media screen and (max-width:1135px){.menu__item[data-v-48fb2d7a]{display:block}}@media screen and (max-width:732px){.menu__item__modal[data-v-48fb2d7a]{visibility:hidden}}a[data-v-1eda75b2]{text-decoration:none}.body__code[data-v-1eda75b2]{white-space:pre}span[data-v-1eda75b2]{display:block}.fade-enter-active[data-v-1eda75b2],.fade-leave-active[data-v-1eda75b2]{transition:opacity .2s}.fade-enter[data-v-1eda75b2],.fade-leave-to[data-v-1eda75b2]{opacity:0}.fade-enter-to[data-v-1eda75b2],.fade-leave[data-v-1eda75b2]{opacity:1}.container[data-v-1eda75b2]{border-radius:.5rem;background:#2e3148}.body__container[data-v-1eda75b2]{position:relative}.body__container:hover .icons[data-v-1eda75b2]{opacity:1}.body[data-v-1eda75b2]{color:hsla(0,0%,100%,.8);overflow-x:scroll;padding:1.375rem 1rem 1rem;overflow-y:hidden;position:relative;line-height:1.75;scrollbar-color:hsla(0,0%,100%,.2) hsla(0,0%,100%,.1);scrollbar-width:thin;font-size:.8125rem;line-height:1.25rem}.body[data-v-1eda75b2]::-webkit-scrollbar{background:hsla(0,0%,100%,.1);height:6px}.body[data-v-1eda75b2]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:6px}.codeblock__is-expandable__true .body[data-v-1eda75b2]{max-height:700px}.codeblock__is-expandable__true.codeblock__expanded__true .body[data-v-1eda75b2]{max-height:var(--max-height)}.body__wrapper[data-v-1eda75b2]{font-family:JetBrains Mono,Menlo,Monaco,monospace;-webkit-font-feature-settings:"liga" on,"calt" on;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:.8125rem;display:inline-block;line-height:1.25rem}.body.body__hasfooter__true[data-v-1eda75b2]{border-bottom-left-radius:0;border-bottom-right-radius:0}.expand[data-v-1eda75b2]{position:absolute;bottom:0;display:grid;grid-template-columns:1fr 1fr 1fr;width:100%;color:#161931;padding:1.5rem;font-family:var(--ds-font-family,inherit);box-sizing:border-box}.codeblock__expanded__false .expand[data-v-1eda75b2]{background:linear-gradient(180deg,rgba(22,25,49,0),#161931)}.codeblock__hasfooter__false.codeblock__expanded__false .expand[data-v-1eda75b2]{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.expand__item[data-v-1eda75b2]{text-transform:uppercase;background-color:#dadce6;display:grid;justify-self:center;grid-auto-flow:column;gap:.5rem;align-items:center;font-weight:500;padding:.5rem 1rem;line-height:1;letter-spacing:.02em;font-size:.8125rem;height:2rem;cursor:pointer;border-radius:1000px;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);box-sizing:border-box}.expand__item__expand[data-v-1eda75b2]{grid-area:1/2/1/3;justify-self:center}.expand__item__collapse[data-v-1eda75b2]{grid-area:1/3/1/4;justify-self:flex-end;height:2rem;max-width:3rem;padding-top:.3rem;padding-bottom:.3rem}.expand__item__icon[data-v-1eda75b2]{height:1em;width:auto}.icons[data-v-1eda75b2]{transition:all .1s;position:absolute;top:0;right:0;padding:.5rem;opacity:0;display:flex;z-index:100}.icons__item[data-v-1eda75b2]{margin-left:.5rem;cursor:pointer;border-radius:.25rem;position:relative;background:rgba(46,49,72,.7)}.icons__item:active .icons__item__icon[data-v-1eda75b2]{fill:#66a1ff}.icons__item:hover .icons__item__tooltip[data-v-1eda75b2]{opacity:1}.icons__item:hover .icons__item__tooltip[data-v-1eda75b2]:hover{opacity:0}.icons__item__tooltip[data-v-1eda75b2]{font-family:var(--ds-font-family,inherit);color:#fff;position:absolute;top:-2.05rem;left:50%;transform:translateX(-50%);background:#161931;font-size:.8125rem;opacity:0;border-radius:.25rem;padding:.5rem .75rem;transition:all .25s .5s}.icons__item__tooltip[data-v-1eda75b2]:before{content:"";width:8px;height:8px;display:block;background-color:#161931;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;transform:translateX(-50%) translateY(-13%) scaleX(2);position:absolute;font-size:1rem;left:50%}.icons__item__icon[data-v-1eda75b2]{fill:#fff;padding:.75rem;display:block}.icons__item[data-v-1eda75b2]:hover{fill:#66a1ff;background:#43465a}.footer[data-v-1eda75b2]{background-color:#161931;color:#fff;display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;font-size:.8125rem;line-height:1;font-family:var(--ds-font-family,inherit)}.footer__source[data-v-1eda75b2]{color:#66a1ff;font-weight:500;stroke:#66a1ff;align-items:center;display:flex;box-shadow:none;outline:none}.footer__source[data-v-1eda75b2]:after{display:none}.footer__source[data-v-1eda75b2]:visited,.footer__source[data-v-1eda75b2]:visited:hover{color:#66a1ff}.footer__source[data-v-1eda75b2]:hover{box-shadow:none;color:#66a1ff}.footer__source[data-v-1eda75b2]:active{color:#66a1ff}.footer__source__icon[data-v-1eda75b2]{margin-left:.5rem}[data-v-1eda75b2] .token.keyword{color:#c678dd}[data-v-1eda75b2] .token.comment{opacity:.5}[data-v-1eda75b2] .token.function{color:#61afef}[data-v-1eda75b2] .token.builtin{color:#e06c75}[data-v-1eda75b2] .token.string{color:#98c379}[data-v-1eda75b2] .token.operator{color:#56b6c2}[data-v-1eda75b2] .token.boolean{color:#d19a66}.container[data-v-279d626a]{margin-top:3rem}.title[data-v-279d626a]{font-size:1.5rem;line-height:2rem;font-weight:700;margin-bottom:2rem}.card[data-v-279d626a]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);border-radius:.5rem;padding:1.5rem 2rem;position:relative;display:block;color:inherit;max-width:40em;outline-color:var(--color-primary,#00f);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out;margin-bottom:1.5rem}.card+[data-v-279d626a],.card[data-v-279d626a]{margin-top:2rem}.card+.card[data-v-279d626a]{margin-top:1rem}.card[data-v-279d626a]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.card[data-v-279d626a]:active{opacity:.7;transition-duration:0s}.card__title[data-v-279d626a]{color:var(--color-text,#000);font-size:1.25rem;line-height:1.5rem;font-weight:700;margin-right:1.5rem}.card__description[data-v-279d626a]{margin-top:.75rem;font-size:.875rem;line-height:1.25rem;color:var(--color-text-dim,#000)}.card__icon[data-v-279d626a]{top:1.5rem;right:1.5rem;position:absolute;stroke:rgba(0,0,0,.2)}.card:hover .card__icon[data-v-279d626a]{stroke:rgba(0,0,0,.4)}@media screen and (max-width:768px){.card[data-v-279d626a]{padding:1.25rem 1.5rem}.card__icon[data-v-279d626a]{top:1.25rem}}.container[data-v-732a47ec]{background-color:#fff;color:var(--color-text,#000);padding-top:3.5rem;padding-bottom:3.5rem}.wrapper[data-v-732a47ec]{--height:50px;background:#fff}.questions[data-v-732a47ec]{display:grid;grid-template-columns:1fr 1fr;margin-bottom:3rem;-moz-column-gap:10%;column-gap:10%;margin-right:10%;align-items:flex-start}.questions[data-v-732a47ec] a[href]{color:var(--color-link,#ccc)}.questions__wrapper[data-v-732a47ec]{margin-bottom:2rem}.questions__h1[data-v-732a47ec]{font-size:1.5rem;line-height:2rem;margin-bottom:.5rem;font-weight:600;color:var(--color-text,#000)}.questions__p[data-v-732a47ec]{font-size:.875rem;color:rgba(22,25,49,.9);line-height:1.25rem}.links[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.links__item[data-v-732a47ec]{display:flex;flex-direction:column;margin:1.5rem 0}.links__item__title[data-v-732a47ec]{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;margin-bottom:1rem}.links__item__link[data-v-732a47ec]{font-size:.875rem;line-height:1.25rem;margin-top:.5rem;margin-bottom:.5rem;align-self:flex-start;color:var(--color-text-dim,inherit)}.links__item__link[data-v-732a47ec]:focus,.links__item__link[data-v-732a47ec]:hover{color:var(--color-link,inherit)}.footer__wrapper[data-v-732a47ec]{margin:0 auto}.logo[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.logo__item[data-v-732a47ec]{padding:1.5rem 0;display:flex;align-items:flex-start;justify-content:flex-start}.logo__image[data-v-732a47ec]{display:inline-block;min-height:2rem;max-height:3rem;max-width:12.5rem;cursor:pointer}.logo__image img[data-v-732a47ec]{max-height:100%;max-width:100%}.logo__link[data-v-732a47ec]{grid-column:span 2;font-weight:600;align-items:center}.smallprint[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:flex-end}.smallprint[data-v-732a47ec] a[href]{color:var(--color-link,#ccc)}.smallprint__item[data-v-732a47ec]{padding:1rem 0;font-weight:600}.smallprint__item__links[data-v-732a47ec]{color:var(--color-link);font-size:.875rem}.smallprint__item__links__item[data-v-732a47ec]{margin-right:1rem}.smallprint__item__links__item svg[data-v-732a47ec]{transition:fill .15s ease-out;fill:rgba(0,0,0,.3)}.smallprint__item__links__item:focus svg[data-v-732a47ec],.smallprint__item__links__item:hover svg[data-v-732a47ec]{fill:rgba(0,0,0,.5)}.smallprint__item__desc[data-v-732a47ec]{grid-column:span 2;font-size:.8125rem;line-height:1rem;font-weight:400;color:var(--color-text-dim)}@media screen and (max-width:732px){.questions[data-v-732a47ec]{display:block;margin-right:0}}@media screen and (max-width:480px){.footer__links[data-v-732a47ec]{margin-left:1.5rem;margin-right:1.5rem}}.links[data-v-15325c0d]{display:flex}.links__wrapper[data-v-15325c0d]{display:flex;width:100%;margin-bottom:2rem}.links__wrapper[data-v-15325c0d]:first-child{margin-right:2rem}.links__container[data-v-15325c0d]{width:100%;align-items:stretch;display:flex;flex-direction:column}.links__item[data-v-15325c0d]{margin-top:1rem;padding:2rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);border-radius:.5rem;display:grid;grid-auto-flow:column;flex-grow:1;align-items:center;gap:2rem;overflow-x:hidden;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.links__item[data-v-15325c0d]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.links__item[data-v-15325c0d]:active{opacity:.7;transition-duration:0s}.links__item__left[data-v-15325c0d]{grid-template-columns:2.75rem auto}.links__item__right[data-v-15325c0d]{grid-template-columns:auto 2.75rem}.links__item__icon[data-v-15325c0d]{display:flex;align-items:center}.links__item__icon svg[data-v-15325c0d]{stroke:#aaa;transition:fill .15s ease-out,transform .15s ease-out}.links__item:focus .links__item__icon svg[data-v-15325c0d],.links__item:hover .links__item__icon svg[data-v-15325c0d]{stroke:var(--color-link,#888)}.links__item__left:hover .links__item__icon svg[data-v-15325c0d]{transform:translateX(-.25rem)}.links__item__right:hover .links__item__icon svg[data-v-15325c0d]{transform:translateX(.25rem)}.links__item__title[data-v-15325c0d]{margin-top:5px;font-weight:600;font-size:1.25rem;line-height:1.75rem}.links__item__desc[data-v-15325c0d]{color:var(--color-text-dim,inherit);margin-top:.5rem;font-size:.875rem;line-height:1.25rem}.links__label[data-v-15325c0d]{color:var(--color-text-dim,inherit);text-transform:uppercase;font-size:.75rem;line-height:1rem;letter-spacing:.2rem;margin-bottom:.5rem}@media screen and (max-width:1280px){.links[data-v-15325c0d]{flex-direction:column-reverse}}@media screen and (max-width:480px){.links__item[data-v-15325c0d]{display:flex;flex-direction:column;align-items:stretch}.links__item__icon[data-v-15325c0d]{order:-1;width:2.5rem;height:2.5rem;align-self:flex-end}}.newsletter[data-v-ee1dad7a]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);margin-top:4rem;margin-bottom:1rem;overflow:hidden;min-height:200px;border-radius:.5rem;position:relative;display:flex;align-items:center;justify-content:flex-end}.newsletter:hover .newsletter__image__item[data-v-ee1dad7a]{opacity:.25;transform:scale(.98)}.newsletter:hover .newsletter__image__item.letter__10[data-v-ee1dad7a]{transform:scale(1.5) rotate(25deg);opacity:1}.newsletter__image[data-v-ee1dad7a]{transform:translate(-125px,-35px) rotate(-25deg);display:grid;width:300px;gap:1rem;grid-template-columns:repeat(4,1fr);position:absolute;left:0;top:0}.newsletter__image__item[data-v-ee1dad7a]{opacity:.5;transition:all .5s}.newsletter__image__item.letter__10[data-v-ee1dad7a]{opacity:1;background:#fff}.newsletter__form[data-v-ee1dad7a]{margin-left:250px;padding:30px;width:100%}[data-v-ee1dad7a] a[href]{color:var(--color-link)}[data-v-ee1dad7a] strong{font-weight:700}strong[data-v-ee1dad7a]{font-weight:600}.container[data-v-ee1dad7a]{background:var(--sidebar-bg)}.wrapper[data-v-ee1dad7a]{max-width:calc(1400px - var(--sidebar-width))}.title[data-v-ee1dad7a]{font-size:2rem;color:var(--color-text,#000);padding:1.5rem 0;font-weight:700}.links[data-v-ee1dad7a]{display:grid;margin-top:1rem;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.links__item[data-v-ee1dad7a]{display:flex;flex-direction:column;align-items:center;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);text-align:center;border-radius:.5rem;padding:2rem;line-height:1.25rem;background:var(--bg);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out;position:relative}.links__item__icon[data-v-ee1dad7a]{position:absolute;top:0;right:0;padding:1rem;width:1rem;height:1rem;opacity:.26;transition:opacity .15s}.links__item:hover .links__item__icon[data-v-ee1dad7a]{opacity:.36}.links__item__text[data-v-ee1dad7a]{font-size:.875rem;line-height:1.25rem}.links__item[data-v-ee1dad7a]:focus:not(:active),.links__item[data-v-ee1dad7a]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.links__item[data-v-ee1dad7a]:active{opacity:.7;transition-duration:0s}.links__item__title[data-v-ee1dad7a]{margin-top:1.5rem;margin-bottom:.75rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}a.links__item[data-v-ee1dad7a]{color:#fff}a.links__item__regular[data-v-ee1dad7a]{color:var(--color-text,#000);background:rgba(176,180,207,.09)}@media screen and (max-width:832px){.newsletter[data-v-ee1dad7a]{height:auto}.newsletter__form[data-v-ee1dad7a]{margin-top:250px;margin-left:0;grid-template-columns:1fr}}.fill[data-v-09fc938e]{stroke:var(--color-link)}.newsletter__form__component__internal[data-v-fd618d74]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));width:100%;align-items:flex-end;background-color:#fff}.newsletter__desc[data-v-fd618d74]{padding-right:1.5rem}.newsletter__desc__h1[data-v-fd618d74]{color:var(--color-text,#000);font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:.5rem}.newsletter__desc__p[data-v-fd618d74]{font-size:.875rem;line-height:1.25rem;color:rgba(22,25,49,.9)}.newsletter__input[data-v-fd618d74]{padding-top:1rem}.newsletter__input__input[data-v-fd618d74]{border:1px solid rgba(140,145,177,.32);display:grid;grid-template-columns:1fr auto;align-items:center;padding:.5rem;border-radius:.25rem}.newsletter__input__input[data-v-fd618d74]:focus-within{border-color:var(--color-primary,#00f)}.newsletter__input__input__button[data-v-fd618d74]{padding:.5rem;text-transform:uppercase;color:var(--color-link);font-weight:600;cursor:pointer;background:none;border:none}.newsletter__input__input__el[data-v-fd618d74]{border:none;width:100%;outline:none;padding:.5rem;background:none}.newsletter__input__p[data-v-fd618d74]{margin-top:.5rem;color:rgba(22,25,49,.65);font-size:.8125rem}@media screen and (max-width:832px){.newsletter__form__component__internal[data-v-fd618d74]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.newsletter__desc[data-v-fd618d74]{padding-right:0;padding-bottom:1rem}}@media screen and (max-width:480px){.newsletter__form__component__internal[data-v-fd618d74]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}.container[data-v-03281e96]{margin-top:2rem;margin-bottom:2rem}.search[data-v-03281e96]{display:flex;position:relative}.search__icon[data-v-03281e96]{position:absolute;top:.25rem;left:.5rem;pointer-events:none}.search__input[data-v-03281e96]{border:1px solid rgba(176,180,207,.09);font-family:inherit;font-size:.875rem;padding:.5rem 1.5rem .5rem 2.5rem;width:100%;background:rgba(176,180,207,.09);border-radius:10000px;outline:none;transition:all .25s}.search__input[data-v-03281e96]:focus{border:1px solid var(--color-primary,#00f);background:#fff}select[data-v-5404a90a]{border:none;background:none;text-transform:uppercase;letter-spacing:.03em;font-weight:600;font-size:.875rem}.select[data-v-5404a90a]{border:2px solid rgba(140,145,177,.32);padding:.25rem .5rem;border-radius:6px;background-color:transparent}.sr-only[data-v-08503e1b]{position:absolute;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}select[data-v-08503e1b]{border:none;letter-spacing:.03em;font-weight:600;font-size:.875rem;line-height:1.25rem;color:rgba(0,0,0,.667);max-width:100%;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.5 5L8 10.5 13.5 5' stroke='%23000' stroke-opacity='.667' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat,repeat;background-position:right .7em top 50%,0 0;background-size:.75em auto,100%;padding:.5rem 1.75rem .5rem 0}select[data-v-08503e1b]:focus{outline:none}select[data-v-08503e1b]:hover{cursor:pointer}.select[data-v-08503e1b]{background-color:transparent;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.overlay[data-v-ec82e5e0]{position:fixed;top:0;left:0;height:100vh;width:100vw}.sidebar[data-v-ec82e5e0]{position:fixed;top:0;height:100vh;background:#fff;overflow-y:scroll;-webkit-overflow-scrolling:touch;transform:translateX(var(--translate-x-component-internal))}.overlay-enter-active[data-v-ec82e5e0]{transition:all .25s ease-in}.overlay-enter[data-v-ec82e5e0]{opacity:0}.overlay-enter-to[data-v-ec82e5e0]{opacity:1}.overlay-leave-active[data-v-ec82e5e0]{transition:all .25s}.overlay-leave[data-v-ec82e5e0]{opacity:1}.overlay-leave-to[data-v-ec82e5e0]{opacity:0}.sidebar-enter-active[data-v-ec82e5e0]{transition:all .25s}.sidebar-enter[data-v-ec82e5e0]{transform:translateX(var(--sidebar-transform-component-internal))}.sidebar-enter-to[data-v-ec82e5e0]{transform:translateX(0)}.sidebar-leave-active[data-v-ec82e5e0]{transition:all .25s}.sidebar-leave[data-v-ec82e5e0]{transform:translateX(0)}.sidebar-leave-to[data-v-ec82e5e0]{transform:translateX(var(--sidebar-transform-component-internal))}.container[data-v-609154e0]{display:flex;flex-direction:column;height:100%}.logo[data-v-609154e0]{padding:1.5rem 2rem;display:flex;align-items:center}.logo[data-v-609154e0]:active{outline:none}.logo__img[data-v-609154e0]{width:2.5rem;height:2.5rem;margin-right:.75rem}.logo__img__custom[data-v-609154e0]{width:100%;height:2.5rem;margin-right:.75rem}.logo__img__custom img[data-v-609154e0]{max-width:100%;max-height:100%}.logo__text[data-v-609154e0]{font-weight:600}.logo__container[data-v-609154e0]{position:sticky;display:block;background:#fff;z-index:1;top:0}.logo__container[data-v-609154e0]:after{position:absolute;content:"";top:100%;left:0;right:0;background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));height:25px}.sidebar[data-v-609154e0]{padding-left:2rem;padding-right:2rem;overflow-x:hidden}.version[data-v-609154e0]{margin-top:2rem;display:none}.items[data-v-609154e0]{flex-grow:1;padding-bottom:2rem}.items.footer__compact__true[data-v-609154e0]{flex-grow:0}.title[data-v-609154e0]{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:#666;margin-top:2rem;margin-bottom:.5rem}.footer.footer__compact__true[data-v-609154e0]{padding-bottom:150px;bottom:auto;margin-top:0;position:relative;flex-grow:1}.footer[data-v-609154e0]{height:var(--sidebar-footer-height);background-color:var(--sidebar-bg);position:sticky;bottom:0;width:100%;display:grid;grid-auto-flow:column;padding:1rem .75rem;align-items:center;grid-auto-columns:1fr}.footer[data-v-609154e0]:before{content:"";position:absolute;top:-50px;left:0;right:0;bottom:100%;background:linear-gradient(0deg,#fff,hsla(0,0%,100%,0));pointer-events:none}.footer__item[data-v-609154e0]{align-self:flex-start;display:flex;align-items:center;flex-direction:column;fill:rgba(51,54,74,.4)}.footer__item__icon[data-v-609154e0]{height:32px;margin-bottom:.25rem}.footer__item[data-v-609154e0]:hover{fill:var(--color)}.footer__item__title[data-v-609154e0]{text-align:center;font-size:.6875rem;line-height:.875rem}@media screen and (max-width:1135px){.version[data-v-609154e0]{display:block}}.item[data-v-15b24446]{position:relative;padding-left:1.5rem;display:block;padding-top:.375rem;padding-bottom:.375rem;cursor:pointer;font-size:.875rem;line-height:1.25rem;outline-color:var(--color-primary,#00f);color:rgba(0,0,0,.8);transition:color .15s ease-out}.item:hover .item__icon[data-v-15b24446],.item[data-v-15b24446]:hover{transition-duration:0s}.item[data-v-15b24446]:focus,.item[data-v-15b24446]:hover{color:var(--color-text,#000)}.item__child[data-v-15b24446]:not(.router-link-active):focus:after,.item__child[data-v-15b24446]:not(.router-link-active):hover:after{background:rgba(0,0,0,.2)}.item:focus .item__icon.item__icon__collapsed[data-v-15b24446],.item:focus .item__icon.item__icon__outbound[data-v-15b24446],.item:hover .item__icon.item__icon__collapsed[data-v-15b24446],.item:hover .item__icon.item__icon__outbound[data-v-15b24446]{fill:var(--color-primary,#00f);stroke:none}.item:hover .item__icon.item__icon__internal[data-v-15b24446]{visibility:unset;stroke:var(--color-primary,#00f)}.item:focus .item__icon.item__icon__internal[data-v-15b24446]{stroke:transparent;visibility:unset;fill:var(--color-primary,#00f)}.item[data-v-15b24446]:after{content:"";width:2px;height:100%;visibility:var(--vline);background:var(--vline-color,#000);position:absolute;top:0;left:5px;transition:background-color .15s ease-out}.item__selected[data-v-15b24446]{font-weight:600;color:var(--color-link,#00f)}.item__selected__dir[data-v-15b24446]{font-weight:400}.item__selected__alt[data-v-15b24446]{color:initial;font-weight:600}.item__dir[data-v-15b24446]{font-weight:600}.item__icon[data-v-15b24446]{position:absolute;top:.65rem;left:0;width:12px;height:12px;fill:var(--icon-color);transition:fill .15s ease-out,height .15s ease-out}.item__icon__expanded[data-v-15b24446]{stroke:none;fill:none;background:var(--color-primary,#00f);height:1px;padding-top:1px;margin-top:4px}.item__icon__internal[data-v-15b24446]{stroke:rgba(0,0,0,.2);stroke-width:1.5px;fill:none}.item__icon__outbound[data-v-15b24446]{fill:rgba(0,0,0,.2)}.reveal-enter-active[data-v-15b24446],.reveal-leave-active[data-v-15b24446]{transition:all .25s;overflow:hidden}.reveal-enter[data-v-15b24446],.reveal-leave-to[data-v-15b24446]{max-height:0;opacity:0}.reveal-enter-to[data-v-15b24446],.reveal-leave[data-v-15b24446]{max-height:var(--max-height);opacity:1}.menu[data-v-1919b5c7]{visibility:hidden}.menu__item[data-v-1919b5c7]{position:relative}.menu__item__icon[data-v-1919b5c7]{cursor:pointer;width:1.5rem;height:1.5rem;padding:.75rem;border-radius:.25rem;fill:rgba(51,54,74,.4)}.menu__item__icon.menu__item__icon__active__true[data-v-1919b5c7]{fill:#5064fb;background:rgba(102,161,255,.15)}.menu__item__modal[data-v-1919b5c7]{position:absolute;width:16rem;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);right:0;z-index:1000;border-radius:.25rem;background-color:#fff}.menu__item__modal__title[data-v-1919b5c7]{color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;padding:1.5rem 1.5rem 1rem}.menu__item__modal__item[data-v-1919b5c7]{padding:.625rem 1.5rem;font-size:.875rem;line-height:1.25rem;outline:none;cursor:pointer}.menu__item__modal__item[data-v-1919b5c7]:hover{background-color:rgba(176,180,207,.087);color:var(--color-text,#000)}.menu__item__modal__item[data-v-1919b5c7]:active{color:var(--color-link);font-weight:600;box-shadow:inset 2px 0 0 0 var(--color-link)}.menu__item__modal__item[data-v-1919b5c7]:last-child{margin-bottom:.5rem}[data-v-1f736804] strong{color:var(--color-link);font-weight:700}.banner[data-v-1f736804]{display:flex;align-items:stretch;justify-content:center;position:relative;width:100%;z-index:2}.banner__content[data-v-1f736804]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;color:#000;text-align:center;display:flex;flex:auto;padding:.5rem 4rem;align-items:center;justify-content:center;background-color:#f8f9fc;transition:background-color .15s ease-out}.banner__content[data-v-1f736804]:focus,.banner__content[data-v-1f736804]:hover{background-color:#f1f2f7}.banner__dismiss[data-v-1f736804]{position:absolute;top:0;right:0;bottom:0;padding:0 1rem;display:flex;align-items:center}.banner__dismiss__icon[data-v-1f736804]{padding:.5rem;border-radius:50%;opacity:.4;transition:opacity .15s ease-out,background-color .2s}.banner__dismiss__icon svg[data-v-1f736804]{display:block}.banner__dismiss:focus .banner__dismiss__icon[data-v-1f736804],.banner__dismiss:hover .banner__dismiss__icon[data-v-1f736804]{opacity:.7;background-color:rgba(0,0,0,.1)}.fade-leave-active[data-v-1f736804]{transition:opacity .3s cubic-bezier(.32,0,.67,0),margin .3s cubic-bezier(.32,0,.67,0)}.fade-leave-to[data-v-1f736804]{opacity:0}@media screen and (max-width:414px){.banner__content[data-v-1f736804]{text-align:left;justify-content:flex-start;padding-left:1rem;padding-right:3rem}}@media screen and (max-width:320px){.banner__content[data-v-1f736804]{font-size:.8125rem;line-height:1.125rem}.banner__dismiss[data-v-1f736804]{padding:0 .5rem}}.container[data-v-19189c02]{display:grid;grid-template-columns:auto 1fr auto;align-items:center}.menu[data-v-19189c02]{padding:.75rem}.menu__icon[data-v-19189c02]{height:1.5rem;width:1.5rem;cursor:pointer}.logo__wrapper[data-v-19189c02]{display:grid;grid-auto-flow:column;justify-content:center;gap:.5rem;align-items:center;cursor:pointer;height:3.5rem}.logo__image[data-v-19189c02]{width:2rem;height:2rem;fill:var(--color-primary,#00f)}.logo__image__custom[data-v-19189c02]{height:2.5rem}.logo__image__custom__img[data-v-19189c02]{max-width:100%;max-height:100%}.logo__text[data-v-19189c02]{font-weight:600}.toolbar[data-v-19189c02]{grid-column-start:-2;display:flex;justify-content:flex-end}.toolbar__item[data-v-19189c02]{cursor:pointer;display:flex;flex-direction:row;align-items:center;padding:.75rem}.toolbar__item__icon[data-v-19189c02]{height:1.5rem;width:1.5rem;margin-right:.5rem}.toolbar__item__text[data-v-19189c02]{color:var(--color-text-dim,inherit)}@media screen and (max-width:752px){.menu__icon[data-v-19189c02]{visibility:visible}.toolbar__item__text__search[data-v-19189c02]{display:none}.logo__wrapper[data-v-19189c02],.toolbar[data-v-19189c02]{visibility:visible}.toolbar__item__icon[data-v-19189c02]{margin-right:0}} \ No newline at end of file +.overlay[data-v-d098955a]{position:fixed;top:0;left:0;z-index:100000;height:100vh;width:100vw}.sidebar[data-v-d098955a]{position:fixed;overflow-y:hidden;z-index:100000;transform:translateX(var(--sidebar-translate-x)) translateY(var(--sidebar-translate-y));-webkit-overflow-scrolling:touch}.close[data-v-d098955a]{border-radius:50%;stroke:hsla(0,0%,100%,.75);box-sizing:border-box;padding:8px;width:48px;height:48px;position:absolute;top:0;right:0;margin:1rem;cursor:pointer}.close__icon[data-v-d098955a]{display:block}.sidebar.sidebar__side__left[data-v-d098955a]{left:0;right:auto}.sidebar.sidebar__side__left[data-v-d098955a],.sidebar.sidebar__side__right[data-v-d098955a]{top:0;width:var(--sidebar-width,300px);max-width:var(--sidebar-max-width,75%);height:var(--sidebar-height,100%);max-height:var(--sidebar-max-height,100%);box-shadow:var(--sidebar-box-shadow)}.sidebar.sidebar__side__right[data-v-d098955a]{left:auto;right:0}.sidebar.sidebar__side__bottom[data-v-d098955a]{top:0;left:0;right:0;max-width:none;overflow-y:scroll;-webkit-overflow-scrolling:touch;width:var(--sidebar-width,100%);max-width:var(--sidebar-width,100%);height:100%;margin-left:auto;margin-right:auto}.sidebar.sidebar__side__center[data-v-d098955a]{top:0;left:0;right:0;bottom:0;width:100%;max-width:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch;pointer-events:all;height:100vh}.sidebar__content[data-v-d098955a]{background:#fff;position:absolute;pointer-events:all;overflow-y:scroll;-webkit-overflow-scrolling:touch;width:100%;height:100%}.sidebar__content.sidebar__content__side__bottom[data-v-d098955a]{margin-top:var(--sidebar-margin-top);overflow-y:hidden;height:auto;box-shadow:var(--sidebar-box-shadow)}.sidebar__content.sidebar__content__side__center[data-v-d098955a]{pointer-events:all;position:absolute;width:var(--sidebar-width,600px);max-width:var(--sidebar-max-width,90%);height:var(--sidebar-height,auto);max-height:var(--sidebar-max-height,none);top:var(--sidebar-margin-top);transform:translateX(-50%);left:50%;border-radius:var(--sidebar-border-radius);box-shadow:var(--sidebar-box-shadow);margin-bottom:20px;border-radius:.5rem}.sidebar__content.sidebar__content__side__center.sidebar__fullscreen__true[data-v-d098955a]{top:0;width:100%;height:100%;max-width:100%;max-height:100%;margin-bottom:0;border-radius:0}.overlay-enter-active[data-v-d098955a]{transition:all .25s ease-out}.overlay-enter[data-v-d098955a]{opacity:0}.overlay-enter-to[data-v-d098955a]{opacity:1}.overlay-leave-active[data-v-d098955a]{transition:all .25s}.overlay-leave[data-v-d098955a]{opacity:1}.overlay-leave-to[data-v-d098955a]{opacity:0}.sidebar__bottom-enter-active[data-v-d098955a],.sidebar__bottom-leave-active[data-v-d098955a],.sidebar__center-enter-active[data-v-d098955a],.sidebar__center-leave-active[data-v-d098955a],.sidebar__left-enter-active[data-v-d098955a],.sidebar__left-leave-active[data-v-d098955a],.sidebar__right-enter-active[data-v-d098955a],.sidebar__right-leave-active[data-v-d098955a]{transition:all .5s}.sidebar__left-enter[data-v-d098955a],.sidebar__left-leave-to[data-v-d098955a]{transform:translateX(-100%)}.sidebar__right-enter[data-v-d098955a],.sidebar__right-leave-to[data-v-d098955a]{transform:translateX(100%)}.sidebar__left-enter-to[data-v-d098955a],.sidebar__left-leave .sidebar__right-enter-to[data-v-d098955a],.sidebar__right-leave[data-v-d098955a]{transform:translateX(0)}.sidebar__bottom-enter[data-v-d098955a],.sidebar__bottom-leave-to[data-v-d098955a]{transform:translateY(100%)}.sidebar__bottom-enter-to[data-v-d098955a],.sidebar__bottom-leave[data-v-d098955a]{transform:translateY(0)}.sidebar__center-enter[data-v-d098955a],.sidebar__center-leave-to[data-v-d098955a]{opacity:0;transform:scale(.95)}.sidebar__center-enter-to[data-v-d098955a],.sidebar__center-leave[data-v-d098955a]{opacity:1;transform:scale(1)}@media screen and (max-width:500px){.sidebar__content.sidebar__content__side__center[data-v-d098955a]{margin-top:3rem}}button[data-v-849e11fe]{background:none;border:none;font-size:inherit;font-family:inherit;padding:0}.term[data-v-849e11fe]{cursor:pointer}.term[data-v-849e11fe]:active{outline:none}.tooltip[data-v-849e11fe]{position:absolute;width:var(--width);left:auto;right:var(--right);font-size:.75rem;line-height:1.5;padding-right:1rem;opacity:0;pointer-events:none;outline:none;transition:all .1s ease-in;transform:translateY(-1em);z-index:1000000;box-sizing:border-box}.tooltip__wrapper[data-v-849e11fe]{padding:.75em 1em;background:var(--white-100,#fff);box-shadow:0 .25em 1.5em rgba(0,0,0,.15);border-radius:.5em}.tooltip[data-v-849e11fe]:focus{transform:translateY(0);opacity:1;pointer-events:all}@media screen and (max-width:600px){.tooltip[data-v-849e11fe]{border-radius:0;width:100vw;left:var(--left);padding:0 1em}}.page-header[data-v-93ef1dde]{background:#f8f9fc}.page-header__container[data-v-93ef1dde]{padding:2rem}.page-header__text[data-v-93ef1dde]{margin-top:1.5rem}.page-header__title[data-v-93ef1dde]{margin-bottom:1rem;font-size:2.5rem;line-height:1.16;font-weight:300}.page-header__subtitle[data-v-93ef1dde]{color:rgba(0,0,0,.667)}.page-header__project-title[data-v-93ef1dde]{font-family:var(--ds-font-family,inherit);font-weight:500;font-size:var(--ds-h4-font-size);line-height:1.25rem;letter-spacing:.25rem;text-transform:uppercase;margin-bottom:1.25rem;color:rgba(0,0,0,.8)}@media screen and (max-width:1680px){.page-header__container[data-v-93ef1dde]{padding:5.75rem 8rem 2rem}}@media screen and (max-width:1024px){.page-header__container[data-v-93ef1dde]{padding:5.75rem 5.75rem 2rem}}@media screen and (max-width:768px){.page-header__container[data-v-93ef1dde]{padding:2rem}}.banner-wrapper[data-v-40401285]{box-sizing:border-box;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);position:fixed;bottom:2rem;left:50%;transform:translateX(-50%);z-index:3000;background:var(--white-100,#fff);border:.0625rem solid transparent;-o-border-image:initial;border-image:initial;border-radius:.5rem}.wrapper[data-v-40401285]{display:flex}.message[data-v-40401285]{font-size:.8125rem;line-height:1.125rem;letter-spacing:.01em;align-items:stretch;justify-content:center;padding:.8125rem 0 .8125rem .8125rem;position:relative}.box[data-v-40401285]{width:3.5rem;flex:0 0 3.5rem;flex-direction:column;padding:0;position:relative;cursor:pointer}.box[data-v-40401285],.icon-cross[data-v-40401285]{display:flex;justify-content:center;align-items:center}.box:hover .icon-cross[data-v-40401285]{height:2rem;width:2rem;background-color:var(--grey-95,#eff0f5);border-radius:1rem;transition:background-color .2s}.box:hover path[data-v-40401285]{stroke:var(--grey-44,#686a79);transition:stroke .2s}.fade-enter-active[data-v-40401285]{transition:opacity .2s ease-out,transform .5s cubic-bezier(.22,1,.36,1)}.fade-leave-active[data-v-40401285]{transition:opacity .3s cubic-bezier(.32,0,.67,0),transform .3s cubic-bezier(.32,0,.67,0)}.fade-enter[data-v-40401285],.fade-leave-to[data-v-40401285]{opacity:0;transform:translate(-50%,100%)}@media screen and (max-width:435px){.banner-wrapper[data-v-40401285]{border-radius:.5rem;bottom:1rem;white-space:normal;width:90%}.message[data-v-40401285]{font-size:.9rem;line-height:1.125rem}}a[data-v-6c0fa742]{color:inherit;text-decoration:none}.component__footer__container[data-v-6c0fa742]{font-family:var(--ds-font-family,inherit);background-color:var(--grey-14,#151831);color:var(--white-100,#fff);padding-top:2rem;padding-bottom:2rem;overflow-x:hidden}.grid[data-v-6c0fa742]{display:grid;grid-template-columns:1fr 2fr;margin-bottom:2rem}.header[data-v-6c0fa742]{display:grid;gap:1rem;grid-auto-flow:row;align-content:space-between;justify-content:space-between}.header__title[data-v-6c0fa742]{font-size:1.25rem;margin-bottom:2rem}.header__links[data-v-6c0fa742]{display:flex;flex-direction:row;flex-wrap:wrap;position:relative}.header__links__popover[data-v-6c0fa742]{position:absolute;top:-3.5rem;transform:translate(var(--pos-x),var(--pos-y));pointer-events:none;transition:all .25s}.header__links__popover__content[data-v-6c0fa742]{background:var(--white-100,#fff);color:var(--black,#000);position:absolute;white-space:nowrap;transform:translateX(-50%);font-size:.8125rem;padding:7px 12px;border-radius:.25rem}.header__links__popover__content[data-v-6c0fa742]:after{content:"";position:absolute;width:8px;height:8px;display:block;background-color:var(--white-100,#fff);-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;left:50%;transform:translateX(-50%) translateY(-13%) scaleX(2)}.header__links__item[data-v-6c0fa742]{fill:var(--white-100,#fff);margin-right:.75rem;margin-bottom:.75rem;display:block;height:24px;width:24px}.header__links__item__image[data-v-6c0fa742]{position:block}.menu[data-v-6c0fa742]{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.menu__item__title[data-v-6c0fa742]{margin-bottom:1rem;font-weight:var(--ds-h6-font-weight,800);font-size:var(--ds-h6-font-size,.75rem);text-transform:var(--ds-h6-text-transform,uppercase);letter-spacing:var(--ds-h6-letter-spacing,.2em)}.menu__item__item[data-v-6c0fa742]{padding-top:.5rem;padding-bottom:.5rem;display:block;font-size:var(--ds-p2-font-size,.875rem);line-height:var(--ds-p2-line-height,1.25)}.smallprint[data-v-6c0fa742]{font-size:var(--ds-p3-font-size,.825rem)}.fade-active-enter[data-v-6c0fa742]{transition:all .25s}.fade-enter[data-v-6c0fa742]{opacity:0}.fade-enter-to[data-v-6c0fa742]{opacity:1}.fade-active-leave[data-v-6c0fa742]{transition:all .25s}.fade-leave[data-v-6c0fa742]{opacity:1}.fade-leave-to[data-v-6c0fa742]{opacity:0}@media screen and (max-width:800px){.grid[data-v-6c0fa742]{display:block}.header[data-v-6c0fa742]{grid-auto-flow:column;margin-bottom:3rem}}@media screen and (max-width:400px){.header[data-v-6c0fa742]{display:block}}a[data-v-b6cbde80]{text-decoration:none}.body__code[data-v-b6cbde80]{white-space:pre}span[data-v-b6cbde80]{display:block}.fade-enter-active[data-v-b6cbde80],.fade-leave-active[data-v-b6cbde80]{transition:opacity .2s}.fade-enter[data-v-b6cbde80],.fade-leave-to[data-v-b6cbde80]{opacity:0}.fade-enter-to[data-v-b6cbde80],.fade-leave[data-v-b6cbde80]{opacity:1}.container[data-v-b6cbde80]{border-radius:.5rem;background:#2e3148}.body__container[data-v-b6cbde80]{position:relative}.body__container:hover .icons[data-v-b6cbde80]{opacity:1}.body[data-v-b6cbde80]{color:hsla(0,0%,100%,.8);overflow-x:scroll;padding:1.375rem 1rem 1rem;overflow-y:hidden;position:relative;line-height:1.75;scrollbar-color:hsla(0,0%,100%,.2) hsla(0,0%,100%,.1);scrollbar-width:thin;font-size:.8125rem;line-height:1.25rem}.body[data-v-b6cbde80]::-webkit-scrollbar{background:hsla(0,0%,100%,.1);height:6px}.body[data-v-b6cbde80]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:6px}.codeblock__is-expandable__true .body[data-v-b6cbde80]{max-height:700px}.codeblock__is-expandable__true.codeblock__expanded__true .body[data-v-b6cbde80]{max-height:var(--max-height)}.body__wrapper[data-v-b6cbde80]{font-family:JetBrains Mono,Menlo,Monaco,monospace;-webkit-font-feature-settings:"liga" on,"calt" on;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:.8125rem;display:inline-block;line-height:1.25rem}.body.body__hasfooter__true[data-v-b6cbde80]{border-bottom-left-radius:0;border-bottom-right-radius:0}.expand[data-v-b6cbde80]{position:absolute;bottom:0;display:grid;grid-template-columns:1fr 1fr 1fr;width:100%;color:#161931;padding:1.5rem;font-family:var(--ds-font-family,inherit);box-sizing:border-box}.codeblock__expanded__false .expand[data-v-b6cbde80]{background:linear-gradient(180deg,rgba(22,25,49,0),#161931)}.codeblock__hasfooter__false.codeblock__expanded__false .expand[data-v-b6cbde80]{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.expand__item[data-v-b6cbde80]{text-transform:uppercase;background-color:#dadce6;display:grid;justify-self:center;grid-auto-flow:column;gap:.5rem;align-items:center;font-weight:500;padding:.5rem 1rem;line-height:1;letter-spacing:.02em;font-size:.8125rem;height:2rem;cursor:pointer;border-radius:1000px;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);box-sizing:border-box}.expand__item__expand[data-v-b6cbde80]{grid-area:1/2/1/3;justify-self:center}.expand__item__collapse[data-v-b6cbde80]{grid-area:1/3/1/4;justify-self:flex-end;height:2rem;max-width:3rem;padding-top:.3rem;padding-bottom:.3rem}.expand__item__icon[data-v-b6cbde80]{height:1em;width:auto}.icons[data-v-b6cbde80]{transition:all .1s;position:absolute;top:0;right:0;padding:.5rem;opacity:0;display:flex;z-index:100}.icons__item[data-v-b6cbde80]{margin-left:.5rem;cursor:pointer;border-radius:.25rem;position:relative;background:rgba(46,49,72,.7)}.icons__item:active .icons__item__icon[data-v-b6cbde80]{fill:#66a1ff}.icons__item:hover .icons__item__tooltip[data-v-b6cbde80]{opacity:1}.icons__item:hover .icons__item__tooltip[data-v-b6cbde80]:hover{opacity:0}.icons__item__tooltip[data-v-b6cbde80]{font-family:var(--ds-font-family,inherit);color:#fff;position:absolute;top:-2.05rem;left:50%;transform:translateX(-50%);background:#161931;font-size:.8125rem;opacity:0;border-radius:.25rem;padding:.5rem .75rem;transition:all .25s .5s}.icons__item__tooltip[data-v-b6cbde80]:before{content:"";width:8px;height:8px;display:block;background-color:#161931;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;transform:translateX(-50%) translateY(-13%) scaleX(2);position:absolute;font-size:1rem;left:50%}.icons__item__icon[data-v-b6cbde80]{fill:#fff;padding:.75rem;display:block}.icons__item[data-v-b6cbde80]:hover{fill:#66a1ff;background:#43465a}.footer[data-v-b6cbde80]{background-color:#161931;color:#fff;display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;font-size:.8125rem;line-height:1;font-family:var(--ds-font-family,inherit)}.footer__source[data-v-b6cbde80]{color:#66a1ff;font-weight:500;stroke:#66a1ff;align-items:center;display:flex;box-shadow:none;outline:none}.footer__source[data-v-b6cbde80]:after{display:none}.footer__source[data-v-b6cbde80]:visited,.footer__source[data-v-b6cbde80]:visited:hover{color:#66a1ff}.footer__source[data-v-b6cbde80]:hover{box-shadow:none;color:#66a1ff}.footer__source[data-v-b6cbde80]:active{color:#66a1ff}.footer__source__icon[data-v-b6cbde80]{margin-left:.5rem}[data-v-b6cbde80] .token.keyword{color:#c678dd}[data-v-b6cbde80] .token.comment{opacity:.5}[data-v-b6cbde80] .token.function{color:#61afef}[data-v-b6cbde80] .token.builtin{color:#e06c75}[data-v-b6cbde80] .token.string{color:#98c379}[data-v-b6cbde80] .token.operator{color:#56b6c2}[data-v-b6cbde80] .token.boolean{color:#d19a66}.component__button[data-v-02d19c16]{border:none;font-family:var(--ds-font-family,inherit);font-size:medium;margin:0;padding:.875em 1.15em;border-radius:.35em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;transition:all .25s;text-align:center;text-transform:uppercase;font-weight:500;line-height:1.25;letter-spacing:.02em;text-decoration:none;background-color:var(--background-color,#5064fb);color:#fff;white-space:nowrap}button[data-v-02d19c16]:disabled{opacity:.5}.component__button[data-v-02d19c16]:focus,.component__button[data-v-02d19c16]:hover{box-shadow:0 16px 32px rgba(0,0,0,.08),0 8px 12px rgba(0,0,0,.06),0 1px 0 rgba(0,0,0,.05);opacity:.8}.button__size__xs[data-v-02d19c16]{font-size:.75rem}.button__size__s[data-v-02d19c16]{font-size:.875rem}.button__size__m[data-v-02d19c16]{font-size:1rem}.button__size__l[data-v-02d19c16]{font-size:1.25rem}.button__size__xl[data-v-02d19c16]{font-size:1.5rem}.wrapper[data-v-5eac6964]{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.container[data-v-5eac6964]{font-family:var(--ds-font-family,inherit);padding:4rem 1rem;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);border-radius:.75rem}.h1[data-v-5eac6964]{font-weight:500;font-size:2rem;line-height:2.5rem;text-align:center;letter-spacing:-.04em;color:var(--white-100,#fff);margin-bottom:2rem}.p[data-v-5eac6964]{font-size:1.25rem;line-height:1.75rem;text-align:center;color:var(--white-80)}.footer[data-v-5eac6964]{margin-top:3rem;display:flex;justify-content:center}@media screen and (max-width:600px){.wrapper[data-v-5eac6964]{grid-template-columns:1fr}.container[data-v-5eac6964]{padding:3rem 1rem}.h1[data-v-5eac6964]{font-size:1.5rem}.p[data-v-5eac6964]{font-size:1.05rem}.footer[data-v-5eac6964]{margin-top:2rem}}a[data-v-05f587fd]{color:var(--primary-light);text-decoration:none}.section-content[data-v-05f587fd]{display:flex;flex-direction:column;padding:1rem;align-self:center;color:var(--white-100,#fff);background:var(--grey-14);font-family:var(--ds-font-family,inherit)}.container[data-v-05f587fd]{display:flex;flex-direction:column;padding:0;max-width:44rem;width:100%;align-self:center}.icon[data-v-05f587fd]{stroke:var(--secondary);display:flex;width:100%;justify-content:center}.icon__icon[data-v-05f587fd]{max-width:4rem;max-height:4rem}.content[data-v-05f587fd]{align-self:center;margin:0 6rem;display:contents}.title[data-v-05f587fd]{font-weight:500;font-size:2.5rem;line-height:1.3;color:var(--white-100,#fff);text-align:center;letter-spacing:-.04em;margin:2rem 0}.subtitle[data-v-05f587fd]{font-size:1.25rem;line-height:1.4;color:var(--white-80)}.notes[data-v-05f587fd]{font-size:1.25rem;line-height:1.75rem;color:var(--white-80)}ul[data-v-05f587fd]{list-style-type:disc;padding-left:1rem}ul li[data-v-05f587fd]{margin-bottom:1.25rem}ul ul[data-v-05f587fd]{list-style-type:none;padding:0}ul ul li[data-v-05f587fd]{margin:1.25rem auto}ul li.note[data-v-05f587fd]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em}@media screen and (max-width:600px){.title[data-v-05f587fd]{font-size:1.2rem;margin:1rem 0}.notes[data-v-05f587fd],.subtitle[data-v-05f587fd]{font-size:1rem}}.container[data-v-d4e7da22]{overflow-wrap:anywhere;margin-left:1rem;margin-right:1rem}.row[data-v-d4e7da22]{background-color:var(--grey-23,#2e3148);color:var(--white-100,#fff);font-family:var(--ds-font-family,inherit);display:grid;grid-auto-flow:column;grid-template-columns:-webkit-min-content 1fr;grid-template-columns:min-content 1fr;text-decoration:none;border-radius:.5rem;transition:all .25s}.row[data-v-d4e7da22]:focus,.row[data-v-d4e7da22]:hover{background-color:#373a52;box-shadow:var(--ds-elevation-4)}.row:focus .icon[data-v-d4e7da22],.row:hover .icon[data-v-d4e7da22]{opacity:.8}.row:focus .h2[data-v-d4e7da22],.row:hover .h2[data-v-d4e7da22]{color:#fff}.row:focus .aside__icon[data-v-d4e7da22],.row:hover .aside__icon[data-v-d4e7da22]{stroke:hsla(0,0%,100%,.8)}.row[data-v-d4e7da22]:active{opacity:.8}.row:active .aside__icon[data-v-d4e7da22]{opacity:inherit}.icon[data-v-d4e7da22],.icon__wrapper[data-v-d4e7da22]{display:flex;align-items:center}.icon[data-v-d4e7da22]{grid-column-start:1;width:4rem;height:4rem;fill:var(--white-100,#fff);opacity:.32;margin:1.5rem 3rem;justify-content:center;transition:opacity .25s}.details[data-v-d4e7da22]{padding-top:1.5rem;padding-bottom:1.5rem;grid-column-start:2;display:grid;grid-auto-flow:column;align-items:center;gap:1rem;justify-content:space-between;margin-left:1.5rem;margin-right:1.5rem}.h1[data-v-d4e7da22]{font-weight:500;font-size:1.25rem;line-height:var(--ds-h5-line-height);letter-spacing:-.01em;color:var(--white-100,#fff);display:block;text-decoration:none}.h2[data-v-d4e7da22]{font-size:var(--ds-body2-font-size,.875rem);line-height:var(--ds-body2-line-height,1.25rem);line-height:24px;color:var(--white-51);font-weight:400;transition:color .25s}.body[data-v-d4e7da22]{margin-top:.75rem;line-height:var(--ds-body1-line-height,1.5rem);color:hsla(0,0%,100%,.8);font-size:var(--ds-body1-font-size,1rem)}.h3[data-v-d4e7da22]{font-size:.875rem;line-height:20px;letter-spacing:.01em;color:var(--white-80);text-align:right;text-transform:none;font-weight:400}.indicator[data-v-d4e7da22]{display:flex;flex-direction:row;align-items:flex-end}.progress__wrapper[data-v-d4e7da22]{display:flex;flex-direction:column;align-items:flex-end}.progress[data-v-d4e7da22]{position:relative;height:.25rem;width:7rem;background:var(--white-20);margin-bottom:.75rem;border-radius:.5rem}.progress__bar[data-v-d4e7da22]{height:100%;width:var(--progress-bar-width,0);background:var(--success);border-radius:inherit}.aside__icon__wrapper[data-v-d4e7da22]{padding:1rem .75rem;margin-left:.5rem}.aside__icon[data-v-d4e7da22]{height:1rem;width:auto;display:block;stroke:hsla(0,0%,100%,.32);transition:all .25s}@media screen and (max-width:600px){.icon[data-v-d4e7da22]{display:none}.h1[data-v-d4e7da22]{font-size:var(--ds-body2-font-size,.875rem)}.h2[data-v-d4e7da22]{font-size:var(--ds-caption-book-font-size,.8125rem)}.details[data-v-d4e7da22]{margin-left:1rem;margin-right:1rem;padding-top:1rem;padding-bottom:1rem}.progress__true .aside__icon__wrapper[data-v-d4e7da22]{display:none}.progress[data-v-d4e7da22]{width:3rem}.h3__label[data-v-d4e7da22]{display:none}}.row[data-v-68662012]{margin-bottom:1rem}.row[data-v-68662012]:last-child{margin-bottom:0}.container[data-v-1aec3751]{color:#fff;font-family:var(--ds-font-family,inherit);margin-left:2rem;margin-right:2rem}.row[data-v-1aec3751]{display:grid;grid-template-columns:25% 1fr;gap:2rem}.row__aside[data-v-1aec3751]{text-align:right;font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:hsla(0,0%,100%,.51);padding-top:1.5rem;padding-bottom:1.5rem;margin-top:.3rem}.row__body[data-v-1aec3751]{border-bottom:1px solid hsla(0,0%,100%,.1);padding-top:1.5rem;padding-bottom:1.5rem;line-height:1.5}[data-v-1aec3751]{font-size:1rem}[data-v-1aec3751] p{margin:0}[data-v-1aec3751] a{color:#66a1ff;text-decoration:none}[data-v-1aec3751] ul{padding-left:2em}[data-v-1aec3751] li{margin-top:.75rem;margin-bottom:.75rem;list-style-type:disc}@media screen and (max-width:600px){.row[data-v-1aec3751]{display:block}.row__aside[data-v-1aec3751]{text-align:initial;padding-bottom:.5rem;font-size:.75rem}.row__body[data-v-1aec3751]{padding-top:0}[data-v-1aec3751]{font-size:.875rem}}.component__hero__container[data-v-322ca003]{font-family:var(--ds-font-family,inherit);position:relative;min-height:100vh}.component__hero__container[data-v-322ca003]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(22,25,49,0) 68.75%,rgba(22,25,49,.8) 88.02%)}.container[data-v-322ca003]{padding:14rem 1rem;border-radius:.75rem;margin-left:auto;margin-right:auto}.section[data-v-322ca003]{display:flex;justify-content:center;align-items:center}.section__img[data-v-322ca003]{height:7.5rem;width:100%;max-width:65rem;position:absolute}.footer[data-v-322ca003]{bottom:3rem;position:absolute}.subtitle[data-v-322ca003]{color:var(--white-100,#fff);font-size:1.5rem;line-height:2rem;text-align:center;letter-spacing:-.01em;max-width:34.4162rem;width:100%}.button[data-v-322ca003]{display:grid;grid-auto-flow:column;align-items:center;justify-content:center;white-space:nowrap;gap:.75rem;box-sizing:border-box;color:var(--white-100,#fff)}.button__style__standard[data-v-322ca003]{background:var(--secondary-dark);display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;justify-content:center;align-items:center;margin:1.5rem auto}.button__style__standard[data-v-322ca003]:focus,.button__style__standard[data-v-322ca003]:hover{background:var(--secondary)}.button__icon[data-v-322ca003]{width:1.75rem;height:2rem;fill:var(--white-100,#fff)}@media screen and (max-width:600px){.footer[data-v-322ca003]{margin:auto 1rem}}@media screen and (max-width:414px){.container[data-v-322ca003]{padding:12rem 0}.footer[data-v-322ca003]{bottom:1rem}.section__img[data-v-322ca003]{max-width:18rem}}@media screen and (max-width:375px){.container[data-v-322ca003]{padding:13rem 0}}@media screen and (max-width:320px){.container[data-v-322ca003]{padding:10rem 0}.subtitle[data-v-322ca003]{font-size:1.3rem}}.button[data-v-15043a38]{border:none;font-family:var(--ds-font-family,inherit);font-size:medium;margin:0;border-radius:.35em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;transition:all .25s;text-align:center;text-transform:uppercase;font-weight:600;letter-spacing:.02em;text-decoration:none;padding:0;width:100%;display:flex;justify-content:center}.button[data-v-15043a38]:disabled{opacity:.5;cursor:not-allowed}.button__content[data-v-15043a38]{white-space:nowrap;display:grid;grid-auto-flow:column;align-items:center}.button__text[data-v-15043a38]{padding-left:.25rem;padding-right:.25rem}.button__icon[data-v-15043a38]{display:flex;align-items:center}.button__type__text .button__text[data-v-15043a38]{padding-left:0;padding-right:0}.button__size__s[data-v-15043a38]{font-size:.8125rem;line-height:1rem;padding-top:.5rem;padding-bottom:.5rem}.button__size__s.button__type__contained[data-v-15043a38]{padding-left:.75rem;padding-right:.75rem}.button__size__s .button__content[data-v-15043a38]{gap:.25rem}.button__size__s .button__icon[data-v-15043a38]{width:1rem;height:1rem}.button__size__m[data-v-15043a38]{font-size:1rem;line-height:1.5rem;padding-top:.75rem;padding-bottom:.75rem}.button__size__m .button__content[data-v-15043a38]{gap:.5rem}.button__size__m .button__icon[data-v-15043a38]{width:1.5rem;height:1.5rem}.button__size__m.button__type__contained[data-v-15043a38]{padding-left:1rem;padding-right:1rem}.button__size__l[data-v-15043a38]{font-size:1.25rem;line-height:2rem;padding-top:1rem;padding-bottom:1rem}.button__size__l .button__content[data-v-15043a38]{gap:.75rem}.button__size__l .button__icon[data-v-15043a38]{width:2rem;height:2rem}.button__size__l.button__type__contained[data-v-15043a38]{padding-left:1.5rem;padding-right:1.5rem}.container[data-v-18c36b6e]{background-color:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:8px;display:grid;grid-template-columns:25% 60% 15%;min-height:7.25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;transition:background-color .25s,border-color .25s,box-shadow .15s ease-out,transform .15s ease-out;padding-top:1rem;padding-bottom:1rem;box-sizing:border-box;outline:none}[data-v-18c36b6e] .container:focus,[data-v-18c36b6e] .container:hover{box-shadow:0 12px 24px rgba(0,0,0,.07),0 4px 8px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05)}[data-v-18c36b6e] .container:hover{transform:translateY(-2px)}[data-v-18c36b6e] .value__false.container:hover .checkbox__icon{stroke:hsla(0,0%,100%,.8)}[data-v-18c36b6e] .value__false.container:focus:not(:hover) .checkbox__icon{stroke:#66a1ff}[data-v-18c36b6e] .value__true.container:focus:not(:hover) .checkbox__icon{fill:#66a1ff}.container[data-v-18c36b6e]:active{transform:translateY(0);transition-duration:0s}.value__true.container[data-v-18c36b6e]{background-color:#161931}.icon[data-v-18c36b6e]{grid-column-start:1;display:flex;align-items:center;justify-content:center}.icon__image[data-v-18c36b6e]{width:4rem;height:4rem;stroke:hsla(0,0%,100%,.5);fill:none;margin:1rem}.value__true .icon__image[data-v-18c36b6e]{stroke:#66a1ff}[data-v-18c36b6e] .container:active .checkbox,[data-v-18c36b6e] .container:active .h1,[data-v-18c36b6e] .container:active .icon__image,[data-v-18c36b6e] .container:active .p{opacity:.6}.body[data-v-18c36b6e]{grid-column-start:2;display:flex;align-items:center}.h1[data-v-18c36b6e]{font-weight:600;font-size:1.25rem;line-height:1.75rem;letter-spacing:-.02em;color:#fff;margin-bottom:.5rem}.p[data-v-18c36b6e]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;color:hsla(0,0%,100%,.8)}.checkbox[data-v-18c36b6e]{grid-column-start:3;display:flex;align-items:center;justify-content:center}.checkbox__icon[data-v-18c36b6e]{width:1.5rem;height:1.5rem}.value__true .checkbox__icon[data-v-18c36b6e]{fill:#fff}.value__false .checkbox__icon[data-v-18c36b6e]{fill:none;stroke:hsla(0,0%,100%,.32)}@media screen and (max-width:400px){.h1[data-v-18c36b6e]{font-size:1rem}.p[data-v-18c36b6e]{font-size:.8125rem}}.background-stars-container[data-v-3572cdf7]{position:absolute;top:0;left:0;right:0;bottom:0;background:url(/main/assets/img/stars.d8924548.svg) repeat top,linear-gradient(145.11deg,#202854 9.49%,#171b39 91.06%)}a[data-v-185099e4]{color:#66a1ff;text-decoration:none}.icon-hero[data-v-185099e4]{width:4rem;height:4rem;margin:1.5rem 0 2rem;color:hsla(0,0%,100%,.5)}.container[data-v-185099e4]{background:var(--newsletter-background);font-family:var(--ds-font-family,inherit);color:#fff;position:relative}.wrapper[data-v-185099e4]{display:grid;grid-template-columns:50% 50%;grid-template-rows:1fr;align-items:center;width:100%}.image[data-v-185099e4]{width:100%;height:100%;position:relative;overflow:hidden;transform:translateZ(0)}.image__img[data-v-185099e4]{position:absolute;top:50%;left:100%;transform:translate(-85%,-50%)}.text[data-v-185099e4]{max-width:36rem;position:relative;width:100%;overflow-y:hidden;transition:min-height .5s ease-in-out;height:100%;min-height:var(--page-min-height)}.page[data-v-185099e4]{box-sizing:border-box;padding:5rem 1rem;width:100%;display:flex;align-items:center}.page__wrapper[data-v-185099e4]{width:100%}.page__container[data-v-185099e4]{display:flex;align-items:center;height:100%}.h1[data-v-185099e4]{font-size:2rem;font-weight:600;line-height:1.25;color:var(--white-100,#fff);margin-bottom:1.5rem;display:block}.fullscreen__true .h1[data-v-185099e4]{font-size:2.5rem}.h2[data-v-185099e4]{font-size:2rem;color:#fff;font-weight:600;line-height:1.25;margin-top:2.5rem;margin-bottom:2.5rem}.h3[data-v-185099e4]{font-size:.8125rem;font-weight:600;color:hsla(0,0%,100%,.8);text-transform:none;margin:initial;letter-spacing:normal;line-height:1.25rem}.h4[data-v-185099e4]{margin-bottom:.5rem;font-weight:800;line-height:20px;letter-spacing:.07em;text-transform:uppercase;color:hsla(0,0%,100%,.5)}.p1[data-v-185099e4]{color:hsla(0,0%,100%,.8);font-size:1.25rem;line-height:1.4;font-weight:400;margin-bottom:2rem}.p2[data-v-185099e4]{font-size:.8125rem;color:hsla(0,0%,100%,.5);line-height:1.25rem}.email__form[data-v-185099e4]{display:grid;grid-auto-flow:column;grid-template-columns:1fr -webkit-min-content;grid-template-columns:1fr min-content;gap:1rem;margin-top:2.5rem;margin-bottom:1.5rem}.email__form__input__input[data-v-185099e4]{outline:none;width:100%;background:hsla(0,0%,100%,.1);border:none;border-radius:.25rem;color:#fff;font-size:1rem;padding:.75rem 1rem;line-height:1.5;height:auto;box-sizing:border-box;transition:all .15s;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--ds-font-family,inherit);font-weight:400;margin:0}.email__form__input__input[data-v-185099e4]:hover{background-color:hsla(0,0%,100%,.13)}.email__form__input__input[data-v-185099e4]:focus{box-shadow:inset 0 0 0 1.5px #66a1ff;background-color:rgba(0,0,0,.2)}.email__form__input__input[data-v-185099e4]:hover:not(:focus)::-webkit-input-placeholder,.email__form__input__input[data-v-185099e4]:hover:not(:focus)::placeholder{color:hsla(0,0%,100%,.8)}.card-checkbox-list[data-v-185099e4]{margin-top:2.5rem;margin-bottom:2.5rem;display:grid;grid-auto-flow:row;gap:1rem}.backwards-enter-active[data-v-185099e4],.backwards-leave-active[data-v-185099e4],.forwards-enter-active[data-v-185099e4],.forwards-leave-active[data-v-185099e4]{transition:all .5s ease-in-out;position:absolute}.forwards-enter[data-v-185099e4]{opacity:0;transform:translateY(50px)}.forwards-enter-to[data-v-185099e4],.forwards-leave[data-v-185099e4]{opacity:1;transform:translateY(0)}.backwards-enter[data-v-185099e4],.forwards-leave-to[data-v-185099e4]{opacity:0;transform:translateY(-50px)}.backwards-enter-to[data-v-185099e4],.backwards-leave[data-v-185099e4]{opacity:1;transform:translateY(0)}.backwards-leave-to[data-v-185099e4]{opacity:0;transform:translateY(50px)}.fade-enter-active[data-v-185099e4],.fade-leave-active[data-v-185099e4]{transition:opacity 5s}.fade-enter[data-v-185099e4],.fade-leave-to[data-v-185099e4]{opacity:0}.fade-enter-to[data-v-185099e4],.fade-leave[data-v-185099e4]{opacity:1}@media screen and (max-width:800px){.icon-hero[data-v-185099e4]{display:flex;justify-content:center;width:100%}.wrapper[data-v-185099e4]{grid-template-columns:1fr}.page__container[data-v-185099e4]{align-items:flex-start}.page[data-v-185099e4]{padding-bottom:0}.image[data-v-185099e4]{height:250px;display:flex;justify-content:center}.image__img[data-v-185099e4]{position:relative;left:0;top:0;transform:translateY(-100%)}.image__img__img[data-v-185099e4]{width:500px;left:50%;position:absolute;transform:translateX(-50%)}.text[data-v-185099e4]{transform:translateY(-75px);justify-self:center;max-width:560px;height:auto}.h1[data-v-185099e4],.h3[data-v-185099e4],.h4[data-v-185099e4],.p1[data-v-185099e4],.p2[data-v-185099e4]{text-align:center}}@media screen and (max-width:400px){.email__form[data-v-185099e4]{grid-template-columns:1fr;grid-auto-flow:row}.fullscreen__true .h1[data-v-185099e4],.h1[data-v-185099e4],.h2[data-v-185099e4]{font-size:1.5rem}.h2[data-v-185099e4]{margin-top:1rem;margin-bottom:1rem}.p1[data-v-185099e4]{font-size:1rem}.h4[data-v-185099e4]{font-size:.8125rem}}a[data-v-4b2eb8c8]{color:#5064fb;text-decoration:none}.container[data-v-4b2eb8c8]{color:var(--white-100,#fff);font-family:var(--ds-font-family,inherit);padding:4rem 1rem;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);margin-left:auto;margin-right:auto;overflow-x:hidden}.section[data-v-4b2eb8c8]{max-width:33rem;margin-left:auto;margin-right:auto}.icon[data-v-4b2eb8c8]{display:flex;justify-content:center}.icon__icon[data-v-4b2eb8c8]{stroke:var(--white-100,#fff);width:4rem;height:4rem}.icon__icon.icon__icon__active[data-v-4b2eb8c8]{stroke:var(--primary-light);opacity:1}.icon__icon.icon__icon__error[data-v-4b2eb8c8]{stroke:var(--danger);opacity:1}.h1[data-v-4b2eb8c8]{text-align:center;font-size:40px;font-weight:500;line-height:3rem;letter-spacing:-.03em;color:#000;margin-top:1.5rem;margin-bottom:1.5rem}.p[data-v-4b2eb8c8]{font-size:1.125rem;line-height:1.6875rem;text-align:center;letter-spacing:-.01em;color:rgba(0,0,0,.8)}.form[data-v-4b2eb8c8]{margin-top:3rem;display:grid;gap:1rem;grid-auto-flow:column;grid-template-columns:1fr -webkit-min-content;grid-template-columns:1fr min-content;max-width:30rem;margin-left:auto;margin-right:auto}.form__input__input[data-v-4b2eb8c8]{background:none;border:2px solid rgba(59,66,125,.12);padding:.75rem 1rem;font-size:1rem;font-family:var(--ds-font-family,inherit);line-height:1.5;border-radius:.25rem;width:100%;box-sizing:border-box;color:rgba(0,0,0,.667);opacity:.7}.form__input__input[data-v-4b2eb8c8]:hover{background-color:hsla(0,0%,100%,.13)}.form__input__input[data-v-4b2eb8c8]:focus{outline:none;border:2px solid #5064fb}.form__button[data-v-4b2eb8c8]{position:relative;display:flex;justify-content:center}.form__button__content[data-v-4b2eb8c8]{display:grid;white-space:nowrap;gap:.75rem;grid-auto-flow:column;align-items:center;justify-content:center;box-sizing:border-box;color:#fff}.button__style__standard[data-v-4b2eb8c8]{background:#5064fb}.form__button__content.form__button__content__in-flight__true[data-v-4b2eb8c8]{opacity:0}.form__button__spinner[data-v-4b2eb8c8]{width:1.5rem;height:1.5rem;position:absolute;-webkit-animation:spin-data-v-4b2eb8c8 1s linear infinite;animation:spin-data-v-4b2eb8c8 1s linear infinite}@-webkit-keyframes spin-data-v-4b2eb8c8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin-data-v-4b2eb8c8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.form__button__icon[data-v-4b2eb8c8]{fill:#fff;width:1.5rem;height:1.5rem}.form__input__input[data-v-4b2eb8c8]::-moz-placeholder{color:inherit;opacity:.7}.form__input__input[data-v-4b2eb8c8]::placeholder{color:inherit;opacity:.7}.form__p[data-v-4b2eb8c8]{text-align:center;color:rgba(0,0,0,.667);margin-top:1.5rem;font-size:.8125rem}.box[data-v-4b2eb8c8]{box-sizing:border-box;border-radius:8px;padding:1.5rem;margin-top:2.5rem;font-size:.875rem;line-height:1.25rem;text-align:center;letter-spacing:.01em;margin-bottom:.5rem}.box__h1[data-v-4b2eb8c8]{font-weight:500;color:rgba(0,0,0,.667)}.box__p[data-v-4b2eb8c8]{color:rgba(0,0,0,.667)}.fade-enter-active[data-v-4b2eb8c8]{transition:all .4s ease-out}.fade-leave-active[data-v-4b2eb8c8]{transition:all .2s ease-out}.fade-enter[data-v-4b2eb8c8]{opacity:0;transform:scale(1.5)}.fade-enter-to[data-v-4b2eb8c8],.fade-leave[data-v-4b2eb8c8]{opacity:1;transform:scale(1)}.fade-leave-to[data-v-4b2eb8c8]{opacity:0;transform:scale(.85)}@media screen and (max-width:600px){.h1[data-v-4b2eb8c8]{font-size:2rem;font-weight:500;line-height:2.5rem}.form[data-v-4b2eb8c8]{margin-top:2rem;grid-auto-flow:row;grid-template-columns:1fr}}.shortcuts[data-v-ec0d5cce]{display:flex;justify-content:center;flex-direction:column;padding-top:4rem;padding-bottom:4rem;font-family:var(--ds-font-family,inherit)}.shortcuts__h1[data-v-ec0d5cce]{text-align:center;color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;margin-bottom:2rem}.shortcuts__table__row[data-v-ec0d5cce]{display:grid;grid-template-columns:3fr 7fr;gap:1.5rem;align-items:center;margin-top:.5rem;margin-bottom:.5rem}.shortcuts__table__row__keys[data-v-ec0d5cce]{display:flex;justify-content:flex-end}.shortcuts__table__row__keys__item[data-v-ec0d5cce]{color:#46509f;background-color:rgba(176,180,207,.2);border:1px solid rgba(176,180,207,.09);border-radius:.25rem;font-size:.8125rem;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;margin:2px}.shortcuts__table__row__desc[data-v-ec0d5cce]{color:rgba(22,25,49,.65)}.results__noresults__container[data-v-37a9a987]{height:100%;flex-grow:1;padding:4rem 2rem;font-family:var(--ds-font-family,inherit);overflow-x:hidden;word-break:break-all}.results__noresults[data-v-37a9a987],.results__noresults__container[data-v-37a9a987]{display:flex;flex-direction:column;align-items:center;justify-content:center}.results__noresults__icon[data-v-37a9a987]{max-width:80px;margin-bottom:2rem;fill:#ccc}.results__noresults__h1[data-v-37a9a987]{color:rgba(22,25,49,.65);font-size:1.5rem;margin-bottom:1rem;text-align:center}.results__noresults__p[data-v-37a9a987]{color:rgba(22,25,49,.65)}.results__noresults__a[data-v-37a9a987]{cursor:pointer;color:var(--accent-color,#000)}.search-box[data-v-e97dbd96]{width:100%;display:grid;grid-auto-flow:column;align-items:center;box-shadow:inset 0 -1px 0 0 rgba(176,180,207,.2);padding-left:2rem;padding-right:2rem;grid-template-columns:1.5rem 1fr 1.25rem;gap:1rem;box-sizing:border-box;font-family:var(--ds-font-family,inherit)}.search-box__input__input[data-v-e97dbd96]{border:none;background:none;outline:none;font-size:1.25rem;width:100%;padding:1.5rem .5rem}.search-box__input__input[data-v-e97dbd96]::-webkit-input-placeholder{color:rgba(14,33,37,.26)}.search-box__clear__icon[data-v-e97dbd96]{cursor:pointer;fill:rgba(0,0,0,.15);margin-top:.25rem}.search-box__clear__icon[data-v-e97dbd96]:focus,.search-box__clear__icon[data-v-e97dbd96]:hover{fill:rgba(0,0,0,.25);outline:none}.search-box__button[data-v-e97dbd96]{text-transform:uppercase;color:var(--accent-color,#000);font-weight:500;cursor:pointer;height:100%;display:flex;align-items:center}.results__item[data-v-3746c5a5]{padding:1rem 2rem;cursor:pointer}.results__item__selected__true[data-v-3746c5a5]{background-color:#fff}.results__item__title[data-v-3746c5a5]{color:var(--accent-color,#000)}.results__item__h2[data-v-3746c5a5]{margin-top:.25rem;margin-bottom:.25rem;font-weight:500;font-size:.875rem}.results__item__h2__item[data-v-3746c5a5]{display:inline-block}.results__item__h2__item[data-v-3746c5a5]:after{content:">";margin-left:.25rem;margin-right:.25rem}.results__item__h2__item[data-v-3746c5a5]:last-child:after{content:""}.results__item__desc[data-v-3746c5a5]{opacity:.5;white-space:nowrap;overflow:hidden;position:relative;font-size:.875rem}.results__item__desc[data-v-3746c5a5]:after{content:"";background:linear-gradient(90deg,rgba(248,249,252,.5) 0,#f8f9fc);height:1em;width:2em;padding-bottom:.25rem;text-align:right;position:absolute;top:0;right:0}strong[data-v-14dc0fe4]{font-weight:500}.container[data-v-14dc0fe4]{height:100vh;overflow-y:scroll;-webkit-overflow-scrolling:touch;flex-direction:column;background-color:#f8f9fc;font-family:var(--ds-font-family)}.results[data-v-14dc0fe4]{padding-bottom:3rem;display:flex;flex-direction:column;flex-grow:1}.sheet__sidebar[data-v-58560e81]{z-index:10000;position:relative;scrollbar-color:#eee #fff}.sheet__sidebar__toc[data-v-58560e81]{display:none}.layout__main__content__aside.aside__bottom__true[data-v-58560e81]{position:absolute;bottom:var(--height-banners,0);right:0;max-height:none;top:auto;height:auto}.layout__main__content.aside__false[data-v-58560e81]{display:block}.layout[data-v-58560e81]{display:grid;width:100%;grid-template-columns:var(--sidebar-width) calc(100% - var(--sidebar-width));max-width:var(--layout-max-width,1540px);margin-left:auto;margin-right:auto;position:relative}.layout__sidebar[data-v-58560e81]{position:sticky;top:0;height:100vh;overflow-y:scroll;scrollbar-color:#eee #fff}.layout__sidebar[data-v-58560e81]::-webkit-scrollbar{background:hsla(0,0%,100%,0);width:6px;-webkit-transition:background .25s;transition:background .25s}.layout__sidebar[data-v-58560e81]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,0);border-radius:6px;-webkit-transition:background .25s;transition:background .25s}.layout__sidebar[data-v-58560e81]:hover::-webkit-scrollbar{background:hsla(0,0%,100%,0)}.layout__sidebar[data-v-58560e81]:hover::-webkit-scrollbar-thumb{background:#eee}.layout__main__navbar[data-v-58560e81]{padding-left:2.5rem;padding-right:2.5rem;display:none;position:sticky;top:0;width:100%;background:#fff;z-index:500}.layout__main__content[data-v-58560e81]{display:grid;grid-template-columns:calc(100% - var(--aside-width)) var(--aside-width)}.layout__main__content__body__breadcrumbs[data-v-58560e81]{padding-left:3.25rem;padding-right:3.25rem;padding-top:6.5rem}.layout__main__content__body__wrapper[data-v-58560e81]{padding-left:4rem;padding-right:4rem}.layout__main__content__aside[data-v-58560e81]{position:sticky;top:0;max-height:100vh;overflow-y:scroll;scrollbar-color:#eee #fff}.layout__main__content__aside[data-v-58560e81]::-webkit-scrollbar{background:hsla(0,0%,100%,0);width:6px;-webkit-transition:background .25s;transition:background .25s}.layout__main__content__aside[data-v-58560e81]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,0);border-radius:6px;-webkit-transition:background .25s;transition:background .25s}.layout__main__content__aside[data-v-58560e81]:hover::-webkit-scrollbar{background:hsla(0,0%,100%,0)}.layout__main__content__aside[data-v-58560e81]:hover::-webkit-scrollbar-thumb{background:#eee}.layout__main__content__aside__container[data-v-58560e81]{position:relative;height:100%;padding-bottom:var(--height-banners,0)}.layout__main__content__aside__banners[data-v-58560e81]{width:100%;position:absolute;bottom:0;right:0;padding-left:2rem;padding-right:1.5rem;box-sizing:border-box}.layout__main__gutter[data-v-58560e81]{max-width:calc(100% - var(--aside-width));padding:4rem}.layout__main__footer[data-v-58560e81]{padding-left:4rem;padding-right:4rem}@media screen and (max-width:1392px){.layout[data-v-58560e81]{--sidebar-width:256px}}@media screen and (max-width:1136px){.layout__main__content[data-v-58560e81]{display:block}.layout__main__content__aside[data-v-58560e81],.layout__main__content__aside__banners[data-v-58560e81]{display:none}.layout__main__gutter[data-v-58560e81]{max-width:none}}@media screen and (max-width:832px){.layout[data-v-58560e81]{display:block}.layout__sidebar[data-v-58560e81]{display:none}.layout__main__navbar[data-v-58560e81]{display:block;padding-left:1.75rem;padding-right:1.75rem}.layout__main__content[data-v-58560e81]{padding-top:1rem}.layout__main__content__body[data-v-58560e81]{padding-top:0}.layout__main__content__body__breadcrumbs[data-v-58560e81]{padding-left:1.75rem;padding-right:1.75rem;padding-top:0}.layout__main__content__body__wrapper[data-v-58560e81],.layout__main__footer[data-v-58560e81],.layout__main__gutter[data-v-58560e81]{padding-left:2.5rem;padding-right:2.5rem}}@media screen and (max-width:732px){.sheet__sidebar__toc[data-v-58560e81]{display:block}.layout__main__content__body__breadcrumbs[data-v-58560e81],.layout__main__navbar[data-v-58560e81]{padding-left:1.75rem;padding-right:1.75rem}}@media screen and (max-width:480px){.layout__main__content__body__breadcrumbs[data-v-58560e81],.layout__main__navbar[data-v-58560e81]{padding-left:.25rem;padding-right:.25rem}.layout__main__content__body__wrapper[data-v-58560e81],.layout__main__footer[data-v-58560e81],.layout__main__gutter[data-v-58560e81]{padding-left:1rem;padding-right:1rem}}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-ExtraLight.woff2) format("woff2");font-weight:200}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-Regular.woff2) format("woff2");font-weight:400}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-SemiBold.woff2) format("woff2");font-weight:600}@font-face{font-family:Metropolis;src:url(https://raw.githubusercontent.com/lovincyrus/Metropolis/master/Fonts/Webfonts/WOFF2/Metropolis-Bold.woff2) format("woff2");font-weight:700}@font-face{font-family:JetBrains Mono;src:url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}a,abbr,acronym,address,applet,big,blockquote,body,button,caption,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,form,h1,h2,h3,h4,h5,h6,html,iframe,img,input,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,ul,var{font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline;margin:0;padding:0;box-sizing:border-box}a[href]{color:inherit;text-decoration:initial}html{scrollbar-color:#eee #fff}body{margin:0;font-weight:400;font-family:Metropolis,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Helvetica Neue,sans-serif;letter-spacing:.03em;-webkit-font-smoothing:antialiased;color:var(--color-text,#000);text-rendering:optimizeLegibility}:root{--sidebar-width:19rem;--aside-width:280px;--topbar-height:100px;--color-text:#000;--color-text-dim:rgba(0,0,0,0.667);--color-link:#5064fb;--color-primary:#5064fb;--color-code:inherit;--sidebar-bg:#fff;--sidebar-footer-height:100px;--layout-width:1540px}code{-webkit-font-feature-settings:"liga" on,"calt" on;font-family:JetBrains Mono,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}select{font-size:inherit;font-family:inherit}[hide]{display:none}.search__container{visibility:visible!important}.layout__main__content__aside__container{margin-top:60px}#aside-scroll .container .search__container{display:none}.tabs-component{margin:2em 0}.tabs-component li.tabs-component-tab{margin-bottom:0!important}.tabs-component-tabs{border:1px solid #ddd;border-radius:6px;margin-bottom:5px;padding-left:0}ul.tabs-component-tabs{margin-bottom:-1px!important}.custom-block.warning{background-color:rgba(255,229,100,.3);color:#6b5900;padding:.1rem 1.5rem;border-left:.5rem solid;border-color:#e7c000;margin:1rem 0}.tabs-component-tab{color:#999;font-size:14px;font-weight:600;margin-right:0;list-style:none}.tabs-component-tab:hover{color:#666}.tabs-component-tab.is-active{color:#3eaf7c}.tabs-component-tab.is-disabled *{color:#cdcdcd;cursor:not-allowed!important}.tabs-component-tab-a{align-items:center;color:inherit;display:flex;padding:.25em .5em;text-decoration:none}.tabs-component-panels{padding:1em 0}@media (min-width:700px){.tabs-component-tabs{border:0;align-items:stretch;display:flex;justify-content:flex-start;margin-bottom:-1px}.tabs-component-tab{background-color:#fff;border:1px solid #ddd;border-radius:3px 3px 0 0;margin-right:.25em;transition:transform .3s ease}.is-active{border-bottom:1px solid #fff;z-index:2;transform:translateY(0)}.tabs-component-panels{border-top-left-radius:0;background-color:#fff;border:1px solid #ddd;border-radius:0 6px 6px 6px;box-shadow:0 0 10px rgba(0,0,0,.05);padding:1em}}:root{--color-link:#9214b1;--color-primary:#ba3fd9}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}img[data-v-08694257]{width:100%;margin-bottom:1rem;margin-top:1rem}a[data-v-08694257]{color:var(--color-link,#00f);outline-color:var(--color-primary,#00f);border-radius:.25rem;transition:opacity .3s ease-out}a[data-v-08694257]:hover{text-decoration:underline}a[data-v-08694257]:active{opacity:.65;transition-duration:0s}.h1[data-v-08694257]{font-size:1.5rem;line-height:2.5rem;letter-spacing:-.02em;font-weight:700}.p[data-v-08694257]{font-size:1.125rem;line-height:1.8125rem;margin-top:1em;margin-bottom:1em}.container[data-v-31935645]{background:#f8f9fc;padding:1rem;text-align:center;border-radius:.5rem;position:relative;transition:all .1s}.container[data-v-31935645]:hover:not(:active){box-shadow:0 12px 24px rgba(0,0,0,.07),0 4px 8px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition:transform .15s ease-out,box-shadow .15s ease-out}.container:hover:not(:active) .icon[data-v-31935645]{fill:rgba(0,0,0,.4)}.container[data-v-31935645]:active{transition-duration:0s}.icon[data-v-31935645]{position:absolute;padding:.75rem;width:1rem;height:1rem;top:0;right:0;fill:rgba(0,0,0,.2)}.image[data-v-31935645]{display:flex;justify-content:center;padding:.5rem}.h1[data-v-31935645]{margin-top:.875rem;margin-bottom:.25rem;line-height:1.25rem;font-weight:600}.h2[data-v-31935645]{font-size:.8125rem;line-height:1.125rem;color:rgba(22,25,49,.65)}[data-v-0e8cb6f4] .container h1{margin-bottom:1.5rem}.search[data-v-0e8cb6f4]{display:flex;align-items:center;color:rgba(22,25,49,.65);cursor:pointer;transition:color .15s ease-out}.search[data-v-0e8cb6f4]:hover{color:var(--color-text,#000)}.search__container[data-v-0e8cb6f4]{display:flex;justify-content:flex-end;margin-top:1rem;margin-bottom:1rem;padding-top:1rem}.search__container__right[data-v-0e8cb6f4]{display:grid;grid-auto-flow:column;gap:2rem}.search__icon[data-v-0e8cb6f4]{width:1.5rem;height:1.5rem;fill:#aaa;margin-right:.5rem;transition:fill .15s ease-out}.search:hover .search__icon[data-v-0e8cb6f4]{fill:var(--color-text,#000)}.intro[data-v-0e8cb6f4]{width:100%;max-width:800px}.h1[data-v-0e8cb6f4]{font-size:3rem;font-weight:700;margin-bottom:1.5rem;line-height:3.25rem;letter-spacing:-.02em;padding-top:2.5rem}.h2[data-v-0e8cb6f4]{font-size:2rem;font-weight:700;margin-top:4.5rem;margin-bottom:1rem;line-height:2.25rem;letter-spacing:-.01em}.p[data-v-0e8cb6f4]{font-size:1.5rem;line-height:2.25rem}.p__alt[data-v-0e8cb6f4]{margin-top:.75rem;margin-bottom:2rem;font-size:1.25rem;line-height:1.75rem}.features[data-v-0e8cb6f4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:5rem;margin-top:2.25rem}.features__item[data-v-0e8cb6f4]{cursor:pointer;display:grid;grid-auto-flow:column;grid-template-columns:minmax(6rem,1fr) 2fr;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);position:relative;border-radius:.5rem;background:linear-gradient(302.07deg,#fff 48.96%,#ebedff);outline:none;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.features__item[data-v-0e8cb6f4]:focus:not(:active),.features__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.features__item[data-v-0e8cb6f4]:active{opacity:.7;transition-duration:0s}.features__item__dark[data-v-0e8cb6f4]{background:linear-gradient(112.22deg,#161831,#2e3148)}.features__item__dark .features__item__text__h2[data-v-0e8cb6f4]{color:#fff;opacity:.5}.features__item__dark .features__item__text__h1[data-v-0e8cb6f4]{color:#fff}.features__item__dark .features__item__text__p[data-v-0e8cb6f4]{color:#fff;opacity:.8}.features__item__icon[data-v-0e8cb6f4]{position:absolute;top:0;right:0;padding:.75rem;width:1rem;height:1rem;fill:#fff;opacity:.35}.features__item:hover .features__item__icon[data-v-0e8cb6f4]{opacity:.6}.features__item__image[data-v-0e8cb6f4]{display:flex;align-items:center;justify-content:center;align-self:center;max-height:10rem;transition:transform .2s ease-out}.features__item__image__img[data-v-0e8cb6f4]{max-height:14rem;max-width:10rem;min-width:8rem}.features__item:hover:not(:active) .features__item__image[data-v-0e8cb6f4]{transform:translateY(-.25rem) scale(1.02);transition-duration:.1s}.features__item__text[data-v-0e8cb6f4]{padding:1.75rem 2rem 2rem;display:flex;flex-direction:column;justify-content:center}.features__item__text__h2[data-v-0e8cb6f4]{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--color-text-dim,inherit);margin-bottom:.25rem}.features__item__text__h1[data-v-0e8cb6f4]{font-size:1.25rem;color:var(--color-text,#000);line-height:1.75rem;letter-spacing:.01em;font-weight:600;margin-top:.25rem;margin-bottom:.75rem}.features__item__text__p[data-v-0e8cb6f4]{color:var(--color-text-dim,inherit);font-size:.875rem;line-height:1.25rem}.sections[data-v-0e8cb6f4]{display:grid;margin-top:3rem;margin-bottom:5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.sections__item[data-v-0e8cb6f4]{position:relative;color:initial;border-radius:.5rem;padding:1.5rem 1.5rem 1.5rem 5.5rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.sections__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.sections__item[data-v-0e8cb6f4]:active{transition-duration:0s;opacity:.7}.sections__item__icon[data-v-0e8cb6f4]{position:absolute;top:1rem;left:1.25rem;font-size:1.5rem;display:flex;align-items:center;justify-content:center;width:3rem;height:3rem}.sections__item__title[data-v-0e8cb6f4]{font-weight:600;margin-bottom:.5rem}.sections__item__desc[data-v-0e8cb6f4]{font-size:.875rem;line-height:1.25rem;color:var(--color-text-dim,inherit)}.stack[data-v-0e8cb6f4]{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:4rem}.stack__item[data-v-0e8cb6f4]{position:relative;min-height:120px;display:flex;align-items:center;padding:2rem 1.25rem;border-radius:.5rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);color:var(--color-text,#000);background:#fff;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.stack__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.stack__item[data-v-0e8cb6f4]:active{opacity:.7;transition-duration:0s}.stack__item__icon[data-v-0e8cb6f4]{position:absolute;top:0;right:0;padding:1rem;opacity:.26;transition:opacity .15s}.stack__item:hover .stack__item__icon[data-v-0e8cb6f4]{opacity:.36}.stack__item__h1[data-v-0e8cb6f4]{font-size:1.25rem;line-height:1.5rem;margin-bottom:.75rem;font-weight:600}.stack__item__p[data-v-0e8cb6f4]{font-size:.875rem;color:rgba(22,25,49,.65);line-height:1.25rem}.stack__item__wrapper[data-v-0e8cb6f4]{display:grid;grid-auto-flow:column;grid-template-columns:30% 1fr;gap:1.25rem}.stack__item[data-v-0e8cb6f4]:before{position:absolute;top:0;left:0;content:"";width:50%;height:100%;background:linear-gradient(90deg,var(--accent),hsla(0,0%,100%,0));border-radius:.5rem;opacity:.1}.stack__item__logo[data-v-0e8cb6f4]{height:72px;width:auto}@media screen and (max-width:1136px){.p[data-v-0e8cb6f4]{font-size:1.25rem;line-height:1.75rem}}@media screen and (max-width:832px){.h1[data-v-0e8cb6f4]{padding-top:3.5rem}.search__container[data-v-0e8cb6f4]{display:none}}@media screen and (max-width:752px){.search[data-v-0e8cb6f4]{display:none}}@media screen and (max-width:500px){.h1[data-v-0e8cb6f4]{font-size:2rem;line-height:2.25rem;margin-bottom:1rem}.h2[data-v-0e8cb6f4]{font-size:1.5rem;line-height:2rem;margin-top:3rem;margin-bottom:.75rem}.p__alt[data-v-0e8cb6f4]{font-size:1rem;line-height:1.5rem}.features[data-v-0e8cb6f4]{margin-bottom:1.5rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.features__item[data-v-0e8cb6f4]{display:block}.features__item[data-v-0e8cb6f4]:not(:active){box-shadow:0 24px 40px rgba(0,0,0,.1),0 10px 16px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.05)}.features__item__image[data-v-0e8cb6f4]{max-height:9rem;padding-top:1rem}.features__item__text[data-v-0e8cb6f4]{padding:1.5rem}.sections[data-v-0e8cb6f4]{gap:0;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:2rem -1rem 0}.sections__item[data-v-0e8cb6f4]{margin-bottom:0;padding:1.25rem 1rem 0 5.5rem}.sections__item[data-v-0e8cb6f4],.sections__item[data-v-0e8cb6f4]:hover:not(:active){box-shadow:none}.sections__item__icon[data-v-0e8cb6f4]{top:1rem;left:1.25rem}.sections__item__wrapper[data-v-0e8cb6f4]{padding-bottom:1.25rem;border-bottom:1px solid rgba(140,145,177,.32)}.sections__item:last-child .sections__item__wrapper[data-v-0e8cb6f4]{border-bottom:none}.sections__wrapper[data-v-0e8cb6f4]{position:relative;padding:.1px 1rem 1rem;background:#fff;border-radius:.5rem}.sections__wrapper[data-v-0e8cb6f4]:before{position:absolute;content:"";top:0;left:0;right:0;bottom:0;border-radius:.5rem;box-shadow:0 24px 40px rgba(0,0,0,.1),0 10px 16px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.05)}.stack[data-v-0e8cb6f4]{gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:3rem}.stack__item[data-v-0e8cb6f4]{padding:1.25rem}.stack__item[data-v-0e8cb6f4]:not(:active){box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05)}.stack__item__wrapper[data-v-0e8cb6f4]{grid-template-columns:3rem 1fr}.stack__item__h1[data-v-0e8cb6f4]{font-size:inherit;line-height:inherit;margin-bottom:.5rem}}.search[data-v-c85ed208]{display:flex;align-items:center;color:rgba(22,25,49,.65);padding-top:1rem;width:calc(var(--aside-width) - 6rem);cursor:pointer;position:absolute;top:1rem;right:4rem;justify-content:flex-end;transition:color .15s ease-out}.search[data-v-c85ed208]:hover{color:var(--color-text,#000)}.search__container[data-v-c85ed208]{visibility:hidden;display:flex;justify-content:flex-end;margin-top:1rem;margin-bottom:1rem}.search__icon[data-v-c85ed208]{width:1.5rem;height:1.5rem;fill:#aaa;margin-right:.5rem;transition:fill .15s ease-out}.search:hover .search__icon[data-v-c85ed208]{fill:var(--color-text,#000)}.footer__links[data-v-c85ed208]{padding-top:5rem;padding-bottom:1rem;border-top:1px solid rgba(176,180,207,.2);margin-top:5rem}.links[data-v-c85ed208]{display:flex;justify-content:space-between;margin-top:4rem}.links a[data-v-c85ed208]{box-shadow:none;color:var(--color-link,#00f)}.container[data-v-c85ed208]{position:relative;width:100%;max-width:45rem}.content[data-v-c85ed208]{padding-right:var(--sidebar-width);width:100%;position:relative}.content.noAside[data-v-c85ed208]{padding-right:0}.content__container[data-v-c85ed208]{width:100%;padding-left:4rem;padding-right:2rem}.content__container.noAside[data-v-c85ed208]{max-width:none}[data-v-c85ed208] .codeblock{margin-top:2rem;margin-bottom:2rem;letter-spacing:0}[data-v-c85ed208] .custom-block.danger{margin-top:1.5rem;margin-bottom:1.5rem}[data-v-c85ed208] .custom-block.danger,[data-v-c85ed208] .custom-block.tip,[data-v-c85ed208] .custom-block.warning{padding:1rem 1.5rem 1rem 3.5rem;border-radius:.5rem;position:relative}[data-v-c85ed208] .custom-block.danger :first-child,[data-v-c85ed208] .custom-block.tip :first-child,[data-v-c85ed208] .custom-block.warning :first-child{margin-top:0}[data-v-c85ed208] .custom-block.danger :last-child,[data-v-c85ed208] .custom-block.tip :last-child,[data-v-c85ed208] .custom-block.warning :last-child{margin-bottom:0}[data-v-c85ed208] .custom-block.danger:before,[data-v-c85ed208] .custom-block.tip:before,[data-v-c85ed208] .custom-block.warning:before{content:"";height:24px;width:24px;position:absolute;display:block;top:1rem;left:1rem;background-repeat:no-repeat}[data-v-c85ed208] .custom-block.danger{background:#fff6f9}[data-v-c85ed208] .custom-block.danger:before{background-image:url(/main/assets/img/icon-danger.14c07ce1.svg)}[data-v-c85ed208] .custom-block.warning:before{background-image:url(/main/assets/img/icon-warning.165cee8d.svg)}[data-v-c85ed208] .custom-block.tip:before{background-image:url(/main/assets/img/icon-tip.d35d900a.svg)}[data-v-c85ed208] h2:hover a.header-anchor,[data-v-c85ed208] h3:hover a.header-anchor,[data-v-c85ed208] h4:hover a.header-anchor,[data-v-c85ed208] h5:hover a.header-anchor,[data-v-c85ed208] h6:hover a.header-anchor{opacity:1}[data-v-c85ed208] a.header-anchor{opacity:0;position:absolute;font-weight:400;left:-1.5em;width:1.5em;text-align:center;box-sizing:border-box;color:rgba(0,0,0,.4);outline-color:var(--color-link,#00f);transition:all .25s}[data-v-c85ed208] a.header-anchor:after{border-radius:.25rem;content:attr(data-header-anchor-text);max-width:4rem;color:#fff;top:-2.4em;padding:7px 12px;white-space:nowrap;font-size:.8125rem;line-height:1;letter-spacing:0;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);background:var(--color-text,#000)}[data-v-c85ed208] a.header-anchor:after,[data-v-c85ed208] a.header-anchor:before{transition:all .25s;position:absolute;left:50%;transform:translateX(-50%);opacity:0}[data-v-c85ed208] a.header-anchor:before{content:"";background-image:url('data:image/svg+xml;charset=utf-8,');width:8px;height:8px;top:-.7em;font-size:.5rem}[data-v-c85ed208] a.header-anchor:focus,[data-v-c85ed208] a.header-anchor:focus:after,[data-v-c85ed208] a.header-anchor:focus:before,[data-v-c85ed208] a.header-anchor:hover:after,[data-v-c85ed208] a.header-anchor:hover:before{opacity:1}[data-v-c85ed208] h1[id*=requisite],[data-v-c85ed208] h2[id*=requisite],[data-v-c85ed208] h3[id*=requisite],[data-v-c85ed208] h4[id*=requisite],[data-v-c85ed208] h5[id*=requisite],[data-v-c85ed208] h6[id*=requisite]{display:none;align-items:baseline;cursor:pointer}[data-v-c85ed208] h1[id*=requisite]:before,[data-v-c85ed208] h2[id*=requisite]:before,[data-v-c85ed208] h3[id*=requisite]:before,[data-v-c85ed208] h4[id*=requisite]:before,[data-v-c85ed208] h5[id*=requisite]:before,[data-v-c85ed208] h6[id*=requisite]:before{content:"";width:1.5rem;height:1.5rem;display:block;flex:none;margin-right:.5rem;background:url(/main/assets/img/icon-chevron.621f8508.svg);transition:transform .2s ease-out}[data-v-c85ed208] h1[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h2[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h3[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h4[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h5[id*=requisite].prereqTitleShow:before,[data-v-c85ed208] h6[id*=requisite].prereqTitleShow:before{transform:rotate(90deg)}[data-v-c85ed208] h1[id*=requisite]+ul,[data-v-c85ed208] h2[id*=requisite]+ul,[data-v-c85ed208] h3[id*=requisite]+ul,[data-v-c85ed208] h4[id*=requisite]+ul,[data-v-c85ed208] h5[id*=requisite]+ul,[data-v-c85ed208] h6[id*=requisite]+ul{display:none}[data-v-c85ed208] li[prereq]{display:none;max-width:28rem;margin-left:2rem}[data-v-c85ed208] li[prereq].prereqLinkShow{display:block}[data-v-c85ed208] li[prereq] a[href]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);padding:1rem;border-radius:.5rem;color:var(--color-text,#000);font-size:1rem;font-weight:600;line-height:1.25rem;margin:1rem 0;display:block;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}[data-v-c85ed208] li[prereq] a[href]:hover:not(:active){color:inherit;text-decoration:none;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition-duration:.1s}[data-v-c85ed208] li[prereq] a[href]:active{opacity:.7;transition-duration:0s}[data-v-c85ed208] [synopsis]{padding:1.5rem 2rem;background-color:rgba(176,180,207,.09);border-radius:.5rem;margin-top:3rem;margin-bottom:3rem;color:rgba(22,25,49,.9);font-size:1rem;line-height:1.625rem}[data-v-c85ed208] [synopsis]:before{content:"Synopsis";display:block;color:rgba(22,25,49,.65);text-transform:uppercase;font-size:.75rem;margin-bottom:.5rem;letter-spacing:.2em}[data-v-c85ed208] a[target=_blank]:after{content:"↗";position:absolute;bottom:.166em;padding-left:.1875em;font-size:.75em;line-height:1;word-break:none;transition:transform .2s ease-out}[data-v-c85ed208] a[target=_blank]:focus:after,[data-v-c85ed208] a[target=_blank]:hover:after{transform:translate(2px,-2px)}[data-v-c85ed208] .icon.outbound{display:none}[data-v-c85ed208] table{display:block;width:100%;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;overflow:auto;line-height:1.5rem;margin-top:2rem;margin-bottom:2rem;box-shadow:0 0 0 1px rgba(140,145,177,.32);border-radius:.5rem;border-collapse:collapse;font-size:1rem}[data-v-c85ed208] th{text-align:left;font-weight:700;font-size:.875rem}[data-v-c85ed208] td,[data-v-c85ed208] th{padding:.75rem}[data-v-c85ed208] tr{box-shadow:0 1px 0 0 rgba(140,145,177,.32)}[data-v-c85ed208] tr:only-child{box-shadow:none}[data-v-c85ed208] thead tr:only-child{box-shadow:0 1px 0 0 rgba(140,145,177,.32)}[data-v-c85ed208] tr+tr:last-child{box-shadow:none}[data-v-c85ed208] tr:last-child td{border-bottom:none}[data-v-c85ed208] .code-block__container{margin-top:2rem;margin-bottom:2rem}[data-v-c85ed208] .content__default{width:100%}[data-v-c85ed208] h1,[data-v-c85ed208] h2,[data-v-c85ed208] h3,[data-v-c85ed208] h4{font-weight:700}[data-v-c85ed208] h1 code,[data-v-c85ed208] h2 code,[data-v-c85ed208] h3 code{font-weight:400}[data-v-c85ed208] .content__container img{max-width:100%}[data-v-c85ed208] .term{text-decoration:underline}[data-v-c85ed208] img{width:100%;height:auto;display:block;margin-bottom:2rem;margin-top:2rem}[data-v-c85ed208] .tooltip__wrapper{background:#fff;padding:1rem}[data-v-c85ed208] .tooltip h1{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;font-weight:600;margin-top:0;margin-bottom:0}[data-v-c85ed208] .tooltip p{font-size:.8125rem;line-height:1.125rem;margin-top:.375rem;margin-bottom:0}[data-v-c85ed208] hr{border:1px solid rgba(0,0,0,.1);margin-top:2.5rem;margin-bottom:2.5rem}[data-v-c85ed208] strong{font-weight:600;letter-spacing:.01em}[data-v-c85ed208] em{font-style:italic}[data-v-c85ed208] h1{font-size:3rem;margin-top:4rem;margin-bottom:4rem;line-height:3.5rem;letter-spacing:-.02em}[data-v-c85ed208] h1:first-child{margin-top:0}[data-v-c85ed208] h2{font-size:2rem;margin-top:3.75rem;margin-bottom:1.25rem;line-height:2.5rem;letter-spacing:-.01em}[data-v-c85ed208] h3{font-size:1.5rem;margin-top:2.5rem;margin-bottom:1rem;letter-spacing:0;line-height:2rem}[data-v-c85ed208] h4{font-size:1.25rem;margin-top:2.25rem;margin-bottom:.875rem;line-height:1.75rem;letter-spacing:.01em}[data-v-c85ed208] ol,[data-v-c85ed208] p,[data-v-c85ed208] ul{font-size:1.125rem;line-height:1.8125rem}[data-v-c85ed208] p{margin-top:1em;margin-bottom:1em}[data-v-c85ed208] ol,[data-v-c85ed208] ul{margin-top:1em;margin-bottom:1.5em;margin-left:0;padding-left:0}[data-v-c85ed208] li{padding-left:0;margin-left:2rem;margin-bottom:1rem;position:relative}[data-v-c85ed208] blockquote{padding-left:2rem;padding-right:2rem;border-left:.25rem solid rgba(0,0,0,.1);color:var(--color-text-dim,inherit);margin-top:1.75rem;margin-bottom:1.75rem}[data-v-c85ed208] code{background-color:rgba(176,180,207,.175);border:1px solid rgba(176,180,207,.09);border-radius:.25em;padding-left:.25em;padding-right:.25em;font-size:.8333em;line-height:1.06666em;letter-spacing:0;color:var(--color-code,inherit);margin-top:3rem;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word}[data-v-c85ed208] h1 code,[data-v-c85ed208] h2 code,[data-v-c85ed208] h3 code,[data-v-c85ed208] h4 code,[data-v-c85ed208] h5 code,[data-v-c85ed208] h6 code{font-size:inherit}[data-v-c85ed208] h1 a,[data-v-c85ed208] h2 a,[data-v-c85ed208] h3 a,[data-v-c85ed208] h4 a,[data-v-c85ed208] h5 a,[data-v-c85ed208] h6 a{color:var(--color-link,#00f);outline:none;position:relative}[data-v-c85ed208] h1 a[target=_blank]:after,[data-v-c85ed208] h2 a[target=_blank]:after,[data-v-c85ed208] h3 a[target=_blank]:after,[data-v-c85ed208] h4 a[target=_blank]:after,[data-v-c85ed208] h5 a[target=_blank]:after,[data-v-c85ed208] h6 a[target=_blank]:after{position:relative}[data-v-c85ed208] ol a,[data-v-c85ed208] p a,[data-v-c85ed208] ul a{color:var(--color-link,#00f);outline-color:var(--color-link,#00f);border-radius:.25rem;position:relative;transition:opacity .3s ease-out;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word}[data-v-c85ed208] ol a[target=_blank],[data-v-c85ed208] p a[target=_blank],[data-v-c85ed208] ul a[target=_blank]{margin-right:.888em}[data-v-c85ed208] ol a:hover,[data-v-c85ed208] p a:hover,[data-v-c85ed208] ul a:hover{text-decoration:underline}[data-v-c85ed208] ol a:active,[data-v-c85ed208] p a:active,[data-v-c85ed208] ul a:active{opacity:.65;transition-duration:0s}[data-v-c85ed208] ol a code,[data-v-c85ed208] p a code,[data-v-c85ed208] ul a code{color:inherit;transition:background-color .15s ease-out}[data-v-c85ed208] ol a:focus code,[data-v-c85ed208] ol a:hover code,[data-v-c85ed208] p a:focus code,[data-v-c85ed208] p a:hover code,[data-v-c85ed208] ul a:focus code,[data-v-c85ed208] ul a:hover code{background-color:rgba(59,66,125,.12)}[data-v-c85ed208] td a{color:var(--color-link,#00f);position:relative;transition:opacity .3s ease-out;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:inherit}[data-v-c85ed208] td a[target=_blank]:after{display:none}@media screen and (max-width:1136px){[data-v-c85ed208] h2,[data-v-c85ed208] h3,[data-v-c85ed208] h4,[data-v-c85ed208] h5,[data-v-c85ed208] h6{padding-right:1.75rem}[data-v-c85ed208] a.header-anchor{left:auto;right:0;text-align:right;opacity:1}[data-v-c85ed208] a.header-anchor:after{transform:none;left:auto;right:-5px}[data-v-c85ed208] h1 a.header-anchor{display:none}}@media screen and (max-width:1024px){.content[data-v-c85ed208]{padding-right:0}.content__container[data-v-c85ed208]{padding-left:2rem}}@media screen and (max-width:1136px) and (min-width:833px){.search__container[data-v-c85ed208]{visibility:visible}}@media screen and (max-width:1136px){[data-v-c85ed208] h1[id*=requisite],[data-v-c85ed208] h2[id*=requisite],[data-v-c85ed208] h3[id*=requisite],[data-v-c85ed208] h4[id*=requisite],[data-v-c85ed208] h5[id*=requisite],[data-v-c85ed208] h6[id*=requisite]{display:flex}[data-v-c85ed208] h1[id*=requisite]+ul,[data-v-c85ed208] h2[id*=requisite]+ul,[data-v-c85ed208] h3[id*=requisite]+ul,[data-v-c85ed208] h4[id*=requisite]+ul,[data-v-c85ed208] h5[id*=requisite]+ul,[data-v-c85ed208] h6[id*=requisite]+ul{display:block}}@media screen and (max-width:480px){[data-v-c85ed208] h1{font-size:2.5rem;margin-bottom:3rem;line-height:3rem}[data-v-c85ed208] h2{font-size:1.75rem;margin-top:3.5rem;margin-bottom:1rem;line-height:2.25rem}[data-v-c85ed208] h3{font-size:1.25rem;margin-top:2.25rem;margin-bottom:.875rem;line-height:1.75rem}[data-v-c85ed208] h4{font-size:1.125rem;margin-top:2rem;margin-bottom:.75rem;line-height:1.5rem}[data-v-c85ed208] ol,[data-v-c85ed208] p,[data-v-c85ed208] ul{font-size:1rem;line-height:1.625rem}[data-v-c85ed208] [synopsis]{padding:1rem;font-size:.875rem;line-height:1.25rem}}.shortcuts[data-v-510c93ce]{display:flex;justify-content:center;flex-direction:column}.shortcuts__h1[data-v-510c93ce]{text-align:center;color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;margin-top:4rem;margin-bottom:2rem}.shortcuts__table__row[data-v-510c93ce]{display:grid;grid-template-columns:3fr 7fr;gap:1.5rem;align-items:center;margin-top:.5rem;margin-bottom:.5rem}.shortcuts__table__row__keys[data-v-510c93ce]{display:flex;justify-content:flex-end}.shortcuts__table__row__keys__item[data-v-510c93ce]{color:#46509f;background-color:rgba(176,180,207,.2);border:1px solid rgba(176,180,207,.09);border-radius:.25rem;font-size:.8125rem;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;margin:2px}.shortcuts__table__row__desc[data-v-510c93ce]{color:rgba(22,25,49,.65)}strong[data-v-510c93ce]{font-weight:600}.container[data-v-510c93ce]{height:100vh;overflow-y:scroll;-webkit-overflow-scrolling:touch;flex-direction:column;background-color:#f8f9fc}.search-box[data-v-510c93ce]{width:100%;display:grid;grid-auto-flow:column;align-items:center;box-shadow:inset 0 -1px 0 0 rgba(176,180,207,.2);padding-left:1.5rem;padding-right:1.5rem;grid-template-columns:2rem 1fr 1.25rem;gap:.5rem}.search-box__icon[data-v-510c93ce]{margin-left:.5rem}.search-box__input__input[data-v-510c93ce]{border:none;background:none;outline:none;font-size:1.25rem;width:100%;padding:1.5rem .5rem}.search-box__input__input[data-v-510c93ce]::-webkit-input-placeholder{color:rgba(0,0,0,.46)}.search-box__input__input[data-v-510c93ce]:hover::-webkit-input-placeholder{color:rgba(0,0,0,.67)}.search-box__input__input[data-v-510c93ce]:focus::-webkit-input-placeholder{color:rgba(0,0,0,.46)}.search-box__clear__icon[data-v-510c93ce]{cursor:pointer;fill:rgba(0,0,0,.15);margin-top:.25rem}.search-box__clear__icon[data-v-510c93ce]:focus,.search-box__clear__icon[data-v-510c93ce]:hover{fill:rgba(0,0,0,.25);outline:none}.search-box__clear__icon[data-v-510c93ce]:active{opacity:.7}.search-box__button[data-v-510c93ce]{text-transform:uppercase;color:var(--color-link);font-weight:600;cursor:pointer;height:100%;display:flex;padding-left:.5rem;padding-right:.5rem;align-items:center;outline:0;transition:opacity .2s ease-out}.search-box__button[data-v-510c93ce]:focus{background-color:rgba(176,180,207,.087)}.search-box__button[data-v-510c93ce]:active{opacity:.7;transition-duration:0s}.results[data-v-510c93ce]{padding-bottom:3rem;display:flex;flex-direction:column;flex-grow:1}.results__noresults__container[data-v-510c93ce]{height:100%;flex-grow:1;margin-top:4rem}.results__noresults[data-v-510c93ce],.results__noresults__container[data-v-510c93ce]{display:flex;flex-direction:column;align-items:center;justify-content:center}.results__noresults__icon[data-v-510c93ce]{max-width:80px;margin-bottom:2rem;fill:#ccc}.results__noresults__h1[data-v-510c93ce]{color:rgba(22,25,49,.65);font-size:1.5rem;margin-bottom:1rem}.results__noresults__p[data-v-510c93ce]{color:rgba(22,25,49,.65)}.results__noresults__a[data-v-510c93ce]{cursor:pointer;color:var(--color-link)}.results__item[data-v-510c93ce]{padding:.75rem 2rem;cursor:pointer}.results__item[data-v-510c93ce]:focus,.results__item[data-v-510c93ce]:hover{outline:none;background-color:rgba(176,180,207,.087)}.results__item__title[data-v-510c93ce]{color:var(--color-link);line-height:1.5rem}.results__item__h2[data-v-510c93ce]{margin-top:.25rem;margin-bottom:.25rem;font-weight:600;font-size:.875rem;line-height:1.25rem}.results__item__h2__item[data-v-510c93ce]{display:inline-block}.results__item__h2__item[data-v-510c93ce]:after{content:">";margin-left:.25rem;margin-right:.25rem}.results__item__h2__item[data-v-510c93ce]:last-child:after{content:""}.results__item__desc[data-v-510c93ce]{opacity:.5;white-space:nowrap;overflow:hidden;position:relative;font-size:.875rem;line-height:1.25rem}.results__item__desc[data-v-510c93ce]:after{content:"";background:linear-gradient(90deg,transparent 0,#f8f9fc);height:1em;width:2.5em;padding-bottom:.25rem;text-align:right;position:absolute;top:0;right:0}@media screen and (max-width:768px){.search-box[data-v-510c93ce]{padding-left:1rem;padding-right:1rem}.shortcuts[data-v-510c93ce]{display:none}}.container[data-v-4ac7d60e]{padding:1rem 1rem 1rem 2rem}.search__container[data-v-4ac7d60e]{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:3.5rem}.banners[data-v-4ac7d60e]{margin-bottom:3rem}.banners__item[data-v-4ac7d60e]{margin-bottom:.5rem}.banners__item a[data-v-4ac7d60e]{display:block;transition:transform .15s ease-out,opacity .15s ease-out,box-shadow .15s ease-out;outline-color:var(--color-primary,#00f)}.banners__item a[data-v-4ac7d60e]:focus:not(:active),.banners__item a[data-v-4ac7d60e]:hover:not(:active){transform:translateY(-2px);opacity:.85;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05)}.banners__item a[data-v-4ac7d60e]:active{transition:none}.search[data-v-4ac7d60e]{cursor:pointer;display:flex;justify-content:flex-end;align-items:center}.search__icon[data-v-4ac7d60e]{height:1.5rem;width:1.5rem;margin-right:.5rem;fill:#aaa;transition:fill .15s ease-out}.search__text[data-v-4ac7d60e]{color:rgba(22,25,49,.65);transition:color .15s ease-out}.search:hover .search__icon[data-v-4ac7d60e]{fill:var(--color-text,#000)}.search:hover .search__text[data-v-4ac7d60e]{color:var(--color-text,#000)}.selected[data-v-4ac7d60e]{font-weight:700}.aside__image[data-v-4ac7d60e]{width:100%;border-radius:.25rem;display:block}.aside__title[data-v-4ac7d60e]{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--color-text-dim,inherit);margin-top:3rem;margin-bottom:.75rem}.aside__link[data-v-4ac7d60e]{color:var(--color-text-dim,inherit);padding-top:.375rem;padding-bottom:.375rem;font-size:.875rem;line-height:1.125rem;word-break:break-word}.aside__link__href[data-v-4ac7d60e]:hover{color:var(--color-text,#000)}.aside__link__active__true[data-v-4ac7d60e]{color:var(--color-text,#000);font-weight:700}.prereq__item[data-v-4ac7d60e]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);padding:1rem;border-radius:.5rem;color:var(--color-text,#000);font-size:.875rem;font-weight:600;line-height:1.25rem;margin:1rem 0;display:block;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.prereq__item[data-v-4ac7d60e]:hover:not(:active){color:inherit;text-decoration:none;box-shadow:0 10px 20px rgba(0,0,0,.05),0 2px 6px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);transform:translateY(-2px);transition-duration:.1s}.prereq__item[data-v-4ac7d60e]:active{opacity:.7;transition-duration:0s}.fade-enter-active[data-v-48fb2d7a],.fade-leave-active[data-v-48fb2d7a]{transition:all .25s;transform-origin:top right}.fade-enter[data-v-48fb2d7a]{transform:scale(.75);opacity:0}.fade-enter-to[data-v-48fb2d7a],.fade-leave[data-v-48fb2d7a]{transform:scale(1);opacity:1}.fade-leave-to[data-v-48fb2d7a]{transform:scale(1);opacity:0}.container[data-v-48fb2d7a]{display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;padding-left:.75rem}.crumbs__item[data-v-48fb2d7a]{display:inline-block;font-size:.8125rem;outline-color:var(--color-primary,#00f)}.crumbs__item[data-v-48fb2d7a]:hover:not(:last-child){color:var(--color-link,#00f)}.crumbs__item[data-v-48fb2d7a]:hover:not(:last-child):after{color:var(--color-text,#000)}.crumbs__item[data-v-48fb2d7a]:after{content:"/";padding-left:.25rem;padding-right:.25rem}.crumbs__item[data-v-48fb2d7a]:last-child{opacity:.667;cursor:default}.crumbs__item[data-v-48fb2d7a]:last-child:after{content:""}.menu[data-v-48fb2d7a]{height:3rem}.menu__item[data-v-48fb2d7a]{position:relative;display:none}.menu__item__icon[data-v-48fb2d7a]{cursor:pointer;width:1.5rem;height:1.5rem;padding:.75rem;border-radius:.25rem;fill:rgba(51,54,74,.4)}.menu__item__icon[data-v-48fb2d7a]:active{fill:#5064fb;background:rgba(102,161,255,.15)}.menu__item__modal[data-v-48fb2d7a]{position:absolute;width:16rem;z-index:1000;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);right:0;border-radius:.25rem;background-color:#fff}.menu__item__modal__title[data-v-48fb2d7a]{color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;padding:1.5rem 1.5rem 1rem}.menu__item__modal__item[data-v-48fb2d7a]{padding:.625rem 1.5rem;font-size:.875rem;outline:none;cursor:pointer}.menu__item__modal__item[data-v-48fb2d7a]:active{color:var(--color-link);font-weight:600;box-shadow:inset 2px 0 0 0 var(--color-link)}@media screen and (max-width:1135px){.menu__item[data-v-48fb2d7a]{display:block}}@media screen and (max-width:732px){.menu__item__modal[data-v-48fb2d7a]{visibility:hidden}}a[data-v-1eda75b2]{text-decoration:none}.body__code[data-v-1eda75b2]{white-space:pre}span[data-v-1eda75b2]{display:block}.fade-enter-active[data-v-1eda75b2],.fade-leave-active[data-v-1eda75b2]{transition:opacity .2s}.fade-enter[data-v-1eda75b2],.fade-leave-to[data-v-1eda75b2]{opacity:0}.fade-enter-to[data-v-1eda75b2],.fade-leave[data-v-1eda75b2]{opacity:1}.container[data-v-1eda75b2]{border-radius:.5rem;background:#2e3148}.body__container[data-v-1eda75b2]{position:relative}.body__container:hover .icons[data-v-1eda75b2]{opacity:1}.body[data-v-1eda75b2]{color:hsla(0,0%,100%,.8);overflow-x:scroll;padding:1.375rem 1rem 1rem;overflow-y:hidden;position:relative;line-height:1.75;scrollbar-color:hsla(0,0%,100%,.2) hsla(0,0%,100%,.1);scrollbar-width:thin;font-size:.8125rem;line-height:1.25rem}.body[data-v-1eda75b2]::-webkit-scrollbar{background:hsla(0,0%,100%,.1);height:6px}.body[data-v-1eda75b2]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:6px}.codeblock__is-expandable__true .body[data-v-1eda75b2]{max-height:700px}.codeblock__is-expandable__true.codeblock__expanded__true .body[data-v-1eda75b2]{max-height:var(--max-height)}.body__wrapper[data-v-1eda75b2]{font-family:JetBrains Mono,Menlo,Monaco,monospace;-webkit-font-feature-settings:"liga" on,"calt" on;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:.8125rem;display:inline-block;line-height:1.25rem}.body.body__hasfooter__true[data-v-1eda75b2]{border-bottom-left-radius:0;border-bottom-right-radius:0}.expand[data-v-1eda75b2]{position:absolute;bottom:0;display:grid;grid-template-columns:1fr 1fr 1fr;width:100%;color:#161931;padding:1.5rem;font-family:var(--ds-font-family,inherit);box-sizing:border-box}.codeblock__expanded__false .expand[data-v-1eda75b2]{background:linear-gradient(180deg,rgba(22,25,49,0),#161931)}.codeblock__hasfooter__false.codeblock__expanded__false .expand[data-v-1eda75b2]{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.expand__item[data-v-1eda75b2]{text-transform:uppercase;background-color:#dadce6;display:grid;justify-self:center;grid-auto-flow:column;gap:.5rem;align-items:center;font-weight:500;padding:.5rem 1rem;line-height:1;letter-spacing:.02em;font-size:.8125rem;height:2rem;cursor:pointer;border-radius:1000px;box-shadow:0 16px 32px rgba(22,25,49,.08),0 8px 12px rgba(22,25,49,.06),0 1px 0 rgba(22,25,49,.05);box-sizing:border-box}.expand__item__expand[data-v-1eda75b2]{grid-area:1/2/1/3;justify-self:center}.expand__item__collapse[data-v-1eda75b2]{grid-area:1/3/1/4;justify-self:flex-end;height:2rem;max-width:3rem;padding-top:.3rem;padding-bottom:.3rem}.expand__item__icon[data-v-1eda75b2]{height:1em;width:auto}.icons[data-v-1eda75b2]{transition:all .1s;position:absolute;top:0;right:0;padding:.5rem;opacity:0;display:flex;z-index:100}.icons__item[data-v-1eda75b2]{margin-left:.5rem;cursor:pointer;border-radius:.25rem;position:relative;background:rgba(46,49,72,.7)}.icons__item:active .icons__item__icon[data-v-1eda75b2]{fill:#66a1ff}.icons__item:hover .icons__item__tooltip[data-v-1eda75b2]{opacity:1}.icons__item:hover .icons__item__tooltip[data-v-1eda75b2]:hover{opacity:0}.icons__item__tooltip[data-v-1eda75b2]{font-family:var(--ds-font-family,inherit);color:#fff;position:absolute;top:-2.05rem;left:50%;transform:translateX(-50%);background:#161931;font-size:.8125rem;opacity:0;border-radius:.25rem;padding:.5rem .75rem;transition:all .25s .5s}.icons__item__tooltip[data-v-1eda75b2]:before{content:"";width:8px;height:8px;display:block;background-color:#161931;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,');mask-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;top:100%;transform:translateX(-50%) translateY(-13%) scaleX(2);position:absolute;font-size:1rem;left:50%}.icons__item__icon[data-v-1eda75b2]{fill:#fff;padding:.75rem;display:block}.icons__item[data-v-1eda75b2]:hover{fill:#66a1ff;background:#43465a}.footer[data-v-1eda75b2]{background-color:#161931;color:#fff;display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;font-size:.8125rem;line-height:1;font-family:var(--ds-font-family,inherit)}.footer__source[data-v-1eda75b2]{color:#66a1ff;font-weight:500;stroke:#66a1ff;align-items:center;display:flex;box-shadow:none;outline:none}.footer__source[data-v-1eda75b2]:after{display:none}.footer__source[data-v-1eda75b2]:visited,.footer__source[data-v-1eda75b2]:visited:hover{color:#66a1ff}.footer__source[data-v-1eda75b2]:hover{box-shadow:none;color:#66a1ff}.footer__source[data-v-1eda75b2]:active{color:#66a1ff}.footer__source__icon[data-v-1eda75b2]{margin-left:.5rem}[data-v-1eda75b2] .token.keyword{color:#c678dd}[data-v-1eda75b2] .token.comment{opacity:.5}[data-v-1eda75b2] .token.function{color:#61afef}[data-v-1eda75b2] .token.builtin{color:#e06c75}[data-v-1eda75b2] .token.string{color:#98c379}[data-v-1eda75b2] .token.operator{color:#56b6c2}[data-v-1eda75b2] .token.boolean{color:#d19a66}.container[data-v-279d626a]{margin-top:3rem}.title[data-v-279d626a]{font-size:1.5rem;line-height:2rem;font-weight:700;margin-bottom:2rem}.card[data-v-279d626a]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);border-radius:.5rem;padding:1.5rem 2rem;position:relative;display:block;color:inherit;max-width:40em;outline-color:var(--color-primary,#00f);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out;margin-bottom:1.5rem}.card+[data-v-279d626a],.card[data-v-279d626a]{margin-top:2rem}.card+.card[data-v-279d626a]{margin-top:1rem}.card[data-v-279d626a]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.card[data-v-279d626a]:active{opacity:.7;transition-duration:0s}.card__title[data-v-279d626a]{color:var(--color-text,#000);font-size:1.25rem;line-height:1.5rem;font-weight:700;margin-right:1.5rem}.card__description[data-v-279d626a]{margin-top:.75rem;font-size:.875rem;line-height:1.25rem;color:var(--color-text-dim,#000)}.card__icon[data-v-279d626a]{top:1.5rem;right:1.5rem;position:absolute;stroke:rgba(0,0,0,.2)}.card:hover .card__icon[data-v-279d626a]{stroke:rgba(0,0,0,.4)}@media screen and (max-width:768px){.card[data-v-279d626a]{padding:1.25rem 1.5rem}.card__icon[data-v-279d626a]{top:1.25rem}}.container[data-v-732a47ec]{background-color:#fff;color:var(--color-text,#000);padding-top:3.5rem;padding-bottom:3.5rem}.wrapper[data-v-732a47ec]{--height:50px;background:#fff}.questions[data-v-732a47ec]{display:grid;grid-template-columns:1fr 1fr;margin-bottom:3rem;-moz-column-gap:10%;column-gap:10%;margin-right:10%;align-items:flex-start}.questions[data-v-732a47ec] a[href]{color:var(--color-link,#ccc)}.questions__wrapper[data-v-732a47ec]{margin-bottom:2rem}.questions__h1[data-v-732a47ec]{font-size:1.5rem;line-height:2rem;margin-bottom:.5rem;font-weight:600;color:var(--color-text,#000)}.questions__p[data-v-732a47ec]{font-size:.875rem;color:rgba(22,25,49,.9);line-height:1.25rem}.links[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.links__item[data-v-732a47ec]{display:flex;flex-direction:column;margin:1.5rem 0}.links__item__title[data-v-732a47ec]{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;margin-bottom:1rem}.links__item__link[data-v-732a47ec]{font-size:.875rem;line-height:1.25rem;margin-top:.5rem;margin-bottom:.5rem;align-self:flex-start;color:var(--color-text-dim,inherit)}.links__item__link[data-v-732a47ec]:focus,.links__item__link[data-v-732a47ec]:hover{color:var(--color-link,inherit)}.footer__wrapper[data-v-732a47ec]{margin:0 auto}.logo[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.logo__item[data-v-732a47ec]{padding:1.5rem 0;display:flex;align-items:flex-start;justify-content:flex-start}.logo__image[data-v-732a47ec]{display:inline-block;min-height:2rem;max-height:3rem;max-width:12.5rem;cursor:pointer}.logo__image img[data-v-732a47ec]{max-height:100%;max-width:100%}.logo__link[data-v-732a47ec]{grid-column:span 2;font-weight:600;align-items:center}.smallprint[data-v-732a47ec]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:flex-end}.smallprint[data-v-732a47ec] a[href]{color:var(--color-link,#ccc)}.smallprint__item[data-v-732a47ec]{padding:1rem 0;font-weight:600}.smallprint__item__links[data-v-732a47ec]{color:var(--color-link);font-size:.875rem}.smallprint__item__links__item[data-v-732a47ec]{margin-right:1rem}.smallprint__item__links__item svg[data-v-732a47ec]{transition:fill .15s ease-out;fill:rgba(0,0,0,.3)}.smallprint__item__links__item:focus svg[data-v-732a47ec],.smallprint__item__links__item:hover svg[data-v-732a47ec]{fill:rgba(0,0,0,.5)}.smallprint__item__desc[data-v-732a47ec]{grid-column:span 2;font-size:.8125rem;line-height:1rem;font-weight:400;color:var(--color-text-dim)}@media screen and (max-width:732px){.questions[data-v-732a47ec]{display:block;margin-right:0}}@media screen and (max-width:480px){.footer__links[data-v-732a47ec]{margin-left:1.5rem;margin-right:1.5rem}}.links[data-v-15325c0d]{display:flex}.links__wrapper[data-v-15325c0d]{display:flex;width:100%;margin-bottom:2rem}.links__wrapper[data-v-15325c0d]:first-child{margin-right:2rem}.links__container[data-v-15325c0d]{width:100%;align-items:stretch;display:flex;flex-direction:column}.links__item[data-v-15325c0d]{margin-top:1rem;padding:2rem;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);border-radius:.5rem;display:grid;grid-auto-flow:column;flex-grow:1;align-items:center;gap:2rem;overflow-x:hidden;transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out}.links__item[data-v-15325c0d]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.links__item[data-v-15325c0d]:active{opacity:.7;transition-duration:0s}.links__item__left[data-v-15325c0d]{grid-template-columns:2.75rem auto}.links__item__right[data-v-15325c0d]{grid-template-columns:auto 2.75rem}.links__item__icon[data-v-15325c0d]{display:flex;align-items:center}.links__item__icon svg[data-v-15325c0d]{stroke:#aaa;transition:fill .15s ease-out,transform .15s ease-out}.links__item:focus .links__item__icon svg[data-v-15325c0d],.links__item:hover .links__item__icon svg[data-v-15325c0d]{stroke:var(--color-link,#888)}.links__item__left:hover .links__item__icon svg[data-v-15325c0d]{transform:translateX(-.25rem)}.links__item__right:hover .links__item__icon svg[data-v-15325c0d]{transform:translateX(.25rem)}.links__item__title[data-v-15325c0d]{margin-top:5px;font-weight:600;font-size:1.25rem;line-height:1.75rem}.links__item__desc[data-v-15325c0d]{color:var(--color-text-dim,inherit);margin-top:.5rem;font-size:.875rem;line-height:1.25rem}.links__label[data-v-15325c0d]{color:var(--color-text-dim,inherit);text-transform:uppercase;font-size:.75rem;line-height:1rem;letter-spacing:.2rem;margin-bottom:.5rem}@media screen and (max-width:1280px){.links[data-v-15325c0d]{flex-direction:column-reverse}}@media screen and (max-width:480px){.links__item[data-v-15325c0d]{display:flex;flex-direction:column;align-items:stretch}.links__item__icon[data-v-15325c0d]{order:-1;width:2.5rem;height:2.5rem;align-self:flex-end}}.newsletter[data-v-ee1dad7a]{box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);margin-top:4rem;margin-bottom:1rem;overflow:hidden;min-height:200px;border-radius:.5rem;position:relative;display:flex;align-items:center;justify-content:flex-end}.newsletter:hover .newsletter__image__item[data-v-ee1dad7a]{opacity:.25;transform:scale(.98)}.newsletter:hover .newsletter__image__item.letter__10[data-v-ee1dad7a]{transform:scale(1.5) rotate(25deg);opacity:1}.newsletter__image[data-v-ee1dad7a]{transform:translate(-125px,-35px) rotate(-25deg);display:grid;width:300px;gap:1rem;grid-template-columns:repeat(4,1fr);position:absolute;left:0;top:0}.newsletter__image__item[data-v-ee1dad7a]{opacity:.5;transition:all .5s}.newsletter__image__item.letter__10[data-v-ee1dad7a]{opacity:1;background:#fff}.newsletter__form[data-v-ee1dad7a]{margin-left:250px;padding:30px;width:100%}[data-v-ee1dad7a] a[href]{color:var(--color-link)}[data-v-ee1dad7a] strong{font-weight:700}strong[data-v-ee1dad7a]{font-weight:600}.container[data-v-ee1dad7a]{background:var(--sidebar-bg)}.wrapper[data-v-ee1dad7a]{max-width:calc(1400px - var(--sidebar-width))}.title[data-v-ee1dad7a]{font-size:2rem;color:var(--color-text,#000);padding:1.5rem 0;font-weight:700}.links[data-v-ee1dad7a]{display:grid;margin-top:1rem;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.links__item[data-v-ee1dad7a]{display:flex;flex-direction:column;align-items:center;box-shadow:0 2px 4px rgba(22,25,49,.05),0 0 1px rgba(22,25,49,.2),0 .5px 0 rgba(22,25,49,.05);text-align:center;border-radius:.5rem;padding:2rem;line-height:1.25rem;background:var(--bg);transition:box-shadow .25s ease-out,transform .25s ease-out,opacity .4s ease-out;position:relative}.links__item__icon[data-v-ee1dad7a]{position:absolute;top:0;right:0;padding:1rem;width:1rem;height:1rem;opacity:.26;transition:opacity .15s}.links__item:hover .links__item__icon[data-v-ee1dad7a]{opacity:.36}.links__item__text[data-v-ee1dad7a]{font-size:.875rem;line-height:1.25rem}.links__item[data-v-ee1dad7a]:focus:not(:active),.links__item[data-v-ee1dad7a]:hover:not(:active){box-shadow:0 12px 24px rgba(22,25,49,.07),0 4px 8px rgba(22,25,49,.05),0 1px 0 rgba(22,25,49,.05);transform:translateY(-2px);transition-duration:.1s}.links__item[data-v-ee1dad7a]:active{opacity:.7;transition-duration:0s}.links__item__title[data-v-ee1dad7a]{margin-top:1.5rem;margin-bottom:.75rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}a.links__item[data-v-ee1dad7a]{color:#fff}a.links__item__regular[data-v-ee1dad7a]{color:var(--color-text,#000);background:rgba(176,180,207,.09)}@media screen and (max-width:832px){.newsletter[data-v-ee1dad7a]{height:auto}.newsletter__form[data-v-ee1dad7a]{margin-top:250px;margin-left:0;grid-template-columns:1fr}}.fill[data-v-09fc938e]{stroke:var(--color-link)}.newsletter__form__component__internal[data-v-fd618d74]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));width:100%;align-items:flex-end;background-color:#fff}.newsletter__desc[data-v-fd618d74]{padding-right:1.5rem}.newsletter__desc__h1[data-v-fd618d74]{color:var(--color-text,#000);font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:.5rem}.newsletter__desc__p[data-v-fd618d74]{font-size:.875rem;line-height:1.25rem;color:rgba(22,25,49,.9)}.newsletter__input[data-v-fd618d74]{padding-top:1rem}.newsletter__input__input[data-v-fd618d74]{border:1px solid rgba(140,145,177,.32);display:grid;grid-template-columns:1fr auto;align-items:center;padding:.5rem;border-radius:.25rem}.newsletter__input__input[data-v-fd618d74]:focus-within{border-color:var(--color-primary,#00f)}.newsletter__input__input__button[data-v-fd618d74]{padding:.5rem;text-transform:uppercase;color:var(--color-link);font-weight:600;cursor:pointer;background:none;border:none}.newsletter__input__input__el[data-v-fd618d74]{border:none;width:100%;outline:none;padding:.5rem;background:none}.newsletter__input__p[data-v-fd618d74]{margin-top:.5rem;color:rgba(22,25,49,.65);font-size:.8125rem}@media screen and (max-width:832px){.newsletter__form__component__internal[data-v-fd618d74]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.newsletter__desc[data-v-fd618d74]{padding-right:0;padding-bottom:1rem}}@media screen and (max-width:480px){.newsletter__form__component__internal[data-v-fd618d74]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}.container[data-v-03281e96]{margin-top:2rem;margin-bottom:2rem}.search[data-v-03281e96]{display:flex;position:relative}.search__icon[data-v-03281e96]{position:absolute;top:.25rem;left:.5rem;pointer-events:none}.search__input[data-v-03281e96]{border:1px solid rgba(176,180,207,.09);font-family:inherit;font-size:.875rem;padding:.5rem 1.5rem .5rem 2.5rem;width:100%;background:rgba(176,180,207,.09);border-radius:10000px;outline:none;transition:all .25s}.search__input[data-v-03281e96]:focus{border:1px solid var(--color-primary,#00f);background:#fff}select[data-v-5404a90a]{border:none;background:none;text-transform:uppercase;letter-spacing:.03em;font-weight:600;font-size:.875rem}.select[data-v-5404a90a]{border:2px solid rgba(140,145,177,.32);padding:.25rem .5rem;border-radius:6px;background-color:transparent}.overlay[data-v-ec82e5e0]{position:fixed;top:0;left:0;height:100vh;width:100vw}.sidebar[data-v-ec82e5e0]{position:fixed;top:0;height:100vh;background:#fff;overflow-y:scroll;-webkit-overflow-scrolling:touch;transform:translateX(var(--translate-x-component-internal))}.overlay-enter-active[data-v-ec82e5e0]{transition:all .25s ease-in}.overlay-enter[data-v-ec82e5e0]{opacity:0}.overlay-enter-to[data-v-ec82e5e0]{opacity:1}.overlay-leave-active[data-v-ec82e5e0]{transition:all .25s}.overlay-leave[data-v-ec82e5e0]{opacity:1}.overlay-leave-to[data-v-ec82e5e0]{opacity:0}.sidebar-enter-active[data-v-ec82e5e0]{transition:all .25s}.sidebar-enter[data-v-ec82e5e0]{transform:translateX(var(--sidebar-transform-component-internal))}.sidebar-enter-to[data-v-ec82e5e0]{transform:translateX(0)}.sidebar-leave-active[data-v-ec82e5e0]{transition:all .25s}.sidebar-leave[data-v-ec82e5e0]{transform:translateX(0)}.sidebar-leave-to[data-v-ec82e5e0]{transform:translateX(var(--sidebar-transform-component-internal))}.sr-only[data-v-08503e1b]{position:absolute;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}select[data-v-08503e1b]{border:none;letter-spacing:.03em;font-weight:600;font-size:.875rem;line-height:1.25rem;color:rgba(0,0,0,.667);max-width:100%;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.5 5L8 10.5 13.5 5' stroke='%23000' stroke-opacity='.667' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat,repeat;background-position:right .7em top 50%,0 0;background-size:.75em auto,100%;padding:.5rem 1.75rem .5rem 0}select[data-v-08503e1b]:focus{outline:none}select[data-v-08503e1b]:hover{cursor:pointer}.select[data-v-08503e1b]{background-color:transparent;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.container[data-v-609154e0]{display:flex;flex-direction:column;height:100%}.logo[data-v-609154e0]{padding:1.5rem 2rem;display:flex;align-items:center}.logo[data-v-609154e0]:active{outline:none}.logo__img[data-v-609154e0]{width:2.5rem;height:2.5rem;margin-right:.75rem}.logo__img__custom[data-v-609154e0]{width:100%;height:2.5rem;margin-right:.75rem}.logo__img__custom img[data-v-609154e0]{max-width:100%;max-height:100%}.logo__text[data-v-609154e0]{font-weight:600}.logo__container[data-v-609154e0]{position:sticky;display:block;background:#fff;z-index:1;top:0}.logo__container[data-v-609154e0]:after{position:absolute;content:"";top:100%;left:0;right:0;background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));height:25px}.sidebar[data-v-609154e0]{padding-left:2rem;padding-right:2rem;overflow-x:hidden}.version[data-v-609154e0]{margin-top:2rem;display:none}.items[data-v-609154e0]{flex-grow:1;padding-bottom:2rem}.items.footer__compact__true[data-v-609154e0]{flex-grow:0}.title[data-v-609154e0]{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:#666;margin-top:2rem;margin-bottom:.5rem}.footer.footer__compact__true[data-v-609154e0]{padding-bottom:150px;bottom:auto;margin-top:0;position:relative;flex-grow:1}.footer[data-v-609154e0]{height:var(--sidebar-footer-height);background-color:var(--sidebar-bg);position:sticky;bottom:0;width:100%;display:grid;grid-auto-flow:column;padding:1rem .75rem;align-items:center;grid-auto-columns:1fr}.footer[data-v-609154e0]:before{content:"";position:absolute;top:-50px;left:0;right:0;bottom:100%;background:linear-gradient(0deg,#fff,hsla(0,0%,100%,0));pointer-events:none}.footer__item[data-v-609154e0]{align-self:flex-start;display:flex;align-items:center;flex-direction:column;fill:rgba(51,54,74,.4)}.footer__item__icon[data-v-609154e0]{height:32px;margin-bottom:.25rem}.footer__item[data-v-609154e0]:hover{fill:var(--color)}.footer__item__title[data-v-609154e0]{text-align:center;font-size:.6875rem;line-height:.875rem}@media screen and (max-width:1135px){.version[data-v-609154e0]{display:block}}.item[data-v-15b24446]{position:relative;padding-left:1.5rem;display:block;padding-top:.375rem;padding-bottom:.375rem;cursor:pointer;font-size:.875rem;line-height:1.25rem;outline-color:var(--color-primary,#00f);color:rgba(0,0,0,.8);transition:color .15s ease-out}.item:hover .item__icon[data-v-15b24446],.item[data-v-15b24446]:hover{transition-duration:0s}.item[data-v-15b24446]:focus,.item[data-v-15b24446]:hover{color:var(--color-text,#000)}.item__child[data-v-15b24446]:not(.router-link-active):focus:after,.item__child[data-v-15b24446]:not(.router-link-active):hover:after{background:rgba(0,0,0,.2)}.item:focus .item__icon.item__icon__collapsed[data-v-15b24446],.item:focus .item__icon.item__icon__outbound[data-v-15b24446],.item:hover .item__icon.item__icon__collapsed[data-v-15b24446],.item:hover .item__icon.item__icon__outbound[data-v-15b24446]{fill:var(--color-primary,#00f);stroke:none}.item:hover .item__icon.item__icon__internal[data-v-15b24446]{visibility:unset;stroke:var(--color-primary,#00f)}.item:focus .item__icon.item__icon__internal[data-v-15b24446]{stroke:transparent;visibility:unset;fill:var(--color-primary,#00f)}.item[data-v-15b24446]:after{content:"";width:2px;height:100%;visibility:var(--vline);background:var(--vline-color,#000);position:absolute;top:0;left:5px;transition:background-color .15s ease-out}.item__selected[data-v-15b24446]{font-weight:600;color:var(--color-link,#00f)}.item__selected__dir[data-v-15b24446]{font-weight:400}.item__selected__alt[data-v-15b24446]{color:initial;font-weight:600}.item__dir[data-v-15b24446]{font-weight:600}.item__icon[data-v-15b24446]{position:absolute;top:.65rem;left:0;width:12px;height:12px;fill:var(--icon-color);transition:fill .15s ease-out,height .15s ease-out}.item__icon__expanded[data-v-15b24446]{stroke:none;fill:none;background:var(--color-primary,#00f);height:1px;padding-top:1px;margin-top:4px}.item__icon__internal[data-v-15b24446]{stroke:rgba(0,0,0,.2);stroke-width:1.5px;fill:none}.item__icon__outbound[data-v-15b24446]{fill:rgba(0,0,0,.2)}.reveal-enter-active[data-v-15b24446],.reveal-leave-active[data-v-15b24446]{transition:all .25s;overflow:hidden}.reveal-enter[data-v-15b24446],.reveal-leave-to[data-v-15b24446]{max-height:0;opacity:0}.reveal-enter-to[data-v-15b24446],.reveal-leave[data-v-15b24446]{max-height:var(--max-height);opacity:1}.menu[data-v-1919b5c7]{visibility:hidden}.menu__item[data-v-1919b5c7]{position:relative}.menu__item__icon[data-v-1919b5c7]{cursor:pointer;width:1.5rem;height:1.5rem;padding:.75rem;border-radius:.25rem;fill:rgba(51,54,74,.4)}.menu__item__icon.menu__item__icon__active__true[data-v-1919b5c7]{fill:#5064fb;background:rgba(102,161,255,.15)}.menu__item__modal[data-v-1919b5c7]{position:absolute;width:16rem;box-shadow:0 24px 40px rgba(22,25,49,.1),0 10px 16px rgba(22,25,49,.08),0 1px 0 rgba(22,25,49,.05);right:0;z-index:1000;border-radius:.25rem;background-color:#fff}.menu__item__modal__title[data-v-1919b5c7]{color:rgba(22,25,49,.65);text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;padding:1.5rem 1.5rem 1rem}.menu__item__modal__item[data-v-1919b5c7]{padding:.625rem 1.5rem;font-size:.875rem;line-height:1.25rem;outline:none;cursor:pointer}.menu__item__modal__item[data-v-1919b5c7]:hover{background-color:rgba(176,180,207,.087);color:var(--color-text,#000)}.menu__item__modal__item[data-v-1919b5c7]:active{color:var(--color-link);font-weight:600;box-shadow:inset 2px 0 0 0 var(--color-link)}.menu__item__modal__item[data-v-1919b5c7]:last-child{margin-bottom:.5rem}[data-v-1f736804] strong{color:var(--color-link);font-weight:700}.banner[data-v-1f736804]{display:flex;align-items:stretch;justify-content:center;position:relative;width:100%;z-index:2}.banner__content[data-v-1f736804]{font-size:.875rem;line-height:1.25rem;letter-spacing:.01em;color:#000;text-align:center;display:flex;flex:auto;padding:.5rem 4rem;align-items:center;justify-content:center;background-color:#f8f9fc;transition:background-color .15s ease-out}.banner__content[data-v-1f736804]:focus,.banner__content[data-v-1f736804]:hover{background-color:#f1f2f7}.banner__dismiss[data-v-1f736804]{position:absolute;top:0;right:0;bottom:0;padding:0 1rem;display:flex;align-items:center}.banner__dismiss__icon[data-v-1f736804]{padding:.5rem;border-radius:50%;opacity:.4;transition:opacity .15s ease-out,background-color .2s}.banner__dismiss__icon svg[data-v-1f736804]{display:block}.banner__dismiss:focus .banner__dismiss__icon[data-v-1f736804],.banner__dismiss:hover .banner__dismiss__icon[data-v-1f736804]{opacity:.7;background-color:rgba(0,0,0,.1)}.fade-leave-active[data-v-1f736804]{transition:opacity .3s cubic-bezier(.32,0,.67,0),margin .3s cubic-bezier(.32,0,.67,0)}.fade-leave-to[data-v-1f736804]{opacity:0}@media screen and (max-width:414px){.banner__content[data-v-1f736804]{text-align:left;justify-content:flex-start;padding-left:1rem;padding-right:3rem}}@media screen and (max-width:320px){.banner__content[data-v-1f736804]{font-size:.8125rem;line-height:1.125rem}.banner__dismiss[data-v-1f736804]{padding:0 .5rem}}.container[data-v-19189c02]{display:grid;grid-template-columns:auto 1fr auto;align-items:center}.menu[data-v-19189c02]{padding:.75rem}.menu__icon[data-v-19189c02]{height:1.5rem;width:1.5rem;cursor:pointer}.logo__wrapper[data-v-19189c02]{display:grid;grid-auto-flow:column;justify-content:center;gap:.5rem;align-items:center;cursor:pointer;height:3.5rem}.logo__image[data-v-19189c02]{width:2rem;height:2rem;fill:var(--color-primary,#00f)}.logo__image__custom[data-v-19189c02]{height:2.5rem}.logo__image__custom__img[data-v-19189c02]{max-width:100%;max-height:100%}.logo__text[data-v-19189c02]{font-weight:600}.toolbar[data-v-19189c02]{grid-column-start:-2;display:flex;justify-content:flex-end}.toolbar__item[data-v-19189c02]{cursor:pointer;display:flex;flex-direction:row;align-items:center;padding:.75rem}.toolbar__item__icon[data-v-19189c02]{height:1.5rem;width:1.5rem;margin-right:.5rem}.toolbar__item__text[data-v-19189c02]{color:var(--color-text-dim,inherit)}@media screen and (max-width:752px){.menu__icon[data-v-19189c02]{visibility:visible}.toolbar__item__text__search[data-v-19189c02]{display:none}.logo__wrapper[data-v-19189c02],.toolbar[data-v-19189c02]{visibility:visible}.toolbar__item__icon[data-v-19189c02]{margin-right:0}} \ No newline at end of file diff --git a/main/assets/js/105.dba2cfe4.js b/main/assets/js/105.98d0f1a5.js similarity index 99% rename from main/assets/js/105.dba2cfe4.js rename to main/assets/js/105.98d0f1a5.js index cd6e4233027..aafd43c58b3 100644 --- a/main/assets/js/105.dba2cfe4.js +++ b/main/assets/js/105.98d0f1a5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{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([[105],{584: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/108.5db9723d.js b/main/assets/js/108.d0382856.js similarity index 99% rename from main/assets/js/108.5db9723d.js rename to main/assets/js/108.d0382856.js index 5b949dd9e68..31f2d68fa71 100644 --- a/main/assets/js/108.5db9723d.js +++ b/main/assets/js/108.d0382856.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{584: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([[108],{578: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/110.a318ce0c.js b/main/assets/js/110.93a66582.js similarity index 98% rename from main/assets/js/110.a318ce0c.js rename to main/assets/js/110.93a66582.js index 73136c71d55..57447658bf9 100644 --- a/main/assets/js/110.a318ce0c.js +++ b/main/assets/js/110.93a66582.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{577: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([[110],{576: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/113.c70e4a57.js b/main/assets/js/113.6b1ee5ca.js similarity index 98% rename from main/assets/js/113.c70e4a57.js rename to main/assets/js/113.6b1ee5ca.js index a9b7c77cb0a..bb600889bb5 100644 --- a/main/assets/js/113.c70e4a57.js +++ b/main/assets/js/113.6b1ee5ca.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{576: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 situation the proposal aims to address. It should clearly 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 indicate 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([[113],{577: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 situation the proposal aims to address. It should clearly 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 indicate 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/119.25eb44e2.js b/main/assets/js/119.9184ae30.js similarity index 99% rename from main/assets/js/119.25eb44e2.js rename to main/assets/js/119.9184ae30.js index eca404e6062..66b92e8ebce 100644 --- a/main/assets/js/119.25eb44e2.js +++ b/main/assets/js/119.9184ae30.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{488:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"gaia-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-client"}},[e._v("#")]),e._v(" Gaia Client")]),e._v(" "),a("h2",{attrs:{id:"gaia-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-daemon"}},[e._v("#")]),e._v(" Gaia Daemon")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not. Let us set it up properly. In order to install it, follow the "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("installation procedure")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"setting-up-gaiad"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting up gaiad")]),e._v(" "),a("p",[e._v("The main command used to set up "),a("code",[e._v("gaiad")]),e._v(" is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),a("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0Jmd0OwoKIyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),e._v(" "),a("p",[e._v("If you run your own full-node, just use "),a("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),a("p",[e._v("Finally, let us set the "),a("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),a("h3",{attrs:{id:"keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[e._v("#")]),e._v(" Keys")]),e._v(" "),a("h4",{attrs:{id:"keyring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyring"}},[e._v("#")]),e._v(" Keyring")]),e._v(" "),a("p",[e._v('The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system\'s own key storage.')]),e._v(" "),a("p",[e._v("Headless environments are recommended to use either the "),a("code",[e._v("file")]),e._v(" or "),a("code",[e._v("pass")]),e._v(" backends. More information is available at the "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/keyring.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SDK documentation page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"key-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-types"}},[e._v("#")]),e._v(" Key Types")]),e._v(" "),a("p",[e._v("There are three types of key representations that are used:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("cosmos")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("Used to receive funds")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvaloper")])]),e._v(" "),a("ul",[a("li",[e._v("Used to associate a validator to its operator")]),e._v(" "),a("li",[e._v("Used to invoke staking commands")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmospub")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvalconspub")])]),e._v(" "),a("ul",[a("li",[e._v("Generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")]),e._v(" "),a("li",[e._v("Get this value with "),a("code",[e._v("gaiad tendermint show-validator")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),e._v(" "),a("h4",{attrs:{id:"migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[e._v("#")]),e._v(" Migrate Keys From Legacy On-Disk Keybase To OS Built-in Secret Store")]),e._v(" "),a("p",[e._v("Older versions of "),a("code",[e._v("gaiad")]),e._v(" used store keys in the user's home directory. If you are migrating\nfrom an old version of "),a("code",[e._v("gaiad")]),e._v(" you will need to migrate your old keys into your operating system's\ncredentials storage by running the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBtaWdyYXRlCg=="}}),e._v(" "),a("p",[e._v("The command will prompt for every passphrase. If a passphrase is incorrect, it will skip the\nrespective key.")]),e._v(" "),a("h4",{attrs:{id:"generate-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-keys"}},[e._v("#")]),e._v(" Generate Keys")]),e._v(" "),a("p",[e._v("You'll need an account private and public key pair (a.k.a. "),a("code",[e._v("sk, pk")]),e._v(" respectively) to be able to receive funds, send txs, bond tx, etc.")]),e._v(" "),a("p",[e._v("To generate a new "),a("em",[e._v("secp256k1")]),e._v(" key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("The output of the above command will contain a "),a("em",[e._v("seed phrase")]),e._v(". It is recommended to save the "),a("em",[e._v("seed\nphrase")]),e._v(" in a safe place so that in case you forget the password of the operating system's\ncredentials store, you could eventually regenerate the key from the seed phrase with the\nfollowing command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),e._v(" "),a("p",[e._v("If you check your private keys, you'll now see "),a("code",[e._v("")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("View the validator operator's address via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),e._v(" "),a("p",[e._v("You can see all your available keys by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),e._v(" "),a("p",[e._v("View the validator pubkey for your node by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),e._v(" "),a("p",[e._v("Note that this is the Tendermint signing key, "),a("em",[e._v("not")]),e._v(" the operator key you will use in delegation transactions.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("We strongly recommend "),a("em",[e._v("NOT")]),e._v(" using the same passphrase for multiple keys. The CometBFT team and the Interchain Foundation will not be responsible for the loss of funds.")])]),e._v(" "),a("h4",{attrs:{id:"generate-multisig-public-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-multisig-public-keys"}},[e._v("#")]),e._v(" Generate Multisig Public Keys")]),e._v(" "),a("p",[e._v("You can generate and print a multisig public key by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),e._v(" "),a("p",[a("code",[e._v("K")]),e._v(" is the minimum number of private keys that must have signed the\ntransactions that carry the public key's address as signer.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--multisig")]),e._v(" flag must contain the name of public keys that will be combined into a\npublic key that will be generated and stored as "),a("code",[e._v("new_key_name")]),e._v(" in the local database.\nAll names supplied through "),a("code",[e._v("--multisig")]),e._v(" must already exist in the local database. Unless\nthe flag "),a("code",[e._v("--nosort")]),e._v(" is set, the order in which the keys are supplied on the command line\ndoes not matter, i.e. the following commands generate two identical keys:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),e._v(" "),a("p",[e._v("Multisig addresses can also be generated on-the-fly and printed through the which command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),e._v(" "),a("p",[e._v("For more information regarding how to generate, sign and broadcast transactions with a\nmulti signature account see "),a("a",{attrs:{href:"#multisig-transactions"}},[e._v("Multisig Transactions")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"tx-broadcasting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tx-broadcasting"}},[e._v("#")]),e._v(" Tx Broadcasting")]),e._v(" "),a("p",[e._v("When broadcasting transactions, "),a("code",[e._v("gaiad")]),e._v(" accepts a "),a("code",[e._v("--broadcast-mode")]),e._v(" flag. This\nflag can have a value of "),a("code",[e._v("sync")]),e._v(" (default), "),a("code",[e._v("async")]),e._v(", or "),a("code",[e._v("block")]),e._v(", where "),a("code",[e._v("sync")]),e._v(" makes\nthe client return a CheckTx response, "),a("code",[e._v("async")]),e._v(" makes the client return immediately,\nand "),a("code",[e._v("block")]),e._v(" makes the client wait for the tx to be committed (or timing out).")]),e._v(" "),a("p",[e._v("It is important to note that the "),a("code",[e._v("block")]),e._v(" mode should "),a("strong",[e._v("not")]),e._v(" be used in most\ncircumstances. This is because broadcasting can timeout but the tx may still be\nincluded in a block. This can result in many undesirable situations. Therefore, it\nis best to use "),a("code",[e._v("sync")]),e._v(" or "),a("code",[e._v("async")]),e._v(" and query by tx hash to determine when the tx\nis included in a block.")]),e._v(" "),a("h3",{attrs:{id:"fees-gas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fees-gas"}},[e._v("#")]),e._v(" Fees & Gas")]),e._v(" "),a("p",[e._v("Each transaction may either supply fees or gas prices, but not both.")]),e._v(" "),a("p",[e._v("Validator's have a minimum gas price (multi-denom) configuration and they use\nthis value when determining if they should include the transaction in a block during "),a("code",[e._v("CheckTx")]),e._v(", where "),a("code",[e._v("gasPrices >= minGasPrices")]),e._v(". Note, your transaction must supply fees that are greater than or equal to "),a("strong",[e._v("any")]),e._v(" of the denominations the validator requires.")]),e._v(" "),a("p",[a("strong",[e._v("Note")]),e._v(": With such a mechanism in place, validators may start to prioritize\ntxs by "),a("code",[e._v("gasPrice")]),e._v(" in the mempool, so providing higher fees or gas prices may yield higher tx priority.")]),e._v(" "),a("p",[e._v("e.g.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),e._v(" "),a("p",[e._v("or")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),e._v(" "),a("h3",{attrs:{id:"account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account"}},[e._v("#")]),e._v(" Account")]),e._v(" "),a("h4",{attrs:{id:"get-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tokens"}},[e._v("#")]),e._v(" Get Tokens")]),e._v(" "),a("p",[e._v("On a testnet, getting tokens is usually done via a faucet.")]),e._v(" "),a("h4",{attrs:{id:"query-account-balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-account-balance"}},[e._v("#")]),e._v(" Query Account Balance")]),e._v(" "),a("p",[e._v("After receiving tokens to your address, you can view your account's balance by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("When you query an account balance with zero tokens, you will get this error: "),a("code",[e._v("No account with address was found in the state.")]),e._v(" This can also happen if you fund the account before your node has fully synced with the chain. These are both normal.")])]),e._v(" "),a("h3",{attrs:{id:"send-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-tokens"}},[e._v("#")]),e._v(" Send Tokens")]),e._v(" "),a("p",[e._v("The following command could be used to send coins from one account to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("amount")]),e._v(" argument accepts the format "),a("code",[e._v("")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("You may want to cap the maximum gas that can be consumed by the transaction via the "),a("code",[e._v("--gas")]),e._v(" flag.\nIf you pass "),a("code",[e._v("--gas=auto")]),e._v(", the gas supply will be automatically estimated before executing the transaction.\nGas estimate might be inaccurate as state changes could occur in between the end of the simulation and the actual execution of a transaction, thus an adjustment is applied on top of the original estimate in order to ensure the transaction is broadcasted successfully. The adjustment can be controlled via the "),a("code",[e._v("--gas-adjustment")]),e._v(" flag, whose default value is 1.0.")])]),e._v(" "),a("p",[e._v("Now, view the updated balances of the origin and destination accounts:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also check your balance at a given block by using the "),a("code",[e._v("--block")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),e._v(" "),a("p",[e._v("You can simulate a transaction without actually broadcasting it by appending the\n"),a("code",[e._v("--dry-run")]),e._v(" flag to the command line:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vc2FjY2FkZHImZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),e._v(" "),a("p",[e._v("Furthermore, you can build a transaction and print its JSON format to STDOUT by\nappending "),a("code",[e._v("--generate-only")]),e._v(" to the list of the command line arguments:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--generate-only")]),e._v(" flag prevents "),a("code",[e._v("gaiad")]),e._v(" from accessing the local keybase.\nThus when such flag is supplied "),a("code",[e._v("")]),e._v(" must be an address.")])]),e._v(" "),a("p",[e._v("You can validate the transaction's signatures by typing the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("p",[e._v("You can broadcast the signed transaction to a node by providing the JSON file to the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"query-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-transactions"}},[e._v("#")]),e._v(" Query Transactions")]),e._v(" "),a("h4",{attrs:{id:"matching-a-set-of-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-set-of-events"}},[e._v("#")]),e._v(" Matching a Set of Events")]),e._v(" "),a("p",[e._v("You can use the transaction search command to query for transactions that match a\nspecific set of "),a("code",[e._v("events")]),e._v(", which are added on every transaction.")]),e._v(" "),a("p",[e._v("Each event is composed by a key-value pair in the form of "),a("code",[e._v("{eventType}.{eventAttribute}={value}")]),e._v(".\nEvents can also be combined to query for a more specific result using the "),a("code",[e._v("&")]),e._v(" symbol.")]),e._v(" "),a("p",[e._v("You can query transactions by "),a("code",[e._v("events")]),e._v(" as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),e._v(" "),a("p",[e._v("And for using multiple "),a("code",[e._v("events")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),e._v(" "),a("p",[e._v("The pagination is supported as well via "),a("code",[e._v("page")]),e._v(" and "),a("code",[e._v("limit")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The action tag always equals the message type returned by the "),a("code",[e._v("Type()")]),e._v(" function of the relevant message.")]),e._v(" "),a("p",[e._v("You can find a list of available "),a("code",[e._v("events")]),e._v(" on each of the SDK modules:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Staking events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slashing events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Distribution events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bank events"),a("OutboundLink")],1)])])]),e._v(" "),a("h4",{attrs:{id:"matching-a-transaction-s-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-transaction-s-hash"}},[e._v("#")]),e._v(" Matching a Transaction's Hash")]),e._v(" "),a("p",[e._v("You can also query a single transaction by its hash using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),e._v(" "),a("h3",{attrs:{id:"slashing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),a("h4",{attrs:{id:"unjailing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[e._v("#")]),e._v(" Unjailing")]),e._v(" "),a("p",[e._v("To unjail your jailed validator")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"signing-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[e._v("#")]),e._v(" Signing Info")]),e._v(" "),a("p",[e._v("To retrieve a validator's signing info:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("You can get the current slashing parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),e._v(" "),a("h3",{attrs:{id:"minting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minting"}},[e._v("#")]),e._v(" Minting")]),e._v(" "),a("p",[e._v("You can query for the minting/inflation parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("To query for the current inflation value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),e._v(" "),a("p",[e._v("To query for the current annual provisions value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),e._v(" "),a("h3",{attrs:{id:"staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),a("h4",{attrs:{id:"set-up-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-up-a-validator"}},[e._v("#")]),e._v(" Set up a Validator")]),e._v(" "),a("p",[e._v("Please refer to the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("Validator Setup")]),e._v(" section for a more complete guide on how to set up a validator-candidate.")],1),e._v(" "),a("h4",{attrs:{id:"delegate-to-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegate-to-a-validator"}},[e._v("#")]),e._v(" Delegate to a Validator")]),e._v(" "),a("p",[e._v("On the upcoming mainnet, you can delegate "),a("code",[e._v("atom")]),e._v(" to a validator. These "),a("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("delegators")]),e._v(" can receive part of the validator's fee revenue. Read more about the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Token Model"),a("OutboundLink")],1),e._v(".")],1),e._v(" "),a("h5",{attrs:{id:"query-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validators"}},[e._v("#")]),e._v(" Query Validators")]),e._v(" "),a("p",[e._v("You can query the list of all validators of a specific chain:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("p",[e._v("If you want to get the information of a single validator you can check it with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"bond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bond-tokens"}},[e._v("#")]),e._v(" Bond Tokens")]),e._v(" "),a("p",[e._v("On the Cosmos Hub mainnet, we delegate "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1000000uatom")]),e._v(". Here's how you can bond tokens to a testnet validator ("),a("em",[e._v("i.e.")]),e._v(" delegate):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[a("code",[e._v("")]),e._v(" is the operator address of the validator to which you intend to delegate. If you are running a local testnet, you can find this with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),e._v(" "),a("p",[e._v("where "),a("code",[e._v("[name]")]),e._v(" is the name of the key you specified when you initialized "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.")]),e._v(" "),a("h5",{attrs:{id:"query-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations"}},[e._v("#")]),e._v(" Query Delegations")]),e._v(" "),a("p",[e._v("Once submitted a delegation to a validator, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"unbond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unbond-tokens"}},[e._v("#")]),e._v(" Unbond Tokens")]),e._v(" "),a("p",[e._v("If for any reason the validator misbehaves, or you just want to unbond a certain\namount of tokens, use the following command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("The unbonding will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-unbonding-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-unbonding-delegations"}},[e._v("#")]),e._v(" Query Unbonding-Delegations")]),e._v(" "),a("p",[e._v("Once you begin an unbonding-delegation, you can see it's information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with distinct 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],{489:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"gaia-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-client"}},[e._v("#")]),e._v(" Gaia Client")]),e._v(" "),a("h2",{attrs:{id:"gaia-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-daemon"}},[e._v("#")]),e._v(" Gaia Daemon")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not. Let us set it up properly. In order to install it, follow the "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("installation procedure")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"setting-up-gaiad"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting up gaiad")]),e._v(" "),a("p",[e._v("The main command used to set up "),a("code",[e._v("gaiad")]),e._v(" is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),a("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0Jmd0OwoKIyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),e._v(" "),a("p",[e._v("If you run your own full-node, just use "),a("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),a("p",[e._v("Finally, let us set the "),a("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),a("h3",{attrs:{id:"keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[e._v("#")]),e._v(" Keys")]),e._v(" "),a("h4",{attrs:{id:"keyring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyring"}},[e._v("#")]),e._v(" Keyring")]),e._v(" "),a("p",[e._v('The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system\'s own key storage.')]),e._v(" "),a("p",[e._v("Headless environments are recommended to use either the "),a("code",[e._v("file")]),e._v(" or "),a("code",[e._v("pass")]),e._v(" backends. More information is available at the "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/keyring.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SDK documentation page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"key-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-types"}},[e._v("#")]),e._v(" Key Types")]),e._v(" "),a("p",[e._v("There are three types of key representations that are used:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("cosmos")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("Used to receive funds")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvaloper")])]),e._v(" "),a("ul",[a("li",[e._v("Used to associate a validator to its operator")]),e._v(" "),a("li",[e._v("Used to invoke staking commands")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmospub")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvalconspub")])]),e._v(" "),a("ul",[a("li",[e._v("Generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")]),e._v(" "),a("li",[e._v("Get this value with "),a("code",[e._v("gaiad tendermint show-validator")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),e._v(" "),a("h4",{attrs:{id:"migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[e._v("#")]),e._v(" Migrate Keys From Legacy On-Disk Keybase To OS Built-in Secret Store")]),e._v(" "),a("p",[e._v("Older versions of "),a("code",[e._v("gaiad")]),e._v(" used store keys in the user's home directory. If you are migrating\nfrom an old version of "),a("code",[e._v("gaiad")]),e._v(" you will need to migrate your old keys into your operating system's\ncredentials storage by running the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBtaWdyYXRlCg=="}}),e._v(" "),a("p",[e._v("The command will prompt for every passphrase. If a passphrase is incorrect, it will skip the\nrespective key.")]),e._v(" "),a("h4",{attrs:{id:"generate-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-keys"}},[e._v("#")]),e._v(" Generate Keys")]),e._v(" "),a("p",[e._v("You'll need an account private and public key pair (a.k.a. "),a("code",[e._v("sk, pk")]),e._v(" respectively) to be able to receive funds, send txs, bond tx, etc.")]),e._v(" "),a("p",[e._v("To generate a new "),a("em",[e._v("secp256k1")]),e._v(" key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("The output of the above command will contain a "),a("em",[e._v("seed phrase")]),e._v(". It is recommended to save the "),a("em",[e._v("seed\nphrase")]),e._v(" in a safe place so that in case you forget the password of the operating system's\ncredentials store, you could eventually regenerate the key from the seed phrase with the\nfollowing command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),e._v(" "),a("p",[e._v("If you check your private keys, you'll now see "),a("code",[e._v("")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("View the validator operator's address via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),e._v(" "),a("p",[e._v("You can see all your available keys by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),e._v(" "),a("p",[e._v("View the validator pubkey for your node by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),e._v(" "),a("p",[e._v("Note that this is the Tendermint signing key, "),a("em",[e._v("not")]),e._v(" the operator key you will use in delegation transactions.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("We strongly recommend "),a("em",[e._v("NOT")]),e._v(" using the same passphrase for multiple keys. The CometBFT team and the Interchain Foundation will not be responsible for the loss of funds.")])]),e._v(" "),a("h4",{attrs:{id:"generate-multisig-public-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-multisig-public-keys"}},[e._v("#")]),e._v(" Generate Multisig Public Keys")]),e._v(" "),a("p",[e._v("You can generate and print a multisig public key by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),e._v(" "),a("p",[a("code",[e._v("K")]),e._v(" is the minimum number of private keys that must have signed the\ntransactions that carry the public key's address as signer.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--multisig")]),e._v(" flag must contain the name of public keys that will be combined into a\npublic key that will be generated and stored as "),a("code",[e._v("new_key_name")]),e._v(" in the local database.\nAll names supplied through "),a("code",[e._v("--multisig")]),e._v(" must already exist in the local database. Unless\nthe flag "),a("code",[e._v("--nosort")]),e._v(" is set, the order in which the keys are supplied on the command line\ndoes not matter, i.e. the following commands generate two identical keys:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),e._v(" "),a("p",[e._v("Multisig addresses can also be generated on-the-fly and printed through the which command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),e._v(" "),a("p",[e._v("For more information regarding how to generate, sign and broadcast transactions with a\nmulti signature account see "),a("a",{attrs:{href:"#multisig-transactions"}},[e._v("Multisig Transactions")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"tx-broadcasting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tx-broadcasting"}},[e._v("#")]),e._v(" Tx Broadcasting")]),e._v(" "),a("p",[e._v("When broadcasting transactions, "),a("code",[e._v("gaiad")]),e._v(" accepts a "),a("code",[e._v("--broadcast-mode")]),e._v(" flag. This\nflag can have a value of "),a("code",[e._v("sync")]),e._v(" (default), "),a("code",[e._v("async")]),e._v(", or "),a("code",[e._v("block")]),e._v(", where "),a("code",[e._v("sync")]),e._v(" makes\nthe client return a CheckTx response, "),a("code",[e._v("async")]),e._v(" makes the client return immediately,\nand "),a("code",[e._v("block")]),e._v(" makes the client wait for the tx to be committed (or timing out).")]),e._v(" "),a("p",[e._v("It is important to note that the "),a("code",[e._v("block")]),e._v(" mode should "),a("strong",[e._v("not")]),e._v(" be used in most\ncircumstances. This is because broadcasting can timeout but the tx may still be\nincluded in a block. This can result in many undesirable situations. Therefore, it\nis best to use "),a("code",[e._v("sync")]),e._v(" or "),a("code",[e._v("async")]),e._v(" and query by tx hash to determine when the tx\nis included in a block.")]),e._v(" "),a("h3",{attrs:{id:"fees-gas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fees-gas"}},[e._v("#")]),e._v(" Fees & Gas")]),e._v(" "),a("p",[e._v("Each transaction may either supply fees or gas prices, but not both.")]),e._v(" "),a("p",[e._v("Validator's have a minimum gas price (multi-denom) configuration and they use\nthis value when determining if they should include the transaction in a block during "),a("code",[e._v("CheckTx")]),e._v(", where "),a("code",[e._v("gasPrices >= minGasPrices")]),e._v(". Note, your transaction must supply fees that are greater than or equal to "),a("strong",[e._v("any")]),e._v(" of the denominations the validator requires.")]),e._v(" "),a("p",[a("strong",[e._v("Note")]),e._v(": With such a mechanism in place, validators may start to prioritize\ntxs by "),a("code",[e._v("gasPrice")]),e._v(" in the mempool, so providing higher fees or gas prices may yield higher tx priority.")]),e._v(" "),a("p",[e._v("e.g.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),e._v(" "),a("p",[e._v("or")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),e._v(" "),a("h3",{attrs:{id:"account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account"}},[e._v("#")]),e._v(" Account")]),e._v(" "),a("h4",{attrs:{id:"get-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tokens"}},[e._v("#")]),e._v(" Get Tokens")]),e._v(" "),a("p",[e._v("On a testnet, getting tokens is usually done via a faucet.")]),e._v(" "),a("h4",{attrs:{id:"query-account-balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-account-balance"}},[e._v("#")]),e._v(" Query Account Balance")]),e._v(" "),a("p",[e._v("After receiving tokens to your address, you can view your account's balance by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("When you query an account balance with zero tokens, you will get this error: "),a("code",[e._v("No account with address was found in the state.")]),e._v(" This can also happen if you fund the account before your node has fully synced with the chain. These are both normal.")])]),e._v(" "),a("h3",{attrs:{id:"send-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-tokens"}},[e._v("#")]),e._v(" Send Tokens")]),e._v(" "),a("p",[e._v("The following command could be used to send coins from one account to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("amount")]),e._v(" argument accepts the format "),a("code",[e._v("")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("You may want to cap the maximum gas that can be consumed by the transaction via the "),a("code",[e._v("--gas")]),e._v(" flag.\nIf you pass "),a("code",[e._v("--gas=auto")]),e._v(", the gas supply will be automatically estimated before executing the transaction.\nGas estimate might be inaccurate as state changes could occur in between the end of the simulation and the actual execution of a transaction, thus an adjustment is applied on top of the original estimate in order to ensure the transaction is broadcasted successfully. The adjustment can be controlled via the "),a("code",[e._v("--gas-adjustment")]),e._v(" flag, whose default value is 1.0.")])]),e._v(" "),a("p",[e._v("Now, view the updated balances of the origin and destination accounts:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also check your balance at a given block by using the "),a("code",[e._v("--block")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),e._v(" "),a("p",[e._v("You can simulate a transaction without actually broadcasting it by appending the\n"),a("code",[e._v("--dry-run")]),e._v(" flag to the command line:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vc2FjY2FkZHImZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),e._v(" "),a("p",[e._v("Furthermore, you can build a transaction and print its JSON format to STDOUT by\nappending "),a("code",[e._v("--generate-only")]),e._v(" to the list of the command line arguments:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--generate-only")]),e._v(" flag prevents "),a("code",[e._v("gaiad")]),e._v(" from accessing the local keybase.\nThus when such flag is supplied "),a("code",[e._v("")]),e._v(" must be an address.")])]),e._v(" "),a("p",[e._v("You can validate the transaction's signatures by typing the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("p",[e._v("You can broadcast the signed transaction to a node by providing the JSON file to the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"query-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-transactions"}},[e._v("#")]),e._v(" Query Transactions")]),e._v(" "),a("h4",{attrs:{id:"matching-a-set-of-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-set-of-events"}},[e._v("#")]),e._v(" Matching a Set of Events")]),e._v(" "),a("p",[e._v("You can use the transaction search command to query for transactions that match a\nspecific set of "),a("code",[e._v("events")]),e._v(", which are added on every transaction.")]),e._v(" "),a("p",[e._v("Each event is composed by a key-value pair in the form of "),a("code",[e._v("{eventType}.{eventAttribute}={value}")]),e._v(".\nEvents can also be combined to query for a more specific result using the "),a("code",[e._v("&")]),e._v(" symbol.")]),e._v(" "),a("p",[e._v("You can query transactions by "),a("code",[e._v("events")]),e._v(" as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),e._v(" "),a("p",[e._v("And for using multiple "),a("code",[e._v("events")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),e._v(" "),a("p",[e._v("The pagination is supported as well via "),a("code",[e._v("page")]),e._v(" and "),a("code",[e._v("limit")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The action tag always equals the message type returned by the "),a("code",[e._v("Type()")]),e._v(" function of the relevant message.")]),e._v(" "),a("p",[e._v("You can find a list of available "),a("code",[e._v("events")]),e._v(" on each of the SDK modules:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Staking events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slashing events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Distribution events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bank events"),a("OutboundLink")],1)])])]),e._v(" "),a("h4",{attrs:{id:"matching-a-transaction-s-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-transaction-s-hash"}},[e._v("#")]),e._v(" Matching a Transaction's Hash")]),e._v(" "),a("p",[e._v("You can also query a single transaction by its hash using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),e._v(" "),a("h3",{attrs:{id:"slashing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),a("h4",{attrs:{id:"unjailing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[e._v("#")]),e._v(" Unjailing")]),e._v(" "),a("p",[e._v("To unjail your jailed validator")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"signing-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[e._v("#")]),e._v(" Signing Info")]),e._v(" "),a("p",[e._v("To retrieve a validator's signing info:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("You can get the current slashing parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),e._v(" "),a("h3",{attrs:{id:"minting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minting"}},[e._v("#")]),e._v(" Minting")]),e._v(" "),a("p",[e._v("You can query for the minting/inflation parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("To query for the current inflation value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),e._v(" "),a("p",[e._v("To query for the current annual provisions value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),e._v(" "),a("h3",{attrs:{id:"staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),a("h4",{attrs:{id:"set-up-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-up-a-validator"}},[e._v("#")]),e._v(" Set up a Validator")]),e._v(" "),a("p",[e._v("Please refer to the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("Validator Setup")]),e._v(" section for a more complete guide on how to set up a validator-candidate.")],1),e._v(" "),a("h4",{attrs:{id:"delegate-to-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegate-to-a-validator"}},[e._v("#")]),e._v(" Delegate to a Validator")]),e._v(" "),a("p",[e._v("On the upcoming mainnet, you can delegate "),a("code",[e._v("atom")]),e._v(" to a validator. These "),a("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("delegators")]),e._v(" can receive part of the validator's fee revenue. Read more about the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Token Model"),a("OutboundLink")],1),e._v(".")],1),e._v(" "),a("h5",{attrs:{id:"query-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validators"}},[e._v("#")]),e._v(" Query Validators")]),e._v(" "),a("p",[e._v("You can query the list of all validators of a specific chain:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("p",[e._v("If you want to get the information of a single validator you can check it with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"bond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bond-tokens"}},[e._v("#")]),e._v(" Bond Tokens")]),e._v(" "),a("p",[e._v("On the Cosmos Hub mainnet, we delegate "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1000000uatom")]),e._v(". Here's how you can bond tokens to a testnet validator ("),a("em",[e._v("i.e.")]),e._v(" delegate):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[a("code",[e._v("")]),e._v(" is the operator address of the validator to which you intend to delegate. If you are running a local testnet, you can find this with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),e._v(" "),a("p",[e._v("where "),a("code",[e._v("[name]")]),e._v(" is the name of the key you specified when you initialized "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.")]),e._v(" "),a("h5",{attrs:{id:"query-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations"}},[e._v("#")]),e._v(" Query Delegations")]),e._v(" "),a("p",[e._v("Once submitted a delegation to a validator, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"unbond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unbond-tokens"}},[e._v("#")]),e._v(" Unbond Tokens")]),e._v(" "),a("p",[e._v("If for any reason the validator misbehaves, or you just want to unbond a certain\namount of tokens, use the following command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("The unbonding will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-unbonding-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-unbonding-delegations"}},[e._v("#")]),e._v(" Query Unbonding-Delegations")]),e._v(" "),a("p",[e._v("Once you begin an unbonding-delegation, you can see it's information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with distinct 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.6ffa5f45.js b/main/assets/js/120.9997c678.js similarity index 99% rename from main/assets/js/120.6ffa5f45.js rename to main/assets/js/120.9997c678.js index a4ae3698181..5b55a6eb755 100644 --- a/main/assets/js/120.6ffa5f45.js +++ b/main/assets/js/120.9997c678.js @@ -1 +1 @@ -(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. The most recent upgrade is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v14-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v14.1.x"),a("OutboundLink")],1),e._v(" Dec 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("h2",{attrs:{id:"release-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#release-history"}},[e._v("#")]),e._v(" Release History")]),e._v(" "),a("ul",[a("li",[e._v("use "),a("code",[e._v("gaia v5.0.x")]),e._v(" (Delta) for queries of state between height "),a("code",[e._v("6,910,000")]),e._v(" and "),a("code",[e._v("8,695,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v6.0.x")]),e._v(" (Vega) between "),a("code",[e._v("8,695,000")]),e._v(" and "),a("code",[e._v("10,085,397")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v7.0.x")]),e._v(" (Theta) between "),a("code",[e._v("10,085,397")]),e._v(" and "),a("code",[e._v("14,099,412")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v8.0.x")]),e._v(" (Rho) between "),a("code",[e._v("14,099,412")]),e._v(" and "),a("code",[e._v("14,470,501")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.0.x")]),e._v(" (Lambda) between "),a("code",[e._v("14,470,501")]),e._v(" and "),a("code",[e._v("15,213,800")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.1.x")]),e._v(" between "),a("code",[e._v("15,213,800")]),e._v(" and "),a("code",[e._v("15,816,200")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v10.0.x")]),e._v(" between "),a("code",[e._v("15,816,200")]),e._v(" and "),a("code",[e._v("16,596,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v11.x")]),e._v(" between "),a("code",[e._v("16,596,000")]),e._v(" and "),a("code",[e._v("16,985,500")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v12.x")]),e._v(" between "),a("code",[e._v("16,985,500")]),e._v(" and "),a("code",[e._v("17,380,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v13.x")]),e._v(" between "),a("code",[e._v("17,380,000")]),e._v(" and "),a("code",[e._v("18,262,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v14.1.x")]),e._v(" from "),a("code",[e._v("18,262,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 bootstrap 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:"#release-history"}},[e._v("Release History")])]),e._v(" "),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:"toml",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:"toml",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBnUlBDIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[e._v("#")]),e._v(" Sync Options")]),e._v(" "),a("p",[e._v("There are three main ways to sync a node on the Cosmos Hub; Blocksync, State Sync, and Quicksync. See the matrix below for the Hub's recommended setup configuration. This guide will focus on syncing two types of common nodes; full and pruned. For further information on syncing to run a validator node, see the section on "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validators"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("There are two types of concerns when deciding which sync option is right. "),a("em",[e._v("Data integrity")]),e._v(" refers to how reliable the data provided by a subset of network participants is. "),a("em",[e._v("Historical data")]),e._v(" refers to how robust and inclusive the chain’s history is.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th"),e._v(" "),a("th",[e._v("Low Data Integrity")]),e._v(" "),a("th",[e._v("High Data Integrity")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Minimal Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Pruned")]),e._v(" "),a("td",[e._v("State Sync")])]),e._v(" "),a("tr",[a("td",[e._v("Moderate Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Default")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[e._v("Full Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Archive")]),e._v(" "),a("td",[e._v("Blocksync")])])])]),e._v(" "),a("p",[e._v("If a node operator wishes to run a full node, it is possible to start from scratch but will take a significant amount of time to catch up. Node operators not concerned with rebuilding original state from the beginning of "),a("code",[e._v("cosmoshub-4")]),e._v(" can also leverage "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v("'s available archive history.")]),e._v(" "),a("p",[e._v("For operators interested in bootstrapping a pruned node, either "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v(" or "),a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")]),e._v(" would be sufficient.")]),e._v(" "),a("p",[e._v("Make sure to consult the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware")]),e._v(" section for guidance on the best configuration for the type of node operating.")]),e._v(" "),a("tabs",{attrs:{options:{useUrlFragment:!1}}},[a("tab",{attrs:{name:"Blocksync"}},[a("h3",{attrs:{id:"blocksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksync"}},[e._v("#")]),e._v(" Blocksync")]),e._v(" "),a("p",[e._v("Blocksync is faster than traditional consensus and syncs the chain from genesis by downloading blocks and verifying against the merkle tree of validators. For more information see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's Fastsync Docs"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("When syncing via Blocksync, node operators will either need to manually upgrade the chain or set up "),a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")]),e._v(" to upgrade automatically.")]),e._v(" "),a("p",[e._v("For more information on performing the manual upgrades, see "),a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")]),e._v(".")]),e._v(" "),a("p",[e._v("It is possible to sync from previous versions of the Cosmos Hub. See the matrix below for the correct "),a("code",[e._v("gaia")]),e._v(" version. See the "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet archive"),a("OutboundLink")],1),e._v(" for historical genesis files.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Chain Id")]),e._v(" "),a("th",[e._v("Gaia Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("cosmoshub-4")])]),e._v(" "),a("td",[a("code",[e._v("v4.2.1")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-3")])]),e._v(" "),a("td",[a("code",[e._v("v2.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-2")])]),e._v(" "),a("td",[a("code",[e._v("v1.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-1")])]),e._v(" "),a("td",[a("code",[e._v("v0.0.x")])])])])]),e._v(" "),a("h5",{attrs:{id:"getting-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-2"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Start Gaia to begin syncing with the "),a("code",[e._v("skip-invariants")]),e._v(" flag. For more information on this see "),a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}}),e._v(" "),a("p",[e._v("The node will begin rebuilding state until it hits the first upgrade height at block "),a("code",[e._v("6910000")]),e._v(". If Cosmovisor is set up then there's nothing else to do besides wait, otherwise the node operator will need to perform the manual upgrade twice.")])],1),e._v(" "),a("tab",{attrs:{name:"State Sync"}},[a("h3",{attrs:{id:"state-sync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),a("p",[e._v("State Sync is an efficient and fast way to bootstrap a new node, and it works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. For more information, see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's State Sync docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is "),a("code",[e._v("1000")]),e._v(" blocks, it is advised to choose something close to "),a("code",[e._v("current height - 1000")]),e._v(".")]),e._v(" "),a("p",[e._v("With the block height and hash selected, update the configuration in "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" to set "),a("code",[e._v("enable = true")]),e._v(", and populate the "),a("code",[e._v("trust_height")]),e._v(" and "),a("code",[e._v("trust_hash")]),e._v(". Node operators can configure the rpc servers to a preferred provider, but there must be at least two entries. It is important that these are two rpc servers the node operator trusts to verify component parts of the chain state. While not recommended, uniqueness is not currently enforced, so it is possible to duplicate the same server in the list and still sync successfully.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": In the future, the RPC server requirement will be deprecated as state sync is "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/issues/6491",target:"_blank",rel:"noopener noreferrer"}},[e._v("moved to the p2p layer in Tendermint 0.38"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",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:"toml",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 above. 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(" and so on.")]),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("p",[e._v("Repeat the process for newer versions of the Gaia application at the "),a("a",{attrs:{href:"#release-history"}},[e._v("stated block heights above")]),e._v(".")]),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],{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. The most recent upgrade is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v14-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v14.1.x"),a("OutboundLink")],1),e._v(" Dec 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("h2",{attrs:{id:"release-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#release-history"}},[e._v("#")]),e._v(" Release History")]),e._v(" "),a("ul",[a("li",[e._v("use "),a("code",[e._v("gaia v5.0.x")]),e._v(" (Delta) for queries of state between height "),a("code",[e._v("6,910,000")]),e._v(" and "),a("code",[e._v("8,695,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v6.0.x")]),e._v(" (Vega) between "),a("code",[e._v("8,695,000")]),e._v(" and "),a("code",[e._v("10,085,397")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v7.0.x")]),e._v(" (Theta) between "),a("code",[e._v("10,085,397")]),e._v(" and "),a("code",[e._v("14,099,412")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v8.0.x")]),e._v(" (Rho) between "),a("code",[e._v("14,099,412")]),e._v(" and "),a("code",[e._v("14,470,501")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.0.x")]),e._v(" (Lambda) between "),a("code",[e._v("14,470,501")]),e._v(" and "),a("code",[e._v("15,213,800")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.1.x")]),e._v(" between "),a("code",[e._v("15,213,800")]),e._v(" and "),a("code",[e._v("15,816,200")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v10.0.x")]),e._v(" between "),a("code",[e._v("15,816,200")]),e._v(" and "),a("code",[e._v("16,596,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v11.x")]),e._v(" between "),a("code",[e._v("16,596,000")]),e._v(" and "),a("code",[e._v("16,985,500")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v12.x")]),e._v(" between "),a("code",[e._v("16,985,500")]),e._v(" and "),a("code",[e._v("17,380,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v13.x")]),e._v(" between "),a("code",[e._v("17,380,000")]),e._v(" and "),a("code",[e._v("18,262,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v14.1.x")]),e._v(" from "),a("code",[e._v("18,262,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 bootstrap 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:"#release-history"}},[e._v("Release History")])]),e._v(" "),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:"toml",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:"toml",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBnUlBDIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[e._v("#")]),e._v(" Sync Options")]),e._v(" "),a("p",[e._v("There are three main ways to sync a node on the Cosmos Hub; Blocksync, State Sync, and Quicksync. See the matrix below for the Hub's recommended setup configuration. This guide will focus on syncing two types of common nodes; full and pruned. For further information on syncing to run a validator node, see the section on "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validators"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("There are two types of concerns when deciding which sync option is right. "),a("em",[e._v("Data integrity")]),e._v(" refers to how reliable the data provided by a subset of network participants is. "),a("em",[e._v("Historical data")]),e._v(" refers to how robust and inclusive the chain’s history is.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th"),e._v(" "),a("th",[e._v("Low Data Integrity")]),e._v(" "),a("th",[e._v("High Data Integrity")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Minimal Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Pruned")]),e._v(" "),a("td",[e._v("State Sync")])]),e._v(" "),a("tr",[a("td",[e._v("Moderate Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Default")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[e._v("Full Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Archive")]),e._v(" "),a("td",[e._v("Blocksync")])])])]),e._v(" "),a("p",[e._v("If a node operator wishes to run a full node, it is possible to start from scratch but will take a significant amount of time to catch up. Node operators not concerned with rebuilding original state from the beginning of "),a("code",[e._v("cosmoshub-4")]),e._v(" can also leverage "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v("'s available archive history.")]),e._v(" "),a("p",[e._v("For operators interested in bootstrapping a pruned node, either "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v(" or "),a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")]),e._v(" would be sufficient.")]),e._v(" "),a("p",[e._v("Make sure to consult the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware")]),e._v(" section for guidance on the best configuration for the type of node operating.")]),e._v(" "),a("tabs",{attrs:{options:{useUrlFragment:!1}}},[a("tab",{attrs:{name:"Blocksync"}},[a("h3",{attrs:{id:"blocksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksync"}},[e._v("#")]),e._v(" Blocksync")]),e._v(" "),a("p",[e._v("Blocksync is faster than traditional consensus and syncs the chain from genesis by downloading blocks and verifying against the merkle tree of validators. For more information see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's Fastsync Docs"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("When syncing via Blocksync, node operators will either need to manually upgrade the chain or set up "),a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")]),e._v(" to upgrade automatically.")]),e._v(" "),a("p",[e._v("For more information on performing the manual upgrades, see "),a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")]),e._v(".")]),e._v(" "),a("p",[e._v("It is possible to sync from previous versions of the Cosmos Hub. See the matrix below for the correct "),a("code",[e._v("gaia")]),e._v(" version. See the "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet archive"),a("OutboundLink")],1),e._v(" for historical genesis files.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Chain Id")]),e._v(" "),a("th",[e._v("Gaia Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("cosmoshub-4")])]),e._v(" "),a("td",[a("code",[e._v("v4.2.1")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-3")])]),e._v(" "),a("td",[a("code",[e._v("v2.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-2")])]),e._v(" "),a("td",[a("code",[e._v("v1.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-1")])]),e._v(" "),a("td",[a("code",[e._v("v0.0.x")])])])])]),e._v(" "),a("h5",{attrs:{id:"getting-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-2"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Start Gaia to begin syncing with the "),a("code",[e._v("skip-invariants")]),e._v(" flag. For more information on this see "),a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}}),e._v(" "),a("p",[e._v("The node will begin rebuilding state until it hits the first upgrade height at block "),a("code",[e._v("6910000")]),e._v(". If Cosmovisor is set up then there's nothing else to do besides wait, otherwise the node operator will need to perform the manual upgrade twice.")])],1),e._v(" "),a("tab",{attrs:{name:"State Sync"}},[a("h3",{attrs:{id:"state-sync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),a("p",[e._v("State Sync is an efficient and fast way to bootstrap a new node, and it works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. For more information, see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's State Sync docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is "),a("code",[e._v("1000")]),e._v(" blocks, it is advised to choose something close to "),a("code",[e._v("current height - 1000")]),e._v(".")]),e._v(" "),a("p",[e._v("With the block height and hash selected, update the configuration in "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" to set "),a("code",[e._v("enable = true")]),e._v(", and populate the "),a("code",[e._v("trust_height")]),e._v(" and "),a("code",[e._v("trust_hash")]),e._v(". Node operators can configure the rpc servers to a preferred provider, but there must be at least two entries. It is important that these are two rpc servers the node operator trusts to verify component parts of the chain state. While not recommended, uniqueness is not currently enforced, so it is possible to duplicate the same server in the list and still sync successfully.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": In the future, the RPC server requirement will be deprecated as state sync is "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/issues/6491",target:"_blank",rel:"noopener noreferrer"}},[e._v("moved to the p2p layer in Tendermint 0.38"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",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:"toml",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 above. 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(" and so on.")]),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("p",[e._v("Repeat the process for newer versions of the Gaia application at the "),a("a",{attrs:{href:"#release-history"}},[e._v("stated block heights above")]),e._v(".")]),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/122.4b2c8c4d.js b/main/assets/js/122.c413b0f5.js similarity index 98% rename from main/assets/js/122.4b2c8c4d.js rename to main/assets/js/122.c413b0f5.js index 598b2d83407..bf7c6127edb 100644 --- a/main/assets/js/122.4b2c8c4d.js +++ b/main/assets/js/122.c413b0f5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{583:function(e,a,t){"use strict";t.r(a);var l=t(1),d=Object(l.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"live-upgrade-tutorial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#live-upgrade-tutorial"}},[e._v("#")]),e._v(" Live Upgrade Tutorial")]),e._v(" "),t("p",[e._v("This document demonstrates how a live upgrade can be performed on-chain through a\ngovernance process.")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Start the network and trigger upgrade")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBzdGFydCBhIGdhaWEgYXBwbGljYXRpb24gZnVsbC1ub2RlCiQgZ2FpYWQgc3RhcnQKCiMgc2V0IHVwIHRoZSBjbGkgY29uZmlnCiQgZ2FpYWQgY29uZmlnIGNoYWluLWlkIHRlc3RpbmcKCiMgY3JlYXRlIGFuIHVwZ3JhZGUgZ292ZXJuYW5jZSBwcm9wb3NhbAokIGdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgc29mdHdhcmUtdXBncmFkZSAmbHQ7cGxhbi1uYW1lJmd0OyBcCi0tdGl0bGUgJmx0O3Byb3Bvc2FsLXRpdGxlJmd0OyAtLWRlc2NyaXB0aW9uICZsdDtwcm9wb3NhbC1kZXNjcmlwdGlvbiZndDsgXAotLWZyb20gJmx0O25hbWUtb3Ita2V5Jmd0OyAtLXVwZ3JhZGUtaGVpZ2h0ICZsdDtkZXNpcmVkLXVwZ3JhZGUtaGVpZ2h0Jmd0OyAtLWRlcG9zaXQgMTAwMDAwMDBzdGFrZQoKIyBvbmNlIHRoZSBwcm9wb3NhbCBwYXNzZXMgeW91IGNhbiBxdWVyeSB0aGUgcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Performing an upgrade")]),e._v(" "),t("p",[e._v("Assuming the proposal passes the chain will stop at given upgrade height.")]),e._v(" "),t("p",[e._v("You can stop and start the original binary all you want, but "),t("strong",[e._v("it will refuse to\nrun after the upgrade height")]),e._v(".")]),e._v(" "),t("p",[e._v("We need a new binary with the upgrade handler installed. The logs should look\nsomething like:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVsyMDE5LTExLTA1fDEyOjQ0OjE4LjkxM10gVVBHUkFERSAmcXVvdDsmbHQ7cGxhbi1uYW1lJmd0OyZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDs6ICAgICAgIG1vZHVsZT1tYWluCkVbMjAxOS0xMS0wNXwxMjo0NDoxOC45MTRdIENPTlNFTlNVUyBGQUlMVVJFISEhCi4uLgo="}}),e._v(" "),t("p",[e._v("Note that the process will hang indefinitely (doesn't exit to avoid restart loops). So, you must\nmanually kill the process and replace it with a new binary. Do so now with "),t("code",[e._v("Ctrl+C")]),e._v(" or "),t("code",[e._v("killall gaiad")]),e._v(".")]),e._v(" "),t("p",[e._v("In "),t("code",[e._v("gaia/app/app.go")]),e._v(", after "),t("code",[e._v("upgrade.Keeper")]),e._v(" is initialized and set in the app, set the\ncorresponding upgrade "),t("code",[e._v("Handler")]),e._v(" with the correct "),t("code",[e._v("")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ICAgIGFwcC51cGdyYWRlS2VlcGVyLlNldFVwZ3JhZGVIYW5kbGVyKCZxdW90OyZsdDtwbGFuLW5hbWUmZ3Q7JnF1b3Q7LCBmdW5jKGN0eCBzZGsuQ29udGV4dCwgcGxhbiB1cGdyYWRlLlBsYW4pIHsKICAgICAgICAvLyBjdXN0b20gbG9naWMgYWZ0ZXIgdGhlIG5ldHdvcmsgdXBncmFkZSBoYXMgYmVlbiBleGVjdXRlZAogICAgfSkK"}}),e._v(" "),t("p",[e._v("Note that we panic on any error - this would cause the upgrade to fail if the\nmigration could not be run, and no node would advance - allowing a manual recovery.\nIf we ignored the errors, then we would proceed with an incomplete upgrade and\nhave a very difficult time every recovering the proper state.")]),e._v(" "),t("p",[e._v("Now, compile the new binary and run the upgraded code to complete the upgrade:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBjcmVhdGUgYSBuZXcgYmluYXJ5IG9mIGdhaWEgd2l0aCB0aGUgYWRkZWQgdXBncmFkZSBoYW5kbGVyCiQgbWFrZSBpbnN0YWxsCgojIFJlc3RhcnQgdGhlIGNoYWluIHVzaW5nIHRoZSBuZXcgYmluYXJ5LiBZb3Ugc2hvdWxkIHNlZSB0aGUgY2hhaW4gcmVzdW1lIGZyb20KIyB0aGUgdXBncmFkZSBoZWlnaHQ6CiMgYElbMjAxOS0xMS0wNXwxMjo0ODoxNS4xODRdIGFwcGx5aW5nIHVwZ3JhZGUgJmx0O3BsYW4tbmFtZSZndDsgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDsgICAgICBtb2R1bGU9bWFpbmAKJCBnYWlhZCBzdGFydAoKIyB2ZXJpZnkgdGhlcmUgaXMgbm8gcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCgojIHZlcmlmeSB5b3UgY2FuIHF1ZXJ5IHRoZSBibG9jayBoZWFkZXIgb2YgdGhlIGNvbXBsZXRlZCB1cGdyYWRlCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBhcHBsaWVkICZsdDtwbGFuLW5hbWUmZ3Q7Cg=="}})],1)])])}),[],!1,null,null,null);a.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{585:function(e,a,t){"use strict";t.r(a);var l=t(1),d=Object(l.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"live-upgrade-tutorial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#live-upgrade-tutorial"}},[e._v("#")]),e._v(" Live Upgrade Tutorial")]),e._v(" "),t("p",[e._v("This document demonstrates how a live upgrade can be performed on-chain through a\ngovernance process.")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Start the network and trigger upgrade")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBzdGFydCBhIGdhaWEgYXBwbGljYXRpb24gZnVsbC1ub2RlCiQgZ2FpYWQgc3RhcnQKCiMgc2V0IHVwIHRoZSBjbGkgY29uZmlnCiQgZ2FpYWQgY29uZmlnIGNoYWluLWlkIHRlc3RpbmcKCiMgY3JlYXRlIGFuIHVwZ3JhZGUgZ292ZXJuYW5jZSBwcm9wb3NhbAokIGdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgc29mdHdhcmUtdXBncmFkZSAmbHQ7cGxhbi1uYW1lJmd0OyBcCi0tdGl0bGUgJmx0O3Byb3Bvc2FsLXRpdGxlJmd0OyAtLWRlc2NyaXB0aW9uICZsdDtwcm9wb3NhbC1kZXNjcmlwdGlvbiZndDsgXAotLWZyb20gJmx0O25hbWUtb3Ita2V5Jmd0OyAtLXVwZ3JhZGUtaGVpZ2h0ICZsdDtkZXNpcmVkLXVwZ3JhZGUtaGVpZ2h0Jmd0OyAtLWRlcG9zaXQgMTAwMDAwMDBzdGFrZQoKIyBvbmNlIHRoZSBwcm9wb3NhbCBwYXNzZXMgeW91IGNhbiBxdWVyeSB0aGUgcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Performing an upgrade")]),e._v(" "),t("p",[e._v("Assuming the proposal passes the chain will stop at given upgrade height.")]),e._v(" "),t("p",[e._v("You can stop and start the original binary all you want, but "),t("strong",[e._v("it will refuse to\nrun after the upgrade height")]),e._v(".")]),e._v(" "),t("p",[e._v("We need a new binary with the upgrade handler installed. The logs should look\nsomething like:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVsyMDE5LTExLTA1fDEyOjQ0OjE4LjkxM10gVVBHUkFERSAmcXVvdDsmbHQ7cGxhbi1uYW1lJmd0OyZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDs6ICAgICAgIG1vZHVsZT1tYWluCkVbMjAxOS0xMS0wNXwxMjo0NDoxOC45MTRdIENPTlNFTlNVUyBGQUlMVVJFISEhCi4uLgo="}}),e._v(" "),t("p",[e._v("Note that the process will hang indefinitely (doesn't exit to avoid restart loops). So, you must\nmanually kill the process and replace it with a new binary. Do so now with "),t("code",[e._v("Ctrl+C")]),e._v(" or "),t("code",[e._v("killall gaiad")]),e._v(".")]),e._v(" "),t("p",[e._v("In "),t("code",[e._v("gaia/app/app.go")]),e._v(", after "),t("code",[e._v("upgrade.Keeper")]),e._v(" is initialized and set in the app, set the\ncorresponding upgrade "),t("code",[e._v("Handler")]),e._v(" with the correct "),t("code",[e._v("")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ICAgIGFwcC51cGdyYWRlS2VlcGVyLlNldFVwZ3JhZGVIYW5kbGVyKCZxdW90OyZsdDtwbGFuLW5hbWUmZ3Q7JnF1b3Q7LCBmdW5jKGN0eCBzZGsuQ29udGV4dCwgcGxhbiB1cGdyYWRlLlBsYW4pIHsKICAgICAgICAvLyBjdXN0b20gbG9naWMgYWZ0ZXIgdGhlIG5ldHdvcmsgdXBncmFkZSBoYXMgYmVlbiBleGVjdXRlZAogICAgfSkK"}}),e._v(" "),t("p",[e._v("Note that we panic on any error - this would cause the upgrade to fail if the\nmigration could not be run, and no node would advance - allowing a manual recovery.\nIf we ignored the errors, then we would proceed with an incomplete upgrade and\nhave a very difficult time every recovering the proper state.")]),e._v(" "),t("p",[e._v("Now, compile the new binary and run the upgraded code to complete the upgrade:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBjcmVhdGUgYSBuZXcgYmluYXJ5IG9mIGdhaWEgd2l0aCB0aGUgYWRkZWQgdXBncmFkZSBoYW5kbGVyCiQgbWFrZSBpbnN0YWxsCgojIFJlc3RhcnQgdGhlIGNoYWluIHVzaW5nIHRoZSBuZXcgYmluYXJ5LiBZb3Ugc2hvdWxkIHNlZSB0aGUgY2hhaW4gcmVzdW1lIGZyb20KIyB0aGUgdXBncmFkZSBoZWlnaHQ6CiMgYElbMjAxOS0xMS0wNXwxMjo0ODoxNS4xODRdIGFwcGx5aW5nIHVwZ3JhZGUgJmx0O3BsYW4tbmFtZSZndDsgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDsgICAgICBtb2R1bGU9bWFpbmAKJCBnYWlhZCBzdGFydAoKIyB2ZXJpZnkgdGhlcmUgaXMgbm8gcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCgojIHZlcmlmeSB5b3UgY2FuIHF1ZXJ5IHRoZSBibG9jayBoZWFkZXIgb2YgdGhlIGNvbXBsZXRlZCB1cGdyYWRlCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBhcHBsaWVkICZsdDtwbGFuLW5hbWUmZ3Q7Cg=="}})],1)])])}),[],!1,null,null,null);a.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/123.17b3589f.js b/main/assets/js/123.9cc7b47f.js similarity index 99% rename from main/assets/js/123.17b3589f.js rename to main/assets/js/123.9cc7b47f.js index ba6ad4707da..a7ef5e94feb 100644 --- a/main/assets/js/123.17b3589f.js +++ b/main/assets/js/123.9cc7b47f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{585:function(e,t,a){"use strict";a.r(t);var o=a(1),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"upgrade-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-your-node"}},[e._v("#")]),e._v(" Upgrade Your Node")]),e._v(" "),a("p",[e._v("This document describes the upgrade procedure of a "),a("code",[e._v("gaiad")]),e._v(" full-node to a new version.")]),e._v(" "),a("h2",{attrs:{id:"cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor"}},[e._v("#")]),e._v(" Cosmovisor")]),e._v(" "),a("p",[e._v("The Cosmos SDK provides a convenient process manager that wraps around the "),a("code",[e._v("gaiad")]),e._v(" binary and can automatically swap in new binaries upon a successful governance upgrade proposal. Cosmovisor is entirely optional but recommended. More information can be found in "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network docs"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.0/cosmovisor/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk/cosmovisor/readme"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),a("p",[e._v("To get started with Cosmovisor first download it")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3IK"}}),e._v(" "),a("p",[e._v("Set up the environment variables")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAmcXVvdDsjIFNldHVwIENvc21vdmlzb3ImcXVvdDsgJmd0OyZndDsgfi8ucHJvZmlsZQplY2hvICZxdW90O2V4cG9ydCBEQUVNT05fTkFNRT1nYWlhZCZxdW90OyAmZ3Q7Jmd0OyB+Ly5wcm9maWxlCmVjaG8gJnF1b3Q7ZXhwb3J0IERBRU1PTl9IT01FPSRIT01FLy5nYWlhJnF1b3Q7ICZndDsmZ3Q7IH4vLnByb2ZpbGUKc291cmNlIH4vLnByb2ZpbGUK"}}),e._v(" "),a("p",[e._v("Create the appropriate directories")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzCm1rZGlyIC1wIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8KY3AgJCh3aGljaCBnYWlhZCkgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluLwoKIyB2ZXJpZnkgdGhlIHNldHVwLiAKIyBJdCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZlcnNpb24gYXMgZ2FpYWQKY29zbW92aXNvciB2ZXJzaW9uCg=="}}),e._v(" "),a("p",[e._v("Now "),a("code",[e._v("gaiad")]),e._v(" can start by running")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y29zbW92aXNvciBzdGFydAo="}}),e._v(" "),a("h3",{attrs:{id:"preparing-an-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-an-upgrade"}},[e._v("#")]),e._v(" Preparing an Upgrade")]),e._v(" "),a("p",[e._v("Cosmovisor will continually poll the "),a("code",[e._v("$DAEMON_HOME/data/upgrade-info.json")]),e._v(" for new upgrade instructions. When an upgrade is ready, node operators can download the new binary and place it under "),a("code",[e._v("$DAEMON_HOME/cosmovisor/upgrades//bin")]),e._v(" where "),a("code",[e._v("")]),e._v(" is the URI-encoded name of the upgrade as specified in the upgrade module plan.")]),e._v(" "),a("p",[e._v("It is possible to have Cosmovisor automatically download the new binary. To do this set the following environment variable.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),a("h2",{attrs:{id:"manual-software-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#manual-software-upgrade"}},[e._v("#")]),e._v(" Manual Software Upgrade")]),e._v(" "),a("p",[e._v("First, stop your instance of "),a("code",[e._v("gaiad")]),e._v(". Next, upgrade the software:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgZ2FpYQpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgJmx0O25ld192ZXJzaW9uJmd0OwptYWtlIGluc3RhbGwK"}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("NOTE")]),e._v(": If you have issues at this step, please check that you have the latest stable version of GO installed.")])]),e._v(" "),a("p",[e._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(" for details on which version is needed for which public testnet, and the "),a("a",{attrs:{href:"https://github.com/cosmos/Gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia release page"),a("OutboundLink")],1),e._v(" for details on each release.")]),e._v(" "),a("p",[e._v("Your full node has been cleanly upgraded! If there are no breaking changes then you can simply restart the node by running:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),a("h2",{attrs:{id:"upgrade-genesis-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-genesis-file"}},[e._v("#")]),e._v(" Upgrade Genesis File")]),e._v(" "),a("p",[e._v("To upgrade the genesis file, you can either fetch it from a trusted source or export it locally.")]),e._v(" "),a("h3",{attrs:{id:"fetching-from-a-trusted-source"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetching-from-a-trusted-source"}},[e._v("#")]),e._v(" Fetching from a Trusted Source")]),e._v(" "),a("p",[e._v("If you are joining the mainnet, fetch the genesis from the "),a("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet repo"),a("OutboundLink")],1),e._v(". If you are joining a public testnet, fetch the genesis from the appropriate testnet in the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(". Otherwise, fetch it from your trusted source.")]),e._v(" "),a("p",[e._v("Save the new genesis as "),a("code",[e._v("new_genesis.json")]),e._v(". Then replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("Then, go to the "),a("a",{attrs:{href:"#reset-data"}},[e._v("reset data")]),e._v(" section.")]),e._v(" "),a("h3",{attrs:{id:"exporting-state-to-a-new-genesis-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state-to-a-new-genesis-locally"}},[e._v("#")]),e._v(" Exporting State to a New Genesis Locally")]),e._v(" "),a("p",[e._v("If you were running a node in the previous version of the network and want to build your new genesis locally from a state of this previous network, use the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ7ZXhwb3J0LWhlaWdodCZndDsgJmd0OyBuZXdfZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("The command above take a state at a certain height "),a("code",[e._v("")]),e._v(" and turns it into a new genesis file that can be used to start a new network.")]),e._v(" "),a("p",[e._v("Then, replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),e._v(" "),a("p",[e._v("At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the "),a("code",[e._v("Account")]),e._v(" type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/02c6c9fafd58da88550ab4d7d494724a477c8a68/contrib/migrate/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"reset-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-data"}},[e._v("#")]),e._v(" Reset Data")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",[e._v("If you are running a "),a("strong",[e._v("validator node")]),e._v(" on the mainnet, always be careful when doing "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(". You should never use this command if you are not switching "),a("code",[e._v("chain-id")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("IMPORTANT")]),e._v(" "),a("p",[e._v("Make sure that every node has a unique "),a("code",[e._v("priv_validator.json")]),e._v(". Do not copy the "),a("code",[e._v("priv_validator.json")]),e._v(" from an old node to multiple new nodes. Running two nodes with the same "),a("code",[e._v("priv_validator.json")]),e._v(" will cause you to get slashed due to double signing!")])]),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],{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("p",[e._v("To upgrade the genesis file, you can either fetch it from a trusted source or export it locally.")]),e._v(" "),a("h3",{attrs:{id:"fetching-from-a-trusted-source"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetching-from-a-trusted-source"}},[e._v("#")]),e._v(" Fetching from a Trusted Source")]),e._v(" "),a("p",[e._v("If you are joining the mainnet, fetch the genesis from the "),a("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet repo"),a("OutboundLink")],1),e._v(". If you are joining a public testnet, fetch the genesis from the appropriate testnet in the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(". Otherwise, fetch it from your trusted source.")]),e._v(" "),a("p",[e._v("Save the new genesis as "),a("code",[e._v("new_genesis.json")]),e._v(". Then replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("Then, go to the "),a("a",{attrs:{href:"#reset-data"}},[e._v("reset data")]),e._v(" section.")]),e._v(" "),a("h3",{attrs:{id:"exporting-state-to-a-new-genesis-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state-to-a-new-genesis-locally"}},[e._v("#")]),e._v(" Exporting State to a New Genesis Locally")]),e._v(" "),a("p",[e._v("If you were running a node in the previous version of the network and want to build your new genesis locally from a state of this previous network, use the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ7ZXhwb3J0LWhlaWdodCZndDsgJmd0OyBuZXdfZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("The command above take a state at a certain height "),a("code",[e._v("")]),e._v(" and turns it into a new genesis file that can be used to start a new network.")]),e._v(" "),a("p",[e._v("Then, replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),e._v(" "),a("p",[e._v("At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the "),a("code",[e._v("Account")]),e._v(" type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/02c6c9fafd58da88550ab4d7d494724a477c8a68/contrib/migrate/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"reset-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-data"}},[e._v("#")]),e._v(" Reset Data")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",[e._v("If you are running a "),a("strong",[e._v("validator node")]),e._v(" on the mainnet, always be careful when doing "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(". You should never use this command if you are not switching "),a("code",[e._v("chain-id")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("IMPORTANT")]),e._v(" "),a("p",[e._v("Make sure that every node has a unique "),a("code",[e._v("priv_validator.json")]),e._v(". Do not copy the "),a("code",[e._v("priv_validator.json")]),e._v(" from an old node to multiple new nodes. Running two nodes with the same "),a("code",[e._v("priv_validator.json")]),e._v(" will cause you to get slashed due to double signing!")])]),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/125.4ffb33bb.js b/main/assets/js/125.b31b63a8.js similarity index 91% rename from main/assets/js/125.4ffb33bb.js rename to main/assets/js/125.b31b63a8.js index 5710b24c39f..96dc6b954e1 100644 --- a/main/assets/js/125.4ffb33bb.js +++ b/main/assets/js/125.b31b63a8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{589:function(t,e,i){"use strict";i.r(e);var r=i(1),n=Object(r.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"interchain-security"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interchain-security"}},[this._v("#")]),this._v(" Interchain Security")]),this._v(" "),e("p",[this._v("This folder contains an overview of Interchain Security, one of the core features of the Cosmos Hub.")]),this._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/interchain-security/interchain-security.html"}},[this._v("Interchain Security")])],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{588:function(t,e,i){"use strict";i.r(e);var r=i(1),n=Object(r.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"interchain-security"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interchain-security"}},[this._v("#")]),this._v(" Interchain Security")]),this._v(" "),e("p",[this._v("This folder contains an overview of Interchain Security, one of the core features of the Cosmos Hub.")]),this._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/interchain-security/interchain-security.html"}},[this._v("Interchain Security")])],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/126.1fa6186b.js b/main/assets/js/126.709988cf.js similarity index 97% rename from main/assets/js/126.1fa6186b.js rename to main/assets/js/126.709988cf.js index 6d4cc7689ef..7affe19e01b 100644 --- a/main/assets/js/126.1fa6186b.js +++ b/main/assets/js/126.709988cf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{588:function(e,r,t){"use strict";t.r(r);var a=t(1),n=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"interchain-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#interchain-security"}},[e._v("#")]),e._v(" Interchain Security")]),e._v(" "),t("p",[e._v("The Interchain Security feature, brings to the Cosmos Hub a shared security model, where the Cosmos Hub validators, also validate on consumer chains. This is valuable for consumer chains, as consumer chains can focus on product-market fit, rather than business and operational agreements in bringing together a validator set. As part of this agreement, consumer chains pay for the security by distributing a portion of the consumer chain revenue to Hub token holders.")]),e._v(" "),t("p",[e._v("All potential chains are onboarded as consumer chains, via Hub Governance, with the feedback from the Hub community.")]),e._v(" "),t("p",[e._v("Currently the Cosmos Hub has the following two Consumer Chains.")]),e._v(" "),t("h2",{attrs:{id:"neutron"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neutron"}},[e._v("#")]),e._v(" Neutron")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://neutron.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Neutron"),t("OutboundLink")],1),e._v(", is a smart contracting platform, that was the first consumer chain onboarded."),t("br"),e._v("\nNeutron was onboarded as a consumer chain in May 2023, see Hub "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/792",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 792"),t("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),t("h2",{attrs:{id:"stride"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stride"}},[e._v("#")]),e._v(" Stride")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.stride.zone/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stride"),t("OutboundLink")],1),e._v(", is a liquid staking provider, which aims to unlock liquidity for Cosmos Hub token holders."),t("br"),e._v("\nStride was onboarded as a consumer chain in July 2023, see Hub "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/799",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 799"),t("OutboundLink")],1),e._v(" for more details.")])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{591:function(e,r,t){"use strict";t.r(r);var a=t(1),n=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"interchain-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#interchain-security"}},[e._v("#")]),e._v(" Interchain Security")]),e._v(" "),t("p",[e._v("The Interchain Security feature, brings to the Cosmos Hub a shared security model, where the Cosmos Hub validators, also validate on consumer chains. This is valuable for consumer chains, as consumer chains can focus on product-market fit, rather than business and operational agreements in bringing together a validator set. As part of this agreement, consumer chains pay for the security by distributing a portion of the consumer chain revenue to Hub token holders.")]),e._v(" "),t("p",[e._v("All potential chains are onboarded as consumer chains, via Hub Governance, with the feedback from the Hub community.")]),e._v(" "),t("p",[e._v("Currently the Cosmos Hub has the following two Consumer Chains.")]),e._v(" "),t("h2",{attrs:{id:"neutron"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neutron"}},[e._v("#")]),e._v(" Neutron")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://neutron.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Neutron"),t("OutboundLink")],1),e._v(", is a smart contracting platform, that was the first consumer chain onboarded."),t("br"),e._v("\nNeutron was onboarded as a consumer chain in May 2023, see Hub "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/792",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 792"),t("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),t("h2",{attrs:{id:"stride"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stride"}},[e._v("#")]),e._v(" Stride")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.stride.zone/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stride"),t("OutboundLink")],1),e._v(", is a liquid staking provider, which aims to unlock liquidity for Cosmos Hub token holders."),t("br"),e._v("\nStride was onboarded as a consumer chain in July 2023, see Hub "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/799",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 799"),t("OutboundLink")],1),e._v(" for more details.")])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/127.4bfaef7f.js b/main/assets/js/127.f0312d1e.js similarity index 97% rename from main/assets/js/127.4bfaef7f.js rename to main/assets/js/127.f0312d1e.js index 3c46e03e1ef..b1b1eacac78 100644 --- a/main/assets/js/127.4bfaef7f.js +++ b/main/assets/js/127.f0312d1e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{591: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([[127],{589: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/131.1532bb4a.js b/main/assets/js/131.463699b6.js similarity index 99% rename from main/assets/js/131.1532bb4a.js rename to main/assets/js/131.463699b6.js index 3deba31d2ab..77dbb2afc42 100644 --- a/main/assets/js/131.1532bb4a.js +++ b/main/assets/js/131.463699b6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{595: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([[131],{594: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/132.e4b0acf4.js b/main/assets/js/132.1dc08ace.js similarity index 97% rename from main/assets/js/132.e4b0acf4.js rename to main/assets/js/132.1dc08ace.js index c2c579277fd..0db8267f90b 100644 --- a/main/assets/js/132.e4b0acf4.js +++ b/main/assets/js/132.1dc08ace.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{594: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([[132],{597: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/133.46364135.js b/main/assets/js/133.4b0e345d.js similarity index 98% rename from main/assets/js/133.46364135.js rename to main/assets/js/133.4b0e345d.js index 096de1f74e6..bed6dfe4f9b 100644 --- a/main/assets/js/133.46364135.js +++ b/main/assets/js/133.4b0e345d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{597: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([[133],{595: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/138.ebac6d83.js b/main/assets/js/138.fb382fd7.js similarity index 99% rename from main/assets/js/138.ebac6d83.js rename to main/assets/js/138.fb382fd7.js index c9ba03247c3..d4693e84481 100644 --- a/main/assets/js/138.ebac6d83.js +++ b/main/assets/js/138.fb382fd7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{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([[138],{497: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/15.435f2a8f.js b/main/assets/js/15.f4461b1c.js similarity index 96% rename from main/assets/js/15.435f2a8f.js rename to main/assets/js/15.f4461b1c.js index 9561df08d03..c308b2929bd 100644 --- a/main/assets/js/15.435f2a8f.js +++ b/main/assets/js/15.f4461b1c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{408:function(t,s,i){},437:function(t,s,i){"use strict";i(408)},519: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)},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 diff --git a/main/assets/js/150.8db4928b.js b/main/assets/js/150.11cae8f9.js similarity index 99% rename from main/assets/js/150.8db4928b.js rename to main/assets/js/150.11cae8f9.js index b9f813f9549..9d58fd17920 100644 --- a/main/assets/js/150.8db4928b.js +++ b/main/assets/js/150.11cae8f9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{551:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-2-upgrade-instructions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("p",[e._v("The following document describes the necessary steps involved that full-node operators\nmust take in order to upgrade from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(". The Tendermint team\nwill post an official updated genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),o("p",[e._v("There is a strong social consensus around proposal "),o("code",[e._v("Cosmos Hub 3 Upgrade Proposal E")]),e._v("\non "),o("code",[e._v("cosmoshub-2")]),e._v(". This indicates that the upgrade procedure should be performed\non "),o("code",[e._v("December 11, 2019 at or around 14:27 UTC")]),e._v(" on block "),o("code",[e._v("2,902,000")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])])])]),e._v(" "),o("h2",{attrs:{id:"preliminary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),o("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),o("code",[e._v("cosmoshub-2")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),o("p",[e._v("First and foremost, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" and the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application have been split into separate\nrepositories. This allows for both the Cosmos SDK and Gaia to evolve naturally\nand independently. Thus, any future "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("releases"),o("OutboundLink")],1),e._v("\nof Gaia going forward, including this one, will be built and tagged from this\nrepository not the Cosmos SDK.")]),e._v(" "),o("p",[e._v("Since the Cosmos SDK and Gaia have now been split into separate repositories, their\nversioning will also naturally diverge. In an attempt to decrease community confusion and strive for\nsemantic versioning, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" will continue\non its current versioning path (i.e. v0.36.x ) and the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v("\napplication will become v2.0.x.")]),e._v(" "),o("p",[o("strong",[o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application v2.0.3 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"major-updates"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),o("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level in July's Cosmos development update found\n"),o("a",{attrs:{href:"https://blog.cosmos.network/cosmos-development-update-july-2019-8df2ade5ba0a",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Tagging/Events")]),e._v(": The entire system of what we used to call tags has been replaced by a more\nrobust and flexible system called events. Any client that depended on querying or subscribing to\ntags should take note on the new format as old queries will not work and must be updated. More in\ndepth docs on the events system can be found "),o("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/master/rpc/core/events.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".\nIn addition, each module documents its own events in the specs (e.g. "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.36.0/docs/spec/slashing/06_events.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("slashing"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("li",[o("strong",[e._v("Height Queries")]),e._v(": Both the CLI and REST clients now (re-)enable height queries via the\n"),o("code",[e._v("--height")]),e._v(" and "),o("code",[e._v("?height")]),e._v(" arguments respectively. An important note to keep in mind are that height\nqueries against pruning nodes will return errors when a pruned height is queried against. When no\nheight is provided, the latest height will be used by default keeping current behavior intact. In\naddition, many REST responses now wrap the query results in a new structure "),o("code",[e._v('{"height": ..., "result": ...}')]),e._v(".\nThat is, the height is now returned to the client for which the resource was queried at.")])]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),o("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),o("h2",{attrs:{id:"recovery"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),o("p",[e._v("Prior to exporting "),o("code",[e._v("cosmoshub-2")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),o("code",[e._v(".gaia")]),e._v(" directories.")]),e._v(" "),o("p",[e._v("It is critically important to back-up the "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),o("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\nv0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),o("h2",{attrs:{id:"upgrade-procedure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running v0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("ul",[o("li",[e._v("The version/commit hash of Gaia v2.0.3: "),o("code",[e._v("2f6783e298f25ff4e12cb84549777053ab88749a")])]),e._v(" "),o("li",[e._v("The upgrade height as agreed upon by governance: "),o("strong",[e._v("2,902,000")])]),e._v(" "),o("li",[e._v("You may obtain the canonical UTC timestamp of the exported block by any of the following methods:\n"),o("ul",[o("li",[e._v("Block explorer")]),e._v(" "),o("li",[e._v("Through manually querying an RPC node (e.g. "),o("code",[e._v("/block?height=2902000")]),e._v(")")]),e._v(" "),o("li",[e._v("Through manually querying a Gaia REST client (e.g. "),o("code",[e._v("/blocks/2902000")]),e._v(")")])])])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Verify you are currently running the correct version (v0.34.6+) of the "),o("em",[e._v("Cosmos SDK")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpjb3Ntb3Mtc2RrOiAwLjM0LjYKZ2l0IGNvbW1pdDogODAyMzRiYWY5MWExNWRkOWE3ZGY4ZGNhMzg2NzdiNjZiOGQxNDhjMQp2ZW5kb3IgaGFzaDogZjYwMTc2NjcyMjcwYzA5NDU1YzAxZTlkODgwMDc5YmEzNjEzMGRmNGY1Y2Q4OWRmNThiNjcwMWY1MGIxM2FhZApidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTIuMiBsaW51eC9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Export existing state from "),o("code",[e._v("cosmoshub-2")]),e._v(":")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),o("code",[e._v("cosmoshub-2")]),e._v(". See "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("p",[e._v("Before exporting state via the following command, the "),o("code",[e._v("gaiad")]),e._v(" binary must be stopped!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PTI5MDIwMDAgJmd0OyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbUExBQ0VIT0xERVJdICBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv2.0.3 of "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.13+"),o("OutboundLink")],1),e._v(" is required!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHYyLjAuMzsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify you are currently running the correct version (v2.0.3) of the "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMwpjb21taXQ6IDJmNjc4M2UyOThmMjVmZjRlMTJjYjg0NTQ5Nzc3MDUzYWI4ODc0OWEKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xMy4zIGRhcndpbi9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Migrate exported state from the current v0.34.6+ version to the new v2.0.3 version:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSB2MC4zNiBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTMgLS1nZW5lc2lzLXRpbWU9W1BMQUNFSE9MREVSXSZndDsgZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": The "),o("code",[e._v("migrate")]),e._v(" command takes an input genesis state and migrates it to a targeted version.\nBoth v0.36 and v0.37 are compatible as far as state structure is concerned.")]),e._v(" "),o("p",[e._v("Genesis time should be computed relative to the blocktime of "),o("code",[e._v("2,902,000")]),e._v(". The genesis time\nshall be the blocktime of "),o("code",[e._v("2,902,000")]),e._v(" + "),o("code",[e._v("60")]),e._v(" minutes with the subseconds truncated.")]),e._v(" "),o("p",[e._v("An example shell command(tested on OS X Mojave) to compute this values is:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3N0YXJnYXRlLmNvc21vcy5uZXR3b3JrOjI2NjU3L2Jsb2NrXD9oZWlnaHRcPTI5MDIwMDAgfCBqcSAtciAnLnJlc3VsdFsmcXVvdDtibG9ja19tZXRhJnF1b3Q7XVsmcXVvdDtoZWFkZXImcXVvdDtdWyZxdW90O3RpbWUmcXVvdDtdJ3x4YXJncyAtMCBkYXRlIC12ICs2ME0gIC1qICAtZiAmcXVvdDslWS0lbS0lZFQlSDolTTolUyZxdW90OyArJnF1b3Q7JVktJW0tJWRUJUg6JU06JVNaJnF1b3Q7Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Now we must update all parameters that have been agreed upon through governance. There is only a\nsingle parameter, "),o("code",[e._v("max_validators")]),e._v(", that we're upgrading based on "),o("a",{attrs:{href:"https://www.mintscan.io/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 10"),o("OutboundLink")],1)]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IGdlbmVzaXMuanNvbiB8IGpxICcuYXBwX3N0YXRlWyZxdW90O3N0YWtpbmcmcXVvdDtdWyZxdW90O3BhcmFtcyZxdW90O11bJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDtdPTEyNScgJmd0OyB0bXBfZ2VuZXNpcy5qc29uICZhbXA7JmFtcDsgbXYgdG1wX2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltQTEFDRUhPTERFUl0gIGdlbmVzaXMuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("Reset state:")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Move the new "),o("code",[e._v("genesis.json")]),e._v(" to your "),o("code",[e._v(".gaia/config/")]),e._v(" directory")])]),e._v(" "),o("li",[o("p",[e._v("Replace the "),o("code",[e._v("db_backend")]),e._v(" on "),o("code",[e._v(".gaia/config/config.toml")]),e._v(" to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"ZGJfYmFja2VuZCA9ICZxdW90O2dvbGV2ZWxkYiZxdW90Owo="}})],1),e._v(" "),o("li",[o("p",[e._v("Note, if you have any application configuration in "),o("code",[e._v("gaiad.toml")]),e._v(", that file has now been renamed to "),o("code",[e._v("app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgLmdhaWEvY29uZmlnL2dhaWFkLnRvbWwgLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1)]),e._v(" "),o("h2",{attrs:{id:"notes-for-service-providers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),o("ol",[o("li",[e._v("The transition from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(" contains an unusual amount of API breakage.\nAfter this upgrade will maintain the CosmosSDK API stability guarantee to avoid breaking APIs for at\nleast 6 months and hopefully long.")]),e._v(" "),o("li",[e._v("Anyone running signing infrastructure(wallets and exchanges) should be conscious that the "),o("code",[e._v("type:")]),e._v("\nfield on "),o("code",[e._v("StdTx")]),e._v(" will have changed from "),o("code",[e._v('"type":"auth/StdTx","value":...')]),e._v(" to "),o("code",[e._v('"type":"cosmos-sdk/StdTx","value":...')])]),e._v(" "),o("li",[e._v("As mentioned in the notes and SDK CHANGELOG, many queries to cosmos cli are wrapped with "),o("code",[e._v("height")]),e._v(" fields now.")]),e._v(" "),o("li",[e._v("We highly recommend standing up a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/master/docs/deploy-testnet.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet"),o("OutboundLink")],1),e._v("\nwith the "),o("code",[e._v("gaia-2.0")]),e._v(" release or joining the gaia-13006 testnet. More info for joining the testnet can be\nfound in the "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("riot validator room"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("We expect that developers with iOS or Android based apps may have to notify their users of downtime\nand ship an upgrade for cosmoshub-3 compatibility unless they have some kind of switch they can throw\nfor the new tx formats. Server side applications should experience briefer service interruptions and\nbe able to just spin up new nodes and migrate to the new apis.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{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 diff --git a/main/assets/js/151.16e54c2f.js b/main/assets/js/151.04f4c590.js similarity index 99% rename from main/assets/js/151.16e54c2f.js rename to main/assets/js/151.04f4c590.js index a8b35dc8054..52190f6f2cc 100644 --- a/main/assets/js/151.16e54c2f.js +++ b/main/assets/js/151.04f4c590.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{497: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 +(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{496: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/152.5b1d4c09.js b/main/assets/js/152.f2e23d97.js similarity index 99% rename from main/assets/js/152.5b1d4c09.js rename to main/assets/js/152.f2e23d97.js index d48040252f0..8559bdf9f8e 100644 --- a/main/assets/js/152.5b1d4c09.js +++ b/main/assets/js/152.f2e23d97.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{554: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([[152],{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 diff --git a/main/assets/js/153.e1c1ecc2.js b/main/assets/js/153.01bddb0b.js similarity index 99% rename from main/assets/js/153.e1c1ecc2.js rename to main/assets/js/153.01bddb0b.js index 07da17740c0..f19d1266a0c 100644 --- a/main/assets/js/153.e1c1ecc2.js +++ b/main/assets/js/153.01bddb0b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{545:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-3-업그레이드-매뉴얼"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-3-업그레이드-매뉴얼"}},[a._v("#")]),a._v(" 코스모스 허브 3 업그레이드 매뉴얼")]),a._v(" "),e("p",[a._v("이 문서는 풀노드 운영자가 "),e("code",[a._v("cosmoshub-3")]),a._v("에서 "),e("code",[a._v("cosmoshub-4")]),a._v(" 업그레이드를 진행하기 위한 과정을 설명합니다.\n텐더민트 팀이 공식적인 업데이트된 제네시스 파일을 업로드할 예정이나, 각 검증인이 해당 제네시스 파일을 각자 검증할 것을 권장합니다.")]),a._v(" "),e("p",[a._v("현재 "),e("code",[a._v("cosmoshub-3")]),a._v("에서는 "),e("code",[a._v("Cosmos Hub 4 Upgrade Proposal")]),a._v("에 대한 사회적 합의가 도달된 것으로 판단됩니다.\n프로포절 #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[a._v("27"),e("OutboundLink")],1),a._v(", #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[a._v("35"),e("OutboundLink")],1),a._v(" and #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[a._v("36"),e("OutboundLink")],1),a._v("의 내용에 따라 업그레이드 과정은 "),e("code",[a._v("2021년 2월 18일, 06:00 UTC")]),a._v("에 진행될 예정입니다.")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98"}},[a._v("마이그레이션")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%82%AC%EC%A0%84-%EC%A0%95%EB%B3%B4"}},[a._v("사전 정보")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%A3%BC%EC%9A%94-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8"}},[a._v("주요 업데이트")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%9C%84%ED%97%98-%EA%B3%A0%EC%A7%80"}},[a._v("위험 고지")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C-%EC%A0%88%EC%B0%A8"}},[a._v("업그레이드 절차")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%9C%EA%B3%B5%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%B5%EC%A7%80"}},[a._v("서비스 제공자에 대한 공지")])])]),a._v(" "),e("h1",{attrs:{id:"마이그레이션"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#마이그레이션"}},[a._v("#")]),a._v(" 마이그레이션")]),a._v(" "),e("p",[a._v("다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.")]),a._v(" "),e("p",[a._v("만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("앱 및 모듈 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 v0.40 체인 업그레이드 가이드"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST 엔드포인트 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("RouterLink",{attrs:{to:"/migration/cosmoshub-3/breaking_changes.html"}},[a._v("각 버전 체인지로그의 breaking change 모음")])],1),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[a._v("Inter-Blockchain Communication (IBC)– 체인간 트랜잭션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[a._v("Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[a._v("State Sync – 몇 분 내에 완료되는 노드 동기화"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[a._v("강력한 기능을 포함한 라이트 클라이언트"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[a._v("체인 업그레이드 모듈 – 업그레이드 자동화"),e("OutboundLink")],1)])]),a._v(" "),e("p",[a._v("만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[a._v("이 글"),e("OutboundLink")],1),a._v("을 참고하세요")]),a._v(" "),e("h2",{attrs:{id:"사전-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#사전-정보"}},[a._v("#")]),a._v(" 사전 정보")]),a._v(" "),e("p",[a._v("지난 코스모스 허브 업그레이드("),e("code",[a._v("cosmoshub-3")]),a._v(") 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다.\n변경사항에는 신규 기능, 프로토콜 변경사항, 애플리케이션 구조 변경 등이 포함되었으며, 애플리케이션 개발 과정의 개선이 기대됩니다.")]),a._v(" "),e("p",[a._v("우선, "),e("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[a._v("인터체인 표준"),e("OutboundLink")],1),a._v("를 따른 "),e("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[a._v("IBC"),e("OutboundLink")],1),a._v("이 활성화될 예정입니다. 또한 효율성, 노드 동기화, 추후 블록체인 업데이트 과정이 개선됩니다. 자세한 내용은 "),e("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[a._v("스타게이트 웹사이트"),e("OutboundLink")],1),a._v("를 참고하세요.")]),a._v(" "),e("p",[a._v("__이번 업그레이드에서 풀 노드 운영자 업그레이드를 진행하는 것은 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" 애플리케이션 v4.0.0입니다. 이번 버전의 Gaia 애플리케이션은 코스모스 SDK v0.41.0 그리고 텐더민트 v0.34.3 기반으로 빌드되었습니다.")]),a._v(" "),e("h2",{attrs:{id:"주요-업데이트"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#주요-업데이트"}},[a._v("#")]),a._v(" 주요 업데이트")]),a._v(" "),e("p",[a._v("이번 SDK의 릴리즈에서는 다수의 기능 및 변경사항이 적용되어 있습니다. 이에 대한 설명은 "),e("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),e("OutboundLink")],1),a._v("에서 확인하실 수 있습니다.")]),a._v(" "),e("p",[a._v("개발자 또는 클라이언트로서 참고해야할 점은 다음과 같습니다:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("프로토콜 버퍼(Protocol BufferS)")]),a._v(": 이전 버전의 코스모스 SDK에서는 인코딩 및 디코딩 과정에서 아미노 코덱을 사용했습니다.\n이번 코스모스 SDK 버전에서는 프로토콜 버퍼가 내장되어있습니다. 프로토콜 버퍼를 통해 애플리케이션은 속도, 가독성, 편의성, 프로그래밍 언어 간 상호호환성 등의 부분에서 상당한 개선이 있을 것으로 기대됩니다. "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[a._v("더 읽기"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("strong",[a._v("CLI")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인의 CLI와 데몬은 별도의 바이너리로 구성되었으며, 실행하는 블록체인 인터랙션에 따라 "),e("code",[a._v("gaiad")]),a._v("와 "),e("code",[a._v("gaiacli")]),a._v(" 바이너리가 구분되었습니다. 이번 버전의 코스모스 SDK에서는 두 바이너리가 하나의 "),e("code",[a._v("gaiad")]),a._v(" 바이너리로 통합되었으며 해당 바이너리 내에서 기존에 "),e("code",[a._v("gaiacli")]),a._v("에서 사용했던 명령어를 지원합니다.")]),a._v(" "),e("li",[e("strong",[a._v("노드 구성")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인 데이터와 노드 설정이 "),e("code",[a._v("~/.gaia/")]),a._v("에 저장되었지만, 이번 버전에서는 해당 정보다 "),e("code",[a._v("~/.gaia/")]),a._v(" 디렉토리에 보관됩니다. 만약 블록체인 데이터 또는 노드 설정을 관리하는 스크립트를 사용하시는 경우 해당 스크립트에서 패스를 변경해야합니다.")])]),a._v(" "),e("h2",{attrs:{id:"위험-고지"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#위험-고지"}},[a._v("#")]),a._v(" 위험 고지")]),a._v(" "),e("p",[a._v("검증인이 컨센서스 노드 업그레이드를 진행하는 절차에서 이중서명에 따른 슬래싱의 위험이 존재합니다. 이 과정에서 가장 중요한 것은 검증인을 가동하고 서명을 시작하기 전 소프트웨어 버전을 확인하고 제네시스 파일의 해시를 확인하시기를 바랍니다.")]),a._v(" "),e("p",[a._v("블록체인 검증인이 할 수 있는 가장 위험한 행동은 네트워크 시작 과정에서 존재했던 실수를 인지하고 업그레이드 과정을 처음부터 다시 시작하는 것입니다. 만약 업그레이드 과정에서 실수가 발생했다면 네트워크가 시작되는 것을 기다린 후에 실수를 고치는 것을 권장합니다. 만약 네트워크가 중단되었고 본인의 검증인을 실제 시작된 네트워크가 아닌 다른 제네시스 파일로 가동한 경우, 검증인을 리셋하는 과정에 대해 텐더민트 검증인으로 부터 조언을 구할 것을 권장합니다.")]),a._v(" "),e("h2",{attrs:{id:"복구"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#복구"}},[a._v("#")]),a._v(" 복구")]),a._v(" "),e("p",[a._v("각 검증인은 "),e("code",[a._v("cosmoshub-3")]),a._v(" 상태를 내보내기(export) 전에 내보내는 블록 하이트의 풀 데이터 스냅샷을 진행할 것을 권장합니다. 스냅샷 과정은 각 검증인의 인프라에 따라 다를 수 있지만, 통상 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하는 것으로 진행합니다.")]),a._v(" "),e("p",[e("code",[a._v("gaiad")]),a._v(" 프로세스를 멈춘 후 "),e("code",[a._v(".gaia/data/priv_validator_state.json")]),a._v(" 파일을 백업하는 것은 매우 중요합니다. 이 파일은 검증인이 컨센서스 라운드에 참여할 때마다 업데이트됩니다. 만약 업그레이드 과정이 실패하여 이전 체인을 다시 시작해야되는 경우 검증인의 이중서명을 방지하기 위해서 이 파일은 필수입니다.")]),a._v(" "),e("p",[a._v("만약 업그레이드 과정이 실패하는 경우, 검증인과 노드 운영자는 gaia v2.0.15(코스모스 SDK v0.37.15 기반)으로 다운그레이드를 진행하고 가장 최근 진행했던 스냅샷을 복구한 이후에 노드를 시작해야합니다.")]),a._v(" "),e("h2",{attrs:{id:"업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#업그레이드"}},[a._v("#")]),a._v(" 업그레이드")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 가이드는 코스모스 SDK의 v0.37.15 기반의 gaia v2.0.15를 운영한다는 가정에 작성된 가이드입니다.")]),a._v(" "),e("p",[a._v("Gaia v2.0.15의 버전/커밋 해시값: "),e("code",[a._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),a._v(" "),e("ol",[e("li",[e("p",[a._v("올바른 "),e("em",[a._v("gaiad")]),a._v(" 버전 (v2.0.15)를 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 올바른 날짜와 시간에 멈추도록 설정하세요:")]),a._v(" "),e("p",[a._v("2021년 2월 18일 06:00 UTC의 UNIX seconds 시간 값: "),e("code",[a._v("1613628000")])]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 멈춘 후 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 업그레이드 과정이 예상 외로 실패하거나 합의된 시간 내에 새로운 체인에 충분한 보팅 파워가 참여하지 않는 경우를 대비해 검증인과 노드 운영자는 export height의 풀 데이터 스냅샷을 진행하는 것을 권장합니다. 이 경우에는 체인 업그레이드 과정은 보류되고 "),e("code",[a._v("cosmoshub-3")]),a._v("의 운영이 재개됩니다. 해당 과정에 대해서는 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항목을 참고하세요.")])],1),a._v(" "),e("li",[e("p",[a._v("기존 "),e("code",[a._v("cosmoshub-3")]),a._v("의 상태를 내보내기:")]),a._v(" "),e("p",[a._v("다음 명령어를 사용하여 상태를 내보내기 전 "),e("code",[a._v("gaiad")]),a._v(" 바이너리가 꼭 멈춰있어야 합니다!\n검증인으로서 가장 최근 생성된 블록은 "),e("code",[a._v("~/.gaia/config/data/priv_validator_state.json")]),a._v("에서 확인하실 수 있습니다 (또는 이전 과정에서 백업을 진행한 경우 "),e("code",[a._v("gaiad_backup")]),a._v("). 블록 높이는 다음과 같이 확인하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),a._v(" "),e("p",[e("em",[a._v("이 과정은 상당한 시간이 (약 1시간) 소요될 수 있습니다")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 제네시스 파일의 SHA256 값을 검증하세요:")]),a._v(" "),e("p",[a._v("본인의 제네시스 파일의 값을 네트워크 내 다른 검증인 / 풀 노드 운영자와 비교하세요.\n이 후 과정에서는 모든 인원이 동일한 제네시스 파일을 생성하는 것이 상당이 중요합니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),a._v(" "),e("li",[e("p",[a._v("이 단계 까지 오셨다면 올바른 제네시스 상태를 내보내셨습니다! 이후 과정부터는 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" v4.0.0을 필요로 합니다. 그룹 채팅 방의 다른 검증인들/피어와 새로운 제네시스 파일의 해시를 비교/검증하세요.")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": Go "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("1.15+"),e("OutboundLink")],1),a._v(" 버전이 설치되어야 합니다!")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("_Gaia_의 올바른 버전(v4.0.0)을 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjAKIGNvbW1pdDogMmJiMDQyNjYyNjY1ODY0NjgyNzFjNGFiMzIyMzY3YWNiZjQxMTg4ZgogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiBnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0CiBidWlsZF9kZXBzOgogLi4uCg=="}}),a._v(" "),e("p",[a._v("Gaia v4.0.0 버전/커밋 해시 : "),e("code",[a._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 상태를 기존 v2.0.15 버전에서 v4.0.0 버전으로 마이그레이션 하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),a._v(" "),e("p",[a._v("이 과정은 이전 체인에서 내보낸 상태를 기반으로 "),e("code",[a._v("cosmoshub-4")]),a._v("로 시작하기 위한 "),e("code",[a._v("genesis.json")]),a._v(" 파일을 생성합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("최종 제네시스 JSON의 SHA256 해시 값을 검증하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("해당 값을 네트워크의 다른 검증인 / 풀 노드 운영자와 비교하세요.\n과정에서 모든 참여자가 같은 genesis.json 파일을 생성하는 것이 중요합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("상태 리셋:")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 과정을 진행하기 전에 꼭 노드의 상태를 백업하세요. 백업 과정은 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항복을 참고하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),a._v(" "),e("li",[e("p",[a._v("새로운 "),e("code",[a._v("genesis.json")]),a._v("을 "),e("code",[a._v(".gaia/config/")]),a._v(" 디렉토리로 옮기세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),a._v(" "),e("li",[e("p",[a._v("블록체인을 가동하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("Crisis 모듈의 제네시스 상태 자동 검증은 30-120분 소요될 수 있습니다. 해당 기능은 "),e("code",[a._v("gaiad start --x-crisis-skip-assert-invariants")]),a._v("로 비활성화할 수 있습니다.")])],1)]),a._v(" "),e("h2",{attrs:{id:"서비스-제공자를-위한-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#서비스-제공자를-위한-정보"}},[a._v("#")]),a._v(" 서비스 제공자를 위한 정보")]),a._v(" "),e("h1",{attrs:{id:"rest-서버"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rest-서버"}},[a._v("#")]),a._v(" REST 서버")]),a._v(" "),e("p",[a._v("만약 이전까지 "),e("code",[a._v("gaiacli rest-server")]),a._v(" 명령어로 REST 서버를 구동하신 경우, 해당 명령어는 이번 버전부터 비활성화 됩니다. API 서버는 데몬 내에서 활성화되며, "),e("code",[a._v(".gaia/config/app.toml")]),a._v(" 설정 내에서 활성화됩니다:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),a._v(" "),e("p",[e("code",[a._v("swagger")]),a._v(" 설정은 Swagger 문서 API를 활성화/비활성화 하는 여부를 관리합니다 (예, /swagger/ API 엔드포인트)")]),a._v(" "),e("h1",{attrs:{id:"grpc-설정"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#grpc-설정"}},[a._v("#")]),a._v(" gRPC 설정")]),a._v(" "),e("p",[a._v("gRPC 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),a._v(" "),e("h1",{attrs:{id:"스테이트-싱크"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#스테이트-싱크"}},[a._v("#")]),a._v(" 스테이트 싱크")]),a._v(" "),e("p",[a._v("스테이트 싱크 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{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/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/154.d506e6b2.js b/main/assets/js/154.2155545e.js similarity index 99% rename from main/assets/js/154.d506e6b2.js rename to main/assets/js/154.2155545e.js index 838999158c2..a8f79a1a45c 100644 --- a/main/assets/js/154.d506e6b2.js +++ b/main/assets/js/154.2155545e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{548: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([[154],{542: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/155.124c72bd.js b/main/assets/js/155.5149cbe1.js similarity index 99% rename from main/assets/js/155.124c72bd.js rename to main/assets/js/155.5149cbe1.js index c74738f72f9..28b0c174201 100644 --- a/main/assets/js/155.124c72bd.js +++ b/main/assets/js/155.5149cbe1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{539: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([[155],{545: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/156.9e20f008.js b/main/assets/js/156.1bf75183.js similarity index 99% rename from main/assets/js/156.9e20f008.js rename to main/assets/js/156.1bf75183.js index f89c1693f63..6c5ba3d0957 100644 --- a/main/assets/js/156.9e20f008.js +++ b/main/assets/js/156.1bf75183.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{542: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([[156],{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 diff --git a/main/assets/js/160.cfdc0ad7.js b/main/assets/js/160.94a58e3b.js similarity index 99% rename from main/assets/js/160.cfdc0ad7.js rename to main/assets/js/160.94a58e3b.js index b7735bc17b8..aa2df7beb9e 100644 --- a/main/assets/js/160.cfdc0ad7.js +++ b/main/assets/js/160.94a58e3b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{527: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([[160],{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-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/161.10417c44.js b/main/assets/js/161.cfc3ac84.js similarity index 99% rename from main/assets/js/161.10417c44.js rename to main/assets/js/161.cfc3ac84.js index 29412af1303..6c31d1a8095 100644 --- a/main/assets/js/161.10417c44.js +++ b/main/assets/js/161.cfc3ac84.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{505: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([[161],{527: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/162.ec0bed03.js b/main/assets/js/162.2c83e449.js similarity index 99% rename from main/assets/js/162.ec0bed03.js rename to main/assets/js/162.2c83e449.js index 6494e19478a..7ce2cb058a1 100644 --- a/main/assets/js/162.ec0bed03.js +++ b/main/assets/js/162.2c83e449.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{524:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-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([[162],{505: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/166.2a013316.js b/main/assets/js/166.f6784106.js similarity index 94% rename from main/assets/js/166.2a013316.js rename to main/assets/js/166.f6784106.js index 0ee2452e695..c6188601020 100644 --- a/main/assets/js/166.2a013316.js +++ b/main/assets/js/166.f6784106.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{613: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([[166],{615: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/167.520113e1.js b/main/assets/js/167.58d49d7a.js similarity index 97% rename from main/assets/js/167.520113e1.js rename to main/assets/js/167.58d49d7a.js index f05275ac725..b70a4128557 100644 --- a/main/assets/js/167.520113e1.js +++ b/main/assets/js/167.58d49d7a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{615: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 make 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([[167],{613: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 make 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/168.42f370ae.js b/main/assets/js/168.6883a458.js similarity index 99% rename from main/assets/js/168.42f370ae.js rename to main/assets/js/168.6883a458.js index b7eeda82385..a7afd26b50d 100644 --- a/main/assets/js/168.42f370ae.js +++ b/main/assets/js/168.6883a458.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{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 this 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(" timestamp that 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, the 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(": Timestamp 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(": Timestamp 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 following:")]),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 following:")]),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 misbehaves. 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([[168],{495: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 this 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(" timestamp that 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, the 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(": Timestamp 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(": Timestamp 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 following:")]),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 following:")]),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 misbehaves. 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/170.4290b517.js b/main/assets/js/170.4e71dc69.js similarity index 98% rename from main/assets/js/170.4290b517.js rename to main/assets/js/170.4e71dc69.js index 6e2b1692d87..358c4bae477 100644 --- a/main/assets/js/170.4290b517.js +++ b/main/assets/js/170.4e71dc69.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{617: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([[170],{616: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/172.bb043a2f.js b/main/assets/js/172.2f72bb5e.js similarity index 99% rename from main/assets/js/172.bb043a2f.js rename to main/assets/js/172.2f72bb5e.js index c30fdefff98..2413108d0f1 100644 --- a/main/assets/js/172.bb043a2f.js +++ b/main/assets/js/172.2f72bb5e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{616: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:"previous-releases"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#previous-releases"}},[e._v("#")]),e._v(" Previous Releases")]),e._v(" "),r("p",[e._v("The following table below, shows the versions of the main dependencies.")]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta (Gravity DEX)"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega v6"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theta v7"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rho v8"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lambda v9"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11"),r("OutboundLink")],1)]),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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v12"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("13/09/23")]),e._v(" "),r("td",[e._v("16985500")]),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/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v12.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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v13"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("11/10/23")]),e._v(" "),r("td",[e._v("17380000")]),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-lsm",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/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v13.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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v14.1.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v14"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("11/10/23")]),e._v(" "),r("td",[e._v("18262000")]),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-lsm",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/v14.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v14.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=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{619: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:"previous-releases"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#previous-releases"}},[e._v("#")]),e._v(" Previous Releases")]),e._v(" "),r("p",[e._v("The following table below, shows the versions of the main dependencies.")]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta (Gravity DEX)"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega v6"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theta v7"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rho v8"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lambda v9"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v10.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v10"),r("OutboundLink")],1)]),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",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11"),r("OutboundLink")],1)]),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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v12"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("13/09/23")]),e._v(" "),r("td",[e._v("16985500")]),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/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v12.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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v13"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("11/10/23")]),e._v(" "),r("td",[e._v("17380000")]),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-lsm",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/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v13.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)])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v14.1.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v14"),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("11/10/23")]),e._v(" "),r("td",[e._v("18262000")]),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-lsm",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/v14.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v14.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=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/173.94909b66.js b/main/assets/js/173.7e17e00a.js similarity index 94% rename from main/assets/js/173.94909b66.js rename to main/assets/js/173.7e17e00a.js index ff0d2204f3f..567921ba697 100644 --- a/main/assets/js/173.94909b66.js +++ b/main/assets/js/173.7e17e00a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{619: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([[173],{622: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/175.de5be63a.js b/main/assets/js/175.ddaf5f6d.js similarity index 97% rename from main/assets/js/175.de5be63a.js rename to main/assets/js/175.ddaf5f6d.js index 59af7a6d876..84b59746aa8 100644 --- a/main/assets/js/175.de5be63a.js +++ b/main/assets/js/175.ddaf5f6d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{622: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([[175],{624: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/176.7bfcd9ae.js b/main/assets/js/176.876c2d55.js similarity index 99% rename from main/assets/js/176.7bfcd9ae.js rename to main/assets/js/176.876c2d55.js index b76b2d9e4aa..96957a720ea 100644 --- a/main/assets/js/176.7bfcd9ae.js +++ b/main/assets/js/176.876c2d55.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{624: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 no 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([[176],{625: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 no 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/177.1e08ae6e.js b/main/assets/js/177.49622cd0.js similarity index 98% rename from main/assets/js/177.1e08ae6e.js rename to main/assets/js/177.49622cd0.js index f61fd5e5a30..7c5cf36aaf0 100644 --- a/main/assets/js/177.1e08ae6e.js +++ b/main/assets/js/177.49622cd0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{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([[177],{629: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/180.79824a9c.js b/main/assets/js/180.93ca5c5a.js similarity index 99% rename from main/assets/js/180.79824a9c.js rename to main/assets/js/180.93ca5c5a.js index 3d8ef26ca44..3a2c7f956c3 100644 --- a/main/assets/js/180.79824a9c.js +++ b/main/assets/js/180.93ca5c5a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{629:function(t,a,e){"use strict";e.r(a);var o=e(1),s=Object(o.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"running-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-a-validator"}},[t._v("#")]),t._v(" Running a Validator")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("Before setting up a validator node, make sure to have completed the "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet")]),t._v(" guide.")],1),t._v(" "),e("p",[t._v("If you plan to use a KMS (key management system), you should go through these steps first: "),e("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Using a KMS")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"what-is-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator"}},[t._v("#")]),t._v(" What is a Validator?")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validators")]),t._v(" are responsible for committing new blocks to the blockchain through an automated voting process. A validator's stake is slashed if they become unavailable or sign blocks at the same height. Because there is a chance of slashing, we suggest you read about "),e("RouterLink",{attrs:{to:"/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("Sentry Node Architecture")]),t._v(" to protect your node from DDOS attacks and to ensure high-availability.")],1),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("If you want to become a validator for the Hub's "),e("code",[t._v("mainnet")]),t._v(", you should learn more about "),e("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("security")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("The following instructions assume you have already "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("set up a full-node")]),t._v(" and are synchronised 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([[180],{631: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 synchronised 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/181.c903a2b8.js b/main/assets/js/181.a0db4f6e.js similarity index 97% rename from main/assets/js/181.c903a2b8.js rename to main/assets/js/181.a0db4f6e.js index 009a72047a8..dd1c4f94fbb 100644 --- a/main/assets/js/181.c903a2b8.js +++ b/main/assets/js/181.a0db4f6e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{631:function(t,a,s){"use strict";s.r(a);var o=s(1),i=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"gaia文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia文档"}},[t._v("#")]),t._v(" gaia文档")]),t._v(" "),s("p",[t._v("欢迎阅读"),s("code",[t._v("Gaia")]),t._v("文档。 "),s("code",[t._v("Gaia")]),t._v("是Cosmos Hub目前的应用程序名。")]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub主网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub主网"}},[t._v("#")]),t._v(" 加入Cosmos Hub主网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),s("code",[t._v("gaia")]),t._v("程序")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("启动一个全节点并加入主网")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-setup.html"}},[t._v("升级成一个验证人节点")])],1)]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub公共测试网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub公共测试网"}},[t._v("#")]),t._v(" 加入Cosmos Hub公共测试网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("加入测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"部署你自己的gaia测试网络"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#部署你自己的gaia测试网络"}},[t._v("#")]),t._v(" 部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网络")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"额外资源"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#额外资源"}},[t._v("#")]),t._v(" 额外资源")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人介绍")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-faq.html"}},[t._v("验证人问答")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("验证人安全性考量")])],1)])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{632: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/182.bcd120bc.js b/main/assets/js/182.94eabe89.js similarity index 99% rename from main/assets/js/182.bcd120bc.js rename to main/assets/js/182.94eabe89.js index da47d8a470b..8efc8272b45 100644 --- a/main/assets/js/182.bcd120bc.js +++ b/main/assets/js/182.94eabe89.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{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/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([[182],{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/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/183.0ace404c.js b/main/assets/js/183.176e18ea.js similarity index 98% rename from main/assets/js/183.0ace404c.js rename to main/assets/js/183.176e18ea.js index 71c3f7b2642..fcd4035a946 100644 --- a/main/assets/js/183.0ace404c.js +++ b/main/assets/js/183.176e18ea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{632:function(t,a,s){"use strict";s.r(a);var o=s(1),e=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"安装-gaia"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaia"}},[t._v("#")]),t._v(" 安装 Gaia")]),t._v(" "),s("p",[t._v("本教程将详细说明如何在你的系统上安装"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("。安装后,你可以作为"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("全节点")]),t._v("或是"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("验证人节点")]),t._v("加入到主网。")],1),t._v(" "),s("h3",{attrs:{id:"安装-go"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-go"}},[t._v("#")]),t._v(" 安装 Go")]),t._v(" "),s("p",[t._v("按照"),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("官方文档"),s("OutboundLink")],1),t._v("安装"),s("code",[t._v("go")]),t._v("。记得设置环境变量 "),s("code",[t._v("$PATH")]),t._v(":")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("Cosmos SDK 需要安装"),s("strong",[t._v("Go 1.12+")])])]),t._v(" "),s("h3",{attrs:{id:"安装二进制执行程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装二进制执行程序"}},[t._v("#")]),t._v(" 安装二进制执行程序")]),t._v(" "),s("p",[t._v("接下来,安装最新版本的 Gaia。需要确认您 `git checkout 了正确的"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发布版本"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("对于主网,请确保你的版本大于或等于"),s("code",[t._v("v0.33.0")])])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),s("blockquote",[s("p",[s("em",[t._v("注意")]),t._v(": 如果在这一步中出现问题,请检查你是否安装的是 Go 的最新稳定版本。")])]),t._v(" "),s("p",[t._v("等"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("可执行程序安装完之后,请检查:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("的返回应该类似于:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29zbW9zLXNkazogMC4zMy4wCmdpdCBjb21taXQ6IDdiNDEwNGFjZWQ1MmFhNWI1OWE5NmMyOGI1ZWJlZWE3ODc3ZmM0ZjAKZ28uc3VtIGhhc2g6IGQxNTYxNTNiZDVlMTI4ZmVjMzg2OGVjYTlhMTM5N2E2M2E4NjRlZGI1Y2ZhMGFjNDg2ZGIxYjU3NGI4ZWVjZmUKYnVpbGQgdGFnczogbmV0Z28gbGVkZ2VyCmdvIHZlcnNpb24gZ28xLjEyIGxpbnV4L2FtZDY0Cg=="}}),t._v(" "),s("h5",{attrs:{id:"build-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),s("p",[t._v("build tags 指定了可执行程序具有的特殊特性。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Build Tag")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("netgo")]),t._v(" "),s("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),s("tr",[s("td",[t._v("ledger")]),t._v(" "),s("td",[t._v("支持 Ledger 设备(硬件钱包)")])])])]),t._v(" "),s("h3",{attrs:{id:"接下来"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接下来"}},[t._v("#")]),t._v(" 接下来")]),t._v(" "),s("p",[t._v("然后你可以选择 加入"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("主网")]),t._v("、"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("公共测试网")]),t._v(" 或是 "),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("创建私有测试网")]),t._v("。")],1)],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{634: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/184.d286514b.js b/main/assets/js/184.d8b459fc.js similarity index 99% rename from main/assets/js/184.d286514b.js rename to main/assets/js/184.d8b459fc.js index 5135ff13f6c..df1d5654fad 100644 --- a/main/assets/js/184.d286514b.js +++ b/main/assets/js/184.d8b459fc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{634:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"加入主网"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#加入主网"}},[a._v("#")]),a._v(" 加入主网")]),a._v(" "),e("p",[a._v("::: 提示\n请查看"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("获取主网信息,包含了所使用的Cosmos-SDK的正确版本和genesis文件。\n:::")]),a._v(" "),e("p",[a._v("::: 警告\n"),e("strong",[a._v("在更进一步之前你需要"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[a._v("安装gaia")])],1),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"创建一个新节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[a._v("#")]),a._v(" 创建一个新节点")]),a._v(" "),e("p",[a._v("这些指令适用于从头开始设置一个全节点。")]),a._v(" "),e("p",[a._v("首先,初始化节点并创建必要的配置文件:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),e("p",[a._v("::: 注意\nmoniker只能包含ASCII字符。使用Unicode字符会使得你的节点不可访问\n:::")]),a._v(" "),e("p",[a._v("你可以稍后在"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件中编辑"),e("code",[a._v("moniker")]),a._v(":")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你可以编辑"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件来开启垃圾交易过滤机制以拒绝收到的手续费过低的交易:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你的全节点已经初始化成功!")]),a._v(" "),e("h2",{attrs:{id:"genesis-seeds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#genesis-seeds"}},[a._v("#")]),a._v(" Genesis & Seeds")]),a._v(" "),e("h3",{attrs:{id:"复制genesis文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#复制genesis文件"}},[a._v("#")]),a._v(" 复制genesis文件")]),a._v(" "),e("p",[a._v("将主网的"),e("code",[a._v("genesis.json")]),a._v("文件放置在"),e("code",[a._v("gaiad")]),a._v("的配置文件夹中")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("注意我们使用了"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("中的"),e("code",[a._v("latest")]),a._v("文件夹,该文件夹包含了最新版本主网的详细信息。")]),a._v(" "),e("p",[a._v("::: 提示\n如果你想加入的是公共测试网,点击"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[a._v("这里")]),a._v("\n:::")],1),a._v(" "),e("p",[a._v("运行命令验证配置的正确性:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("h3",{attrs:{id:"添加种子节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#添加种子节点"}},[a._v("#")]),a._v(" 添加种子节点")]),a._v(" "),e("p",[a._v("你的节点需要知道如何寻找伙伴节点。你需要添加有用的种子节点到"),e("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("文件中。"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e("code",[a._v("launch")]),e("OutboundLink")],1),a._v(" repo包含了一些种子节点的链接。")]),a._v(" "),e("p",[a._v("如果这些种子节点不再运行,你可以在Cosmos Hub浏览器(可以在"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch page"),e("OutboundLink")],1),a._v("中找到)发现种子节点和持久节点。")]),a._v(" "),e("p",[a._v("你还可以到"),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("验证人Riot聊天室"),e("OutboundLink")],1),a._v("里询问可用节点。")]),a._v(" "),e("p",[a._v("你可以阅读"),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("这里"),e("OutboundLink")],1),a._v("了解更多伙伴节点和种子节点的信息。")]),a._v(" "),e("p",[a._v("::: 警告\n在Cosmos Hub主网中,可接受的币种是"),e("code",[a._v("uatom")]),a._v(","),e("code",[a._v("1atom = 1.000.000uatom")]),a._v("\n:::")]),a._v(" "),e("p",[a._v("Cosmos Hub网络中的交易需要支付一笔交易手续费以得到处理。手续费支付执行交易所消耗的gas。计算公式如下:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),a._v(" "),e("p",[e("code",[a._v("gas")]),a._v("由交易本身决定。不同的交易需要不同数量的"),e("code",[a._v("gas")]),a._v("。一笔交易的"),e("code",[a._v("gas")]),a._v("数量在它被执行时计算,但有一种方式可以提前估算,那就是把标识"),e("code",[a._v("gas")]),a._v("\n的值设置为"),e("code",[a._v("auto")]),a._v("。当然,这只是给出一个预估值。如果你想要确保为交易提供足够的gas,你可以使用"),e("code",[a._v("--gas-adjustment")]),a._v("标识来调整预估值(默认是"),e("code",[a._v("1.0")]),a._v(")。")]),a._v(" "),e("p",[e("code",[a._v("gasPrice")]),a._v("是每个单位"),e("code",[a._v("gas")]),a._v("的单价。每个验证人节点可以设置"),e("code",[a._v("min-gas-price")]),a._v(",只会把那些"),e("code",[a._v("gasPrice")]),a._v("高于自己设置的"),e("code",[a._v("min-gas-price")]),a._v("的交易打包。")]),a._v(" "),e("p",[a._v("交易的"),e("code",[a._v("fees")]),a._v("是"),e("code",[a._v("gas")]),a._v("与"),e("code",[a._v("gasPrice")]),a._v("的结果。作为一个用户,你必须输入三者中的两者。更高的"),e("code",[a._v("gasPrice")]),a._v("/"),e("code",[a._v("fees")]),a._v(",将提高你的交易被打包的机会。")]),a._v(" "),e("p",[a._v("::: 提示\n主网中推荐的"),e("code",[a._v("gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"设置minimum-gas-prices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设置minimum-gas-prices"}},[a._v("#")]),a._v(" 设置"),e("code",[a._v("minimum-gas-prices")])]),a._v(" "),e("p",[a._v("你的全节点可以在交易池中放入未确认的交易。为了保护其免受Spam攻击,最好设置一个"),e("code",[a._v("minimum-gas-prices")]),a._v("来过滤交易以决定是否要放入交易池。这个参数可以在"),e("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("文件中配置。")]),a._v(" "),e("p",[a._v("推荐的初始"),e("code",[a._v("minimum-gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v(",如果你愿意可以稍后再修改它。")]),a._v(" "),e("h2",{attrs:{id:"运行一个全节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行一个全节点"}},[a._v("#")]),a._v(" 运行一个全节点")]),a._v(" "),e("p",[a._v("通过这条命令开始运行全节点:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("检查一切是否平稳运行中:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),e("p",[a._v("使用"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Explorer"),e("OutboundLink")],1),a._v("查看网络状态。")]),a._v(" "),e("h2",{attrs:{id:"导出状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出状态"}},[a._v("#")]),a._v(" 导出状态")]),a._v(" "),e("p",[a._v("Gaia能够将整个应用程序的状态转存到一个JSON文件中,该文件可以用于分析还可以用作一个新网络的genesis文件。")]),a._v(" "),e("p",[a._v("导出状态:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("你还可以导出指定高度的状态(处理完指定高度后的状态):")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("如果你计划使用导出的状态文件启动一个新网络,导出时要加上"),e("code",[a._v("--for-zero-height")]),a._v("标识:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("h2",{attrs:{id:"升级成为验证人节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级成为验证人节点"}},[a._v("#")]),a._v(" 升级成为验证人节点")]),a._v(" "),e("p",[a._v("你现在有了一个运行状态的全节点。接下来,你可以升级你的全节点,成为一个Cosmos验证人。排名前100的验证人节点可以向Cosmos Hub提议新的区块。请查看"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[a._v("创建验证人节点")]),a._v("。\n")],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{635: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/185.c23d6cb1.js b/main/assets/js/185.08dae2a9.js similarity index 98% rename from main/assets/js/185.c23d6cb1.js rename to main/assets/js/185.08dae2a9.js index 472fe7497fa..7e0cdd0493d 100644 --- a/main/assets/js/185.c23d6cb1.js +++ b/main/assets/js/185.08dae2a9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{637: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([[185],{638: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/186.294e21d4.js b/main/assets/js/186.08b72dac.js similarity index 97% rename from main/assets/js/186.294e21d4.js rename to main/assets/js/186.08b72dac.js index ef7d38b4fbe..af7dcc1c436 100644 --- a/main/assets/js/186.294e21d4.js +++ b/main/assets/js/186.08b72dac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{635: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([[186],{637: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/187.e2f2f9ba.js b/main/assets/js/187.d2fe3cb4.js similarity index 98% rename from main/assets/js/187.e2f2f9ba.js rename to main/assets/js/187.d2fe3cb4.js index 4d74a8298a2..222fae506a8 100644 --- a/main/assets/js/187.e2f2f9ba.js +++ b/main/assets/js/187.d2fe3cb4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{638: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([[187],{640: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/189.333d2c48.js b/main/assets/js/189.e4de6a96.js similarity index 99% rename from main/assets/js/189.333d2c48.js rename to main/assets/js/189.e4de6a96.js index 232e8a16730..a69e525955c 100644 --- a/main/assets/js/189.333d2c48.js +++ b/main/assets/js/189.e4de6a96.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{640: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([[189],{506: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/19.1104da46.js b/main/assets/js/19.1eb10e5e.js similarity index 87% rename from main/assets/js/19.1104da46.js rename to main/assets/js/19.1eb10e5e.js index d11331423ef..721c4d2240b 100644 --- a/main/assets/js/19.1104da46.js +++ b/main/assets/js/19.1eb10e5e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{412:function(e,t,n){},441:function(e,t,n){"use strict";n(412)},463:function(e,t,n){"use strict";n.r(t);var s={data:()=>({selectedItem:""}),mounted(){const e=window.location.pathname.replace("/","").replace(/\/$/,""),t=window.location.href.match(/[a-zA-Z]{1}\d+(\.\d+)+/g);this.versionValue==this.versionValue?this.selectedItem=null!==t?t[0]:e:this.selectedItem=""},computed:{versions(){return this.$themeConfig.versions},versionValue(){for(var e in this.versions){return this.versions[e].key}}},methods:{versionChange(e){window.location.href=`${window.location.origin}/${e}`}}},i=(n(441),n(1)),o=Object(i.a)(s,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",{staticClass:"container"},[n("span",{staticClass:"sr-only"},[e._v("Docs Version Switcher")]),e.versions?n("div",{staticClass:"select"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedItem,expression:"selectedItem"}],on:{input:function(t){return e.versionChange(t.target.value)},change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){return"_value"in e?e._value:e.value}));e.selectedItem=t.target.multiple?n:n[0]}}},[n("option",{attrs:{value:"",disabled:""}},[e._v("Version")]),e._l(e.versions,(function(t){return n("option",{domProps:{value:t.key}},[e._v(e._s(t.label))])}))],2)]):e._e()])])}),[],!1,null,"08503e1b",null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{413:function(e,t,n){},442:function(e,t,n){"use strict";n(413)},462:function(e,t,n){"use strict";n.r(t);var s={data:()=>({selectedItem:""}),mounted(){const e=window.location.pathname.replace("/","").replace(/\/$/,""),t=window.location.href.match(/[a-zA-Z]{1}\d+(\.\d+)+/g);this.versionValue==this.versionValue?this.selectedItem=null!==t?t[0]:e:this.selectedItem=""},computed:{versions(){return this.$themeConfig.versions},versionValue(){for(var e in this.versions){return this.versions[e].key}}},methods:{versionChange(e){window.location.href=`${window.location.origin}/${e}`}}},i=(n(442),n(1)),o=Object(i.a)(s,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",{staticClass:"container"},[n("span",{staticClass:"sr-only"},[e._v("Docs Version Switcher")]),e.versions?n("div",{staticClass:"select"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedItem,expression:"selectedItem"}],on:{input:function(t){return e.versionChange(t.target.value)},change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){return"_value"in e?e._value:e.value}));e.selectedItem=t.target.multiple?n:n[0]}}},[n("option",{attrs:{value:"",disabled:""}},[e._v("Version")]),e._l(e.versions,(function(t){return n("option",{domProps:{value:t.key}},[e._v(e._s(t.label))])}))],2)]):e._e()])])}),[],!1,null,"08503e1b",null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/190.22758a2c.js b/main/assets/js/190.60fc3750.js similarity index 99% rename from main/assets/js/190.22758a2c.js rename to main/assets/js/190.60fc3750.js index 89e8a48d3be..1805ceeaed2 100644 --- a/main/assets/js/190.22758a2c.js +++ b/main/assets/js/190.60fc3750.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{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 +(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{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 diff --git a/main/assets/js/192.823b6121.js b/main/assets/js/192.ed521528.js similarity index 99% rename from main/assets/js/192.823b6121.js rename to main/assets/js/192.ed521528.js index 352c00c7f91..8f95c265b09 100644 --- a/main/assets/js/192.823b6121.js +++ b/main/assets/js/192.ed521528.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{506: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([[192],{639: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/193.115c876a.js b/main/assets/js/193.def99cea.js similarity index 98% rename from main/assets/js/193.115c876a.js rename to main/assets/js/193.def99cea.js index 516ffdda27b..90eccef3928 100644 --- a/main/assets/js/193.115c876a.js +++ b/main/assets/js/193.def99cea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[193],{636: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([[193],{633: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/194.3f531c4b.js b/main/assets/js/194.7353ecd6.js similarity index 98% rename from main/assets/js/194.3f531c4b.js rename to main/assets/js/194.7353ecd6.js index 0487345d24f..0d0a1932973 100644 --- a/main/assets/js/194.3f531c4b.js +++ b/main/assets/js/194.7353ecd6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[194],{639: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([[194],{636: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/195.d5ace805.js b/main/assets/js/195.96e412ec.js similarity index 99% rename from main/assets/js/195.d5ace805.js rename to main/assets/js/195.96e412ec.js index ee1b569efea..5d707a4c687 100644 --- a/main/assets/js/195.d5ace805.js +++ b/main/assets/js/195.96e412ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[195],{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 +(window.webpackJsonp=window.webpackJsonp||[]).push([[195],{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 diff --git a/main/assets/js/196.a47aa43d.js b/main/assets/js/196.a3850057.js similarity index 99% rename from main/assets/js/196.a47aa43d.js rename to main/assets/js/196.a3850057.js index 31af53c02a7..3a70b96a375 100644 --- a/main/assets/js/196.a47aa43d.js +++ b/main/assets/js/196.a3850057.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[196],{633: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([[196],{630: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/20.428bee29.js b/main/assets/js/20.a50b716a.js similarity index 92% rename from main/assets/js/20.428bee29.js rename to main/assets/js/20.a50b716a.js index a56bcfbb85a..1a900681b14 100644 --- a/main/assets/js/20.428bee29.js +++ b/main/assets/js/20.a50b716a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{413:function(t,e,i){},442:function(t,e,i){"use strict";i(413)},462:function(t,e,i){"use strict";i.r(e);var o={props:["visible","width","max-width","side","background-color","box-shadow"],data:function(){return{visibleLocal:!0,touchStartX:null,touchMoveX:0,touchEndX:null}},watch:{visible(t,e){if(t){const t=document.querySelector("body").style,e=document.querySelector("html").style,i=(!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform),this.$refs.sidebar);t.height="100%",t.overflow="hidden",e.height="100%",e.overflow="hidden",t.overflowY="hidden",i&&i.addEventListener("transitionend",()=>{i.style.transition=""}),this.touchMoveX=null,this.touchStartX=null,this.visibleLocal=!0}else document.querySelector("body").style.overflowY="",document.querySelector("body").style.position=""}},computed:{style(){return{"box-shadow":this.boxShadow||"none",left:"right"===this.side?"initial":"0",right:"right"===this.side?"0":"initial",width:this.width||"300px","max-width":this.maxWidth||"75vw","--sidebar-transform-component-internal":"right"===this.side?"100%":"-100%","--translate-x-component-internal":`${"right"===this.side?"":"-"}${this.touchMoveX}%`}}},methods:{close(t){this.visibleLocal=null;const e=this.$refs.overlay;if(e){e.style["pointer-events"]="none";const i=document.elementFromPoint(t.clientX,t.clientY);i.click&&i.click()}},touchstart(t){this.touchStartX=t.changedTouches[0].clientX},touchend(t){this.$refs.sidebar&&(this.touchMoveX>25?(this.$refs.sidebar.style.transition="",this.visibleLocal=null):0==this.touchMoveX?this.$refs.sidebar.style.transition="":(this.$refs.sidebar.style.transition="transform .2s",this.touchMoveX=0))},touchmove(t){const e=t.changedTouches[0].clientX,i=window.screen.width,o=100*(this.touchStartX-e)/i;"right"===this.side?this.touchMoveX=o<0?-o:0:this.touchMoveX=o}}},s=(i(442),i(1)),n=Object(s.a)(o,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("transition",{attrs:{name:"overlay",appear:""}},[t.visible&&t.visibleLocal?i("div",{ref:"overlay",staticClass:"overlay",style:{"background-color":t.backgroundColor||"rgba(0, 0, 0, 0.35)"},on:{click:t.close,touchstart:t.touchstart,touchmove:t.touchmove,touchend:t.touchend}}):t._e()]),t._v(" "),i("transition",{attrs:{name:"sidebar",appear:""},on:{"after-leave":function(e){return t.$emit("visible",!1)}}},[t.visible&&t.visibleLocal?i("div",{ref:"sidebar",staticClass:"sidebar",style:t.style,on:{touchstart:t.touchstart,touchmove:t.touchmove,touchend:t.touchend}},[t._t("default")],2):t._e()])],1)}),[],!1,null,"ec82e5e0",null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{412:function(t,e,i){},441:function(t,e,i){"use strict";i(412)},463:function(t,e,i){"use strict";i.r(e);var o={props:["visible","width","max-width","side","background-color","box-shadow"],data:function(){return{visibleLocal:!0,touchStartX:null,touchMoveX:0,touchEndX:null}},watch:{visible(t,e){if(t){const t=document.querySelector("body").style,e=document.querySelector("html").style,i=(!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform),this.$refs.sidebar);t.height="100%",t.overflow="hidden",e.height="100%",e.overflow="hidden",t.overflowY="hidden",i&&i.addEventListener("transitionend",()=>{i.style.transition=""}),this.touchMoveX=null,this.touchStartX=null,this.visibleLocal=!0}else document.querySelector("body").style.overflowY="",document.querySelector("body").style.position=""}},computed:{style(){return{"box-shadow":this.boxShadow||"none",left:"right"===this.side?"initial":"0",right:"right"===this.side?"0":"initial",width:this.width||"300px","max-width":this.maxWidth||"75vw","--sidebar-transform-component-internal":"right"===this.side?"100%":"-100%","--translate-x-component-internal":`${"right"===this.side?"":"-"}${this.touchMoveX}%`}}},methods:{close(t){this.visibleLocal=null;const e=this.$refs.overlay;if(e){e.style["pointer-events"]="none";const i=document.elementFromPoint(t.clientX,t.clientY);i.click&&i.click()}},touchstart(t){this.touchStartX=t.changedTouches[0].clientX},touchend(t){this.$refs.sidebar&&(this.touchMoveX>25?(this.$refs.sidebar.style.transition="",this.visibleLocal=null):0==this.touchMoveX?this.$refs.sidebar.style.transition="":(this.$refs.sidebar.style.transition="transform .2s",this.touchMoveX=0))},touchmove(t){const e=t.changedTouches[0].clientX,i=window.screen.width,o=100*(this.touchStartX-e)/i;"right"===this.side?this.touchMoveX=o<0?-o:0:this.touchMoveX=o}}},s=(i(441),i(1)),n=Object(s.a)(o,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("transition",{attrs:{name:"overlay",appear:""}},[t.visible&&t.visibleLocal?i("div",{ref:"overlay",staticClass:"overlay",style:{"background-color":t.backgroundColor||"rgba(0, 0, 0, 0.35)"},on:{click:t.close,touchstart:t.touchstart,touchmove:t.touchmove,touchend:t.touchend}}):t._e()]),t._v(" "),i("transition",{attrs:{name:"sidebar",appear:""},on:{"after-leave":function(e){return t.$emit("visible",!1)}}},[t.visible&&t.visibleLocal?i("div",{ref:"sidebar",staticClass:"sidebar",style:t.style,on:{touchstart:t.touchstart,touchmove:t.touchmove,touchend:t.touchend}},[t._t("default")],2):t._e()])],1)}),[],!1,null,"ec82e5e0",null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/40.9eba8f7d.js b/main/assets/js/40.e45488f0.js similarity index 99% rename from main/assets/js/40.9eba8f7d.js rename to main/assets/js/40.e45488f0.js index b7fd8b415fd..411da210ead 100644 --- a/main/assets/js/40.9eba8f7d.js +++ b/main/assets/js/40.e45488f0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{518: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],{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 diff --git a/main/assets/js/64.ec5e0953.js b/main/assets/js/64.d786a30c.js similarity index 99% rename from main/assets/js/64.ec5e0953.js rename to main/assets/js/64.d786a30c.js index 03a01756b7c..ba192607320 100644 --- a/main/assets/js/64.ec5e0953.js +++ b/main/assets/js/64.d786a30c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{630: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],{627: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.9abcd3be.js similarity index 98% rename from main/assets/js/65.b075267d.js rename to main/assets/js/65.9abcd3be.js index bb2938daf14..f05248560ba 100644 --- a/main/assets/js/65.b075267d.js +++ b/main/assets/js/65.9abcd3be.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],{535: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.fbeae8db.js similarity index 93% rename from main/assets/js/66.47484ddd.js rename to main/assets/js/66.fbeae8db.js index 195864968e6..a8aa288248a 100644 --- a/main/assets/js/66.47484ddd.js +++ b/main/assets/js/66.fbeae8db.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],{534: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.441342b4.js b/main/assets/js/67.0cea8ad8.js similarity index 99% rename from main/assets/js/67.441342b4.js rename to main/assets/js/67.0cea8ad8.js index b15ed118d56..037f6abae12 100644 --- a/main/assets/js/67.441342b4.js +++ b/main/assets/js/67.0cea8ad8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{627: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],{623:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"delegator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegator-faq"}},[e._v("#")]),e._v(" Delegator FAQ")]),e._v(" "),a("h2",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("People that cannot or do not want to operate "),a("RouterLink",{attrs:{to:"/validators/overview.html"}},[e._v("validator nodes")]),e._v(" can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 180 addresses with highest stake, they will exit the validator set.")],1),e._v(" "),a("p",[a("strong",[e._v("Delegators share the revenue of their validators, but they also share the risks.")]),e._v(" In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see "),a("a",{attrs:{href:"#choosing-a-validator"}},[e._v("section")]),e._v(" below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see "),a("a",{attrs:{href:"#risks"}},[e._v("Risks")]),e._v(" section.")]),e._v(" "),a("p",[e._v("To become delegators, Atom holders need to send a "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v('"Delegate transaction"')]),e._v(' where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.')],1),e._v(" "),a("p",[e._v("For a practical guide on how to become a delegator, click "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),a("h2",{attrs:{id:"choosing-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-validator"}},[e._v("#")]),e._v(" Choosing a validator")]),e._v(" "),a("p",[e._v("In order to choose their validators, delegators have access to a range of information directly in "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),a("OutboundLink")],1),e._v(" or other Cosmos block explorers.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's moniker")]),e._v(": Name of the validator candidate.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's description")]),e._v(": Description provided by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's website")]),e._v(": Link to the validator's website.")]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on revenue charged to any delegator by the validator (see below for more detail).")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator self-bond amount")]),e._v(": A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.")])]),e._v(" "),a("h2",{attrs:{id:"directives-of-delegators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directives-of-delegators"}},[e._v("#")]),e._v(" Directives of delegators")]),e._v(" "),a("p",[e._v("Being a delegator is not a passive task. Here are the main directives of a delegator:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Perform careful due diligence on validators before delegating.")]),e._v(" If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.")]),e._v(" "),a("li",[a("strong",[e._v("Actively monitor their validator after having delegated.")]),e._v(" Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).")]),e._v(" "),a("li",[a("strong",[e._v("Participate in governance.")]),e._v(" Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.")])]),e._v(" "),a("h2",{attrs:{id:"revenue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#revenue"}},[e._v("#")]),e._v(" Revenue")]),e._v(" "),a("p",[e._v("Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block provisions (Atoms):")]),e._v(" They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees (various tokens):")]),e._v(" Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.")])]),e._v(" "),a("h2",{attrs:{id:"validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-commission"}},[e._v("#")]),e._v(" Validator Commission")]),e._v(" "),a("p",[e._v("Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:")]),e._v(" "),a("p",[e._v("We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:")]),e._v(" "),a("ul",[a("li",[e._v("990 Atoms in block provisions")]),e._v(" "),a("li",[e._v("10 Atoms in transaction fees.")])]),e._v(" "),a("p",[e._v("This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.")]),e._v(" "),a("p",[e._v("Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:")]),e._v(" "),a("ul",[a("li",[e._v("Commission = "),a("code",[e._v("10% * 80% * 100")]),e._v(" Atoms = 8 Atoms")]),e._v(" "),a("li",[e._v("Validator's revenue = "),a("code",[e._v("20% * 100")]),e._v(" Atoms + Commission = 28 Atoms")]),e._v(" "),a("li",[e._v("Delegators' total revenue = "),a("code",[e._v("80% * 100")]),e._v(" Atoms - Commission = 72 Atoms")])]),e._v(" "),a("p",[e._v("Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),a("p",[e._v("The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.")]),e._v(" "),a("p",[e._v("The LSM mitigates liquid staking risks by limiting the total amount of ATOM that can be liquid staked to a percentage of all staked ATOM. As an additional risk-mitigation feature, the LSM introduces a requirement that validators self-bond ATOM to be eligible for delegations from liquid staking providers or to be eligible to mint LSM tokens. This mechanism is called the “validator bond”, and is technically distinct from the current self-bond mechanism, but functions similarly.")]),e._v(" "),a("p",[e._v("At the same time, the LSM introduces the ability for staked ATOM to be instantly liquid staked, without having to wait for the unbonding period.")]),e._v(" "),a("p",[e._v("The LSM enables users to instantly liquid stake their staked ATOM, without having to wait the twenty-one day unbonding period. This is important, because a very large portion of the ATOM supply is currently staked. Liquid staking ATOM that is already staked incurs a switching cost in the form of three weeks’ forfeited staking rewards. The LSM eliminates this switching cost.")]),e._v(" "),a("p",[e._v("A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert her staked ATOM to liquid staked ATOM. It would be as easy as liquid staking unstaked ATOM.")]),e._v(" "),a("p",[e._v("Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked ATOM and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked ATOM is tokenized it can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period.")]),e._v(" "),a("h3",{attrs:{id:"toggling-the-ability-to-tokenize-shares"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#toggling-the-ability-to-tokenize-shares"}},[e._v("#")]),e._v(" Toggling the ability to tokenize shares")]),e._v(" "),a("p",[e._v("Currently the liquid staking module facilitates the immediate conversion of staked assets into liquid staked tokens. Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens).")]),e._v(" "),a("p",[e._v("Tokenization obviates this potential recovery measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, the staking module permit accounts to selectively disable the tokenization of their stake with the "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyBkaXNhYmxlLXRva2VuaXplLXNoYXJlcyAtLWZyb20gbXlrZXkgIAo="}}),e._v(" "),a("p",[e._v("When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.")]),e._v(" "),a("p",[e._v("There is one main slashing condition:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.")])]),e._v(" "),a("p",[e._v("This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/69.d8005942.js b/main/assets/js/69.a569b6d5.js similarity index 99% rename from main/assets/js/69.d8005942.js rename to main/assets/js/69.a569b6d5.js index b89d16c145d..3be6b54d4c6 100644 --- a/main/assets/js/69.d8005942.js +++ b/main/assets/js/69.a569b6d5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{623: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://www.researchgate.net/publication/328497447_The_Weaponization_of_Social_Media_Spear_Phishing_and_Cyberattacks_on_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],{620: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://www.researchgate.net/publication/328497447_The_Weaponization_of_Social_Media_Spear_Phishing_and_Cyberattacks_on_Democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(" , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.")]),e._v(" An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v(" designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics "),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" .")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch")]),e._v(", so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us")]),e._v(", and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.")])])]),e._v(" "),o("p",[e._v("If you receive an email or tweet that sounds too good to be true, is likely to be a scam.")]),e._v(" "),o("h2",{attrs:{id:"key-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#key-management"}},[e._v("#")]),e._v(" Key Management")]),e._v(" "),o("p",[e._v("The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.")]),e._v(" "),o("p",[o("strong",[e._v("To protect your ATOM, do not share your 12 words with anyone.")]),e._v(" The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,")]),e._v(" "),o("h2",{attrs:{id:"software-vulnerabilities"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#software-vulnerabilities"}},[e._v("#")]),e._v(" Software Vulnerabilities")]),e._v(" "),o("p",[e._v("To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.")]),e._v(" "),o("p",[o("em",[e._v("To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of "),o("code",[e._v("gaiad")]),e._v(" when you're doing anything that involves your 12 words")]),e._v(". The latest versions of "),o("code",[e._v("Tendermint")]),e._v(", the "),o("code",[e._v("Cosmos-SDK")]),e._v(", and "),o("code",[e._v("gaiad")]),e._v(" will always be available from our official Github repositories.")]),e._v(" "),o("p",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.")]),e._v(" "),o("h2",{attrs:{id:"verifying-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-transactions"}},[e._v("#")]),e._v(" Verifying Transactions")]),e._v(" "),o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.")]),e._v(" "),o("p",[o("strong",[e._v("When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send")]),e._v(". While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.")]),e._v(" "),o("h2",{attrs:{id:"account-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#account-security"}},[e._v("#")]),e._v(" Account Security")]),e._v(" "),o("p",[e._v("One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.")]),e._v(" "),o("p",[e._v("For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Universal_2nd_Factor",target:"_blank",rel:"noopener noreferrer"}},[e._v("U2F hardware key"),o("OutboundLink")],1),e._v(" as a second factor.")])]),e._v(" "),o("li",[o("p",[e._v("Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.")])])]),e._v(" "),o("h2",{attrs:{id:"supply-chain-attacks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supply-chain-attacks"}},[e._v("#")]),e._v(" Supply Chain Attacks")]),e._v(" "),o("p",[e._v("Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.")]),e._v(" "),o("h2",{attrs:{id:"disclaimer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disclaimer"}},[e._v("#")]),e._v(" Disclaimer")]),e._v(" "),o("p",[e._v('Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`')])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/72.a5ff7a94.js b/main/assets/js/72.c79773bc.js similarity index 99% rename from main/assets/js/72.a5ff7a94.js rename to main/assets/js/72.c79773bc.js index cfe99071790..ac0237db882 100644 --- a/main/assets/js/72.a5ff7a94.js +++ b/main/assets/js/72.c79773bc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{620: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],{617:function(e,a,o){"use strict";o.r(a);var s=o(1),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"unase-a-la-red-principal-del-cosmos-hub"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-cosmos-hub"}},[e._v("#")]),e._v(" Únase a la red principal del Cosmos Hub")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("Vea el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio para el lanzamiento"),o("OutboundLink")],1),e._v(" para la información de la red principal, incluyendo la versión correcta para el SDK de Cosmos que usar y detalles acerca del archivo génesis.")])]),e._v(" "),o("p",[e._v("::: aviso\n"),o("strong",[e._v("Necesitará "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[e._v("instalar gaia")]),e._v(" antes de avanzar más")],1),e._v("\n:::")]),e._v(" "),o("h2",{attrs:{id:"configurando-un-nuevo-nodo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configurando-un-nuevo-nodo"}},[e._v("#")]),e._v(" Configurando un nuevo nodo")]),e._v(" "),o("p",[e._v("Estas instrucciones son para establecer un nuevo nodo completo desde cero.")]),e._v(" "),o("p",[e._v("Primero, inicie el nodo y cree los archivos de configuración necesarios:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),e._v(" "),o("p",[e._v(":::Warning\nEl moniker solo debe contener carácteres ASCII. El uso de caracteres Unicode hará que tu nodo sea irreconocible.\n:::")]),e._v(" "),o("p",[e._v("Puede editar el apodo ("),o("code",[e._v("moniker")]),e._v(") después, en el archivo "),o("code",[e._v("~/.gaia/config/config.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt0dSBub21icmUgcGVyc29uYWxpemFkbyZndDsmcXVvdDsK"}}),e._v(" "),o("p",[e._v("Puede editar el archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(" para activar el mecanismo antispam y rechazar las transacciones entrantes con valores inferiores a los precios mínimos para el "),o("em",[e._v("gas")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),e._v(" "),o("p",[e._v("¡Su nodo completo ha sido iniciado!")]),e._v(" "),o("h2",{attrs:{id:"genesis-y-semillas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-y-semillas"}},[e._v("#")]),e._v(" Génesis y semillas")]),e._v(" "),o("h3",{attrs:{id:"copie-el-archivo-genesis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#copie-el-archivo-genesis"}},[e._v("#")]),e._v(" Copie el archivo génesis")]),e._v(" "),o("p",[e._v("Busque el archivo "),o("code",[e._v("genesis.json")]),e._v(" de la red principal en el directorio de configuración de "),o("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Observe que usamos el directorio "),o("code",[e._v("latest")]),e._v(" en el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio de lanzamiento"),o("OutboundLink")],1),e._v(" que contiene detalles para la red principal como la última versión y el archivo de génesis.")]),e._v(" "),o("p",[e._v(":::consejo\nSi en cambio quiere conectarse a la red de pruebas pública, haga clic "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[e._v("aquí")]),e._v("\n:::")],1),e._v(" "),o("p",[e._v("Para verificar la validez de la configuración:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("h3",{attrs:{id:"anada-los-nodos-semilla"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#anada-los-nodos-semilla"}},[e._v("#")]),e._v(" Añada los nodos semilla")]),e._v(" "),o("p",[e._v("Su nodo necesita saber cómo encontrar pares ("),o("em",[e._v("peers")]),e._v("). Necesita añadir nodos semilla en buen estado en "),o("code",[e._v("$HOME/.gaia/config/config.toml")]),e._v(". El repositorio para el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("lanzamiento")]),o("OutboundLink")],1),e._v(" contiene enlaces a algunos nodos semilla.")]),e._v(" "),o("p",[e._v("Si estas semillas no funcionan, puedes encontrar más "),o("em",[e._v("seeds")]),e._v(" y "),o("em",[e._v("peers")]),e._v(" persistentes en un explorador de Cosmos Hub (puede encontrar una lista en la "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("página del lanzamiento"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("p",[e._v("También puedes preguntar por "),o("em",[e._v("peers")]),e._v(" en el "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("canal de Validadores de Riot"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Para más información acerca de seeds y peers, puede leer "),o("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/v0.34.x/spec/p2p/peer.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("este enlace"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"nota-sobre-el-fee-y-el-gas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nota-sobre-el-fee-y-el-gas"}},[e._v("#")]),e._v(" Nota sobre el Fee y el Gas")]),e._v(" "),o("p",[e._v("::: Aviso\nEn el Hub de Cosmos, la denominación aceptada es "),o("code",[e._v("uatom")]),e._v(", donde "),o("code",[e._v("1atom = 1.000.000uatom")]),e._v("\n:::")]),e._v(" "),o("p",[e._v("Las transacciones en la red del Hub de Cosmos deben incluir una tarifa de transacción para poder ser procesadas. Esta tarifa paga el gas necesario para llevar a cabo la transacción. La fórmula es la siguiente:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"dGFyaWZhID0gdGVjaG8oZ2FzICogcHJlY2lvUG9yR2FzKQo="}}),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gas")]),e._v(" depende de la transacción. Diferentes transacciones requieren diferentes cantidades de "),o("code",[e._v("gas")]),e._v(". La cantidad de "),o("code",[e._v("gas")]),e._v(" para una transacción se calcula mientras se procesa, pero hay una forma previa de estimarla usando el valor "),o("code",[e._v("auto")]),e._v(" para el indicador de "),o("code",[e._v("gas")]),e._v(". Por supuesto, esto sólo da una estimación. Puede ajustar esta estimación con el identificador "),o("code",[e._v("--gas-adjustment")]),e._v(" (por defecto "),o("code",[e._v("1.0")]),e._v(") si quiere estar seguro de que proporciona suficiente "),o("code",[e._v("gas")]),e._v(" para la transacción.")]),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gasPrice")]),e._v(" (i.e "),o("code",[e._v("precioPorGas")]),e._v(") es el precio de cada unidad de "),o("code",[e._v("gas")]),e._v(". Cada validador establece un valor de "),o("code",[e._v("min-gas-price")]),e._v(", y sólo incluirá transacciones que tengan un "),o("code",[e._v("gasPrice")]),e._v(" mayor que su "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("Los "),o("code",[e._v("fees")]),e._v(" de la transacción son el producto del "),o("code",[e._v("gas")]),e._v(" y del "),o("code",[e._v("gasPrice")]),e._v(". Como usuario, tiene que introducir 2 de 3. Cuanto más alto sea el "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", mayor será la posibilidad de que su transacción se incluya en un bloque.")]),e._v(" "),o("p",[e._v("::: consejo\nPara la red principal, el "),o("code",[e._v("gas-prices")]),e._v(" recomendado es "),o("code",[e._v("0.0025uatom")]),e._v(".\n:::")]),e._v(" "),o("h2",{attrs:{id:"establezca-minimum-gas-prices"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#establezca-minimum-gas-prices"}},[e._v("#")]),e._v(" Establezca "),o("code",[e._v("minimum-gas-prices")])]),e._v(" "),o("p",[e._v("Su nodo completo mantiene las transacciones no confirmadas en la "),o("em",[e._v("mempool")]),e._v(". Para protegerlo de ataques de spam, es mejor establecer un "),o("code",[e._v("minimum-gas-prices")]),e._v(" que la transacción debe cumplir para ser aceptada en la "),o("em",[e._v("mempool")]),e._v(" de su nodo. Este parámetro puede ser establecido en el siguiente archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),o("p",[e._v("El valor inicial recomendado para "),o("code",[e._v("min-gas-prices")]),e._v(" es "),o("code",[e._v("0.0025uatom")]),e._v(", pero puede querer cambiarlo más tarde.")]),e._v(" "),o("h2",{attrs:{id:"reduccion-del-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reduccion-del-estado"}},[e._v("#")]),e._v(" Reducción del Estado")]),e._v(" "),o("p",[e._v("Hay tres estrategias para reducir el estado, por favor tenga en cuenta que esto es sólo para el estado y no para el almacenamiento de bloques:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("PruneEverything")]),e._v(": Esto significa que todos los estados salvados serán reducidos aparte del actual.")]),e._v(" "),o("li",[o("code",[e._v("PruneNothing")]),e._v(": Esto significa que todo el estado se guardará y nada se borrará.")]),e._v(" "),o("li",[o("code",[e._v("PruneSyncable")]),e._v(": Esto significa que sólo se salvará el estado de los últimos 100 y cada 10.000 bloques.")])]),e._v(" "),o("p",[e._v("Por defecto cada nodo está en modo "),o("code",[e._v("PruneSyncable")]),e._v(". Si desea cambiar su estrategia de reducción en su nodo, debe hacerlo cuando el nodo se ha iniciado. Por ejemplo, si desea cambiar su nodo al modo "),o("code",[e._v("PruneEverything")]),e._v(" entonces puede pasar la opción "),o("code",[e._v("---pruning everything")]),e._v(" cuando llame a "),o("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),o("blockquote",[o("p",[e._v("Nota: Cuando esté en estado de reducción no podrá consultar las partes que no estén en su base de datos.")])]),e._v(" "),o("h2",{attrs:{id:"ejecute-un-nodo-completo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ejecute-un-nodo-completo"}},[e._v("#")]),e._v(" Ejecute un nodo completo")]),e._v(" "),o("p",[e._v("Inicie el nodo completo con este comando:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Comprueba que todo funciona bien:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),e._v(" "),o("p",[e._v("Vea el estado de la red con el "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("Explorador de Cosmos"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"exportar-el-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#exportar-el-estado"}},[e._v("#")]),e._v(" Exportar el estado")]),e._v(" "),o("p",[e._v("Gaia puede volcar todo el estado de la aplicación a un archivo JSON, que podría ser útil para el análisis manual y también puede ser usado como el archivo génesis para una nueva red.")]),e._v(" "),o("p",[e._v("Exporte el estado con:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("También puede exportar el estado desde una altura en especial (al final del procesamiento del bloque en esa altura):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("Si desea empezar una nueva red desde el estado exportado, expórtelo con la opción "),o("code",[e._v("--for-zero-height")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("h2",{attrs:{id:"verifica-la-red-principal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifica-la-red-principal"}},[e._v("#")]),e._v(" Verifica la red principal")]),e._v(" "),o("p",[e._v("Ayude a prevenir problemas críticos ejecutando invariantes en cada bloque de su nodo. En esencia, al ejecutar invariantes se asegura que el estado de la red principal es el estado esperado correcto. Una comprobación de la invariante vital es que ningún átomo está siendo creado o destruido fuera del protocolo esperado, sin embargo hay muchas otras invariantes, comprueben cada una de ellas de forma única para su respectivo módulo. Porque la invariante es costosa desde el punto de vista computacional, no están habilitados por defecto. Para ejecutar un nodo con estas comprobaciones inicie su nodo con la opción "),o("code",[e._v("inv-check-period")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),e._v(" "),o("p",[e._v("Si se rompe una invariante en su nodo, su nodo entrará en pánico ("),o("code",[e._v("panic")]),e._v(" de Golang) y le pedirá que envíe una transacción que detenga la red principal. Por ejemplo, el mensaje proporcionado puede parecerse a:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),e._v(" "),o("p",[e._v("Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).")]),e._v(" "),o("h2",{attrs:{id:"actualice-a-un-nodo-validador"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#actualice-a-un-nodo-validador"}},[e._v("#")]),e._v(" Actualice a un nodo validador")]),e._v(" "),o("p",[e._v("Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la "),o("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[e._v("Configuración del Validador")])],1)],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/75.dc70c75c.js b/main/assets/js/75.dd3bbe40.js similarity index 99% rename from main/assets/js/75.dc70c75c.js rename to main/assets/js/75.dd3bbe40.js index 73d3b5bdb04..e3597e15004 100644 --- a/main/assets/js/75.dc70c75c.js +++ b/main/assets/js/75.dd3bbe40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{492: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],{498: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/77.d385e7dc.js b/main/assets/js/77.ee375f69.js similarity index 99% rename from main/assets/js/77.d385e7dc.js rename to main/assets/js/77.ee375f69.js index be67b3c27e7..2206ffea1e7 100644 --- a/main/assets/js/77.d385e7dc.js +++ b/main/assets/js/77.ee375f69.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{546: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],{509: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.51b2c889.js b/main/assets/js/78.d5fdd728.js similarity index 99% rename from main/assets/js/78.51b2c889.js rename to main/assets/js/78.d5fdd728.js index 5d4cbaebdc1..ca9fb88f864 100644 --- a/main/assets/js/78.51b2c889.js +++ b/main/assets/js/78.d5fdd728.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{509: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:"IyBCdWlsZCBnYWlhZCBiaW5hcnkgYW5kIGluaXRpYWxpemUgY2hhaW4KY2QgJEhPTUUKZ2l0IGNsb25lIC1iIHYxNC4xLjAgaHR0cHM6Ly9naXRodWIuY29tL2Nvc21vcy9nYWlhIC0tZGVwdGg9MQpjZCBnYWlhZAptYWtlIGluc3RhbGwKZ2FpYWQgaW5pdCBDVVNUT01fTU9OSUtFUiAtLWNoYWluLWlkIGNvc21vc2h1Yi00CgojU2V0IG1pbmltdW0gZ2FzIHByaWNlICZhbXA7IHBlZXJzCnNlZCAtaScnICdzL21pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Oy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Oy8nICRIT01FLy5nYWlhL2NvbmZpZy9hcHAudG9tbApzZWQgLWknJyAncy9wZXJzaXN0ZW50X3BlZXJzID0gJnF1b3Q7JnF1b3Q7L3BlcnNpc3RlbnRfcGVlcnMgPSAnJnF1b3Q7XCZxdW90OyQoY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL2NoYWluLXJlZ2lzdHJ5L21hc3Rlci9jb3Ntb3NodWIvY2hhaW4uanNvbiB8IGpxIC1yICdbZm9yZWFjaCAucGVlcnMuc2VlZHNbXSBhcyAkaXRlbSAoJnF1b3Q7JnF1b3Q7OyAmcXVvdDtcKCRpdGVtLmlkKUBcKCRpdGVtLmFkZHJlc3MpJnF1b3Q7KV0gfCBqb2luKCZxdW90OywmcXVvdDspJylcJnF1b3Q7JnF1b3Q7Jy8nICRIT01FLy5nYWlhL2NvbmZpZy9jb25maWcudG9tbAoKIyBDb25maWd1cmUgU3RhdGUgc3luYwpzZWQgLWknJyAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKc2VkIC1pJycgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cHM6XC9cL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczpcL1wvcnBjLWNvc21vc2h1Yi1pYS5jb3Ntb3NpYS5ub3Rpb25hbC52ZW50dXJlczo0NDMsaHR0cHM6XC9cL3JwYy5jb3Ntb3MubmV0d29yazo0NDMmcXVvdDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKCiNTdGFydCBHYWlhCmdhaWFkIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cwo="}})],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],{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:"IyBCdWlsZCBnYWlhZCBiaW5hcnkgYW5kIGluaXRpYWxpemUgY2hhaW4KY2QgJEhPTUUKZ2l0IGNsb25lIC1iIHYxNC4xLjAgaHR0cHM6Ly9naXRodWIuY29tL2Nvc21vcy9nYWlhIC0tZGVwdGg9MQpjZCBnYWlhZAptYWtlIGluc3RhbGwKZ2FpYWQgaW5pdCBDVVNUT01fTU9OSUtFUiAtLWNoYWluLWlkIGNvc21vc2h1Yi00CgojU2V0IG1pbmltdW0gZ2FzIHByaWNlICZhbXA7IHBlZXJzCnNlZCAtaScnICdzL21pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Oy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Oy8nICRIT01FLy5nYWlhL2NvbmZpZy9hcHAudG9tbApzZWQgLWknJyAncy9wZXJzaXN0ZW50X3BlZXJzID0gJnF1b3Q7JnF1b3Q7L3BlcnNpc3RlbnRfcGVlcnMgPSAnJnF1b3Q7XCZxdW90OyQoY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL2NoYWluLXJlZ2lzdHJ5L21hc3Rlci9jb3Ntb3NodWIvY2hhaW4uanNvbiB8IGpxIC1yICdbZm9yZWFjaCAucGVlcnMuc2VlZHNbXSBhcyAkaXRlbSAoJnF1b3Q7JnF1b3Q7OyAmcXVvdDtcKCRpdGVtLmlkKUBcKCRpdGVtLmFkZHJlc3MpJnF1b3Q7KV0gfCBqb2luKCZxdW90OywmcXVvdDspJylcJnF1b3Q7JnF1b3Q7Jy8nICRIT01FLy5nYWlhL2NvbmZpZy9jb25maWcudG9tbAoKIyBDb25maWd1cmUgU3RhdGUgc3luYwpzZWQgLWknJyAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKc2VkIC1pJycgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgJEhPTUUvLmdhaWEvY29uZmlnL2NvbmZpZy50b21sCnNlZCAtaScnICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cHM6XC9cL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczpcL1wvcnBjLWNvc21vc2h1Yi1pYS5jb3Ntb3NpYS5ub3Rpb25hbC52ZW50dXJlczo0NDMsaHR0cHM6XC9cL3JwYy5jb3Ntb3MubmV0d29yazo0NDMmcXVvdDsvJyAkSE9NRS8uZ2FpYS9jb25maWcvY29uZmlnLnRvbWwKCiNTdGFydCBHYWlhCmdhaWFkIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cwo="}})],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.6f207a2a.js b/main/assets/js/79.4fafa46f.js similarity index 94% rename from main/assets/js/79.6f207a2a.js rename to main/assets/js/79.4fafa46f.js index 72280c9a787..43129042d8c 100644 --- a/main/assets/js/79.6f207a2a.js +++ b/main/assets/js/79.4fafa46f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{550:function(a,t,e){"use strict";e.r(t);var s=e(1),r=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:"system-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-requirements"}},[a._v("#")]),a._v(" System requirements")]),a._v(" "),e("h2",{attrs:{id:"gaia-upgrades"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gaia-upgrades"}},[a._v("#")]),a._v(" Gaia Upgrades")]),a._v(" "),e("p",[a._v("The Gaia application typically needs at least 32GB RAM, for smooth operation for upgrade, as there may be lenghty migrations to perform.")]),a._v(" "),e("p",[a._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 allow your machine to run the binary than it could run in RAM alone.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"IyBMaW51eCBpbnN0cnVjdGlvbnMKc3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}})],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{549:function(a,t,e){"use strict";e.r(t);var s=e(1),r=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:"system-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-requirements"}},[a._v("#")]),a._v(" System requirements")]),a._v(" "),e("h2",{attrs:{id:"gaia-upgrades"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gaia-upgrades"}},[a._v("#")]),a._v(" Gaia Upgrades")]),a._v(" "),e("p",[a._v("The Gaia application typically needs at least 32GB RAM, for smooth operation for upgrade, as there may be lenghty migrations to perform.")]),a._v(" "),e("p",[a._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 allow your machine to run the binary than it could run in RAM alone.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"IyBMaW51eCBpbnN0cnVjdGlvbnMKc3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}})],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/81.d0266b82.js b/main/assets/js/81.832642a1.js similarity index 97% rename from main/assets/js/81.d0266b82.js rename to main/assets/js/81.832642a1.js index 5dc9ed52f12..3891332eb16 100644 --- a/main/assets/js/81.d0266b82.js +++ b/main/assets/js/81.832642a1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{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([[81],{550: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/96.2585d02a.js b/main/assets/js/96.1b2e9c52.js similarity index 96% rename from main/assets/js/96.2585d02a.js rename to main/assets/js/96.1b2e9c52.js index 5c11f078ec6..6d00db05093 100644 --- a/main/assets/js/96.2585d02a.js +++ b/main/assets/js/96.1b2e9c52.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{564: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([[96],{562: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/97.e3aa4b55.js b/main/assets/js/97.292ec6db.js similarity index 98% rename from main/assets/js/97.e3aa4b55.js rename to main/assets/js/97.292ec6db.js index 72e9b5e2c58..f7148e92222 100644 --- a/main/assets/js/97.e3aa4b55.js +++ b/main/assets/js/97.292ec6db.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{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 repos 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([[97],{564: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 repos 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/app.20708e4b.js b/main/assets/js/app.addc053b.js similarity index 90% rename from main/assets/js/app.20708e4b.js rename to main/assets/js/app.addc053b.js index 77c2b56f1fc..3745de1668c 100644 --- a/main/assets/js/app.20708e4b.js +++ b/main/assets/js/app.addc053b.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 jo(e,t){for(var n in t)e[n]=t[n];return e}var Do=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Do,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,523)),Layout:()=>n.e(28).then(n.bind(null,641))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,526)),"v-127d50ca":()=>n.e(60).then(n.bind(null,528)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,529)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,531)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,532)),"v-f8267540":()=>n.e(65).then(n.bind(null,534)),"v-81da516a":()=>n.e(66).then(n.bind(null,535)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,537)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,538)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,540)),"v-0589512b":()=>n.e(74).then(n.bind(null,541)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,543)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,509)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,546)),"v-606149c6":()=>n.e(80).then(n.bind(null,547)),"v-66b4080b":()=>n.e(81).then(n.bind(null,549)),"v-574bfe80":()=>n.e(79).then(n.bind(null,550)),"v-9ff0f970":()=>n.e(84).then(n.bind(null,552)),"v-e4b2f83a":()=>n.e(85).then(n.bind(null,553)),"v-bf1b043c":()=>n.e(86).then(n.bind(null,555)),"v-39316e24":()=>n.e(87).then(n.bind(null,556)),"v-43a7e1f8":()=>n.e(88).then(n.bind(null,558)),"v-ff7fa248":()=>n.e(89).then(n.bind(null,559)),"v-4ac77b64":()=>n.e(90).then(n.bind(null,561)),"v-6a4f1c80":()=>n.e(97).then(n.bind(null,562)),"v-2758d5a0":()=>n.e(96).then(n.bind(null,564)),"v-7431790b":()=>n.e(98).then(n.bind(null,565)),"v-4b23576b":()=>n.e(99).then(n.bind(null,567)),"v-64792cc2":()=>n.e(101).then(n.bind(null,568)),"v-725866d9":()=>n.e(104).then(n.bind(null,570)),"v-230a9c4b":()=>n.e(106).then(n.bind(null,571)),"v-2dfd010b":()=>n.e(109).then(n.bind(null,573)),"v-b8864dea":()=>n.e(111).then(n.bind(null,574)),"v-68a68850":()=>n.e(113).then(n.bind(null,576)),"v-37169a5a":()=>n.e(110).then(n.bind(null,577)),"v-780264ab":()=>n.e(117).then(n.bind(null,579)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,580)),"v-273748bf":()=>n.e(118).then(n.bind(null,582)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,583)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,585)),"v-414999cb":()=>n.e(124).then(n.bind(null,586)),"v-c7883d00":()=>n.e(126).then(n.bind(null,588)),"v-59462f69":()=>n.e(125).then(n.bind(null,589)),"v-3169ddcb":()=>n.e(127).then(n.bind(null,591)),"v-15244044":()=>n.e(129).then(n.bind(null,592)),"v-77046140":()=>n.e(132).then(n.bind(null,594)),"v-59c05d68":()=>n.e(131).then(n.bind(null,595)),"v-1916440a":()=>n.e(133).then(n.bind(null,597)),"v-25a92840":()=>n.e(134).then(n.bind(null,598)),"v-79b59060":()=>n.e(136).then(n.bind(null,600)),"v-aee924c0":()=>n.e(139).then(n.bind(null,601)),"v-5c94f8c0":()=>n.e(141).then(n.bind(null,603)),"v-3254b154":()=>n.e(142).then(n.bind(null,604)),"v-bfd7ad74":()=>n.e(143).then(n.bind(null,606)),"v-7b5c086b":()=>n.e(146).then(n.bind(null,607)),"v-48a7c4e6":()=>n.e(148).then(n.bind(null,609)),"v-45ad53dd":()=>n.e(149).then(n.bind(null,610)),"v-a3068aaa":()=>n.e(164).then(n.bind(null,612)),"v-071e366f":()=>n.e(166).then(n.bind(null,613)),"v-b9e98ed4":()=>n.e(167).then(n.bind(null,615)),"v-75000dc1":()=>n.e(172).then(n.bind(null,616)),"v-7df08ab4":()=>n.e(169).then(n.bind(null,618)),"v-0110ec16":()=>n.e(173).then(n.bind(null,619)),"v-79617eab":()=>n.e(174).then(n.bind(null,621)),"v-6d897402":()=>n.e(175).then(n.bind(null,622)),"v-37d38700":()=>n.e(176).then(n.bind(null,624)),"v-4da7b8c0":()=>n.e(177).then(n.bind(null,625)),"v-3bacdca0":()=>n.e(178).then(n.bind(null,628)),"v-c519eab8":()=>n.e(180).then(n.bind(null,629)),"v-1813a4ea":()=>n.e(181).then(n.bind(null,631)),"v-4cbea1b0":()=>n.e(183).then(n.bind(null,632)),"v-ec326d3c":()=>n.e(184).then(n.bind(null,634)),"v-07cf9e68":()=>n.e(186).then(n.bind(null,635)),"v-dd4a8258":()=>n.e(185).then(n.bind(null,637)),"v-5c30b8f6":()=>n.e(187).then(n.bind(null,638)),"v-a4aa1cc0":()=>n.e(189).then(n.bind(null,640)),"v-621d6140":()=>n.e(192).then(n.bind(null,506)),"v-1731e69c":()=>n.e(194).then(n.bind(null,639)),"v-f2b0d680":()=>n.e(193).then(n.bind(null,636)),"v-feb36d80":()=>n.e(196).then(n.bind(null,633)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,630)),"v-f385361c":()=>n.e(67).then(n.bind(null,627)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,623)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,620)),"v-0d07c820":()=>n.e(170).then(n.bind(null,617)),"v-27ea8460":()=>n.e(82).then(n.bind(null,614)),"v-fd3648c0":()=>n.e(83).then(n.bind(null,611)),"v-7cd69f68":()=>n.e(91).then(n.bind(null,608)),"v-6c706790":()=>n.e(92).then(n.bind(null,605)),"v-80c733e0":()=>n.e(93).then(n.bind(null,602)),"v-16a2b68a":()=>n.e(94).then(n.bind(null,599)),"v-405c4ac0":()=>n.e(95).then(n.bind(null,596)),"v-5d13e021":()=>n.e(100).then(n.bind(null,593)),"v-23577189":()=>n.e(102).then(n.bind(null,590)),"v-183e9cb3":()=>n.e(103).then(n.bind(null,587)),"v-2e2517eb":()=>n.e(108).then(n.bind(null,584)),"v-bd8534ea":()=>n.e(107).then(n.bind(null,581)),"v-b74fdc6a":()=>n.e(105).then(n.bind(null,578)),"v-69e7af00":()=>n.e(115).then(n.bind(null,575)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,572)),"v-524c67f6":()=>n.e(130).then(n.bind(null,569)),"v-5d40e180":()=>n.e(135).then(n.bind(null,566)),"v-4251c2a0":()=>n.e(140).then(n.bind(null,563)),"v-63a66800":()=>n.e(145).then(n.bind(null,560)),"v-e9d91d38":()=>n.e(147).then(n.bind(null,557)),"v-78add710":()=>n.e(152).then(n.bind(null,554)),"v-d8722040":()=>n.e(150).then(n.bind(null,551)),"v-76ff3f40":()=>n.e(154).then(n.bind(null,548)),"v-3a6c3c60":()=>n.e(153).then(n.bind(null,545)),"v-1ed61780":()=>n.e(156).then(n.bind(null,542)),"v-69a7e640":()=>n.e(155).then(n.bind(null,539)),"v-15fddba0":()=>n.e(157).then(n.bind(null,536)),"v-3b66c300":()=>n.e(158).then(n.bind(null,533)),"v-60cfaa60":()=>n.e(159).then(n.bind(null,530)),"v-08131412":()=>n.e(160).then(n.bind(null,527)),"v-c184b540":()=>n.e(162).then(n.bind(null,524)),"v-fc555fcc":()=>n.e(161).then(n.bind(null,505)),"v-77c0d338":()=>n.e(163).then(n.bind(null,504)),"v-f8a9ba00":()=>n.e(165).then(n.bind(null,503)),"v-611af834":()=>n.e(4).then(n.bind(null,502)),"v-55d7a0e0":()=>n.e(171).then(n.bind(null,501)),"v-dd937a80":()=>n.e(188).then(n.bind(null,500)),"v-29e61a5c":()=>n.e(191).then(n.bind(null,499)),"v-a8848234":()=>n.e(138).then(n.bind(null,498)),"v-68a36ea0":()=>n.e(151).then(n.bind(null,497)),"v-91b151c0":()=>n.e(168).then(n.bind(null,496)),"v-3cb8cfc8":()=>n.e(182).then(n.bind(null,495)),"v-26ead5fe":()=>n.e(190).then(n.bind(null,494)),"v-1d21baa0":()=>n.e(195).then(n.bind(null,493)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,492)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,491)),"v-56618330":()=>n.e(114).then(n.bind(null,490)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,489)),"v-f4d75640":()=>n.e(119).then(n.bind(null,488)),"v-7e931cdc":()=>n.e(137).then(n.bind(null,487)),"v-143a889c":()=>n.e(179).then(n.bind(null,486)),"v-17b4aa2d":()=>n.e(112).then(n.bind(null,485)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,484)),"v-9a504180":()=>n.e(128).then(n.bind(null,483)),"v-7cf7c3e0":()=>n.e(144).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 Ma(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 ja=Object.assign({},Ca,Sa),Da=e=>ja[e],Ia=e=>Sa[e],Ra=e=>Ca[e],Fa=e=>Mo.component(e);function qa(e){return Ma(Ia,e)}function $a(e){return Ma(Ra,e)}function za(e){return Ma(Da,e)}function Ba(e){return Ma(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)();Mo.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-1c8e49b4",path:"/getting-started/quickstart.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c8e49b4").then(n)}},{name:"v-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").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-574bfe80",path:"/getting-started/system-requirements.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-574bfe80").then(n)}},{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-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").then(n)}},{name:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2758d5a0").then(n)}},{name:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7431790b").then(n)}},{path:"/governance/proposals/2020-10-blocks-per-year/index.html",redirect:"/governance/proposals/2020-10-blocks-per-year/"},{name:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4b23576b").then(n)}},{path:"/governance/proposals/2020-11-inflation-rate-change/index.html",redirect:"/governance/proposals/2020-11-inflation-rate-change/"},{name:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-64792cc2").then(n)}},{path:"/governance/proposals/2021-01-delay-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{name:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-725866d9").then(n)}},{path:"/governance/proposals/2021-03-enable-ibc-transfers/index.html",redirect:"/governance/proposals/2021-03-enable-ibc-transfers/"},{name:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-230a9c4b").then(n)}},{path:"/governance/proposals/2021-04-lower-deposit-requirement/index.html",redirect:"/governance/proposals/2021-04-lower-deposit-requirement/"},{name:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2dfd010b").then(n)}},{path:"/governance/proposals/2021-07-atom-liquidity-incentives/index.html",redirect:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{name:"v-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-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-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-c7883d00",path:"/interchain-security/interchain-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c7883d00").then(n)}},{name:"v-59462f69",path:"/interchain-security/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59462f69").then(n)}},{path:"/interchain-security/index.html",redirect:"/interchain-security/"},{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-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-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-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-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").then(n)}},{name:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0110ec16").then(n)}},{name:"v-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-07cf9e68").then(n)}},{name:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").then(n)}},{name:"v-5c30b8f6",path:"/zh/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c30b8f6").then(n)}},{name:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").then(n)}},{name:"v-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").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-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2e2517eb").then(n)}},{path:"/governance/proposals/2021-05-gravity-bridge-deployment/index.html",redirect:"/governance/proposals/2021-05-gravity-bridge-deployment/"},{name:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bd8534ea").then(n)}},{path:"/governance/proposals/2021-04-prop34-continuation/index.html",redirect:"/governance/proposals/2021-04-prop34-continuation/"},{name:"v-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-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-d8722040",path:"/migration/cosmoshub-2/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-d8722040").then(n)}},{name:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").then(n)}},{name:"v-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3a6c3c60").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{name:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69a7e640").then(n)}},{name:"v-15fddba0",path:"/migration/cosmoshub-4-v12-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15fddba0").then(n)}},{name:"v-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3b66c300").then(n)}},{name:"v-60cfaa60",path:"/migration/cosmoshub-4-v14-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-60cfaa60").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-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").then(n)}},{name:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77c0d338").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd937a80").then(n)}},{name:"v-29e61a5c",path:"/zh/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-29e61a5c").then(n)}},{name:"v-a8848234",path:"/ko/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a8848234").then(n)}},{name:"v-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a36ea0").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{name:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3cb8cfc8").then(n)}},{name:"v-26ead5fe",path:"/zh/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26ead5fe").then(n)}},{name:"v-1d21baa0",path:"/zh/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1d21baa0").then(n)}},{name:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2acc3e00").then(n)}},{name:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b5fc8180").then(n)}},{name:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-56618330").then(n)}},{name:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").then(n)}},{name:"v-f4d75640",path:"/hub-tutorials/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f4d75640").then(n)}},{name:"v-7e931cdc",path:"/ko/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7e931cdc").then(n)}},{name:"v-143a889c",path:"/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-143a889c").then(n)}},{name:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-17b4aa2d").then(n)}},{path:"/governance/proposals/previous-proposals/index.html",redirect:"/governance/proposals/previous-proposals/"},{name:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0ee0b71e").then(n)}},{name:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9a504180").then(n)}},{name:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cf7c3e0").then(n)}},{path:"*",component:Ya.default}],es={title:"Cosmos Hub",description:"",base:"/main/",headTags:[],pages:[{title:"Updating the docs",frontmatter:{description:"",parent:{order:!1}},regularPath:"/DOCS_README.html",relativePath:"DOCS_README.md",key:"v-27502720",path:"/DOCS_README.html",headers:[{level:2,title:"Internationalization",slug:"internationalization"},{level:2,title:"Docs Build Workflow",slug:"docs-build-workflow"},{level:3,title:"How It Works",slug:"how-it-works"},{level:2,title:"README",slug:"readme"},{level:2,title:"Links",slug:"links"},{level:3,title:"Relative",slug:"relative"},{level:3,title:"Absolute",slug:"absolute"},{level:3,title:"Full",slug:"full"},{level:2,title:"Building Locally",slug:"building-locally"},{level:2,title:"Search",slug:"search"},{level:3,title:"Update and Build the RPC docs",slug:"update-and-build-the-rpc-docs"}]},{title:"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:"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:"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:"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:"System requirements",frontmatter:{description:""},regularPath:"/getting-started/system-requirements.html",relativePath:"getting-started/system-requirements.md",key:"v-574bfe80",path:"/getting-started/system-requirements.html",headers:[{level:2,title:"Gaia Upgrades",slug:"gaia-upgrades"}]},{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:"Text (Signaling)",frontmatter:{description:"",order:2,parent:{order:1}},regularPath:"/governance/proposal-types/text-prop.html",relativePath:"governance/proposal-types/text-prop.md",key:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",headers:[{level:2,title:"What are signaling proposals currently used for?",slug:"what-are-signaling-proposals-currently-used-for"},{level:3,title:"A note on historical text proposals",slug:"a-note-on-historical-text-proposals"},{level:2,title:"Why make a signaling proposal?",slug:"why-make-a-signaling-proposal"},{level:2,title:"What happens when a signaling proposal passes?",slug:"what-happens-when-a-signaling-proposal-passes"}]},{title:"Index of Governable Parameters",frontmatter:{description:"",order:2},regularPath:"/governance/proposal-types/params-change/param-index.html",relativePath:"governance/proposal-types/params-change/param-index.md",key:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",headers:[{level:2,title:"Querying on-chain parameters",slug:"querying-on-chain-parameters"},{level:2,title:"Current subspaces, keys, and values",slug:"current-subspaces-keys-and-values"}]},{title:"Cosmos Hub Inflation variable modification: Blocks Per Year",frontmatter:{description:""},regularPath:"/governance/proposals/2020-10-blocks-per-year/",relativePath:"governance/proposals/2020-10-blocks-per-year/README.md",key:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/"},{frontmatter:{description:""},regularPath:"/governance/proposals/2020-11-inflation-rate-change/",relativePath:"governance/proposals/2020-11-inflation-rate-change/README.md",key:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/"},{title:"Delay of Hub Stargate Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-delay-stargate-upgrade/",relativePath:"governance/proposals/2021-01-delay-stargate-upgrade/README.md",key:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{title:"Enable IBC Transfers",frontmatter:{description:""},regularPath:"/governance/proposals/2021-03-enable-ibc-transfers/",relativePath:"governance/proposals/2021-03-enable-ibc-transfers/README.md",key:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",headers:[{level:2,title:"Security Model",slug:"security-model"},{level:2,title:"IBC",slug:"ibc"},{level:2,title:"Incentive Security Extensions",slug:"incentive-security-extensions"}]},{title:"Parameter change: lower minimum proposal deposit amount",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-lower-deposit-requirement/",relativePath:"governance/proposals/2021-04-lower-deposit-requirement/README.md",key:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Objectives",slug:"objectives"},{level:2,title:"Background",slug:"background"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Proposed Parameter Change",slug:"proposed-parameter-change"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Alternatives",slug:"alternatives"},{level:2,title:"Governance Votes",slug:"governance-votes"}]},{title:"ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives",frontmatter:{description:""},regularPath:"/governance/proposals/2021-07-atom-liquidity-incentives/",relativePath:"governance/proposals/2021-07-atom-liquidity-incentives/README.md",key:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{title:"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"}]},{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:"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:"v14 Upgrade",slug:"v14-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Metamask Snaps",slug:"metamask-snaps"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{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:"Interchain Security",frontmatter:{description:"",order:5,title:"Introduction to Interchain Security"},regularPath:"/interchain-security/interchain-security.html",relativePath:"interchain-security/interchain-security.md",key:"v-c7883d00",path:"/interchain-security/interchain-security.html",headers:[{level:2,title:"Neutron",slug:"neutron"},{level:2,title:"Stride",slug:"stride"}]},{title:"Interchain Security",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/interchain-security/",relativePath:"interchain-security/README.md",key:"v-59462f69",path:"/interchain-security/"},{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:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"키",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:"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:"Previous Releases",frontmatter:{description:"",order:!1,parent:{title:"Previous Releases",order:7}},regularPath:"/roadmap/",relativePath:"roadmap/README.md",key:"v-75000dc1",path:"/roadmap/"},{title:"HD Wallets",frontmatter:{description:"",order:3,title:"HD Wallets"},regularPath:"/resources/hd-wallets.html",relativePath:"resources/hd-wallets.md",key:"v-7df08ab4",path:"/resources/hd-wallets.html"},{title:"The Cosmos Hub Roadmap",frontmatter:{description:""},regularPath:"/roadmap/cosmos-hub-roadmap-2.0.html",relativePath:"roadmap/cosmos-hub-roadmap-2.0.md",key:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html"},{title:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{title:"KMS - Key Management System",frontmatter:{description:"",order:5},regularPath:"/validators/kms/kms.html",relativePath:"validators/kms/kms.md",key:"v-6d897402",path:"/validators/kms/kms.html",headers:[{level:2,title:"Building",slug:"building"},{level:2,title:"Configuration",slug:"configuration"},{level:3,title:"Using a YubiHSM",slug:"using-a-yubihsm"},{level:3,title:"Using a Ledger device running the Tendermint app",slug:"using-a-ledger-device-running-the-tendermint-app"}]},{title:"Setting up Tendermint KMS + Ledger",frontmatter:{description:"",order:6},regularPath:"/validators/kms/kms_ledger.html",relativePath:"validators/kms/kms_ledger.md",key:"v-37d38700",path:"/validators/kms/kms_ledger.html",headers:[{level:2,title:"Tendermint Validator app (for Ledger devices)",slug:"tendermint-validator-app-for-ledger-devices"},{level:2,title:"KMS configuration",slug:"kms-configuration"},{level:3,title:"Config file",slug:"config-file"},{level:3,title:"Generate secret key",slug:"generate-secret-key"},{level:3,title:"Retrieve validator key",slug:"retrieve-validator-key"},{level:2,title:"Gaia configuration",slug:"gaia-configuration"}]},{title:"Validators Overview",frontmatter:{description:"",order:1,title:"Overview"},regularPath:"/validators/overview.html",relativePath:"validators/overview.md",key:"v-4da7b8c0",path:"/validators/overview.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"Create a Validator Website",slug:"create-a-validator-website"},{level:2,title:"Seek Legal Advice",slug:"seek-legal-advice"},{level:2,title:"Community",slug:"community"}]},{title:"Validator Security",frontmatter:{description:"",order:4,title:"Validator Security"},regularPath:"/validators/security.html",relativePath:"validators/security.md",key:"v-3bacdca0",path:"/validators/security.html",headers:[{level:2,title:"Key Management - HSM",slug:"key-management-hsm"},{level:2,title:"Sentry Nodes (DDOS Protection)",slug:"sentry-nodes-ddos-protection"},{level:2,title:"Environment Variables",slug:"environment-variables"}]},{title:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"Gaia是什么",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/what-is-gaia.html",relativePath:"zh/gaia-tutorials/what-is-gaia.md",key:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html"},{title:"加入公共测试网",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-testnet.html",relativePath:"zh/gaia-tutorials/join-testnet.md",key:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"升级之前的 Testnet",slug:"升级之前的-testnet"},{level:3,title:"重置数据",slug:"重置数据"},{level:3,title:"升级软件",slug:"升级软件"}]},{title:"Gaia 创世状态(Genesis State)",frontmatter:{description:""},regularPath:"/zh/genesis-state.html",relativePath:"zh/genesis-state.md",key:"v-5c30b8f6",path:"/zh/genesis-state.html",headers:[{level:2,title:"账户(Accounts)",slug:"账户-accounts"}]},{title:"**Cosmos主网上线三部曲**",frontmatter:{description:""},regularPath:"/zh/launch/blog-2-cn.html",relativePath:"zh/launch/blog-2-cn.md",key:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",headers:[{level:2,title:"🚨第一阶段:网络逐步趋于稳定🚨",slug:"🚨第一阶段-网络逐步趋于稳定🚨"},{level:2,title:"第二阶段:链上交易开启",slug:"第二阶段-链上交易开启"},{level:2,title:"第三阶段:启用IBC协议",slug:"第三阶段-启用ibc协议"},{level:2,title:"验证人提示: 提交您的主网gentx文件",slug:"验证人提示-提交您的主网gentx文件"},{level:2,title:"总结",slug:"总结"}]},{title:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"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:"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:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",frontmatter:{description:""},regularPath:"/governance/proposals/2021-05-gravity-bridge-deployment/",relativePath:"governance/proposals/2021-05-gravity-bridge-deployment/README.md",key:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Vision",slug:"vision"},{level:2,title:"Cosmos, Ethereum, and Gravity",slug:"cosmos-ethereum-and-gravity"},{level:2,title:"How do validators support the Gravity Bridge?",slug:"how-do-validators-support-the-gravity-bridge"},{level:3,title:"Cosmos to Ethereum:",slug:"cosmos-to-ethereum"},{level:3,title:"Ethereum to Cosmos:",slug:"ethereum-to-cosmos"},{level:3,title:"Slashing Conditions Spec",slug:"slashing-conditions-spec"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Gravity.sol",slug:"gravity-sol"},{level:3,title:"Gravity Cosmos Module",slug:"gravity-cosmos-module"},{level:3,title:"Orchestrator",slug:"orchestrator"},{level:3,title:"Market of Relayers",slug:"market-of-relayers"},{level:2,title:"Security assumptions",slug:"security-assumptions"},{level:2,title:"Ongoing work",slug:"ongoing-work"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Audit:",slug:"audit"},{level:3,title:"Conclusion:",slug:"conclusion"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Appendix",slug:"appendix"},{level:3,title:"FAQ",slug:"faq"},{level:3,title:"Is running the Gravity Module difficult for Cosmos Validators?",slug:"is-running-the-gravity-module-difficult-for-cosmos-validators"},{level:3,title:"Is the Gravity bridge secure?",slug:"is-the-gravity-bridge-secure"},{level:3,title:"Are slashing conditions a problem for validators?",slug:"are-slashing-conditions-a-problem-for-validators"},{level:3,title:"What about peg zones?",slug:"what-about-peg-zones"},{level:3,title:"Why not use IBC to create a bridge to Ethereum?",slug:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}]},{title:"Proposal 46: Extend Luna Mission to Fund ATOM Marketing",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-prop34-continuation/",relativePath:"governance/proposals/2021-04-prop34-continuation/README.md",key:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",headers:[{level:2,title:"PROPOSAL 46 REQUEST:",slug:"proposal-46-request"},{level:2,title:"SECTION I OVERVIEW",slug:"section-i-overview"},{level:3,title:"Spend Overview",slug:"spend-overview"},{level:2,title:"SECTION II - HISTORY",slug:"section-ii-history"},{level:2,title:"SECTION III - DELIVERABLES",slug:"section-iii-deliverables"},{level:2,title:"SECTION IV - Public Relations",slug:"section-iv-public-relations"},{level:2,title:"SECTION V - MEME Competition 2021",slug:"section-v-meme-competition-2021"}]},{title:"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:"State Sync",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[ES_es].md",key:"v-78add710",path:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",headers:[{level:2,title:"Preliminares",slug:"preliminares"},{level:2,title:"Principales actualizaciones",slug:"principales-actualizaciones"},{level:2,title:"Riesgos",slug:"riesgos"},{level:2,title:"Recuperación",slug:"recuperacion"},{level:2,title:"Procedimiento de actualización",slug:"procedimiento-de-actualizacion"},{level:2,title:"Notas para los proveedores de servicios",slug:"notas-para-los-proveedores-de-servicios"}]},{title:"Cosmos Hub 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:"Cosmos Hub 4, Delta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Delta Upgrade",order:1},regularPath:"/migration/cosmoshub-4-delta-upgrade.html",relativePath:"migration/cosmoshub-4-delta-upgrade.md",key:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place July 12, 2021",slug:"upgrade-will-take-place-july-12-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Public testnet",slug:"public-testnet"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1",slug:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0",slug:"target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"},{level:2,title:"Delta upgrade steps",slug:"delta-upgrade-steps"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"FAQ",slug:"faq"}]},{title:"스테이트 싱크",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[KR_kr].md",key:"v-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",headers:[{level:2,title:"사전 정보",slug:"사전-정보"},{level:2,title:"주요 업데이트",slug:"주요-업데이트"},{level:2,title:"위험 고지",slug:"위험-고지"},{level:2,title:"복구",slug:"복구"},{level:2,title:"업그레이드",slug:"업그레이드"},{level:2,title:"서비스 제공자를 위한 정보",slug:"서비스-제공자를-위한-정보"}]},{title:"Cosmos Hub 4, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:7},regularPath:"/migration/cosmoshub-4-v11-upgrade.html",relativePath:"migration/cosmoshub-4-v11-upgrade.md",key:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v10 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, v10 Upgrade",order:6},regularPath:"/migration/cosmoshub-4-v10-upgrade.html",relativePath:"migration/cosmoshub-4-v10-upgrade.md",key:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1",slug:"current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1",slug:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v12 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v12 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v12-upgrade.html",relativePath:"migration/cosmoshub-4-v12-upgrade.md",key:"v-15fddba0",path:"/migration/cosmoshub-4-v12-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v13 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v13 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v13-upgrade.html",relativePath:"migration/cosmoshub-4-v13-upgrade.md",key:"v-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v14 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v14 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v14-upgrade.html",relativePath:"migration/cosmoshub-4-v14-upgrade.md",key:"v-60cfaa60",path:"/migration/cosmoshub-4-v14-upgrade.html",headers:[{level:2,title:"Release Binary",slug:"release-binary"},{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:"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:"Relayer Operations",slug:"relayer-operations"},{level:3,title:"1. Hermes “evidence” mode",slug:"_1-hermes-evidence-mode"},{level:3,title:"2. ICS CLI",slug:"_2-ics-cli"},{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, 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, 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, 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:"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:"제네시스 파일",frontmatter:{description:""},regularPath:"/ko/resources/genesis.html",relativePath:"ko/resources/genesis.md",key:"v-a8848234",path:"/ko/resources/genesis.html",headers:[{level:2,title:"제네시스 파일은 무엇인가?",slug:"제네시스-파일은-무엇인가"},{level:2,title:"제네시스 시간과 체인 아이디",slug:"제네시스-시간과-체인-아이디"},{level:2,title:"컨센서스 파라미터",slug:"컨센서스-파라미터"},{level:2,title:"애플리케이션 상태",slug:"애플리케이션-상태"},{level:3,title:"제네시스 계정",slug:"제네시스-계정"},{level:3,title:"뱅크(Bank)",slug:"뱅크-bank"},{level:3,title:"스테이킹(Staking)",slug:"스테이킹-staking"},{level:3,title:"민트(mint)",slug:"민트-mint"},{level:3,title:"분배(distribution)",slug:"분배-distribution"},{level:3,title:"거버넌스(governance)",slug:"거버넌스-governance"},{level:3,title:"슬래싱(slashing)",slug:"슬래싱-slashing"},{level:3,title:"제네시스 트랜잭션(genesis transactions)",slug:"제네시스-트랜잭션-genesis-transactions"}]},{title:"State Sync",frontmatter:{description:"",title:"Cosmos Hub 3 Upgrade",order:5},regularPath:"/migration/cosmoshub-3/cosmoshub-3.html",relativePath:"migration/cosmoshub-3/cosmoshub-3.md",key:"v-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"Genesis File",frontmatter:{description:"",order:1,title:"The Genesis File"},regularPath:"/resources/genesis.html",relativePath:"resources/genesis.md",key:"v-91b151c0",path:"/resources/genesis.html",headers:[{level:2,title:"What is a Genesis File",slug:"what-is-a-genesis-file"},{level:2,title:"Genesis Time and Chain_id",slug:"genesis-time-and-chain-id"},{level:2,title:"Consensus Parameters",slug:"consensus-parameters"},{level:2,title:"Application State",slug:"application-state"},{level:3,title:"Genesis Accounts",slug:"genesis-accounts"},{level:3,title:"Bank",slug:"bank"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Mint",slug:"mint"},{level:3,title:"Distribution",slug:"distribution"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Genesis Transactions",slug:"genesis-transactions"}]},{title:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"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:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:2,title:"Release History",slug:"release-history"},{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Contributing",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Maintainability",slug:"maintainability"},{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Guidelines",slug:"guidelines"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);Mo.component("home",()=>n.e(27).then(n.bind(null,457))),Mo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,480))),Mo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,479))),Mo.component("IconArrow",()=>n.e(29).then(n.bind(null,478))),Mo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,477))),Mo.component("IconSearch",()=>n.e(31).then(n.bind(null,476))),Mo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,475))),Mo.component("IconWindow",()=>n.e(33).then(n.bind(null,474))),Mo.component("ImageLetter",()=>n.e(34).then(n.bind(null,473))),Mo.component("LayoutDefault",()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,456))),Mo.component("LogoCore",()=>n.e(35).then(n.bind(null,471))),Mo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,642))),Mo.component("LogoHub",()=>n.e(37).then(n.bind(null,544))),Mo.component("LogoHubText",()=>n.e(38).then(n.bind(null,522))),Mo.component("LogoSdk",()=>n.e(39).then(n.bind(null,520))),Mo.component("SectionSearch",()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,455))),Mo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,518))),Mo.component("TmAside",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,454))),Mo.component("TmBreadcrumbs",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,453))),Mo.component("TmCodeBlock",()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,452))),Mo.component("TmContentCards",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,451))),Mo.component("TmFooter",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,450))),Mo.component("TmFooterLinks",()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,460))),Mo.component("TmHelpSupport",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,449))),Mo.component("TmIconBasics",()=>n.e(41).then(n.bind(null,508))),Mo.component("TmIconCore",()=>n.e(42).then(n.bind(null,481))),Mo.component("TmIconDash",()=>n.e(43).then(n.bind(null,472))),Mo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,519))),Mo.component("TmIconHex",()=>n.e(44).then(n.bind(null,515))),Mo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,514))),Mo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,513))),Mo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,512))),Mo.component("TmIconModules",()=>n.e(48).then(n.bind(null,511))),Mo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,510))),Mo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,459))),Mo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,626))),Mo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,525))),Mo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),Mo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,521))),Mo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),Mo.component("TmLogoIbc",()=>n.e(56).then(n.bind(null,467))),Mo.component("TmLogoSdk",()=>n.e(57).then(n.bind(null,466))),Mo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,517))),Mo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,516))),Mo.component("TmSearch",()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,465))),Mo.component("TmSelectLanguage",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,464))),Mo.component("TmSelectVersion",()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,463))),Mo.component("TmSidebar",()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,462))),Mo.component("TmSidebarContent",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,461))),Mo.component("TmSidebarTree",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,448))),Mo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,470))),Mo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,458))),Mo.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 Mo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Mo.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),Mo.component(t)||Mo.component(t,qa(t)),Mo.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()})}};Mo.config.productionTip=!1,Mo.use(wa),Mo.use(us),Mo.mixin(function(e,t,n=Mo){!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?!Mo.$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:Mo,options:r,router:n,siteData:es,isServer:e})))}catch(e){console.error(e)}return{app:new Mo(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 jo(e,t){for(var n in t)e[n]=t[n];return e}var Do=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Do,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,523)),Layout:()=>n.e(28).then(n.bind(null,641))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,526)),"v-127d50ca":()=>n.e(60).then(n.bind(null,528)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,529)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,531)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,532)),"v-81da516a":()=>n.e(66).then(n.bind(null,534)),"v-f8267540":()=>n.e(65).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,509)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,546)),"v-606149c6":()=>n.e(80).then(n.bind(null,547)),"v-574bfe80":()=>n.e(79).then(n.bind(null,549)),"v-66b4080b":()=>n.e(81).then(n.bind(null,550)),"v-9ff0f970":()=>n.e(84).then(n.bind(null,552)),"v-e4b2f83a":()=>n.e(85).then(n.bind(null,553)),"v-bf1b043c":()=>n.e(86).then(n.bind(null,555)),"v-39316e24":()=>n.e(87).then(n.bind(null,556)),"v-43a7e1f8":()=>n.e(88).then(n.bind(null,558)),"v-ff7fa248":()=>n.e(89).then(n.bind(null,559)),"v-4ac77b64":()=>n.e(90).then(n.bind(null,561)),"v-2758d5a0":()=>n.e(96).then(n.bind(null,562)),"v-6a4f1c80":()=>n.e(97).then(n.bind(null,564)),"v-7431790b":()=>n.e(98).then(n.bind(null,565)),"v-4b23576b":()=>n.e(99).then(n.bind(null,567)),"v-64792cc2":()=>n.e(101).then(n.bind(null,568)),"v-725866d9":()=>n.e(104).then(n.bind(null,570)),"v-230a9c4b":()=>n.e(106).then(n.bind(null,571)),"v-2dfd010b":()=>n.e(109).then(n.bind(null,573)),"v-b8864dea":()=>n.e(111).then(n.bind(null,574)),"v-37169a5a":()=>n.e(110).then(n.bind(null,576)),"v-68a68850":()=>n.e(113).then(n.bind(null,577)),"v-780264ab":()=>n.e(117).then(n.bind(null,579)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,580)),"v-273748bf":()=>n.e(118).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,583)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,585)),"v-414999cb":()=>n.e(124).then(n.bind(null,586)),"v-59462f69":()=>n.e(125).then(n.bind(null,588)),"v-3169ddcb":()=>n.e(127).then(n.bind(null,589)),"v-c7883d00":()=>n.e(126).then(n.bind(null,591)),"v-15244044":()=>n.e(129).then(n.bind(null,592)),"v-59c05d68":()=>n.e(131).then(n.bind(null,594)),"v-1916440a":()=>n.e(133).then(n.bind(null,595)),"v-77046140":()=>n.e(132).then(n.bind(null,597)),"v-25a92840":()=>n.e(134).then(n.bind(null,598)),"v-79b59060":()=>n.e(136).then(n.bind(null,600)),"v-aee924c0":()=>n.e(139).then(n.bind(null,601)),"v-5c94f8c0":()=>n.e(141).then(n.bind(null,603)),"v-3254b154":()=>n.e(142).then(n.bind(null,604)),"v-bfd7ad74":()=>n.e(143).then(n.bind(null,606)),"v-7b5c086b":()=>n.e(146).then(n.bind(null,607)),"v-48a7c4e6":()=>n.e(148).then(n.bind(null,609)),"v-45ad53dd":()=>n.e(149).then(n.bind(null,610)),"v-a3068aaa":()=>n.e(164).then(n.bind(null,612)),"v-b9e98ed4":()=>n.e(167).then(n.bind(null,613)),"v-071e366f":()=>n.e(166).then(n.bind(null,615)),"v-0d07c820":()=>n.e(170).then(n.bind(null,616)),"v-7df08ab4":()=>n.e(169).then(n.bind(null,618)),"v-75000dc1":()=>n.e(172).then(n.bind(null,619)),"v-79617eab":()=>n.e(174).then(n.bind(null,621)),"v-0110ec16":()=>n.e(173).then(n.bind(null,622)),"v-6d897402":()=>n.e(175).then(n.bind(null,624)),"v-37d38700":()=>n.e(176).then(n.bind(null,625)),"v-3bacdca0":()=>n.e(178).then(n.bind(null,628)),"v-4da7b8c0":()=>n.e(177).then(n.bind(null,629)),"v-c519eab8":()=>n.e(180).then(n.bind(null,631)),"v-1813a4ea":()=>n.e(181).then(n.bind(null,632)),"v-4cbea1b0":()=>n.e(183).then(n.bind(null,634)),"v-ec326d3c":()=>n.e(184).then(n.bind(null,635)),"v-07cf9e68":()=>n.e(186).then(n.bind(null,637)),"v-dd4a8258":()=>n.e(185).then(n.bind(null,638)),"v-5c30b8f6":()=>n.e(187).then(n.bind(null,640)),"v-a4aa1cc0":()=>n.e(189).then(n.bind(null,506)),"v-621d6140":()=>n.e(192).then(n.bind(null,639)),"v-1731e69c":()=>n.e(194).then(n.bind(null,636)),"v-f2b0d680":()=>n.e(193).then(n.bind(null,633)),"v-feb36d80":()=>n.e(196).then(n.bind(null,630)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,627)),"v-f385361c":()=>n.e(67).then(n.bind(null,623)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,620)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,617)),"v-27ea8460":()=>n.e(82).then(n.bind(null,614)),"v-fd3648c0":()=>n.e(83).then(n.bind(null,611)),"v-7cd69f68":()=>n.e(91).then(n.bind(null,608)),"v-6c706790":()=>n.e(92).then(n.bind(null,605)),"v-80c733e0":()=>n.e(93).then(n.bind(null,602)),"v-16a2b68a":()=>n.e(94).then(n.bind(null,599)),"v-405c4ac0":()=>n.e(95).then(n.bind(null,596)),"v-5d13e021":()=>n.e(100).then(n.bind(null,593)),"v-23577189":()=>n.e(102).then(n.bind(null,590)),"v-183e9cb3":()=>n.e(103).then(n.bind(null,587)),"v-b74fdc6a":()=>n.e(105).then(n.bind(null,584)),"v-bd8534ea":()=>n.e(107).then(n.bind(null,581)),"v-2e2517eb":()=>n.e(108).then(n.bind(null,578)),"v-69e7af00":()=>n.e(115).then(n.bind(null,575)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,572)),"v-524c67f6":()=>n.e(130).then(n.bind(null,569)),"v-5d40e180":()=>n.e(135).then(n.bind(null,566)),"v-4251c2a0":()=>n.e(140).then(n.bind(null,563)),"v-63a66800":()=>n.e(145).then(n.bind(null,560)),"v-e9d91d38":()=>n.e(147).then(n.bind(null,557)),"v-d8722040":()=>n.e(150).then(n.bind(null,554)),"v-78add710":()=>n.e(152).then(n.bind(null,551)),"v-3a6c3c60":()=>n.e(153).then(n.bind(null,548)),"v-69a7e640":()=>n.e(155).then(n.bind(null,545)),"v-76ff3f40":()=>n.e(154).then(n.bind(null,542)),"v-1ed61780":()=>n.e(156).then(n.bind(null,539)),"v-15fddba0":()=>n.e(157).then(n.bind(null,536)),"v-3b66c300":()=>n.e(158).then(n.bind(null,533)),"v-60cfaa60":()=>n.e(159).then(n.bind(null,530)),"v-fc555fcc":()=>n.e(161).then(n.bind(null,527)),"v-08131412":()=>n.e(160).then(n.bind(null,524)),"v-c184b540":()=>n.e(162).then(n.bind(null,505)),"v-77c0d338":()=>n.e(163).then(n.bind(null,504)),"v-f8a9ba00":()=>n.e(165).then(n.bind(null,503)),"v-611af834":()=>n.e(4).then(n.bind(null,502)),"v-55d7a0e0":()=>n.e(171).then(n.bind(null,501)),"v-dd937a80":()=>n.e(188).then(n.bind(null,500)),"v-29e61a5c":()=>n.e(191).then(n.bind(null,499)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,498)),"v-a8848234":()=>n.e(138).then(n.bind(null,497)),"v-68a36ea0":()=>n.e(151).then(n.bind(null,496)),"v-91b151c0":()=>n.e(168).then(n.bind(null,495)),"v-3cb8cfc8":()=>n.e(182).then(n.bind(null,494)),"v-26ead5fe":()=>n.e(190).then(n.bind(null,493)),"v-1d21baa0":()=>n.e(195).then(n.bind(null,492)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,491)),"v-56618330":()=>n.e(114).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(137).then(n.bind(null,487)),"v-143a889c":()=>n.e(179).then(n.bind(null,486)),"v-17b4aa2d":()=>n.e(112).then(n.bind(null,485)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,484)),"v-9a504180":()=>n.e(128).then(n.bind(null,483)),"v-7cf7c3e0":()=>n.e(144).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 Ma(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 ja=Object.assign({},Ca,Sa),Da=e=>ja[e],Ia=e=>Sa[e],Ra=e=>Ca[e],Fa=e=>Mo.component(e);function qa(e){return Ma(Ia,e)}function $a(e){return Ma(Ra,e)}function za(e){return Ma(Da,e)}function Ba(e){return Ma(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)();Mo.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-81da516a",path:"/delegators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-81da516a").then(n)}},{path:"/delegators/index.html",redirect:"/delegators/"},{name:"v-f8267540",path:"/architecture/adr-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8267540").then(n)}},{name:"v-4f6c3d8b",path:"/es/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4f6c3d8b").then(n)}},{path:"/es/index.html",redirect:"/es/"},{name:"v-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-574bfe80",path:"/getting-started/system-requirements.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-574bfe80").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-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-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-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-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-780264ab",path:"/hub-overview/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-780264ab").then(n)}},{path:"/hub-overview/index.html",redirect:"/hub-overview/"},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").then(n)}},{name:"v-273748bf",path:"/hub-tutorials/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-273748bf").then(n)}},{path:"/hub-tutorials/index.html",redirect:"/hub-tutorials/"},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{name:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").then(n)}},{name:"v-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-59462f69",path:"/interchain-security/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59462f69").then(n)}},{path:"/interchain-security/index.html",redirect:"/interchain-security/"},{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-c7883d00",path:"/interchain-security/interchain-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c7883d00").then(n)}},{name:"v-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").then(n)}},{name:"v-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-b9e98ed4",path:"/resources/archives.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b9e98ed4").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-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").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-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{name:"v-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0110ec16").then(n)}},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-07cf9e68").then(n)}},{name:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").then(n)}},{name:"v-5c30b8f6",path:"/zh/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c30b8f6").then(n)}},{name:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").then(n)}},{name:"v-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-27ea8460",path:"/governance/best-practices.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27ea8460").then(n)}},{name:"v-fd3648c0",path:"/governance/formatting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fd3648c0").then(n)}},{name:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cd69f68").then(n)}},{name:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6c706790").then(n)}},{name:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-80c733e0").then(n)}},{name:"v-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-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bd8534ea").then(n)}},{path:"/governance/proposals/2021-04-prop34-continuation/index.html",redirect:"/governance/proposals/2021-04-prop34-continuation/"},{name:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2e2517eb").then(n)}},{path:"/governance/proposals/2021-05-gravity-bridge-deployment/index.html",redirect:"/governance/proposals/2021-05-gravity-bridge-deployment/"},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4aec61d8").then(n)}},{name:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-524c67f6").then(n)}},{name:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d40e180").then(n)}},{name:"v-4251c2a0",path:"/ko/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4251c2a0").then(n)}},{name:"v-63a66800",path:"/ko/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-63a66800").then(n)}},{name:"v-e9d91d38",path:"/launch/blog-1-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e9d91d38").then(n)}},{name:"v-d8722040",path:"/migration/cosmoshub-2/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-d8722040").then(n)}},{name:"v-78add710",path:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-78add710").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html"},{name:"v-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3a6c3c60").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{name:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69a7e640").then(n)}},{name:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").then(n)}},{name:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-15fddba0",path:"/migration/cosmoshub-4-v12-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15fddba0").then(n)}},{name:"v-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3b66c300").then(n)}},{name:"v-60cfaa60",path:"/migration/cosmoshub-4-v14-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-60cfaa60").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-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-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd937a80").then(n)}},{name:"v-29e61a5c",path:"/zh/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-29e61a5c").then(n)}},{name:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2acc3e00").then(n)}},{name:"v-a8848234",path:"/ko/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a8848234").then(n)}},{name:"v-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a36ea0").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{name:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3cb8cfc8").then(n)}},{name:"v-26ead5fe",path:"/zh/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26ead5fe").then(n)}},{name:"v-1d21baa0",path:"/zh/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1d21baa0").then(n)}},{name:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b5fc8180").then(n)}},{name:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-56618330").then(n)}},{name:"v-f4d75640",path:"/hub-tutorials/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f4d75640").then(n)}},{name:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").then(n)}},{name:"v-7e931cdc",path:"/ko/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7e931cdc").then(n)}},{name:"v-143a889c",path:"/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-143a889c").then(n)}},{name:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-17b4aa2d").then(n)}},{path:"/governance/proposals/previous-proposals/index.html",redirect:"/governance/proposals/previous-proposals/"},{name:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0ee0b71e").then(n)}},{name:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9a504180").then(n)}},{name:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cf7c3e0").then(n)}},{path:"*",component:Ya.default}],es={title:"Cosmos Hub",description:"",base:"/main/",headTags:[],pages:[{title:"Updating the docs",frontmatter:{description:"",parent:{order:!1}},regularPath:"/DOCS_README.html",relativePath:"DOCS_README.md",key:"v-27502720",path:"/DOCS_README.html",headers:[{level:2,title:"Internationalization",slug:"internationalization"},{level:2,title:"Docs Build Workflow",slug:"docs-build-workflow"},{level:3,title:"How It Works",slug:"how-it-works"},{level:2,title:"README",slug:"readme"},{level:2,title:"Links",slug:"links"},{level:3,title:"Relative",slug:"relative"},{level:3,title:"Absolute",slug:"absolute"},{level:3,title:"Full",slug:"full"},{level:2,title:"Building Locally",slug:"building-locally"},{level:2,title:"Search",slug:"search"},{level:3,title:"Update and Build the RPC docs",slug:"update-and-build-the-rpc-docs"}]},{title:"Contribute",frontmatter:{description:"",parent:{order:!1},layout:"home"},regularPath:"/",relativePath:"README.md",key:"v-127d50ca",path:"/",headers:[{level:2,title:"What is Gaia?",slug:"what-is-gaia"},{level:2,title:"Join the Cosmos Hub Mainnet",slug:"join-the-cosmos-hub-mainnet"},{level:2,title:"Join the Cosmos Hub Public Testnet",slug:"join-the-cosmos-hub-public-testnet"},{level:2,title:"Setup Your Own gaia Testnet",slug:"setup-your-own-gaia-testnet"},{level:2,title:"Additional Resources",slug:"additional-resources"}]},{title:"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:"Delegators",frontmatter:{description:"",order:!1,parent:{title:"Delegators",order:4}},regularPath:"/delegators/",relativePath:"delegators/README.md",key:"v-81da516a",path:"/delegators/"},{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:"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:"System requirements",frontmatter:{description:""},regularPath:"/getting-started/system-requirements.html",relativePath:"getting-started/system-requirements.md",key:"v-574bfe80",path:"/getting-started/system-requirements.html",headers:[{level:2,title:"Gaia Upgrades",slug:"gaia-upgrades"}]},{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:"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:"Proposals",frontmatter:{description:"",order:1,parent:{order:8}},regularPath:"/governance/proposals/",relativePath:"governance/proposals/README.md",key:"v-b8864dea",path:"/governance/proposals/"},{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:"[Proposal][Draft] Proposal Title",frontmatter:{description:""},regularPath:"/governance/proposals/proposal-template.html",relativePath:"governance/proposals/proposal-template.md",key:"v-68a68850",path:"/governance/proposals/proposal-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Authors and Credit",slug:"authors-and-credit"},{level:2,title:"Status",slug:"status"},{level:2,title:"Proposal",slug:"proposal"},{level:2,title:"Context",slug:"context"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Conclusion",slug:"conclusion"},{level:2,title:"References",slug:"references"}]},{title:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{title:"Introduction",frontmatter:{description:"",order:1,title:"Introduction"},regularPath:"/hub-overview/overview.html",relativePath:"hub-overview/overview.md",key:"v-ac3ab000",path:"/hub-overview/overview.html",headers:[{level:3,title:"v14 Upgrade",slug:"v14-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Metamask Snaps",slug:"metamask-snaps"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Upgrade Your Node",frontmatter:{description:"",order:4,title:"Upgrading Your Node"},regularPath:"/hub-tutorials/upgrade-node.html",relativePath:"hub-tutorials/upgrade-node.md",key:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",headers:[{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Preparing an Upgrade",slug:"preparing-an-upgrade"},{level:2,title:"Manual Software Upgrade",slug:"manual-software-upgrade"},{level:2,title:"Upgrade Genesis File",slug:"upgrade-genesis-file"},{level:3,title:"Fetching from a Trusted Source",slug:"fetching-from-a-trusted-source"},{level:3,title:"Exporting State to a New Genesis Locally",slug:"exporting-state-to-a-new-genesis-locally"},{level:2,title:"Reset Data",slug:"reset-data"}]},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{title:"Interchain Security",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/interchain-security/",relativePath:"interchain-security/README.md",key:"v-59462f69",path:"/interchain-security/"},{title:"Gaia Documentation",frontmatter:{description:""},regularPath:"/ko/",relativePath:"ko/README.md",key:"v-3169ddcb",path:"/ko/",headers:[{level:2,title:"코스모스 퍼블릭 테스트넷에 참가하세요",slug:"코스모스-퍼블릭-테스트넷에-참가하세요"},{level:2,title:"자체 gaia 테스트넷 세팅하기",slug:"자체-gaia-테스트넷-세팅하기"},{level:2,title:"추가 리소스",slug:"추가-리소스"}]},{title:"Interchain Security",frontmatter:{description:"",order:5,title:"Introduction to Interchain Security"},regularPath:"/interchain-security/interchain-security.html",relativePath:"interchain-security/interchain-security.md",key:"v-c7883d00",path:"/interchain-security/interchain-security.html",headers:[{level:2,title:"Neutron",slug:"neutron"},{level:2,title:"Stride",slug:"stride"}]},{frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/installation.html",relativePath:"ko/gaia-tutorials/installation.md",key:"v-15244044",path:"/ko/gaia-tutorials/installation.html",headers:[{level:2,title:"Gaia 설치하기",slug:"gaia-설치하기"},{level:3,title:"Go 설치하기",slug:"go-설치하기"},{level:3,title:"바이너리 설치하기",slug:"바이너리-설치하기"},{level:3,title:"빌드 태그",slug:"빌드-태그"},{level:3,title:"snap을 사용해 바이너리 설치하기 (리눅스에만 해당)",slug:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"},{level:2,title:"개발자 워크플로우",slug:"개발자-워크플로우"},{level:3,title:"다음 절차",slug:"다음-절차"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{title:"글을 마무리 하며",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:"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:"Resources",frontmatter:{description:"",order:!1,parent:{title:"Resources",order:8}},regularPath:"/resources/",relativePath:"resources/README.md",key:"v-071e366f",path:"/resources/"},{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:"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:"Previous Releases",frontmatter:{description:"",order:!1,parent:{title:"Previous Releases",order:7}},regularPath:"/roadmap/",relativePath:"roadmap/README.md",key:"v-75000dc1",path:"/roadmap/"},{title:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{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:"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:"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:"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:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"Gaia是什么",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/what-is-gaia.html",relativePath:"zh/gaia-tutorials/what-is-gaia.md",key:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html"},{title:"加入公共测试网",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-testnet.html",relativePath:"zh/gaia-tutorials/join-testnet.md",key:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"升级之前的 Testnet",slug:"升级之前的-testnet"},{level:3,title:"重置数据",slug:"重置数据"},{level:3,title:"升级软件",slug:"升级软件"}]},{title:"Gaia 创世状态(Genesis State)",frontmatter:{description:""},regularPath:"/zh/genesis-state.html",relativePath:"zh/genesis-state.md",key:"v-5c30b8f6",path:"/zh/genesis-state.html",headers:[{level:2,title:"账户(Accounts)",slug:"账户-accounts"}]},{title:"**Cosmos主网上线三部曲**",frontmatter:{description:""},regularPath:"/zh/launch/blog-2-cn.html",relativePath:"zh/launch/blog-2-cn.md",key:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",headers:[{level:2,title:"🚨第一阶段:网络逐步趋于稳定🚨",slug:"🚨第一阶段-网络逐步趋于稳定🚨"},{level:2,title:"第二阶段:链上交易开启",slug:"第二阶段-链上交易开启"},{level:2,title:"第三阶段:启用IBC协议",slug:"第三阶段-启用ibc协议"},{level:2,title:"验证人提示: 提交您的主网gentx文件",slug:"验证人提示-提交您的主网gentx文件"},{level:2,title:"总结",slug:"总结"}]},{title:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"Off-Chain Proposal Process",frontmatter:{description:"",order:3},regularPath:"/governance/best-practices.html",relativePath:"governance/best-practices.md",key:"v-27ea8460",path:"/governance/best-practices.html",headers:[{level:2,title:"Engage directly with the voting community and seek feedback",slug:"engage-directly-with-the-voting-community-and-seek-feedback"},{level:2,title:"Stage 1: Your Idea",slug:"stage-1-your-idea"},{level:3,title:"Not yet confident about your idea?",slug:"not-yet-confident-about-your-idea"},{level:3,title:"Confident with your idea?",slug:"confident-with-your-idea"},{level:3,title:"Are you ready to draft a governance proposal?",slug:"are-you-ready-to-draft-a-governance-proposal"},{level:2,title:"Stage 2: Your Draft Proposal",slug:"stage-2-your-draft-proposal"},{level:3,title:"Proposal Elements",slug:"proposal-elements"},{level:3,title:"Begin with a well-considered draft proposal",slug:"begin-with-a-well-considered-draft-proposal"},{level:3,title:"Engage the community with your draft proposal",slug:"engage-the-community-with-your-draft-proposal"},{level:3,title:"Submit your proposal to the testnet",slug:"submit-your-proposal-to-the-testnet"},{level:2,title:"Stage 3: Your On-Chain Proposal",slug:"stage-3-your-on-chain-proposal"},{level:3,title:"The Deposit Period",slug:"the-deposit-period"},{level:3,title:"The Voting Period",slug:"the-voting-period"}]},{title:"Formatting a Proposal",frontmatter:{description:"",order:4},regularPath:"/governance/formatting.html",relativePath:"governance/formatting.md",key:"v-fd3648c0",path:"/governance/formatting.html",headers:[{level:2,title:"Text",slug:"text"},{level:3,title:"Real example",slug:"real-example"},{level:2,title:"Community Pool Spend",slug:"community-pool-spend"},{level:3,title:"Real example",slug:"real-example-2"},{level:2,title:"Param Change",slug:"param-change"},{level:3,title:"Real example",slug:"real-example-3"}]},{title:"`distribution` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Distribution.html",relativePath:"governance/proposal-types/params-change/Distribution.md",key:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"communitytax",slug:"communitytax"},{level:3,title:"baseproposerreward",slug:"baseproposerreward"},{level:3,title:"bonusproposerreward",slug:"bonusproposerreward"},{level:3,title:"withdrawaddrenabled",slug:"withdrawaddrenabled"},{level:2,title:"Known Bug",slug:"known-bug"}]},{title:"`gov` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Governance.html",relativePath:"governance/proposal-types/params-change/Governance.md",key:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"depositparams",slug:"depositparams"},{level:3,title:"votingparams",slug:"votingparams"},{level:3,title:"tallyparams",slug:"tallyparams"}]},{title:"`mint` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Mint.html",relativePath:"governance/proposal-types/params-change/Mint.md",key:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MintDenom",slug:"mintdenom"},{level:3,title:"InflationRateChange",slug:"inflationratechange"},{level:3,title:"InflationMax",slug:"inflationmax"},{level:3,title:"InflationMin",slug:"inflationmin"},{level:3,title:"GoalBonded",slug:"goalbonded"},{level:3,title:"BlocksPerYear",slug:"blocksperyear"}]},{title:"`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:"Proposal 46: Extend Luna Mission to Fund ATOM Marketing",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-prop34-continuation/",relativePath:"governance/proposals/2021-04-prop34-continuation/README.md",key:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",headers:[{level:2,title:"PROPOSAL 46 REQUEST:",slug:"proposal-46-request"},{level:2,title:"SECTION I OVERVIEW",slug:"section-i-overview"},{level:3,title:"Spend Overview",slug:"spend-overview"},{level:2,title:"SECTION II - HISTORY",slug:"section-ii-history"},{level:2,title:"SECTION III - DELIVERABLES",slug:"section-iii-deliverables"},{level:2,title:"SECTION IV - Public Relations",slug:"section-iv-public-relations"},{level:2,title:"SECTION V - MEME Competition 2021",slug:"section-v-meme-competition-2021"}]},{title:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",frontmatter:{description:""},regularPath:"/governance/proposals/2021-05-gravity-bridge-deployment/",relativePath:"governance/proposals/2021-05-gravity-bridge-deployment/README.md",key:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Vision",slug:"vision"},{level:2,title:"Cosmos, Ethereum, and Gravity",slug:"cosmos-ethereum-and-gravity"},{level:2,title:"How do validators support the Gravity Bridge?",slug:"how-do-validators-support-the-gravity-bridge"},{level:3,title:"Cosmos to Ethereum:",slug:"cosmos-to-ethereum"},{level:3,title:"Ethereum to Cosmos:",slug:"ethereum-to-cosmos"},{level:3,title:"Slashing Conditions Spec",slug:"slashing-conditions-spec"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Gravity.sol",slug:"gravity-sol"},{level:3,title:"Gravity Cosmos Module",slug:"gravity-cosmos-module"},{level:3,title:"Orchestrator",slug:"orchestrator"},{level:3,title:"Market of Relayers",slug:"market-of-relayers"},{level:2,title:"Security assumptions",slug:"security-assumptions"},{level:2,title:"Ongoing work",slug:"ongoing-work"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Audit:",slug:"audit"},{level:3,title:"Conclusion:",slug:"conclusion"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Appendix",slug:"appendix"},{level:3,title:"FAQ",slug:"faq"},{level:3,title:"Is running the Gravity Module difficult for Cosmos Validators?",slug:"is-running-the-gravity-module-difficult-for-cosmos-validators"},{level:3,title:"Is the Gravity bridge secure?",slug:"is-the-gravity-bridge-secure"},{level:3,title:"Are slashing conditions a problem for validators?",slug:"are-slashing-conditions-a-problem-for-validators"},{level:3,title:"What about peg zones?",slug:"what-about-peg-zones"},{level:3,title:"Why not use IBC to create a bridge to Ethereum?",slug:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}]},{title:"Submitting a Proposal",frontmatter:{description:"",order:5},regularPath:"/governance/submitting.html",relativePath:"governance/submitting.md",key:"v-69e7af00",path:"/governance/submitting.html",headers:[{level:2,title:"Hosting supplementary materials",slug:"hosting-supplementary-materials"},{level:2,title:"Formatting the JSON file for the governance proposal",slug:"formatting-the-json-file-for-the-governance-proposal"},{level:2,title:"Sending the transaction that submits your governance proposal",slug:"sending-the-transaction-that-submits-your-governance-proposal"},{level:3,title:"Walkthrough example",slug:"walkthrough-example"},{level:3,title:"Verifying your transaction",slug:"verifying-your-transaction"},{level:3,title:"Troubleshooting a failed transaction",slug:"troubleshooting-a-failed-transaction"},{level:3,title:"Depositing funds after a proposal has been submitted",slug:"depositing-funds-after-a-proposal-has-been-submitted"},{level:3,title:"Submitting your proposal to the testnet",slug:"submitting-your-proposal-to-the-testnet"}]},{title:"Join the Cosmos Hub Public Testnet",frontmatter:{description:"",order:3,title:"Joining Testnet"},regularPath:"/hub-tutorials/join-testnet.html",relativePath:"hub-tutorials/join-testnet.md",key:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",headers:[{level:2,title:"Background",slug:"background"},{level:3,title:"Version History",slug:"version-history"},{level:2,title:"How to Join",slug:"how-to-join"},{level:2,title:"Sync Options",slug:"sync-options"},{level:2,title:"Step-by-Step Setup",slug:"step-by-step-setup"},{level:3,title:"Build Tools",slug:"build-tools"},{level:3,title:"Installation & Configuration",slug:"installation-configuration"},{level:3,title:"Cosmovisor Setup (Optional)",slug:"cosmovisor-setup-optional"},{level:3,title:"Create Service File",slug:"create-service-file"},{level:3,title:"Start the Service",slug:"start-the-service"},{level:2,title:"Create a Validator (Optional)",slug:"create-a-validator-optional"},{level:2,title:"Upgrading Your Node",slug:"upgrading-your-node"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-mainnet.html",relativePath:"ko/gaia-tutorials/join-mainnet.md",key:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:2,title:"최소 가스 가격(minimum-gas-prices) 설정하기",slug:"최소-가스-가격-minimum-gas-prices-설정하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"메인넷 검증하기",slug:"메인넷-검증하기"},{level:2,title:"검증인 노드로 업그레이드 하기",slug:"검증인-노드로-업그레이드-하기"}]},{title:"코스모스 허브 메인넷의 시작",frontmatter:{description:""},regularPath:"/ko/launch/blog-1-kr.html",relativePath:"ko/launch/blog-1-kr.md",key:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",headers:[{level:2,title:"런칭을 위해 남은 마일스톤",slug:"런칭을-위해-남은-마일스톤"},{level:3,title:"5: 코스모스 SDK 보안 감사 ✔",slug:"_5-코스모스-sdk-보안-감사-✔"},{level:3,title:"4: 코스모스 SDK 기능 동결 (feature freeze)",slug:"_4-코스모스-sdk-기능-동결-feature-freeze"},{level:3,title:"3: 게임 오브 스테이크 완료",slug:"_3-게임-오브-스테이크-완료"},{level:3,title:"2: 제네시스 트랜잭션 모으기",slug:"_2-제네시스-트랜잭션-모으기"},{level:3,title:"1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥",slug:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"},{level:2,title:"공식 코스모스 소통 채널",slug:"공식-코스모스-소통-채널"},{level:2,title:"메인넷 런칭때 안전할 수 있는 방법은?",slug:"메인넷-런칭때-안전할-수-있는-방법은"},{level:2,title:"다음은 코스모스 메인넷 런칭 준비 유의사항입니다",slug:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}]},{title:"지원",frontmatter:{description:""},regularPath:"/ko/resources/ledger.html",relativePath:"ko/resources/ledger.md",key:"v-4251c2a0",path:"/ko/resources/ledger.html",headers:[{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"시작하기 전에",slug:"시작하기-전에"},{level:3,title:"렛저 키 추가하기",slug:"렛저-키-추가하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기"},{level:3,title:"풀노드에 연결하기",slug:"풀노드에-연결하기"},{level:3,title:"트랜잭션 서명하기",slug:"트랜잭션-서명하기"},{level:3,title:"자산 받기",slug:"자산-받기"},{level:3,title:"추가 참고 문서",slug:"추가-참고-문서"},{level:3,title:"기기 연결하기",slug:"기기-연결하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기-2"}]},{title:"퍼블릭 테스트넷에서 밸리데이터 운영하기",frontmatter:{description:""},regularPath:"/ko/validators/validator-setup.html",relativePath:"ko/validators/validator-setup.md",key:"v-63a66800",path:"/ko/validators/validator-setup.html",headers:[{level:2,title:"밸리데이터란 무엇인가?",slug:"밸리데이터란-무엇인가"},{level:2,title:"밸리데이터 생성하기",slug:"밸리데이터-생성하기"},{level:2,title:"밸리데이터로써 제네시스 참가하기",slug:"밸리데이터로써-제네시스-참가하기"},{level:3,title:"제네시스 파일 복사, 제네시스 트랜잭션 처리하기",slug:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"},{level:2,title:"검증인 설명 수정하기",slug:"검증인-설명-수정하기"},{level:2,title:"밸리데이터 설명 확인하기",slug:"밸리데이터-설명-확인하기"},{level:2,title:"밸리데이터 서명 정보 추적하기",slug:"밸리데이터-서명-정보-추적하기"},{level:2,title:"밸리데이터 석방(Unjail)하기",slug:"밸리데이터-석방-unjail-하기"},{level:2,title:"밸리데이터 작동상태 확인",slug:"밸리데이터-작동상태-확인"},{level:2,title:"흔히 발생하는 문제들",slug:"흔히-발생하는-문제들"},{level:3,title:"문제 #1: 내 검증인의 보팅 파워가 0 입니다",slug:"문제-1-내-검증인의-보팅-파워가-0-입니다"},{level:3,title:"문제 #2: too many open files때문에 gaiad가 강제 종료됩니다",slug:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}]},{title:"Cosmos Hub to Launch Mainnet",frontmatter:{description:""},regularPath:"/launch/blog-1-en.html",relativePath:"launch/blog-1-en.md",key:"v-e9d91d38",path:"/launch/blog-1-en.html",headers:[{level:2,title:"Pre-launch Dependencies & How to Safely Claim Your Atoms",slug:"pre-launch-dependencies-how-to-safely-claim-your-atoms"},{level:2,title:"Remaining Milestones for Launch",slug:"remaining-milestones-for-launch"},{level:3,title:"5 Cosmos-SDK Security Audits ✔",slug:"_5-cosmos-sdk-security-audits-✔"},{level:3,title:"4 Cosmos SDK Feature Freeze",slug:"_4-cosmos-sdk-feature-freeze"},{level:3,title:"3 Game of Stakes Completed",slug:"_3-game-of-stakes-completed"},{level:3,title:"2 Genesis Transactions Collected",slug:"_2-genesis-transactions-collected"},{level:3,title:"1 Cosmos Hub Mainnet Launch",slug:"_1-cosmos-hub-mainnet-launch"},{level:2,title:"Official Cosmos Communication Channels",slug:"official-cosmos-communication-channels"},{level:2,title:"Staying Safe (and Secure!) for Mainnet Launch",slug:"staying-safe-and-secure-for-mainnet-launch"}]},{title:"Cosmos Hub 2 Upgrade Instructions",frontmatter:{description:"",title:"Cosmos Hub 2 Upgrade",order:6},regularPath:"/migration/cosmoshub-2/cosmoshub-2.html",relativePath:"migration/cosmoshub-2/cosmoshub-2.md",key:"v-d8722040",path:"/migration/cosmoshub-2/cosmoshub-2.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"State Sync",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[ES_es].md",key:"v-78add710",path:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",headers:[{level:2,title:"Preliminares",slug:"preliminares"},{level:2,title:"Principales actualizaciones",slug:"principales-actualizaciones"},{level:2,title:"Riesgos",slug:"riesgos"},{level:2,title:"Recuperación",slug:"recuperacion"},{level:2,title:"Procedimiento de actualización",slug:"procedimiento-de-actualizacion"},{level:2,title:"Notas para los proveedores de servicios",slug:"notas-para-los-proveedores-de-servicios"}]},{title:"스테이트 싱크",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[KR_kr].md",key:"v-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",headers:[{level:2,title:"사전 정보",slug:"사전-정보"},{level:2,title:"주요 업데이트",slug:"주요-업데이트"},{level:2,title:"위험 고지",slug:"위험-고지"},{level:2,title:"복구",slug:"복구"},{level:2,title:"업그레이드",slug:"업그레이드"},{level:2,title:"서비스 제공자를 위한 정보",slug:"서비스-제공자를-위한-정보"}]},{title:"Cosmos Hub 4, v10 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, v10 Upgrade",order:6},regularPath:"/migration/cosmoshub-4-v10-upgrade.html",relativePath:"migration/cosmoshub-4-v10-upgrade.md",key:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1",slug:"current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1",slug:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, 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, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:7},regularPath:"/migration/cosmoshub-4-v11-upgrade.html",relativePath:"migration/cosmoshub-4-v11-upgrade.md",key:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia 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 v13 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v13 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v13-upgrade.html",relativePath:"migration/cosmoshub-4-v13-upgrade.md",key:"v-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v14 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v14 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v14-upgrade.html",relativePath:"migration/cosmoshub-4-v14-upgrade.md",key:"v-60cfaa60",path:"/migration/cosmoshub-4-v14-upgrade.html",headers:[{level:2,title:"Release Binary",slug:"release-binary"},{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:"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:"Relayer Operations",slug:"relayer-operations"},{level:3,title:"1. Hermes “evidence” mode",slug:"_1-hermes-evidence-mode"},{level:3,title:"2. ICS CLI",slug:"_2-ics-cli"},{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, 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, 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:"Cosmos Hub主网上线计划",frontmatter:{description:""},regularPath:"/zh/launch/blog-1-cn.html",relativePath:"zh/launch/blog-1-cn.md",key:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",headers:[{level:2,title:"主网启动的里程碑",slug:"主网启动的里程碑"},{level:2,title:"Cosmos官方交流渠道",slug:"cosmos官方交流渠道"},{level:2,title:"在主网启动期间确保资产安全可靠",slug:"在主网启动期间确保资产安全可靠"},{level:2,title:"安全规则",slug:"安全规则"}]},{title:"创世(Genesis)文件",frontmatter:{description:""},regularPath:"/zh/resources/genesis.html",relativePath:"zh/resources/genesis.md",key:"v-29e61a5c",path:"/zh/resources/genesis.html",headers:[{level:2,title:"什么是创世文件",slug:"什么是创世文件"},{level:2,title:"Genesis 时间和链ID",slug:"genesis-时间和链id"},{level:2,title:"共识参数",slug:"共识参数"},{level:2,title:"应用程序状态",slug:"应用程序状态"},{level:3,title:"创世账号",slug:"创世账号"},{level:3,title:"银行(Bank)",slug:"银行-bank"},{level:3,title:"权益(Staking)",slug:"权益-staking"},{level:3,title:"挖矿(Mint)",slug:"挖矿-mint"},{level:3,title:"分配(Distribution)",slug:"分配-distribution"},{level:3,title:"治理(Governance)",slug:"治理-governance"},{level:3,title:"惩罚(Slashing )",slug:"惩罚-slashing"},{level:3,title:"创世交易(Genesis Transactions)",slug:"创世交易-genesis-transactions"}]},{title:"Especificaciones técnicas",frontmatter:{description:""},regularPath:"/es/governance/params-change/Governance.html",relativePath:"es/governance/params-change/Governance.md",key:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",headers:[{level:2,title:"1. depositparams",slug:"_1-depositparams"},{level:2,title:"mindeposit",slug:"mindeposit"},{level:3,title:"El depósito mínimo requerido para que una propuesta entre en el período de votación, en micro-ATOMs",slug:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias"},{level:2,title:"maxdepositperiod",slug:"maxdepositperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-2"},{level:2,title:"2. votingparams",slug:"_2-votingparams"},{level:2,title:"votingperiod",slug:"votingperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-3"},{level:2,title:"2. tallyparams",slug:"_2-tallyparams"},{level:2,title:"quorum",slug:"quorum"},{level:3,title:"La proporción mínima de poder de voto de la red que se requiere para que el resultado de una propuesta de gobierno se considere válido",slug:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-4"},{level:2,title:"threshold",slug:"threshold"},{level:3,title:"La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno",slug:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-5"},{level:2,title:"veto",slug:"veto"},{level:3,title:"La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno",slug:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-6"},{level:2,title:"Parámetros de Génesis (aka lanzamiento)",slug:"parametros-de-genesis-aka-lanzamiento"},{level:2,title:"Parámetros actuales",slug:"parametros-actuales"},{level:2,title:"Futuro",slug:"futuro"}]},{title:"제네시스 파일",frontmatter:{description:""},regularPath:"/ko/resources/genesis.html",relativePath:"ko/resources/genesis.md",key:"v-a8848234",path:"/ko/resources/genesis.html",headers:[{level:2,title:"제네시스 파일은 무엇인가?",slug:"제네시스-파일은-무엇인가"},{level:2,title:"제네시스 시간과 체인 아이디",slug:"제네시스-시간과-체인-아이디"},{level:2,title:"컨센서스 파라미터",slug:"컨센서스-파라미터"},{level:2,title:"애플리케이션 상태",slug:"애플리케이션-상태"},{level:3,title:"제네시스 계정",slug:"제네시스-계정"},{level:3,title:"뱅크(Bank)",slug:"뱅크-bank"},{level:3,title:"스테이킹(Staking)",slug:"스테이킹-staking"},{level:3,title:"민트(mint)",slug:"민트-mint"},{level:3,title:"분배(distribution)",slug:"분배-distribution"},{level:3,title:"거버넌스(governance)",slug:"거버넌스-governance"},{level:3,title:"슬래싱(slashing)",slug:"슬래싱-slashing"},{level:3,title:"제네시스 트랜잭션(genesis transactions)",slug:"제네시스-트랜잭션-genesis-transactions"}]},{title:"State Sync",frontmatter:{description:"",title:"Cosmos Hub 3 Upgrade",order:5},regularPath:"/migration/cosmoshub-3/cosmoshub-3.html",relativePath:"migration/cosmoshub-3/cosmoshub-3.md",key:"v-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"Genesis File",frontmatter:{description:"",order:1,title:"The Genesis File"},regularPath:"/resources/genesis.html",relativePath:"resources/genesis.md",key:"v-91b151c0",path:"/resources/genesis.html",headers:[{level:2,title:"What is a Genesis File",slug:"what-is-a-genesis-file"},{level:2,title:"Genesis Time and Chain_id",slug:"genesis-time-and-chain-id"},{level:2,title:"Consensus Parameters",slug:"consensus-parameters"},{level:2,title:"Application State",slug:"application-state"},{level:3,title:"Genesis Accounts",slug:"genesis-accounts"},{level:3,title:"Bank",slug:"bank"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Mint",slug:"mint"},{level:3,title:"Distribution",slug:"distribution"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Genesis Transactions",slug:"genesis-transactions"}]},{title:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:2,title:"Release History",slug:"release-history"},{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Contributing",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Maintainability",slug:"maintainability"},{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Guidelines",slug:"guidelines"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);Mo.component("home",()=>n.e(27).then(n.bind(null,457))),Mo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,480))),Mo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,479))),Mo.component("IconArrow",()=>n.e(29).then(n.bind(null,478))),Mo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,477))),Mo.component("IconSearch",()=>n.e(31).then(n.bind(null,476))),Mo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,475))),Mo.component("IconWindow",()=>n.e(33).then(n.bind(null,474))),Mo.component("ImageLetter",()=>n.e(34).then(n.bind(null,473))),Mo.component("LayoutDefault",()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,456))),Mo.component("LogoCore",()=>n.e(35).then(n.bind(null,471))),Mo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,642))),Mo.component("LogoHub",()=>n.e(37).then(n.bind(null,544))),Mo.component("LogoHubText",()=>n.e(38).then(n.bind(null,522))),Mo.component("LogoSdk",()=>n.e(39).then(n.bind(null,520))),Mo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,519))),Mo.component("SectionSearch",()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,455))),Mo.component("TmAside",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,454))),Mo.component("TmBreadcrumbs",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,453))),Mo.component("TmCodeBlock",()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,452))),Mo.component("TmContentCards",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,451))),Mo.component("TmFooter",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,450))),Mo.component("TmFooterLinks",()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,460))),Mo.component("TmHelpSupport",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,449))),Mo.component("TmIconBasics",()=>n.e(41).then(n.bind(null,508))),Mo.component("TmIconCore",()=>n.e(42).then(n.bind(null,481))),Mo.component("TmIconDash",()=>n.e(43).then(n.bind(null,472))),Mo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,518))),Mo.component("TmIconHex",()=>n.e(44).then(n.bind(null,515))),Mo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,514))),Mo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,513))),Mo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,512))),Mo.component("TmIconModules",()=>n.e(48).then(n.bind(null,511))),Mo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,510))),Mo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,459))),Mo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,626))),Mo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,525))),Mo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),Mo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,521))),Mo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),Mo.component("TmLogoIbc",()=>n.e(56).then(n.bind(null,467))),Mo.component("TmLogoSdk",()=>n.e(57).then(n.bind(null,466))),Mo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,517))),Mo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,516))),Mo.component("TmSearch",()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,465))),Mo.component("TmSelectLanguage",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,464))),Mo.component("TmSidebar",()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,463))),Mo.component("TmSelectVersion",()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,462))),Mo.component("TmSidebarContent",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,461))),Mo.component("TmSidebarTree",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,448))),Mo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,470))),Mo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,458))),Mo.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 Mo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Mo.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),Mo.component(t)||Mo.component(t,qa(t)),Mo.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()})}};Mo.config.productionTip=!1,Mo.use(wa),Mo.use(us),Mo.mixin(function(e,t,n=Mo){!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?!Mo.$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:Mo,options:r,router:n,siteData:es,isServer:e})))}catch(e){console.error(e)}return{app:new Mo(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 a665c8e79cf..be07febe86b 100644 --- a/main/delegators/delegator-faq.html +++ b/main/delegators/delegator-faq.html @@ -8,14 +8,14 @@ - - + +

# Delegator FAQ

# What is a delegator?

People that cannot or do not want to operate validator nodes 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.

Delegators share the revenue of their validators, but they also share the risks. 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 section below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see Risks section.

To become delegators, Atom holders need to send a "Delegate transaction" 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.

For a practical guide on how to become a delegator, click here.

# Choosing a validator

In order to choose their validators, delegators have access to a range of information directly in Lunie (opens new window) or other Cosmos block explorers.

  • Validator's moniker: Name of the validator candidate.
  • Validator's description: Description provided by the validator operator.
  • Validator's website: Link to the validator's website.
  • Initial commission rate: The commission rate on revenue charged to any delegator by the validator (see below for more detail).
  • Commission max change rate: The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.
  • Maximum commission: The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.
  • Validator self-bond amount: A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.

# Directives of delegators

Being a delegator is not a passive task. Here are the main directives of a delegator:

  • Perform careful due diligence on validators before delegating. 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.
  • Actively monitor their validator after having delegated. 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).
  • Participate in governance. 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.

# Revenue

Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:

  • Block provisions (Atoms): 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.
  • Transaction fees (various tokens): 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.

# Validator Commission

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:

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:

  • 990 Atoms in block provisions
  • 10 Atoms in transaction fees.

This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.

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:

  • Commission = 10% * 80% * 100 Atoms = 8 Atoms
  • Validator's revenue = 20% * 100 Atoms + Commission = 28 Atoms
  • Delegators' total revenue = 80% * 100 Atoms - Commission = 72 Atoms

Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.

# Liquid Staking

The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.

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.

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.

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.

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.

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.

# Toggling the ability to tokenize shares

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

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 DisableTokenizeShares message.

The DisableTokenizeShares message is exposed by the staking module and can be executed as follows:

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 a053ea631f2..a076c6896c7 100644 --- a/main/delegators/delegator-guide-cli.html +++ b/main/delegators/delegator-guide-cli.html @@ -8,8 +8,8 @@ - - + +

# Delegator Guide (CLI)

This document contains all the necessary information for delegators to interact with the Cosmos Hub through the Command-Line Interface (CLI).

It also contains instructions on how to manage accounts, restore accounts from the fundraiser and use a ledger nano device.

Very Important: Please assure that you follow the steps described hereinafter @@ -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 9934c320521..6bb8d3f4c4a 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 877f3031b63..cbba92bcd71 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 944842f926c..225104a7c7e 100644 --- a/main/es/gaia-tutorials/installation.html +++ b/main/es/gaia-tutorials/installation.html @@ -8,8 +8,8 @@ - - + +

# Instalación de Gaia

Esta guía le explicará como instalar los puntos de entrada gaiad y gaiad en su sistema. Con esto instalado en su servidor, puede participar en la red principal como un Full Node o como un Validador.

# Instalación de Go

Instale Go siguiendo la documentación oficial (opens new window). @@ -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 9ba01d0c882..fe98b7ba38e 100644 --- a/main/es/gaia-tutorials/join-mainnet.html +++ b/main/es/gaia-tutorials/join-mainnet.html @@ -8,8 +8,8 @@ - - + +

# Únase a la red principal del Cosmos Hub

Vea el repositorio para el lanzamiento (opens new window) 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.

::: aviso @@ -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 9a140a1a423..1d08678f5d4 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 d4c4a760bd5..24c5a75d82b 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 3038e5e3e2c..1525d24cecc 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 d8a177948d5..365abeab89d 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 4e938841497..235a8e965fe 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 c728f7531ef..5be607a5cb2 100644 --- a/main/getting-started/installation.html +++ b/main/getting-started/installation.html @@ -8,8 +8,8 @@ - - + +

# Installation

This guide will explain how to install the gaiad binary and run the cli. With this binary installed on a server, you can participate on the mainnet as either a Full Node or a Validator.

# Build Requirements

At present, the SDK fully supports installation on linux distributions. For the purpose of this instruction set, we'll be using Ubuntu 20.04.3 LTS. It is also possible to install gaiad on Unix, while Windows may require additional unsupported third party installation. All steps are listed below for a clean install.

  1. Update & install build tools
  2. Install Go
  3. Install Gaiad binaries

# Build Tools

Install make and gcc.

Ubuntu:

@@ -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 ebf3f9ce7d3..fb88ce6d9b3 100644 --- a/main/getting-started/quickstart.html +++ b/main/getting-started/quickstart.html @@ -8,8 +8,8 @@ - - + +

# Join Mainnet Quick Start

Bootstrap a cosmoshub-4 mainnet node

# Prerequisites

Note: Make sure the Gaia CLI is installed.

# Sync Options

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 Joining Mainnet Tutorial

    - + diff --git a/main/getting-started/system-requirements.html b/main/getting-started/system-requirements.html index ac4a1b80526..1c15d6597e1 100644 --- a/main/getting-started/system-requirements.html +++ b/main/getting-started/system-requirements.html @@ -8,8 +8,8 @@ - - + +

    # System requirements

    # Gaia Upgrades

    The Gaia application typically needs at least 32GB RAM, for smooth operation for upgrade, as there may be lenghty migrations to perform.

    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.

    @@ -20,6 +20,6 @@ sudo mkswap /swapfile sudo swapon /swapfile
    - + diff --git a/main/getting-started/what-is-gaia.html b/main/getting-started/what-is-gaia.html index a93bb1ca8d8..d8dde475405 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 c9fec72ca4b..baa95d328ae 100644 --- a/main/governance/best-practices.html +++ b/main/governance/best-practices.html @@ -8,8 +8,8 @@ - - + +

    # Off-Chain Proposal Process

    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.

    The process of passing a proposal starts long before it goes on-chain!

    There are currently several types of proposals supported by the Cosmos Hub:

    • Text - 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.
    • Community Pool Spend - Proposal to spend funds from the community pool on a project.
    • Parameter Change - Proposal to change a core on-chain parameter.
    • Software Upgrade - Proposal to upgrade the chain version.
    • IBC Client Update - Proposal to update an IBC client.

    You'll first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.

    # Engage directly with the voting community and seek feedback

    Engagement is likely to be critical to the success of a proposal. The degree to which you engage with the Cosmos Hub community should be relative to the potential impact that your proposal may have on the stakeholders. This guide does not cover all ways of engaging but here are some suggestions:

    We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.

    There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.

    Why do it in stages? It's a more conservative approach to save resources. The idea is to check in with key stakeholders at each stage before investing more resources into developing your proposal.

    In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Cosmos Hub, timeline, any funding needs) and check:

    • Does it make sense?
    • Are there critical flaws?
    • How will this affect other projects or properties of the Hub?

    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:

    "We are considering a proposal for funding to work on project. We think it will help the Hub to outcome. Timeline is x, and we're asking for y amount. Do you think that this is a proposal that large validator may support?"

    Why a large validator? They tend to be the de facto decision-makers on the Cosmos Hub, since their delegators also delegate their voting power. If you can establish a base layer of off-chain support, you can be more confident that it's worth proceeding to the next stage.

    Note: Many 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.

    If you're already confident about your idea, skip to Stage 2.

    # Stage 1: Your Idea

    # Not yet confident about your idea?

    Great! Governance proposals potentially impact many stakeholders. Introduce your idea with known members of the community before investing resources into drafting a proposal. Don't let negative feedback dissuade you from exploring your idea if you think that it's still important.

    If you know people who are very involved with the Cosmos Hub, send them a private message with a concise overview of what you think will result from your idea or proposed changes. Wait for them to ask questions before providing details. Do the same in semi-private channels where people tend to be respectful (and hopefully supportive).

    # Confident with your idea?

    Great! However, remember that governance proposals potentially impact many stakeholders, which can happen in unexpected ways. Introduce your idea with members of the community before investing resources into drafting a proposal. At this point you should seek out and carefully consider critical feedback in order to protect yourself from confirmation bias (opens new window). This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.

    Posting your idea to the Cosmos Hub Forum (opens new window) is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.

    # Are you ready to draft a governance proposal?

    There will likely be differences of opinion about the value of what you're proposing to do and the strategy by which you're planning to do it. If you've considered feedback from broad perspectives and think that what you're doing is valuable and that your strategy should work, and you believe that others feel this way as well, it's likely worth drafting a proposal. However, remember that the largest ATOM stakers have the biggest vote, so a vocal minority isn't necessarily representative or predictive of the outcome of an on-chain vote.

    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.

    # Stage 2: Your Draft Proposal

    The next major section outlines and describes some potential elements of drafting a proposal. Ensure that you have considered your proposal and anticipated questions that the community will likely ask. Once your proposal is on-chain, you will not be able to change it.

    # Proposal Elements

    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.

    Each major proposal type has a rough template available on the forum: Text (opens new window), community pool spend (opens new window), parameter change (opens new window), software upgrade (opens new window).

    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.

    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.

    A few more pointers for Parameter-change and Community Spend proposals are below.

    # Parameter-Change

    An example of a successful parameter change proposal is Proposal #66 (opens new window). Note that this proposal went on-chain without the recommended IPFS pin.

    1. Problem/Value - The problem or value that's motivating the parameter change(s).
    2. Solution - How changing the parameter(s) will address the problem or improve the network.
    3. Risks & Benefits - How making this/these change(s) may expose stakeholders to new benefits and/or risks. @@ -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.
    4. 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).

    1. 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 122321d8d17..6344ada053b 100644 --- a/main/governance/formatting.html +++ b/main/governance/formatting.html @@ -8,8 +8,8 @@ - - + +

    # Formatting a Proposal

    Many proposals allow for long form text to be included, usually under the key description. These provide the opportunity to include markdown (opens new window) if formatted correctly, as well as line breaks with \n.

    Beware, however, that if you are using the CLI to create a proposal, and setting description using a flag, the text will be escaped (opens new window) which may have undesired effects.

    Formatting a proposal can be a trial-and-error process, which is why first submitting to the testnet is recommended. @@ -45,6 +45,6 @@ "deposit": "100000uatom" }

    - + diff --git a/main/governance/index.html b/main/governance/index.html index 4a1c9b236e7..f413dcbf920 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 8a62dc5aad3..6eedfba2eed 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 ba702f3154f..05710ea5fd0 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 2a456dee7ea..47b14d48a9d 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 f3493f8410c..65f41c44c6f 100644 --- a/main/governance/proposal-types/param-change.html +++ b/main/governance/proposal-types/param-change.html @@ -8,8 +8,8 @@ - - + +

    # Parameter Change

    This Cosmos Hub educational documentation aims to outline the Hub's parameters, describe their functions, and describe the potential implications of modifying each parameter. This documentation also aims to provide guidelines for creating and assessing parameter-change proposals.

    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.

    # What parameters can be changed?

    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 list of modules (opens new window) in the Cosmos SDK. The Cosmos Hub is built using the Cosmos SDK, but not all available modules are in use on the Hub.

    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.

    1. auth - Authentication of accounts and transactions
    2. bank - Token transfer functionalities
    3. gov - On-chain governance proposals and voting
    4. staking - Proof-of-stake layer
    5. slashing - Validator punishment mechanisms
    6. distribution - Fee distribution and staking token provision distribution
    7. crisis - Halting the blockchain under certain circumstances (ie. if an invariant is broken)
    8. mint - Creation of new units of staking token @@ -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 c37ce548d94..a911ad4e3b2 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 9d2cb78e0d2..6039dabac04 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 bfe39ef2ebb..3bb5b0f2980 100644 --- a/main/governance/proposal-types/params-change/Crisis.html +++ b/main/governance/proposal-types/params-change/Crisis.html @@ -8,8 +8,8 @@ - - + +

    # crisis subspace

    The crisis module is responsible for halting the Cosmos Hub if an invariant is broken. The crisis module has the following parameters:

    Key Value
    ConstantFee { @@ -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 239edb6c7bb..991d96727b9 100644 --- a/main/governance/proposal-types/params-change/Distribution.html +++ b/main/governance/proposal-types/params-change/Distribution.html @@ -8,8 +8,8 @@ - - + +

    # distribution subspace

    The distribution module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters:

    Key Value
    baseproposerreward 0.010000000000000000
    bonusproposerreward 0.040000000000000000
    communitytax 0.020000000000000000
    withdrawaddrenabled true

    The distribution module enables a simple distribution mechanism that passively distributes rewards between validators and delegators. Collected rewards are pooled globally and divided out passively to validators and delegators. Each validator has the opportunity to charge commission to the delegators on the rewards collected on behalf of the delegators. Fees are collected directly into a global reward pool and validator proposer-reward pool.

    There is a known bug associated with this module.

    # Governance notes on parameters

    # communitytax

    The proportion of staking rewards diverted to the community pool.

    Staking on the Cosmos Hub entitles participants to inflationary (aka "block") rewards and transaction fees. A portion of these staking rewards is diverted to the community pool, which can be spent with a successful community-spend governance proposal. communitytax is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently 0.020000000000000000 (2%) of all staking rewards.

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

    # Decreasing the value of communitytax

    Decreasing the value of the communitytax parameter will decrease the rate that the community pool is funded and will increase the staking rewards captured by staking participants. This will make it more likely for the community pool to be exhausted and could potentially increase the motivation for participants to stake.

    # Increasing the value of communitytax

    Increasing the value of the communitytax parameter will increase the rate that the community pool is funded and will decrease the staking rewards captured by staking participants. This will make it more less for the community pool to be exhausted and could potentially decrease the motivation for participants to stake.

    # baseproposerreward

    The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.

    All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block: that validator receives a bonus of 0.010000000000000000 (1%) more in transaction fees. The proposer must include a minimum of 2/3 of precommit signatures from the other validators in the active set in order for the block to be valid and to receive the baseproposerreward bonus. All in Bits has published more in-depth information here (opens new window).

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

    # Decreasing the value of baseproposerreward

    Decreasing the value of the baseproposerreward parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.

    # Increasing the value of baseproposerreward

    Increasing the value of the baseproposerreward parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block.

    # Notes

    The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the baseproposerreward bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus here (opens new window).

    # bonusproposerreward

    The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.

    All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block. If that validator includes more than a minimum of 2/3 of precommit signatures from the other validators in the active set, they are eligible to receive the bonusproposerreward of up to 4% (0.040000000000000000), beyond the 1% baseproposerreward. The bonus proposer reward amount that a validator receives depends upon how many precommit signatures are included in the proposed block (additional to the requisite 2/3). All in Bits has published more in-depth information here (opens new window).

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

    # Decreasing the value of bonusproposerreward

    Decreasing the value of the bonusproposerreward parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.

    # Increasing the value of bonusproposerreward

    Increasing the value of the bonusproposerreward parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block.

    # Notes

    The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the bonusproposerreward bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus here (opens new window).

    # Example

    Note that "reserve pool" refers to the community pool. In this example from the All in Bits website (opens new window), there are 10 validators with equal stake. Each of them applies a 1% commission rate and has 20% of self-delegated Atoms. Now comes a successful block that collects a total of 1025.51020408 Atoms in fees.

    First, a 2% tax is applied. The corresponding Atoms go to the reserve pool (aka community pool). Reserve pool's funds can be allocated through governance to fund bounties and upgrades.

    2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool. @@ -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 b7c85203068..79ad6d02c8a 100644 --- a/main/governance/proposal-types/params-change/Governance.html +++ b/main/governance/proposal-types/params-change/Governance.html @@ -8,8 +8,8 @@ - - + +

    # gov subspace

    The gov module is responsible for on-chain governance proposals and voting functionality.

    Key Value
    depositparams { @@ -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 efc0546ae52..ad44f7cb2a5 100644 --- a/main/governance/proposal-types/params-change/Mint.html +++ b/main/governance/proposal-types/params-change/Mint.html @@ -8,14 +8,14 @@ - - + +

    # mint subspace

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

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

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

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

    It can be broken down in the following way:

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

    # Governance notes on parameters

    # MintDenom

    Type of asset/coin that the Cosmos Hub mints.

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

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

    # Changing the MintDenom parameter

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

    # InflationRateChange

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

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

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

    1. how far away the current staking participation ratio is from GoalBonded (67%)
    2. the value of InflationRateChange, which is 1.000000000000000000
    Copy inflationRateChangePerYear = (1 - bondedRatio/params.GoalBonded) * params.InflationRateChange

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

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

    # Decreasing the value of InflationRateChange

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

    # Increasing the value of InflationRateChange

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

    # Notes

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

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

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

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

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

    # InflationMax

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

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

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

    # Decreasing the value of InflationMax

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

    # Increasing the value of InflationMax

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

    # Notes

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

    # InflationMin

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

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

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

    # Decreasing the value of InflationMin

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

    # Increasing the value of InflationMin

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

    # Notes

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

    # GoalBonded

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

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

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

    # Decreasing the value of GoalBonded

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

    # Increasing the value of GoalBonded

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

    # BlocksPerYear

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

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

    # Changing the BlocksPerYear parameter

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

    # Notes

    The calculation for seconds in one year:

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

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

    31556736 / 7.12 = ~4432126 blocks per year

    - + diff --git a/main/governance/proposal-types/params-change/Slashing.html b/main/governance/proposal-types/params-change/Slashing.html index a10a72d82da..e86a5ecedb3 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 bc03fb72681..19004e41381 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 b5bc56507a7..7fea9c68e14 100644 --- a/main/governance/proposal-types/params-change/param-index.html +++ b/main/governance/proposal-types/params-change/param-index.html @@ -8,8 +8,8 @@ - - + +

    # Index of Governable Parameters

    # Querying on-chain parameters

    Given a subspace and an associated key, you can query on chain parameters using the CLI.

    @@ -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 c7c30b4fa94..4c43a730e5f 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 repos 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 76fd26b54d2..95593d284ae 100644 --- a/main/governance/proposals/2020-10-blocks-per-year/index.html +++ b/main/governance/proposals/2020-10-blocks-per-year/index.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub Inflation variable modification: Blocks Per Year

    Quick Summary of issue

    There are 6 main variables that control the maximum, minimum, & change of the @@ -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 90bd7b348bb..c309c66fd2a 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 feb19bf5a1b..76fd9e6104e 100644 --- a/main/governance/proposals/2021-01-atom2021_marketing/index.html +++ b/main/governance/proposals/2021-01-atom2021_marketing/index.html @@ -8,14 +8,14 @@ - - + +

    # Proposal 34: Luna Mission - Funding $ATOM

    ABSTRACT:

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

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

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

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

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

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

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

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

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

    MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k

    FULL TEXT OF DRAFT PROPOSAL

    Preamble

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Scope of Campaigns:

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

    Release of funds:

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

    Funds’ Distribution:

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

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

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

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

    MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k

    Refund of Unspent Funds to the Pool:

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

    Expectations from the rest of entities involved in the Hub:

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

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

    AiB’s General Obligations to the Community:

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

    Closing Remarks:

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

    - + 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 e21647dbe2c..5fa0e5f56f2 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 7c1a327fac1..569b0eccb78 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 af100be16ab..c1ed1eb4e96 100644 --- a/main/governance/proposals/2021-01-stargate-upgrade/index.html +++ b/main/governance/proposals/2021-01-stargate-upgrade/index.html @@ -8,11 +8,11 @@ - - + + -

    # Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade

    Stargate Upgrade banner graphic

    # by Iqlusion

    Jan 11, 2021

    # Key Results


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

    # Context


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

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

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

    # The Stargate Plan


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

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

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

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

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

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

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

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

    # Stargate Plan Results


    # 1. Ecoystem Participation

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

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

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

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

    # 2. Critical Partner Support

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

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

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

    # 3. Documentation and Self-Certification

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

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

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

    # Conclusion

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

    # Cosmos Stargate Integration Success

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

    # Prop 29

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

    # Stargate Upgrade Steps


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

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

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

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

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

    4. Validators should back up their .gaiad directory.

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

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

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

    # Time of the Upgrade


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

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

    # The git commit of Gaia that we are upgrading to


    d974b27a8caf8cad3b06fbe4678871e4b0b69a51

    # What we're doing while voting is happening


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

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

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

    # What is the upgrade abort process


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

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

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

    - +

    # Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade

    Stargate Upgrade banner graphic

    # by Iqlusion

    Jan 11, 2021

    # Key Results


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

    # Context


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

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

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

    # The Stargate Plan


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

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

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

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

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

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

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

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

    # Stargate Plan Results


    # 1. Ecoystem Participation

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

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

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

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

    # 2. Critical Partner Support

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

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

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

    # 3. Documentation and Self-Certification

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

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

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

    # Conclusion

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

    # Cosmos Stargate Integration Success

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

    # Prop 29

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

    # Stargate Upgrade Steps


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

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

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

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

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

    4. Validators should back up their .gaiad directory.

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

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

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

    # Time of the Upgrade


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

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

    # The git commit of Gaia that we are upgrading to


    d974b27a8caf8cad3b06fbe4678871e4b0b69a51

    # What we're doing while voting is happening


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

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

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

    # What is the upgrade abort process


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

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

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

    + diff --git a/main/governance/proposals/2021-03-enable-ibc-transfers/index.html b/main/governance/proposals/2021-03-enable-ibc-transfers/index.html index 37434453083..9036f7287b3 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 b8c38238347..a0607b9fb82 100644 --- a/main/governance/proposals/2021-04-advancing-ethermint/index.html +++ b/main/governance/proposals/2021-04-advancing-ethermint/index.html @@ -8,11 +8,11 @@ - - + + -

    # Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain

    NOTE: this is a short version of the full proposal. To read the full document click here (opens new window).

    # Author

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

    # Summary

    Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. The team will use these resources to grow our dedicated Cosmos-EVM team, so we can take on the commitments and responsibilities necessary to maintain and support the Cosmos-EVM chain and codebase.

    An Ethermint environment has enormous potential to unlock new use cases within the Cosmos ecosystem that are not possible on Ethereum today. Use cases that require scalability and composability are some of the endless possibilities for Ethermint.

    Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:

    • Access to greater liquidity through IBC
    • Faster transaction times through Tendermint BFT's instant finality
    • Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)
    • Seamless portability and composability with Ethereum Virtual Machine support

    The commitments stated in this proposal will ensure a successful launch for the Ethermint chain together with its existing contributors (ChainSafe, OKEx, Iris, Injective, etc). Launching collaboratively with Ethermint stakeholders will result in a robust and independent community within Cosmos that will enable greater developer adoption of Cosmos technology.

    The Ethermint stakeholders are partnering to execute on the long-awaited Ethermint Chain by joining forces to develop and deploy a new Cosmos EVM chain that will be used by thousands of crypto users at launch.

    # Governance Votes

    The following items summarize the voting options and what it means for this proposal. All addresses that vote on the proposal might be eligible for a future airdrop.

    • YES: You approve the proposal statements and distribute the amount of 100,000 ATOMs to the multisig address. The treasury will allocate the funds to the Tharsis team, leading Ethermint's core development efforts and supporting the chain's go-to-market strategy. It will also lead to core technology maintenance and continuous discussion to ensure the project's longevity.
    • NO: The NO vote is a request for improvements or adjustments. You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.
    • NO (VETO): You veto the entire motivation for the proposal and expect the ICF and current maintainers to make the determination and continue the stewardship of the project. The proposers will not create a follow-up proposal.
    • ABSTAIN: You are impartial to the outcome of the proposal.

    # Multisig and release of funds

    Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:

    • Federico Kunze Küllmer - Tharsis (proposer)
    • Zaki Manian - Iqlusion
    • Marko Baricevic - Interchain GmbH

    The account address is: cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz

    If the proposal passes, the team will immediately receive 40% of the funds to expand its engineering team and other business development efforts to support GTM for the chain. The remaining 60% will be released in an equal proportion to the number of milestones upon the completion of each milestone. For any reason, if the proposer has not completed the next milestone within a year of the last payment, the remaining funds held in the multisig account will be returned to the community pool.

    # Product commitment

    The current proposal aims to develop all the necessary components for a successful Ethermint chain. Our team will lead the core development efforts to execute the points below.

    # Hard Commitments

    These are the items that are mandatory for the release of funds. The items will be split into four milestones.

    NOTE: Some of the items below are currently stated under ChainSafe's service agreement with the ICF for Ethermint. Our team will collaborate with them on these items so that they are included by the time the EVM chain is launched. These items are marked below as [CS]

    # Milestone 1: Developer Usability and Testing

    This milestone aims to reach a stage where developers can begin deployments of Ethermint with the latest Cosmos SDK version and test their smart contracts in what will feel like a seamless experience.

    • Starport support: Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.
    • Rosetta API support: Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.
    • EVM Consistency: Ensure that Ethermint can operate the same state as Ethereum and deterministically runs smart contract executions, exactly how Geth does (for example, checking the gas used between Ethermint and Geth)
    • Replay attack protection: Register Ethermint permanent testnet and mainnet chain-ids to ChainID Registry (opens new window) according to EIP 155 (opens new window).
    • Documentation: Ensure the documentation for both Ethermint and the EVM module are up to date with the implementation. JSON-RPC and OpenAPI (Swagger) docs for gRPC gateway and Rosetta will also be available for client developers. The team will create relevant sections to compare and distinguish key components of Ethermint and their corresponding ones on Ethereum. [CS]
    • Metrics: We plan to list relevant metrics available through the SDK telemetry system for user engagement information such as the number of contracts deployed, amount transacted, gas usage per block, number of accounts created, number and amount IBC transfers to and from Ethermint, etc. These metrics will be displayed in a Dashboard UI in the form of charts. [CS]
    • Ensure compatibility with Ethereum tooling: Test and coordinate with dev teams to test compatibility with (Truffle, Ganache, Metamask, web3.js, ethers.js, etc) and ensure the same dev UX as with Ethereum. The compatibility will then be ensured through end-to-end and integration tests. [CS]
    • User Guides: Relevant guides will be added to connect Ethermint with the tools mentioned above.
    • Cosmjs Library support: Make Ethermint keys, signing, queries, and txs compatible with the cosmjs (opens new window) library.
    • EIP 3085 (opens new window) support: add wallet_addEthereumChain JSON-RPC endpoint for Ethermint.

    # Milestone 2: Maximizing Performance and Compatibility

    This milestone aims to enhance and benchmark the Ethermint chain's performance so developers can experience its superior benefits over existing solutions in the market.

    • EVM module readiness: The current x/evm module from Ethermint suffers from technical debt regarding its architecture. The current proposal will do a bottleneck analysis of the EVM state transitions to redesign the EVM module to boost performance.
    • Benchmarks: As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]
    • Maintain a permanent testnet: Ethermint will have a permanent testnet to ease the development process for Ethereum developers and clients that wish to connect to Ethermint. The team will create a dedicated website, infrastructure, and faucet UI for users to request funds.
    • Faucet support: The team will ensure an Ethermint-compatible faucet implementation is supported to ensure the sustainability of the permanent testnet. This will be also integrated into the existing faucet library of cosmjs. [CS]
    • Ethereum Bridge: Integrate a combination of the following bridges in order to make Ethermint interoperable with Ethereum ERC20s: Cosmos Gravity bridge, IBC solo machine bridge, Chainbridge [CS].

    # Milestone 3: Mainnet readiness

    This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.

    • Relayer Integration: While the Ethermint migration to the SDK Stargate version supports IBC fungible token transfers on the app level, additional setup and integration is required to the IBC relayers to enable compatibility with Ethermint fully. The team will integrate the Ethermint keys and the remaining pieces to the relayer for full IBC support.
    • Ledger Support: The team will perform an assessment of the current Cosmos and Ethereum ledger device applications to test their compatibility with Ethermint. If the keys or signing is not supported, the team will coordinate with ZondaX, the Ledger team, and other key partners to integrate the patches to the corresponding apps.
    • Simulations: fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the manticore (opens new window) smart contract execution analysis tool.

    # Milestone 4: Mainnet launch

    This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.

    • Incentivized Testnet: Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.
    • Support Mainnet launch: The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]

    # Ongoing tasks

    Below are hard commitment items that are required for a successful launch but don’t fit into any particular milestone as they are recurring over the whole development period.

    • Core Ethermint repository maintenance: The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.
    • Coordination with Cosmos SDK core team: Since the Ethermint codebase uses a lot of custom functionality (keys, AnteHandler, modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.
    • Client support: Develop partnerships with exchanges and wallets to support Ethermint through the Ethereum-compatible JSON-RPC or the gRPC services from the SDK since day one.
    • Community support: Respond and support the community inquiries on Discord and other relevant channels.
    • Security Audit: perform an internal and a third-party security audit prior to launch.
    • Bug bounty: Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.

    # Soft Commitments

    See the full version (opens new window) of this document.

    # Conclusion

    With this proposal, Tharsis plans to expedite the Ethermint chain's development and launch the network by Q4 2021. Ethermint will be the first EVM-compatible chain on Cosmos that will be fully interoperable with other BFT and EVM chains via IBC and the Gravity bridge.

    By creating and envisioning this long-term roadmap, we believe Ethermint can act as the vital component of the Interchain and serve as the gateway between the Ethereum and Cosmos ecosystems: The Ethermint launch will combine the Cosmos and Ethereum communities and provide new economic opportunities for millions of users.

    - +

    # Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain

    NOTE: this is a short version of the full proposal. To read the full document click here (opens new window).

    # Author

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

    # Summary

    Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. The team will use these resources to grow our dedicated Cosmos-EVM team, so we can take on the commitments and responsibilities necessary to maintain and support the Cosmos-EVM chain and codebase.

    An Ethermint environment has enormous potential to unlock new use cases within the Cosmos ecosystem that are not possible on Ethereum today. Use cases that require scalability and composability are some of the endless possibilities for Ethermint.

    Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:

    • Access to greater liquidity through IBC
    • Faster transaction times through Tendermint BFT's instant finality
    • Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)
    • Seamless portability and composability with Ethereum Virtual Machine support

    The commitments stated in this proposal will ensure a successful launch for the Ethermint chain together with its existing contributors (ChainSafe, OKEx, Iris, Injective, etc). Launching collaboratively with Ethermint stakeholders will result in a robust and independent community within Cosmos that will enable greater developer adoption of Cosmos technology.

    The Ethermint stakeholders are partnering to execute on the long-awaited Ethermint Chain by joining forces to develop and deploy a new Cosmos EVM chain that will be used by thousands of crypto users at launch.

    # Governance Votes

    The following items summarize the voting options and what it means for this proposal. All addresses that vote on the proposal might be eligible for a future airdrop.

    • YES: You approve the proposal statements and distribute the amount of 100,000 ATOMs to the multisig address. The treasury will allocate the funds to the Tharsis team, leading Ethermint's core development efforts and supporting the chain's go-to-market strategy. It will also lead to core technology maintenance and continuous discussion to ensure the project's longevity.
    • NO: The NO vote is a request for improvements or adjustments. You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included.
    • NO (VETO): You veto the entire motivation for the proposal and expect the ICF and current maintainers to make the determination and continue the stewardship of the project. The proposers will not create a follow-up proposal.
    • ABSTAIN: You are impartial to the outcome of the proposal.

    # Multisig and release of funds

    Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:

    • Federico Kunze Küllmer - Tharsis (proposer)
    • Zaki Manian - Iqlusion
    • Marko Baricevic - Interchain GmbH

    The account address is: cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz

    If the proposal passes, the team will immediately receive 40% of the funds to expand its engineering team and other business development efforts to support GTM for the chain. The remaining 60% will be released in an equal proportion to the number of milestones upon the completion of each milestone. For any reason, if the proposer has not completed the next milestone within a year of the last payment, the remaining funds held in the multisig account will be returned to the community pool.

    # Product commitment

    The current proposal aims to develop all the necessary components for a successful Ethermint chain. Our team will lead the core development efforts to execute the points below.

    # Hard Commitments

    These are the items that are mandatory for the release of funds. The items will be split into four milestones.

    NOTE: Some of the items below are currently stated under ChainSafe's service agreement with the ICF for Ethermint. Our team will collaborate with them on these items so that they are included by the time the EVM chain is launched. These items are marked below as [CS]

    # Milestone 1: Developer Usability and Testing

    This milestone aims to reach a stage where developers can begin deployments of Ethermint with the latest Cosmos SDK version and test their smart contracts in what will feel like a seamless experience.

    • Starport support: Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.
    • Rosetta API support: Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.
    • EVM Consistency: Ensure that Ethermint can operate the same state as Ethereum and deterministically runs smart contract executions, exactly how Geth does (for example, checking the gas used between Ethermint and Geth)
    • Replay attack protection: Register Ethermint permanent testnet and mainnet chain-ids to ChainID Registry (opens new window) according to EIP 155 (opens new window).
    • Documentation: Ensure the documentation for both Ethermint and the EVM module are up to date with the implementation. JSON-RPC and OpenAPI (Swagger) docs for gRPC gateway and Rosetta will also be available for client developers. The team will create relevant sections to compare and distinguish key components of Ethermint and their corresponding ones on Ethereum. [CS]
    • Metrics: We plan to list relevant metrics available through the SDK telemetry system for user engagement information such as the number of contracts deployed, amount transacted, gas usage per block, number of accounts created, number and amount IBC transfers to and from Ethermint, etc. These metrics will be displayed in a Dashboard UI in the form of charts. [CS]
    • Ensure compatibility with Ethereum tooling: Test and coordinate with dev teams to test compatibility with (Truffle, Ganache, Metamask, web3.js, ethers.js, etc) and ensure the same dev UX as with Ethereum. The compatibility will then be ensured through end-to-end and integration tests. [CS]
    • User Guides: Relevant guides will be added to connect Ethermint with the tools mentioned above.
    • Cosmjs Library support: Make Ethermint keys, signing, queries, and txs compatible with the cosmjs (opens new window) library.
    • EIP 3085 (opens new window) support: add wallet_addEthereumChain JSON-RPC endpoint for Ethermint.

    # Milestone 2: Maximizing Performance and Compatibility

    This milestone aims to enhance and benchmark the Ethermint chain's performance so developers can experience its superior benefits over existing solutions in the market.

    • EVM module readiness: The current x/evm module from Ethermint suffers from technical debt regarding its architecture. The current proposal will do a bottleneck analysis of the EVM state transitions to redesign the EVM module to boost performance.
    • Benchmarks: As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]
    • Maintain a permanent testnet: Ethermint will have a permanent testnet to ease the development process for Ethereum developers and clients that wish to connect to Ethermint. The team will create a dedicated website, infrastructure, and faucet UI for users to request funds.
    • Faucet support: The team will ensure an Ethermint-compatible faucet implementation is supported to ensure the sustainability of the permanent testnet. This will be also integrated into the existing faucet library of cosmjs. [CS]
    • Ethereum Bridge: Integrate a combination of the following bridges in order to make Ethermint interoperable with Ethereum ERC20s: Cosmos Gravity bridge, IBC solo machine bridge, Chainbridge [CS].

    # Milestone 3: Mainnet readiness

    This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.

    • Relayer Integration: While the Ethermint migration to the SDK Stargate version supports IBC fungible token transfers on the app level, additional setup and integration is required to the IBC relayers to enable compatibility with Ethermint fully. The team will integrate the Ethermint keys and the remaining pieces to the relayer for full IBC support.
    • Ledger Support: The team will perform an assessment of the current Cosmos and Ethereum ledger device applications to test their compatibility with Ethermint. If the keys or signing is not supported, the team will coordinate with ZondaX, the Ledger team, and other key partners to integrate the patches to the corresponding apps.
    • Simulations: fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the manticore (opens new window) smart contract execution analysis tool.

    # Milestone 4: Mainnet launch

    This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.

    • Incentivized Testnet: Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.
    • Support Mainnet launch: The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]

    # Ongoing tasks

    Below are hard commitment items that are required for a successful launch but don’t fit into any particular milestone as they are recurring over the whole development period.

    • Core Ethermint repository maintenance: The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.
    • Coordination with Cosmos SDK core team: Since the Ethermint codebase uses a lot of custom functionality (keys, AnteHandler, modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.
    • Client support: Develop partnerships with exchanges and wallets to support Ethermint through the Ethereum-compatible JSON-RPC or the gRPC services from the SDK since day one.
    • Community support: Respond and support the community inquiries on Discord and other relevant channels.
    • Security Audit: perform an internal and a third-party security audit prior to launch.
    • Bug bounty: Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.

    # Soft Commitments

    See the full version (opens new window) of this document.

    # Conclusion

    With this proposal, Tharsis plans to expedite the Ethermint chain's development and launch the network by Q4 2021. Ethermint will be the first EVM-compatible chain on Cosmos that will be fully interoperable with other BFT and EVM chains via IBC and the Gravity bridge.

    By creating and envisioning this long-term roadmap, we believe Ethermint can act as the vital component of the Interchain and serve as the gateway between the Ethereum and Cosmos ecosystems: The Ethermint launch will combine the Cosmos and Ethereum communities and provide new economic opportunities for millions of users.

    + diff --git a/main/governance/proposals/2021-04-lower-deposit-requirement/index.html b/main/governance/proposals/2021-04-lower-deposit-requirement/index.html index 1ccb2065cd2..290ef1629bf 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 baf42a4b9a2..25627e6e495 100644 --- a/main/governance/proposals/2021-04-prop34-continuation/index.html +++ b/main/governance/proposals/2021-04-prop34-continuation/index.html @@ -8,8 +8,8 @@ - - + +

    # Proposal 46: Extend Luna Mission to Fund ATOM Marketing

    The Cosmos community approved Proposal 34 on 2021-01-20 allocating 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with key community stakeholders. Proposal 46 is requesting an extension of the time allowed to spend the approved budget and allocate existing funds for additional ATOM-focused priorities. Below are details of this request and an outline of the successful results of Proposal 34 marketing spend as of 2021-03-31.

    # PROPOSAL 46 REQUEST:

    1. Prop 34 Time Extension: The Prop 34 Implementation team seeks a three-month extension (until 2021-07-20) to fully spend the existing budget allocation under the terms approved in Proposal 34. The multisig team and AiB (Tendermint) invested significant time and energy properly researching, vetting and managing vendors, contractors, and opportunities requiring additional time to complete the Prop 34 expenditure of funds. With the approval of Proposal 46, any unspent funds remaining from Proposal 34 efforts will be returned to the community pool on 2021-07-20.
    2. Additional Budget Priority - Project Execution Fund Pool: Execution, oversight, and accountability for this significant marketing spend requires substantive operational support. In addition to the 5 multisig administrators, Zaki Manian, Jack Zampolin, Immasssi, Jhonnie and Joe Dirtay, extensive support is being provided by Adriana Mihai (Kalpatech), Garrette Furo (Regen Network), David Fortson (Regen Network/LOACOM), and others. We request an allocation of 3000 ATOM (from the existing budget) to compensate the aforementioned contributors for previous and ongoing support of this expansive marketing campaign. Funds will be distributed through the multisig administration.
    3. Additional Budget Priority - Gravity DEX: This proposal seeks to allocate 10,000 - 20,000 ATOM (from approved Prop 34 budget) to identify and support robust marketing of the Gravity DEX testnet and DEX mainnet launch- an AMM exchange that will have a significant impact on ATOM valuation if successful. Gravity DEX is initially planned as an automated market maker (AMM) exchange that will allow users to trade IBC token pairs and provide liquidity for traders. These tokens would arrive on the Hub through IBC-enabled chains, IBC-wrapped ETH and ERC20 tokens, IBC-wrapped BTC tokens, and as well as future blockchain ecosystems that implement the IBC protocol.
    4. Community Created YouTube Videos: After evaluating the existing meme campaign, the project management team is recommending ceasing the community meme campaign and reallocating remaining funds for community-created YouTube videos. This campaign would reward community members for creating select videos for prospective or new token holders focused on ‘How to’ and explainer videos on topics such as “How to set up your wallet,” “How to stake your $ATOM,” “How to delegate, redelegate and participate in governance,” and more.

    # SECTION I OVERVIEW

    A summary report of current marketing activities and related analytics can be found here. Highlights include (Date Range 2021-01-20 to 2021-03-31):

    • ATOM Valuation: ATOM valuation has increased from $8.92 to $19.10 - a 214% increase.
    • Twitter: New 2020 and 2021 record on new followers and engagement: @@ -40,7 +40,7 @@ - Total valid entries: 2000+ - Cosmonaut Telegram channel growth: 700+ new people in 2 weeks (organic) - Cosmonaut Twitter channel growth: 400+ new people in 2 weeks (organic) -MEME Live tracker (opens new window) Competition outline (opens new window)

    - +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 b0467a8ddd6..4d6602c66f9 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.

    - +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 809bb67004b..25b3bfd386a 100644 --- a/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html +++ b/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html @@ -8,11 +8,11 @@ - - + + -

    # ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives

    ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos.

    In the Cosmos Hub Port City vision, ATOMs are pitched as equity in the Cosmos Hub. However, this alone is insufficient to establish ATOM as the base currency of the Cosmos ecosystem as a whole. Instead, the ATOM community must work to actively promote the use of ATOMs throughout the Cosmos ecosystem, rather than passively relying on the Hub's reputation to create ATOM's value.

    In order to cement the role of ATOMs in Cosmos DeFi, the Cosmos Hub should leverage its community pool to help align incentives with other protocols within the Cosmos ecosystem. We propose beginning this initiative by using the community pool ATOMs to incentivize deep ATOM base pair liquidity pools on the Osmosis Network.

    Osmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x’d the number of IBC transactions ever created, demonstrating the power of IBC and the ability of the Cosmos SDK to bootstrap DeFi protocols with $100M+ TVL in a short period of time. Since its announcement Osmosis has helped bring renewed attention and interest to Cosmos from the crypto community at large and kickstarted the era of Cosmos DeFi.

    Osmosis has already helped in establishing ATOM as the Schelling Point of the Cosmos ecosystem. The genesis distribution of OSMO was primarily based on an airdrop to ATOM holders specifically, acknowledging the importance of ATOM to all future projects within the Cosmos. Furthermore, the Osmosis LP rewards currently incentivize ATOMs to be one of the main base pairs of the platform.

    Osmosis has the ability to incentivize AMM liquidity, a feature not available on any other IBC-enabled DEX. Osmosis already uses its own native OSMO liquidity rewards to incentivize ATOMs to be one of the main base pairs, leading to ~2.2 million ATOMs already providing liquidity on the platform.

    In addition to these native OSMO LP Rewards, the platform also includes a feature called “external incentives” that allows anyone to permissionlessly add additional incentives in any token to the LPs of any AMM pools they wish. You can read more about this mechanism here: https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413 . Pools containing Cosmos assets such as AKT and XPRT are already planned to receive incentives from their respective community pools and/or foundations.

    We propose the Cosmos Hub dedicate 100,000 ATOMs from its Community Pool to be allocated towards liquidity incentives on Osmosis over the next 3 months. This community fund proposal will transfer 100,000 ATOMs to a multisig group who will then allocate the ATOMs to bonded liquidity gauges on Osmosis on a biweekly basis, according to direction given by Cosmos Hub governance. For simplicity, we propose setting the liquidity incentives to initially point to Osmosis Pool #1, the ATOM/OSMO pool, which is the pool with by far the highest TVL and Volume. Cosmos Hub governance can then use Text Proposals to further direct the multisig members to reallocate incentives to new pools.

    The multisig will consist of a 2/3 key holder set consisting of the following individuals whom have all agreed to participate in this process shall this proposal pass:

    • Zaki Manian
    • Federico Kunze
    • Marko Baricevic

    This is one small step for the Hub, but one giant leap for ATOM-aligned.

    - +

    # ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives

    ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos.

    In the Cosmos Hub Port City vision, ATOMs are pitched as equity in the Cosmos Hub. However, this alone is insufficient to establish ATOM as the base currency of the Cosmos ecosystem as a whole. Instead, the ATOM community must work to actively promote the use of ATOMs throughout the Cosmos ecosystem, rather than passively relying on the Hub's reputation to create ATOM's value.

    In order to cement the role of ATOMs in Cosmos DeFi, the Cosmos Hub should leverage its community pool to help align incentives with other protocols within the Cosmos ecosystem. We propose beginning this initiative by using the community pool ATOMs to incentivize deep ATOM base pair liquidity pools on the Osmosis Network.

    Osmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x’d the number of IBC transactions ever created, demonstrating the power of IBC and the ability of the Cosmos SDK to bootstrap DeFi protocols with $100M+ TVL in a short period of time. Since its announcement Osmosis has helped bring renewed attention and interest to Cosmos from the crypto community at large and kickstarted the era of Cosmos DeFi.

    Osmosis has already helped in establishing ATOM as the Schelling Point of the Cosmos ecosystem. The genesis distribution of OSMO was primarily based on an airdrop to ATOM holders specifically, acknowledging the importance of ATOM to all future projects within the Cosmos. Furthermore, the Osmosis LP rewards currently incentivize ATOMs to be one of the main base pairs of the platform.

    Osmosis has the ability to incentivize AMM liquidity, a feature not available on any other IBC-enabled DEX. Osmosis already uses its own native OSMO liquidity rewards to incentivize ATOMs to be one of the main base pairs, leading to ~2.2 million ATOMs already providing liquidity on the platform.

    In addition to these native OSMO LP Rewards, the platform also includes a feature called “external incentives” that allows anyone to permissionlessly add additional incentives in any token to the LPs of any AMM pools they wish. You can read more about this mechanism here: https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413 . Pools containing Cosmos assets such as AKT and XPRT are already planned to receive incentives from their respective community pools and/or foundations.

    We propose the Cosmos Hub dedicate 100,000 ATOMs from its Community Pool to be allocated towards liquidity incentives on Osmosis over the next 3 months. This community fund proposal will transfer 100,000 ATOMs to a multisig group who will then allocate the ATOMs to bonded liquidity gauges on Osmosis on a biweekly basis, according to direction given by Cosmos Hub governance. For simplicity, we propose setting the liquidity incentives to initially point to Osmosis Pool #1, the ATOM/OSMO pool, which is the pool with by far the highest TVL and Volume. Cosmos Hub governance can then use Text Proposals to further direct the multisig members to reallocate incentives to new pools.

    The multisig will consist of a 2/3 key holder set consisting of the following individuals whom have all agreed to participate in this process shall this proposal pass:

    • Zaki Manian
    • Federico Kunze
    • Marko Baricevic

    This is one small step for the Hub, but one giant leap for ATOM-aligned.

    + diff --git a/main/governance/proposals/2021-09-hub-ibc-router/index.html b/main/governance/proposals/2021-09-hub-ibc-router/index.html index b8c17e35b97..99b4831fb60 100644 --- a/main/governance/proposals/2021-09-hub-ibc-router/index.html +++ b/main/governance/proposals/2021-09-hub-ibc-router/index.html @@ -8,8 +8,8 @@ - - + +

    # ⚛️ Make the Cosmos Hub the IBC Router ⚛️

    The following is a selection from the Cosmos Whitepaper (opens new window):

    @@ -39,7 +39,7 @@ "receiver": "osmo1vzxkv3lxccnttr9rs0002s93sgw72h7gl89vpz", }

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

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

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

    - +

    + diff --git a/main/governance/proposals/index.html b/main/governance/proposals/index.html index 843738a6654..20cd6c58302 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 ad9b55033ba..4e6dd6f8e62 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 66cbc4a8006..a56c38bf587 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 situation the proposal aims to address. It should clearly 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 indicate 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 5f30f30ee20..afdf6a8137b 100644 --- a/main/governance/state-of-cosmos-governance-2021.html +++ b/main/governance/state-of-cosmos-governance-2021.html @@ -8,8 +8,8 @@ - - + +

    # State of Cosmos Governance 2021

    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.

    # Cosmos View of Governance

    The Cosmos ecosystem emphasizes governance mechanisms in order to achieve the vision of an ecosystem of interoperable blockchains supported by interchain infrastructure and services on the Cosmos Hub and beyond. The intent is that Cosmos Hub is operated by the community of code development teams supported by the Interchain Foundation, validators and ATOM token holders as a form of distributed organization.

    Cosmos Hub has a Governance (x/gov) module (opens new window) for coordinating various changes to the blockchain through parameters, upgrades and proposals (the white paper (opens new window) refers to text amendments to the "human-readable constitution" setting out Cosmos Hub policies). However, the ecosystem also has additional on- and off- chain processes that exist to set technical direction and inculcate social norms.

    Reviewing existing governance documentation and discussion, a few key themes surfaced:

    # Emphasis on Self-governance and Sovereignty

    On-chain governance standardizes forms of coordination but leaves many governance decisions to each application-specific blockchain or zone. Sunny Aggarwal uses the analogy (opens new window) that IBC as a form of standardization allows for "economic integration without political integration." Sunny also talks about (opens new window) how governance controlled by a community that shares culture and trust can "achieve greater security than economic incentives alone." For example, the Regen Network has a governance model (opens new window) that identifies multiple constituencies that require representation in governance. This allows diverse chains to exchange value while retaining the ability to self-govern.

    # Flexibility through On-chain Parameters

    Each blockchain in the Cosmos ecosystem can be tailored to a specific application or use case, as opposed to building everything on top of a general purpose chain (and as a result without a Turing complete virtual machine like Ethereum's, for example). This approach provides flexibility through allowing stakeholders to vote on live parameter changes. In addition, Cosmos ecosystem teams are working on smart contract functionality. For example, the CosmWasm team have explored permissioned smart contracts (opens new window), where on-chain governance is required to approve instantiation of smart contracts.

    # Development of Governance Processes Over Time

    The existing governance module (opens new window) is described as a minimum viable product for the governance module, with ideas for future improvement (opens new window) . For example an active product team is currently aligning groups and governance functionality (opens new window) will change current governance practices and open up new avenues to explore and support through on- and off- chain processes

    # On- and off-chain Governance Structure

    # Communication

    Governance practices and decisions are communicated through different types of documents and design artefacts:

    - + diff --git a/main/governance/submitting.html b/main/governance/submitting.html index a740d34fc72..682edb42413 100644 --- a/main/governance/submitting.html +++ b/main/governance/submitting.html @@ -8,8 +8,8 @@ - - + +

    # Submitting a Proposal

    If you have a final draft of your proposal ready to submit, you may want to push your proposal live on the testnet first. These are the three primary steps to getting your proposal live on-chain.

    Interacting with the Cosmos Hub via the command line in order to run queries or submit proposals has several prerequisites:

    • You will need to compile gaiad (opens new window) from source into a binary file executable by your operating system eg. MacOS, Windows, Linux
    • You will need to indicate which chain you are querying, and currently this is --chain-id cosmoshub-4
    • You will need to connect to a full node. You can find a list of available Cosmos Hub endpoints under the API section (opens new window) in the Chain Registry (opens new window).
    • More info is in the Walkthrough Example section.

    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.

    # Hosting supplementary materials

    In general we try to minimize the amount of data pushed to the blockchain. Hence, detailed documentation about a proposal is usually hosted on a separate censorship resistant data-hosting platform, like IPFS.

    Once you have drafted your proposal, ideally as a Markdown file, you @@ -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/guidelines/code-guidelines.html b/main/guidelines/code-guidelines.html index 273fe4aa77a..c5ef3191165 100644 --- a/main/guidelines/code-guidelines.html +++ b/main/guidelines/code-guidelines.html @@ -8,8 +8,8 @@ - - + +

    # Contributing

    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.

    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:

    1. Effective Go (opens new window)
    2. Go Common Mistakes (opens new window)
    3. Go Code Review Comments (opens new window)

    # Maintainability

    From a maintainance, performance and security perspective, it is important to keep the footprint of the gaiad application as lean as possible.

    When adding any new feature, you must ensure that any libraries you wish to include are well maintained and have sufficient usage in the wider ecosystem. This is necessary to avoid having to rework the gaiad application at a later date, if a library is no longer maintained or is abandoned by its core contributors.

    In addition to the above, if any library is to be included, it is necessary to check that the version used does not have any known vunerabilities. As a developer working on a feature, before making a pull request, ensure that you run, along with the testing targets, the vulnerability checking target in the root of the gaia repository directory:

    @@ -735,6 +735,6 @@

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

    # Use Subtests

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

    # Avoid writing directly in the stdout

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

    # Avoid panic

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

    - + diff --git a/main/hub-overview/index.html b/main/hub-overview/index.html index b7fd848bf23..4131863b215 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 d9ec84a7d6b..ced52c2ac0b 100644 --- a/main/hub-overview/overview.html +++ b/main/hub-overview/overview.html @@ -8,11 +8,11 @@ - - + +

    # v14 Upgrade

    Cosmos Hub will be upgraded to v14.1 (opens new window) at block height: 18,262,000 (opens new window)

    To upgrade from v13 check the upgrade guide

    Welcome to the Cosmos Hub

    # Introduction

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

    # The ATOM

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

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

    # Cosmos Hub Wallets

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

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

    # Metamask Snaps

    # Cosmos Hub Explorers

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

    # Cosmos Hub CLI

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

    # Running a full-node on the Cosmos Hub Mainnet

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

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

    # Join the Community

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

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

    - + diff --git a/main/hub-tutorials/gaiad.html b/main/hub-tutorials/gaiad.html index f30109fba01..0b840aeed58 100644 --- a/main/hub-tutorials/gaiad.html +++ b/main/hub-tutorials/gaiad.html @@ -8,8 +8,8 @@ - - + +

    # Gaia Client

    # Gaia Daemon

    gaiad 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 installation procedure.

    # Setting up gaiad

    The main command used to set up gaiad is the following:

    @@ -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 f0261ac95ef..aff59b54147 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 37d2702de50..da2a1946aff 100644 --- a/main/hub-tutorials/join-mainnet.html +++ b/main/hub-tutorials/join-mainnet.html @@ -8,8 +8,8 @@ - - + +

    # Join the Cosmos Hub Mainnet

    The current Cosmos Hub mainnet, cosmoshub-4, has been performing in place store migration upgrades as of the Delta Upgrade (opens new window) July 2021. The most recent upgrade is Gaia v14.1.x (opens new window) Dec 2023. @@ -203,6 +203,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 bf0d34ba6f8..82bc98261bc 100644 --- a/main/hub-tutorials/join-testnet.html +++ b/main/hub-tutorials/join-testnet.html @@ -8,8 +8,8 @@ - - + +

    # Join the Cosmos Hub Public Testnet

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

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

    # Background

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

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

    # Version History

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

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

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

    # How to Join

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

    • Quickstart scripts @@ -135,6 +135,6 @@ # Copy the new binary to the v14 upgrade directory cp ~/go/bin/gaiad ~/.gaia/cosmovisor/upgrades/v14/bin/gaiad

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

    - + diff --git a/main/hub-tutorials/live-upgrade-tutorial.html b/main/hub-tutorials/live-upgrade-tutorial.html index 1068d354aca..424ef9363ef 100644 --- a/main/hub-tutorials/live-upgrade-tutorial.html +++ b/main/hub-tutorials/live-upgrade-tutorial.html @@ -8,8 +8,8 @@ - - + +

    # Live Upgrade Tutorial

    This document demonstrates how a live upgrade can be performed on-chain through a @@ -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 c4a5debaca8..26c1452eeb7 100644 --- a/main/hub-tutorials/upgrade-node.html +++ b/main/hub-tutorials/upgrade-node.html @@ -8,8 +8,8 @@ - - + +

    # Upgrade Your Node

    This document describes the upgrade procedure of a gaiad full-node to a new version.

    # Cosmovisor

    The Cosmos SDK provides a convenient process manager that wraps around the gaiad 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 cosmos.network docs (opens new window) and cosmos-sdk/cosmovisor/readme (opens new window).

    # Setup

    To get started with Cosmovisor first download it

    @@ -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 4a2894e7be9..ac77c92d0ef 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 e9f2ffdaa98..bdef330c4f2 100644 --- a/main/index.html +++ b/main/index.html @@ -8,11 +8,11 @@ - - + +
    - + diff --git a/main/interchain-security/index.html b/main/interchain-security/index.html index 4453412916a..79125f6e41a 100644 --- a/main/interchain-security/index.html +++ b/main/interchain-security/index.html @@ -8,11 +8,11 @@ - - + +

    # Interchain Security

    This folder contains an overview of Interchain Security, one of the core features of the Cosmos Hub.

    - + diff --git a/main/interchain-security/interchain-security.html b/main/interchain-security/interchain-security.html index 1fac3da9417..52d10967522 100644 --- a/main/interchain-security/interchain-security.html +++ b/main/interchain-security/interchain-security.html @@ -8,13 +8,13 @@ - - + +

    # Interchain Security

    The Interchain Security feature, brings to the Cosmos Hub a shared security model, where the Cosmos Hub validators, also validate on consumer chains. This is valuable for consumer chains, as consumer chains can focus on product-market fit, rather than business and operational agreements in bringing together a validator set. As part of this agreement, consumer chains pay for the security by distributing a portion of the consumer chain revenue to Hub token holders.

    All potential chains are onboarded as consumer chains, via Hub Governance, with the feedback from the Hub community.

    Currently the Cosmos Hub has the following two Consumer Chains.

    # Neutron

    Neutron (opens new window), is a smart contracting platform, that was the first consumer chain onboarded.
    Neutron was onboarded as a consumer chain in May 2023, see Hub proposal 792 (opens new window) for more details.

    # Stride

    Stride (opens new window), is a liquid staking provider, which aims to unlock liquidity for Cosmos Hub token holders.
    Stride was onboarded as a consumer chain in July 2023, see Hub proposal 799 (opens new window) for more details.

    - + diff --git a/main/ko/delegators/delegator-guide-cli.html b/main/ko/delegators/delegator-guide-cli.html index 152d08ed9cf..f7e43405259 100644 --- a/main/ko/delegators/delegator-guide-cli.html +++ b/main/ko/delegators/delegator-guide-cli.html @@ -8,8 +8,8 @@ - - + +

    # 위임자 가이드라인 (CLI)

    이 문서는 위임자가 커맨드라인 인터페이스(CLI, Command-Line Interface)를 통해 코스모스 허브와 소통하기 위해 필요한 모든 정보를 포함하고 있습니다.

    또한 계정 관리, 코스모스 펀드레이저로 받은 계정을 복구하는 방법, 그리고 렛저 나노 하드웨어 지갑 사용법 또한 포함되어있습니다.

    중요: 이 문서에 설명되어있는 모든 단계를 신중하게 진행하십시오. 특정 행동의 실수는 소유하고 있는 아톰의 손실을 초래할 수 있습니다. 진행 전 이 문서에 있는 모든 절차를 자세히 확인하시고 필요시 코스모스 팀에게 연락하십시오. 이 문서는 참고용 정보를 제공하기 위해 번역된 영어 원문의 번역본입니다. 이 문서에 포함되어있는 정보의 완결성은 보장되지 않으며, 개인의 행동에 따른 손실을 책임지지 않습니다. 꼭 영어 원문을 참고하시기 바랍니다. 만약 이 문서의 정보와 영어 원문의 정보가 다른 경우, 영어 문서의 정보가 상위 권한을 가지게 됩니다.

    CLI를 사용하는 위임자는 매우 실험적인 블록체인 기술이 사용되고 있는 코스모스 허브를 사용하게됩니다. 코스모스 허브는 우수한 기술을 기반으로 다수의 보안 감사를 진행했으나 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 또한 블록체인 기술을 사용하는 것은 상당한 기술적 배경을 필요로 하며, 공식 팀의 컨트롤 밖에 있는 리스크가 따릅니다. 유저는 이 소프트웨어를 사용함으로써 암호학 기반 소프트웨어를 사용하는 리스크를 인지하고 있음을 인정하는 것입니다. (참고 문서: 인터체인 코스모스 펀드레이저 약관 (opens new window)).

    인터체인 재단(Interchain Foundation)과 텐더민트 팀은 소프트웨어 사용으로 발생하는 모든 손실에 대해서 책임을 지지 않습니다. Apache 2.0 라이선스 기반의 오픈소스 소프트웨어를 사용하는 것은 각 개인의 책임이며, 소프트웨어는 그 어떤 보증과 조건이 없는 'As Is(있는 그대로)' 기반으로 제공됩니다.

    모든 절차는 신중하게 진행하시기 바랍니다.

    # 목차

    # gaiad 설치하기

    gaiad: gaiadgaiad 풀노드와 소통하기 위해 사용되는 명령어 기반 인터페이스입니다.

    ::: 경고 @@ -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 e2011dfed8a..ee9c192c3d6 100644 --- a/main/ko/gaia-tutorials/installation.html +++ b/main/ko/gaia-tutorials/installation.html @@ -8,8 +8,8 @@ - - + +

    # Gaia 설치하기

    이 가이드는 gaiadgaiad를 엔트리포인트를 시스템에 설치하는 방법을 설명합니다. gaiadgaiad가 설치된 서버를 통해 풀노드 또는 밸리데이터로써 최신 테스트넷에 참가하실 수 있습니다.

    # Go 설치하기

    공식 Go 문서 (opens new window)를 따라서 go를 설치하십시오. 그리고 $PATH의 환경을 꼭 세팅하세요. 예시:

    @@ -44,7 +44,7 @@ commit: 89e6316a27343304d332aadfe2869847bf52331c build_tags: netgo,ledger go: go version go1.12.5 darwin/amd64 -

    # 빌드 태그

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

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

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

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

    # 개발자 워크플로우

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

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

    # 다음 절차

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

    - +

    # 빌드 태그

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

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

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

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

    # 개발자 워크플로우

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

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

    # 다음 절차

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

    + diff --git a/main/ko/gaia-tutorials/join-mainnet.html b/main/ko/gaia-tutorials/join-mainnet.html index 19e68b02a32..3d584ac1a5e 100644 --- a/main/ko/gaia-tutorials/join-mainnet.html +++ b/main/ko/gaia-tutorials/join-mainnet.html @@ -8,8 +8,8 @@ - - + +

    # 최신 퍼블릭 테스트넷에 참가하기

    최신 테스트넷

    최신 테스트넷에 대한 정보는 다음의 테스트넷 리포 (opens new window)를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.

    여기에서 더 진행하시기 전에 gaia가 꼭 설치되어있어야 합니다.

    # 새로운 노드 세팅하기

    다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.

    우선 노드를 실행하고 필요한 config 파일을 생성합니다:

    @@ -68,7 +68,7 @@ CRITICAL please submit the following transaction: gaiad tx crisis invariant-broken staking supply -

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

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

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

    - +

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

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

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

    + diff --git a/main/ko/gaia-tutorials/join-testnet.html b/main/ko/gaia-tutorials/join-testnet.html index 482fb95d907..d8421f6d3f0 100644 --- a/main/ko/gaia-tutorials/join-testnet.html +++ b/main/ko/gaia-tutorials/join-testnet.html @@ -8,8 +8,8 @@ - - + +

    # 최신 퍼블릭 테스트넷에 참가하기

    최신 테스트넷

    최신 테스트넷에 대한 정보는 다음의 테스트넷 리포 (opens new window)를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.

    여기에서 더 진행하시기 전에 gaia가 꼭 설치되어있어야 합니다.

    # 새로운 노드 세팅하기

    참고: 과거 테스트넷에서 풀 노드를 운영하셨다면 이 항목은 건너뛰시고 과거 테스트넷에서 업그레이드 하기를 참고하세요.

    다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.

    우선 노드를 실행하고 필요한 config 파일을 생성합니다:

    @@ -60,7 +60,7 @@

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

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

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

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

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

    - +

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

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

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

    + diff --git a/main/ko/gaia-tutorials/what-is-gaia.html b/main/ko/gaia-tutorials/what-is-gaia.html index 4535b696cd9..da542e680fa 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 fe6c8c24c6b..6147814202c 100644 --- a/main/ko/genesis-state.html +++ b/main/ko/genesis-state.html @@ -8,8 +8,8 @@ - - + +

    # Gaia 제네시스 상태

    Gaia genesis state, 또는 GenesisState는 다수의 계정, 모듈 상태 그리고 제네시스 트랜잭션 같은 메타데이터가 포함되어 있습니다. 각 모듈은 각자의 GenesisState를 지정할 수 있습니다. 또한, 각 모듈은 제네시스 상태 검증, 불러오기(import), 내보내기(export) 기능을 지정할 수 있습니다.

    Gaia 제네시스 상태는 다음과 같이 정의됩니다:

    @@ -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 ecff910143b..f0bbc1f20d7 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 335ed1cfe5c..955ef196fd9 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 005bb6112f8..e1b54ea78ea 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 27684aadc05..3570a939c38 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 566e7e7dd6b..e7ce25614e1 100644 --- a/main/ko/resources/gaiad.html +++ b/main/ko/resources/gaiad.html @@ -8,8 +8,8 @@ - - + +

    # Gaia 클라이언트

    # Gaia CLI

    gaiad는 사용자가 풀노드를 통해 코스모스 허브 네트워크를 사용할 수 있게하는 도구입니다. 풀노드는 사용자가 직접 운영하거나 원격 풀노드에 연결하여 사용하실 수 있습니다. gaiad를 설치하기 위해서는 다음 과정을 참고하세요.

    # gaiad 설정하기

    gaiad를 설정하는데 사용되는 주 명령어는 다음과 같습니다:

    @@ -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 d54e63fdbbd..95ada3c9ad4 100644 --- a/main/ko/resources/genesis.html +++ b/main/ko/resources/genesis.html @@ -8,8 +8,8 @@ - - + +

    # 제네시스 파일

    이 문서는 코스모스 허브 메인넷의 제네시스 파일의 구조를 설명합니다. 또한, 자체 gaia 테스트넷을 운영하기 위해 자체적으로 제네시스 파일을 작성하는 방법을 설명합니다.

    참고로 기본 설정이 적용된 제네시스 파일을 사용해 테스트넷을 운영하기 위해서는 다음 명령어를 입력할 수 있습니다:

    @@ -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 e272d6fa76e..b6ab4888873 100644 --- a/main/ko/resources/hd-wallets.html +++ b/main/ko/resources/hd-wallets.html @@ -8,8 +8,8 @@ - - + +

    # HD 지갑

    코스모스의 계정은 HD 월렛(Hierarchical Deterministic Wallet) 표준을 사용합니다. HD 월렛은 비트코인의 BIP32 (opens new window)로 부터 정의되며, 유저가 하나의 시드로부터 다수의 계정을 생성할 수 있게 하는 시스템입니다. 더 자세하게 알아보기 위해서 관련 명칭을 설명하겠습니다:

    • 지갑(Wallet): 특정 시드로부터 생성된 계정.
    • 계정(Account): 퍼블릭 키/프라이빗 키 쌍.
    • 프라이빗 키(Private Key): 프라이빗 키는 메시지를 서명할때 사용되는 비밀 정보입니다. 블록체인 업계에서 프라이빗 키는 계정의 소유자를 식별하는데 사용됩니다. 유저의 프라이빗 키는 절대 다른 이에게 알려지면 안됩니다.
    • 퍼블릭 키(Public Key): 퍼블릭 키는 프라이빗 키로부터 일방적 수학 함수를 적용해 얻게되는 정보입니다. 퍼블릭 키를 기반으로 주소가 만들어지게 되며, 퍼블릭 키를 기반으로 프라이빗 키를 찾는 것은 불가능 합니다.
    • 주소(Address): 주소는 쉽게 읽을 수 있는 prefix가 적용된 공개 string이며, 계정을 식별하는데 사용됩니다. 퍼블릭 키를 기반으로 수학적 함수를 적용해 생성됩니다.
    • 디지털 서명(Digital Signature): 디지털 서명은 소유자의 프라이빗 키를 노출하지 않고 메시지를 서명한 프라이빗 키의 소유자를 검증하는 암호학적 정보입니다.
    • 시드(Seed): 네모닉(mnemonic)과 동일합니다.
    • 네모닉(Mnemonic): 네모닉은 프라이빗 키를 생성하는 단어 시리즈입니다. 모든 지갑은 관련 네모닉에서 생성됩니다. 네모닉은 절대 분실하면 안됩니다. 종이에 직접 적으시고 안전한 장소에 보관하세요. 분실 후 네모닉을 북구하는 방법은 없으며, 네모닉이 타인에게 노출될 경우, 해당 네모닉과 관련된 모든 계정의 소유권을 가지게 됩니다.

    모든 HD 지갑은 특정 시드에서 생성됩니다. 이 시드로 부터 유저는 결정론적으로 계쩡을 생성할 수 있습니다. 시드로 부터 계정을 생성하기 위해서는 일방형 수학적 변환을 사용합니다. 어떤 계정을 생성할지 결정하기 위해서 유저는 특정 path를 정의합니다. 대다수의 pathinteger (0, 1, 2, ...) 값입니다.

    예를 들어, path 값이 0으로 지정된 경우, 지갑은 시드로부터 Private Key 0을 생성합니다. 이후 Private Key 0으로부터 Public Key 0을 생성하며, 마지막으로 Public Key 0으로 부터Address 0가 생성됩니다. 이 모든 과정을 일방적으로만 진행될 수 있습니다. 즉, Address로 부터 Public Key를 찾을 수 없고, Public Key로 부터 Private Key 값을 찾을 수 없스비낟.

    @@ -45,6 +45,6 @@ | | +-------------------+

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

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

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

    - + diff --git a/main/ko/resources/ledger.html b/main/ko/resources/ledger.html index e642561f62a..a8b36267317 100644 --- a/main/ko/resources/ledger.html +++ b/main/ko/resources/ledger.html @@ -8,8 +8,8 @@ - - + +

    # 레저(Ledger) 나노 하드웨어 지갑 지원

    암호화폐 자산을 하드웨어 지갑을 사용하여 보관하는 것은 보안을 상당히 향상합니다. 렛저 기기는 시드와 프라이빗 키를 보관하는 '영역' 역할을 하며, 트래잭션을 기기 내에서 서명합니다. 민감한 정보는 절대로 렛저 기기 밖으로 노출되지 않습니다. 이 문서는 코스모스 렛저 앱을 Gaia CLI 환경에서 사용하거나 Lunie.io (opens new window) 웹 지갑에서 사용하는 방법을 설명합니다.

    모든 렛저 기기의 핵심에는 프라이빗 키를 생성하는데 사용되는 네모닉 시드 단어가 있습니다. 이 시드 단어는 처음 렛저 기기를 활성화할때 생성됩니다(또는 직접 입력됩니다). 이 네모닉 시드는 코스모스와 호환되며 이를 기반으로 코스모스 계정을 생성하실 수 있쓰빈다.

    12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.

    # Gaia CLI + Ledger Nano

    코스모스 허브 네트워크에서 새로운 계정을 생성하고 트랜잭션을 전송하는데 사용되는 도구는 gaiad입니다. 다음은 gaiad를 사용하는데 필요한 정보입니다. 만약 CLI 기반 도구가 익숙하지 않으신 경우, 하단에 있는 Lunie.io 지갑 사용법을 참고하세요.

    # 시작하기 전에

    다음 명령어를 입력하여 Gaiacli가 올바르게 설치된 것을 확인하세요:

    @@ -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 344cc09b7d9..82236f1101e 100644 --- a/main/ko/upgrade-node.html +++ b/main/ko/upgrade-node.html @@ -8,8 +8,8 @@ - - + +

    # 노드 업그레이드 하기

    이 문서는 gaiad 풀노드를 새로운 버전으로 업그레이드하는 절차를 설명합니다.

    # 소프트웨어 업그레이드

    우선 gaiad 인스턴스를 중지하세요. 이후 소프트웨어를 업그레이드하세요:

    @@ -38,6 +38,6 @@ Copy gaiad start
    - + diff --git a/main/ko/validators/overview.html b/main/ko/validators/overview.html index 6055a64d4a2..64023c70505 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 bd624963375..27d4461af35 100644 --- a/main/ko/validators/security.html +++ b/main/ko/validators/security.html @@ -8,8 +8,8 @@ - - + +

    # 검증인 보안

    검증인 세팅의 다양성이 네트워크 전체의 탄력성을 증가하기 때문에 각 검증인은 각자 독립적인 형태로 노드를 운영하는 것을 추천합니다. 메인넷을 대비하기 위해서 지금 부터 노드 운영을 시작하실 것을 추천합니다.

    # 키 관리 - HSM

    안전한 노드 운영의 기초는 공격자가 검증인의 프라이빗키를 탈취할 수 없게 하는 것입니다. 만약 이 것이 가능하다면, 키가 탈취된 모든 위임된 코인은 위험에 처해질 수 있습니다. 이런 리스크를 줄이기 위한 가장 좋은 방법은 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것입니다.

    코스모스 허브에서 HSM을 사용하시는 경우, 해당 모듈은 ed25519 서명을 지원해야 합니다. YubiHSM2는 ed25519를 지원하며 이에 대한 어답터 라이브러리(adapter library)는 추후 지원할 계획입니다. YubiHSM은 프라이빗 키 탈취에 대한 보안을 지원하지만, 동일한 블록을 두번 서명하는 것에 대한 안전성은 제공하지 않는다는 것에 유의하시기 바랍니다.

    이 외에도 텐더민트 팀은 현재 검증인 서명을 위한 Ledger Nano S 지원을 준비하고 있습니다. Ledger Nano S의 경우 최신 블록을 저장하기 떄문에 더블사인 공격을 막을 수 있을 것으로 보입니다.

    추후 솔루션들이 준비되는대로 이 페이지는 업데이트 됩니다.

    # 센트리노드 (DDOS 방어)

    검증인은 코스모스 네트워크가 일정의 서비스 거부 공격(denial of service) 공격을 감내할 수 있도록 해야 합니다.

    이런 공격을 방어할 방법 중 하나는 검증인이 본인의 네트워크를 '센트리노드 아키텍쳐' 형태로 구성하는 것입니다.

    검증인은 신뢰할 수 있는 풀노드에만 연결해야 합니다. 이는 본인이 직접 운영하는 노드 또는 사회적으로(개인적으로) 아는 검증인들이 운영하는 풀노드 등이 포함될 수 있습니다. 대다수의 검증인 노드는 데이터센터에서 운영됩니다. 대다수의 데이터센터는 다른 주요 클라우드 서비스 제공자와 직접적인 링크를 제공합니다. 검증인들은 이런 링크를 통해서 클라우드 기반 센트리를 연결할 수 있습니다. 이런 형태의 아키텍쳐는 DDoS 공격의 부담을 검증 노드에서 센트리노드로 우회시키기 때문에 상황에 따라 추가적인 센트리노드를 운영해야될 수 있습니다.

    센트리노드는 빠르게 추가될 수 있으며 상황에 따라 IP 주소를 변경할 수 있습니다. 센트리노드와 검증인 노드 간의 연결은 프라이빗 IP를 통해 이루어지기 때문에, 인터넷 기반 공격의 피해를 줄일 수 있습니다. 이런 형태의 디자인은 검증인의 블록 제안과 투표가 언제나 네트워크에 전달될 수 있게 합니다.

    센트리노드 아키텍쳐를 세팅하시기 위해서는 다음 절차를 참고하십시오:

    검증인 노드는 해당 노드의 config.toml을 수정해야 합니다:

    @@ -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 c3d7d517ff5..1ce6ca3abf3 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 ca3e9b4228b..b1be0c91d64 100644 --- a/main/ko/validators/validator-setup.html +++ b/main/ko/validators/validator-setup.html @@ -8,8 +8,8 @@ - - + +

    # 퍼블릭 테스트넷에서 밸리데이터 운영하기

    현재 테스트넷을 참가하는 방법은 testnet repo (opens new window)에 있습니다. 최신 테스트넷에 대한 정보를 확인하시려면 해당 링크를 확인해주세요.

    Note: 이 문서는 퍼블릭 테스트넷 검증인들을 위해서만 작성되었습니다.

    밸리데이터 노드를 세팅하기 전, 풀노드 세팅 가이드를 먼저 확인해주세요.

    # 밸리데이터란 무엇인가?

    밸리데이터는 블록체인의 투표를 통해서 새로운 블록은 생성하는 역할을 합니다. 만약 특정 밸리데이터가 오프라인이 되거나, 같은 블록높이에서 중복 사이닝을 한 경우 해당 밸리데이터의 지분은 삭감(슬래싱, slashing) 됩니다. 노드를 DDOS 공격에서 보호하고 높은 접근성을 유지하기 위해서는 센트리노드 아키텍쳐에 대해서 읽어보세요.

    경고

    코스모스 허브의 검증인이 되는 것을 검토하신다면, 보안에 대한 분석을 사전에 하시기를 바랍니다.

    만약 풀노드를 이미 운영중이시다면, 다음 항목을 건너뛰셔도 좋습니다.

    # 밸리데이터 생성하기

    토큰 스테이킹을 통해 cosmosvalconspub로 새로운 밸리데이터를 생성할 수 있습니다. 본인의 밸리데이터 pubkey를 확인하기 위해서는 다음 명령어를 입력하세요:

    @@ -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 c17e2c37c08..b1fd688363f 100644 --- a/main/launch/blog-1-en.html +++ b/main/launch/blog-1-en.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub to Launch Mainnet

    # Pre-launch Dependencies & How to Safely Claim Your Atoms

    In the summer of 2016, the Cosmos whitepaper (opens new window) was released. In the @@ -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 a6655dc56df..3c49773b428 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 9047595114d..5b7b03656a3 100644 --- a/main/launch/index.html +++ b/main/launch/index.html @@ -8,11 +8,11 @@ - - + +
    - + diff --git a/main/migration/cosmoshub-2/cosmoshub-2.html b/main/migration/cosmoshub-2/cosmoshub-2.html index 77b66ce23ef..590d79ccca6 100644 --- a/main/migration/cosmoshub-2/cosmoshub-2.html +++ b/main/migration/cosmoshub-2/cosmoshub-2.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 2 Upgrade Instructions

    The following document describes the necessary steps involved that full-node operators @@ -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/cosmoshub-3.html b/main/migration/cosmoshub-3/cosmoshub-3.html index 5c3d9899429..1b5614718d6 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3.html +++ b/main/migration/cosmoshub-3/cosmoshub-3.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 3 Upgrade Instructions

    The following document describes the necessary steps involved that validators and full node operators @@ -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/cosmoshub-3[ES_es].html b/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html index 722bc3ec0a9..123007300d5 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html +++ b/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html @@ -8,8 +8,8 @@ - - + +

    # 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 @@ -103,6 +103,6 @@ # (0 para conservar todas). snapshot-keep-recent = 2

    - + diff --git a/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html index 517103520a8..69c58e01ed9 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html +++ b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html @@ -8,8 +8,8 @@ - - + +

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

    이 문서는 풀노드 운영자가 cosmoshub-3에서 cosmoshub-4 업그레이드를 진행하기 위한 과정을 설명합니다. @@ -100,6 +100,6 @@ # snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). snapshot-keep-recent = 2

    - + diff --git a/main/migration/cosmoshub-4-delta-upgrade.html b/main/migration/cosmoshub-4-delta-upgrade.html index 5c03fcb1ead..79753d36f6f 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.

    - + diff --git a/main/migration/cosmoshub-4-v10-upgrade.html b/main/migration/cosmoshub-4-v10-upgrade.html index 671fd0fe6c5..d015f7e8673 100644 --- a/main/migration/cosmoshub-4-v10-upgrade.html +++ b/main/migration/cosmoshub-4-v10-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, v10 Upgrade, Instructions

    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:

    ❗The preferred binary for Mainnet release is v10.0.1 (opens new window), as that version includes a fix for the IBC Huckleberry fix (opens new window). v10.0.0 does NOT include this fix.

    # Instructions

    # On-chain governance proposal attains consensus

    Proposal #798 (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.

    # Upgrade date

    The upgrade will take place at a block height of 15816200. 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 @@ -90,6 +90,6 @@ ERR UPGRADE "v10" NEEDED at height: 15816200: upgrade to v10 and applying upgrade "v10" at height:15816200

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 15816200

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v11-upgrade.html b/main/migration/cosmoshub-4-v11-upgrade.html index b4a5b605a78..05a73fd8fd4 100644 --- a/main/migration/cosmoshub-4-v11-upgrade.html +++ b/main/migration/cosmoshub-4-v11-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, Gaia v11 Upgrade, Instructions

    This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v11 release. @@ -90,6 +90,6 @@ ERR UPGRADE "v11" NEEDED at height: 16596000: upgrade to v11 and applying upgrade "v11" at height:16596000

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 16596000

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v12-upgrade.html b/main/migration/cosmoshub-4-v12-upgrade.html index b39cdb0b7df..f98ecabb4d1 100644 --- a/main/migration/cosmoshub-4-v12-upgrade.html +++ b/main/migration/cosmoshub-4-v12-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # 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. @@ -90,6 +90,6 @@ ERR UPGRADE "v12" NEEDED at height: 16985500: upgrade to v12 and applying upgrade "v12" at height:16985500

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 16985500

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v13-upgrade.html b/main/migration/cosmoshub-4-v13-upgrade.html index 811c4bd5e2c..f103f488023 100644 --- a/main/migration/cosmoshub-4-v13-upgrade.html +++ b/main/migration/cosmoshub-4-v13-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, Gaia v13 Upgrade, Instructions

    This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v13 release. @@ -90,6 +90,6 @@ ERR UPGRADE "v13" NEEDED at height: 17380000: upgrade to v13 and applying upgrade "v13" at height:17380000

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 17380000

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v14-upgrade.html b/main/migration/cosmoshub-4-v14-upgrade.html index 28fe6ec2d4c..fc5437611e8 100644 --- a/main/migration/cosmoshub-4-v14-upgrade.html +++ b/main/migration/cosmoshub-4-v14-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, Gaia v14 Upgrade, Instructions

    This document describes the steps for validators, full node operators and relayer operators, to upgrade successfully for the Gaia v14 release.

    For more details on the release, please see the release notes (opens new window)

    Relayer Operators for the Cosmos Hub and consumer chains, will also need to update to use Hermes 1.7.3 (opens new window) or higher, see Relayer Operations or more details.

    # Release Binary

    Please note that the v14.0.0 binary is depreceated and ALL validators MUST use the v14.1.0 binary instead.

    # Instructions

    # On-chain governance proposal attains consensus

    Proposal 854 (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.

    # Upgrade date

    The upgrade will take place at a block height of 18262000. 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 requirements for validator nodes can be found here.

    # 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. @@ -63,6 +63,6 @@ Copy gaiad tx provider submit-consumer-misbehaviour [path/to/misbehaviour.json] --from node0 --home ../node0 --chain-id $CID

    # 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 0e71ce4677c..8386321d30f 100644 --- a/main/migration/cosmoshub-4-v7-Theta-upgrade.html +++ b/main/migration/cosmoshub-4-v7-Theta-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, v7-Theta Upgrade, Instructions

    This document describes the steps for validator and full node operators for the successful execution of the v7-Theta Upgrade (opens new window), which contains the following main new features/improvement:

    TOC:

    # On-chain governance proposal attains consensus

    Proposal #65 (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 April 12, 2022

    The upgrade will take place at a block height of 10085397. At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to Tuesday, 12-April-21 16:14:40 UTC. This date/time is approximate 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 @@ -89,6 +89,6 @@ ERR UPGRADE "v7-Theta" NEEDED at height: 10085397: upgrade to v7-Theta and applying upgrade "v7-Theta" at height:10085397

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 10085397

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

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

    # Communications

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

    # Risks

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

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

    # Reference

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

    - + diff --git a/main/migration/cosmoshub-4-v8-Rho-upgrade.html b/main/migration/cosmoshub-4-v8-Rho-upgrade.html index cfdde73889d..b8215093289 100644 --- a/main/migration/cosmoshub-4-v8-Rho-upgrade.html +++ b/main/migration/cosmoshub-4-v8-Rho-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, v8-Rho Upgrade, Instructions

    This document describes the steps for validator and full node operators for the successful execution of the v8-Rho Upgrade (opens new window), which contains the following main new features/improvement:

    TOC:

    # On-chain governance proposal attains consensus

    Proposal #97 (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 Feb 16, 2023

    The upgrade will take place at a block height of 14099412. At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to Thursday, 16-February-23 01:00:00 CET. This date/time is approximate 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 @@ -88,6 +88,6 @@ ERR UPGRADE "v8-Rho" NEEDED at height: 14099412: upgrade to v7-Theta and applying upgrade "v8-Rho" at height:14099412

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 14099412

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html index 6ed622b47bf..6fa50672d7d 100644 --- a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html +++ b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, v9-Lambda Upgrade, Instructions

    This document describes the steps for validator and full node operators for the successful execution of the v9-Lambda Upgrade (opens new window), which contains the following main new features/improvement:

    TOC:

    # On-chain governance proposal attains consensus

    Proposal #187 (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.

    # Upgrade will take place March 14-16, 2023

    The upgrade will take place at a block height of 14470501. 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 @@ -90,6 +90,6 @@ ERR UPGRADE "v9-Lambda" NEEDED at height: 14470501: upgrade to v9-Lambda and applying upgrade "v9-Lambda" at height:14470501

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

    Please Note:

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 14470501

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-vega-upgrade.html b/main/migration/cosmoshub-4-vega-upgrade.html index 37dff0e0c8a..a193e64eefa 100644 --- a/main/migration/cosmoshub-4-vega-upgrade.html +++ b/main/migration/cosmoshub-4-vega-upgrade.html @@ -8,8 +8,8 @@ - - + +

    # Cosmos Hub 4, Vega Upgrade, Instructions

    This document describes the steps for validator and full node operators for the successful execution of the Vega Upgrade (opens new window), which contains the following main new features:

    TOC:

    # On-chain governance proposal attains consensus

    Proposal #59 (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 December 14, 2021

    The upgrade will take place at a block height of 8695000. At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to Tuesday, 14-Dec-21 14:49:50 UTC. This date/time is approximate 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 @@ -89,6 +89,6 @@ ERR UPGRADE "Vega" NEEDED at height: 8695000: upgrade to Vega and applying upgrade "Vega" at height:8695000

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

    Please Note:

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

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

    # Upgrade duration

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

    # Rollback plan

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

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

    gaiad start --unsafe-skip-upgrade 8695000

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

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

    # Communications

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

    # Risks

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

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

    # Reference

    cosmos/vega-test (opens new window)

    Delta upgrade instruction (opens new window)

    - + diff --git a/main/migration/index.html b/main/migration/index.html index 7db30a2801d..2c1d9541bbe 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 0219b87bd62..26f81f3bbf8 100644 --- a/main/modules/globalfee.html +++ b/main/modules/globalfee.html @@ -8,8 +8,8 @@ - - + +

    # Gaia Fee and Fees Checks

    # Fee Parameters

    The CosmosHub allows managing fees using 4 parameters. At the network level, there are three parameters from globalfee modules (MinimumGasPricesParam, BypassMinFeeMsgTypes, and MaxTotalBypassMinFeeMsgGasUsage) that can be set by gov proposal. Additionally, a fourth parameter which enables individual nodes to impose supplementary fee amount.

    1. global fees (MinimumGasPricesParam).
      @@ -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 9fa7405dfc3..7b1fb9d40f7 100644 --- a/main/modules/index.html +++ b/main/modules/index.html @@ -8,12 +8,12 @@ - - + +

    # Gaia Modules

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

    # New Modules in Rho V8

    - + diff --git a/main/resources/archives.html b/main/resources/archives.html index 6cc297c16d3..8e956e521a6 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 make 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 28964c7452e..7428112d935 100644 --- a/main/resources/genesis.html +++ b/main/resources/genesis.html @@ -8,8 +8,8 @@ - - + +

    # Genesis File

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

    Note that you can generate a default genesis file for your own testnet by running the following command:

    @@ -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 b0e73a4e43c..aa6f89b9482 100644 --- a/main/resources/hd-wallets.html +++ b/main/resources/hd-wallets.html @@ -8,8 +8,8 @@ - - + +

    # HD Wallets

    Accounts in Cosmos are Hierarchical Deterministic (HD) Wallets. Originally specified in Bitcoin's BIP32 (opens new window), 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:

    • Wallet: Set of accounts obtained from a given seed.
    • Account: A pair of public key/private key.
    • Private Key: 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.
    • Public Key: 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.
    • Address: 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.
    • Digital Signature: 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.
    • Seed: Same as Mnemonic.
    • Mnemonic: 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.

    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 path, generally an integer (0, 1, 2, ...).

    By specifying path to be 0 for example, the Wallet will generate Private Key 0 from the seed. Then, Public Key 0 can be generated from Private Key 0. Finally, Address 0 can be generated from Public Key 0. All these steps are one way only, meaning the Public Key cannot be found from the Address, the Private Key cannot be found from the Public Key, ...

    @@ -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 f975c2bd27e..1d695ff9118 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 4f337a87e90..365e0da3414 100644 --- a/main/resources/ledger.html +++ b/main/resources/ledger.html @@ -8,8 +8,8 @@ - - + +

    # Ledger Nano Support

    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 transactions 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 Keplr (opens new window) wallet extension.

    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.

    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.

    # Install the Cosmos Ledger application

    Installing the Cosmos application on your ledger device is required before you can use either Keplr or gaiad. To do so, you need to:

    1. Install Ledger Live (opens new window) on your machine. @@ -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 9bbae603fbd..31c1a06870c 100644 --- a/main/resources/reproducible-builds.html +++ b/main/resources/reproducible-builds.html @@ -8,8 +8,8 @@ - - + +

    # Build Gaia Deterministically

    The Tendermint rbuilder Docker image (opens new window) 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.

    # Prerequisites

    Make sure you have Docker installed on your system (opens new window).

    All the following instructions have been tested on Ubuntu 18.04.2 LTS with docker 20.10.2.

    # Build

    Clone gaia:

    @@ -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 d39d2d9d683..31dad8d8c19 100644 --- a/main/resources/service-providers.html +++ b/main/resources/service-providers.html @@ -8,8 +8,8 @@ - - + +

    # Service Providers

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

    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.

    This document describes:

    # Connection Options

    There are four main technologies to consider to connect to the Cosmos Hub:

    • Full Nodes: Interact with the blockchain.
    • REST Server: Serves for HTTP calls.
    • REST API: Use available endpoints for the REST Server.
    • GRPC: Connect to the Cosmos Hub using gRPC.

    # Running a Full Node

    # What is a Full Node?

    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.

    # Installation and Configuration

    This section describes the steps to run and interact with a full node for the Cosmos Hub.

    First, you need to install the software.

    Consider running your own Cosmos Hub Full Node.

    # Command-Line Interface

    The command-line interface (CLI) is the most powerful tool to access the Cosmos Hub and use gaia. @@ -153,6 +153,6 @@ gaiad tx bank send [from_key_or_address] [to_address] [amount] [flags]

    Parameters:

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

    Flags:

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

    # REST API

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

    # Listen for Incoming Transactions

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

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

    - + diff --git a/main/roadmap/cosmos-hub-roadmap-2.0.html b/main/roadmap/cosmos-hub-roadmap-2.0.html index 93db2c1db83..e5f1280f02d 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 4782c228fd9..233fb64a8d6 100644 --- a/main/roadmap/index.html +++ b/main/roadmap/index.html @@ -8,11 +8,11 @@ - - + +

    # Previous Releases

    The following table below, shows the versions of the main dependencies.

    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 (opens new window) 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) (opens new window) 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 (opens new window) 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 (opens new window) 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 (opens new window) 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 (opens new window) 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 (opens new window) 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 (opens new window) 16/08/23 16596000 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v11.x (opens new window) v4.4.x (opens new window)
    v12 (opens new window) 13/09/23 16985500 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v12.x (opens new window) v4.4.x (opens new window)
    v13 (opens new window) 11/10/23 17380000 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v13.x (opens new window) v4.4.x (opens new window)
    v14 (opens new window) 11/10/23 18262000 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v14.x (opens new window) v4.4.x (opens new window)
    - + diff --git a/main/sitemap.xml b/main/sitemap.xml index a8b2fef9418..e263e6d9cbb 100644 --- a/main/sitemap.xml +++ b/main/sitemap.xml @@ -1 +1 @@ -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/quickstart.htmldailyhttps://hub.cosmos.network/main/getting-started/installation.htmldailyhttps://hub.cosmos.network/main/getting-started/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/governance/dailyhttps://hub.cosmos.network/main/getting-started/system-requirements.htmldailyhttps://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/text-prop.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/param-index.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2020-10-blocks-per-year/dailyhttps://hub.cosmos.network/main/governance/proposals/2020-11-inflation-rate-change/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-delay-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-03-enable-ibc-transfers/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-lower-deposit-requirement/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/governance/proposals/dailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-09-hub-ibc-router/dailyhttps://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/interchain-security/interchain-security.htmldailyhttps://hub.cosmos.network/main/interchain-security/dailyhttps://hub.cosmos.network/main/ko/dailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-testnet.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/resources/dailyhttps://hub.cosmos.network/main/resources/archives.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://hub.cosmos.network/main/resources/hd-wallets.htmldailyhttps://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/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/zh/genesis-state.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-2-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/ledger.htmldailyhttps://hub.cosmos.network/main/zh/validators/security.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/architecture/adr-002-globalfee.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-security.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/resources/reproducible-builds.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-05-gravity-bridge-deployment/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-prop34-continuation/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-3/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-2/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v11-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v10-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v12-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v13-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v14-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-v8-Rho-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-vega-upgrade.htmldailyhttps://hub.cosmos.network/main/modules/globalfee.htmldailyhttps://hub.cosmos.network/main/resources/ledger.htmldailyhttps://hub.cosmos.network/main/resources/service-providers.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-1-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/genesis.htmldailyhttps://hub.cosmos.network/main/ko/resources/genesis.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://hub.cosmos.network/main/zh/delegator/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/zh/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/es/governance/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/governance/state-of-cosmos-governance-2021.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/gaiad.htmldailyhttps://hub.cosmos.network/main/ko/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/governance/proposals/previous-proposals/dailyhttps://hub.cosmos.network/main/guidelines/code-guidelines.htmldailyhttps://hub.cosmos.network/main/ko/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/404.htmldaily \ No newline at end of file +https://hub.cosmos.network/main/DOCS_README.htmldailyhttps://hub.cosmos.network/main/dailyhttps://hub.cosmos.network/main/architecture/PROCESS.htmldailyhttps://hub.cosmos.network/main/architecture/dailyhttps://hub.cosmos.network/main/architecture/adr-001-interchain-accounts.htmldailyhttps://hub.cosmos.network/main/delegators/dailyhttps://hub.cosmos.network/main/architecture/adr-template.htmldailyhttps://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/getting-started/system-requirements.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-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/governance/proposals/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-09-hub-ibc-router/dailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.htmldailyhttps://hub.cosmos.network/main/hub-overview/dailyhttps://hub.cosmos.network/main/hub-overview/overview.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/dailyhttps://hub.cosmos.network/main/hub-tutorials/upgrade-node.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/live-upgrade-tutorial.htmldailyhttps://hub.cosmos.network/main/images/dailyhttps://hub.cosmos.network/main/interchain-security/dailyhttps://hub.cosmos.network/main/ko/dailyhttps://hub.cosmos.network/main/interchain-security/interchain-security.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/genesis-state.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/ko/keys.htmldailyhttps://hub.cosmos.network/main/ko/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/resources/archives.htmldailyhttps://hub.cosmos.network/main/resources/dailyhttps://hub.cosmos.network/main/resources/reproducible-builds.htmldailyhttps://hub.cosmos.network/main/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://hub.cosmos.network/main/validators/dailyhttps://hub.cosmos.network/main/roadmap/cosmos-hub-roadmap-2.0.htmldailyhttps://hub.cosmos.network/main/validators/kms/kms.htmldailyhttps://hub.cosmos.network/main/validators/kms/kms_ledger.htmldailyhttps://hub.cosmos.network/main/validators/security.htmldailyhttps://hub.cosmos.network/main/validators/overview.htmldailyhttps://hub.cosmos.network/main/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/zh/dailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/zh/genesis-state.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-2-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/ledger.htmldailyhttps://hub.cosmos.network/main/zh/validators/security.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/architecture/adr-002-globalfee.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-security.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/governance/best-practices.htmldailyhttps://hub.cosmos.network/main/governance/formatting.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Distribution.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/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/proposals/2021-04-prop34-continuation/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-05-gravity-bridge-deployment/dailyhttps://hub.cosmos.network/main/governance/submitting.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-1-kr.htmldailyhttps://hub.cosmos.network/main/ko/resources/ledger.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/launch/blog-1-en.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-2/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v10-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v11-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v12-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v13-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v14-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v8-Rho-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/resources/ledger.htmldailyhttps://hub.cosmos.network/main/resources/service-providers.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-1-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/genesis.htmldailyhttps://hub.cosmos.network/main/es/governance/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/ko/resources/genesis.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://hub.cosmos.network/main/zh/delegator/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/zh/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/governance/state-of-cosmos-governance-2021.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/gaiad.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/governance/proposals/previous-proposals/dailyhttps://hub.cosmos.network/main/guidelines/code-guidelines.htmldailyhttps://hub.cosmos.network/main/ko/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/404.htmldaily \ No newline at end of file diff --git a/main/validators/index.html b/main/validators/index.html index 2fe3bd4c897..462a5357d9b 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 5d6cd3117e7..8fce5f4bc3d 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 8a9d3249a21..8e24c23dd57 100644 --- a/main/validators/kms/kms_ledger.html +++ b/main/validators/kms/kms_ledger.html @@ -8,8 +8,8 @@ - - + +

    # Setting up Tendermint KMS + Ledger

    Warning

    The following instructions are a brief walkthrough and not a comprehensive guideline. You should consider and research more about the security implications of activating an external KMS.

    Warning

    KMS and Ledger Tendermint app are currently work in progress. Details may vary. Use with care under your own risk.

    # Tendermint Validator app (for Ledger devices)

    You should be able to find the Tendermint app in Ledger Live.

    Note: at the moment, you might need to enable developer mode in Ledger Live settings

    # KMS configuration

    In this section, we will configure a KMS to use a Ledger device running the Tendermint Validator App.

    # Config file

    You can find other configuration examples here (opens new window)

    • Create a ~/.tmkms/tmkms.toml file with the following content (use an adequate chain_id)
    @@ -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 063ac3606b7..e2124ed96f1 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 85a619db6e3..2f95eb4166c 100644 --- a/main/validators/security.html +++ b/main/validators/security.html @@ -8,8 +8,8 @@ - - + +

    # Validator Security

    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.

    # Key Management - HSM

    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.

    HSM modules must support ed25519 signatures for the hub. The YubiHSM2 supports ed25519 and this yubikey library is available (opens new window). The YubiHSM can protect a private key but cannot ensure in a secure setting that it won't sign the same block twice.

    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.

    We will update this page when more key storage solutions become available.

    # Sentry Nodes (DDOS Protection)

    Validators are responsible for ensuring that the network can sustain denial of service attacks.

    One recommended way to mitigate these risks is for validators to carefully structure their network topology in a so-called sentry node architecture.

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

    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 will ensure validator block proposals and votes always make it to the rest of the network.

    To setup your sentry node architecture you can follow the instructions below:

    Validators nodes should edit their config.toml:

    @@ -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 f8719f7ca54..02ab12fb837 100644 --- a/main/validators/validator-faq.html +++ b/main/validators/validator-faq.html @@ -8,8 +8,8 @@ - - + +

    # Validator FAQ

    Disclaimer

    This is work in progress. Mechanisms and values are susceptible to change.

    # General Concepts

    # What is a Cosmos validator?

    The Cosmos Hub is based on CometBFT (opens new window) 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.

    # What is staking?

    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.

    Any user in the system can declare their intention to become a validator by sending a create-validator transaction to become validator candidates.

    The weight (i.e. voting power) of a validator determines whether they are an active validator. The active validator set is limited to an amount (opens new window) that changes over time.

    # What is a full node?

    A full node is a server running a chain's binary (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.

    Of course, it is possible and encouraged for users to run full nodes even if they do not plan to be validators.

    You can find more details about the requirements in the Joining Mainnet Tutorial.

    # What is a delegator?

    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 What is the incentive to stake? and What is a validator commission? in this document.

    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.

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

    # Becoming a Validator

    # How to become a validator?

    Any participant in the network can signal that they want to become a validator by sending a create-validator transaction, where they must fill out the following parameters:

    • Validator's PubKey: The private key associated with this Tendermint/CometBFT PubKey is used to sign prevotes and precommits.
    • Validator's Address: 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.
    • Validator's name (moniker)
    • Validator's website (Optional)
    • Validator's description (Optional)
    • Initial commission rate: The commission rate on block rewards and fees charged to delegators.
    • Maximum commission: The maximum commission rate that this validator can charge. This parameter is fixed and cannot be changed after the create-validator transaction is processed.
    • Commission max change rate: The maximum daily increase of the validator commission. This parameter is fixed cannot be changed after the create-validator transaction is processed.

    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.

    From all validator candidates that signaled themselves, the 180 validators with the most total stake are the designated validators. 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.

    # Testnet

    # How can I join the testnet?

    The testnet is a great environment to test your validator setup before launch.

    Testnet participation is a great way to signal to the community that you are ready and able to operate a validator. For details, see Join the Public Testnet documentation.

    # Additional Concepts

    # What are the different types of keys?

    There are two types of keys:

    • Tendermint/CometBFT key: A unique key that is used to sign consensus votes. @@ -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 2ef1971b2bf..6c0f98efd36 100644 --- a/main/validators/validator-setup.html +++ b/main/validators/validator-setup.html @@ -8,8 +8,8 @@ - - + +

    # Running a Validator

    We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found here.

    Before setting up a validator node, make sure to have completed the Joining Mainnet guide.

    If you plan to use a KMS (key management system), you should go through these steps first: Using a KMS.

    # What is a Validator?

    Validators 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 Sentry Node Architecture to protect your node from DDOS attacks and to ensure high-availability.

    Warning

    If you want to become a validator for the Hub's mainnet, you should learn more about security.

    The following instructions assume you have already set up a full-node and are synchronised to the latest blockheight.

    # Create Your Validator

    Your cosmosvalconspub can be used to create a new validator by staking tokens. You can find your validator pubkey by running:

    @@ -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 3400d5cfb05..211c7554c7d 100644 --- a/main/zh/delegator/delegator-guide-cli.html +++ b/main/zh/delegator/delegator-guide-cli.html @@ -8,8 +8,8 @@ - - + +

    # 委托人指南 (CLI)

    本文介绍了如何使用Cosmos Hub的命令行交互(CLI)程序实现通证委托的相关知识和操作步骤。

    同时,本文也介绍了如何管理账户,如何从筹款人那里恢复账户,以及如何使用一个硬件钱包的相关知识。

    ::: 风险提示

    重要提示:请务必按照下面的操作步骤谨慎操作,过程中发生任何错误都有可能导致您永远失去所拥有的通证。因此,请在开始操作之前先仔细阅读全文,如果有任何问题可以联系我们获得支持。

    另请注意,您即将要与Cosmos Hub进行交互,Cosmos Hub仍然是一个试验型的区块链技术软件。虽然Cosmos Hub区块链是应用现有最新技术开发并经过审核的,但我们仍然可能会在运行时遇到问题,需要不断更新和修复漏洞。此外,使用区块链技术仍然要求有很高的技术能力,并且有可能遇到我们无法预知和控制的风险。使用Cosmos Hub前,您需要充分了解与加密软件相关的潜在风险(请参考Cosmos跨链贡献条款 (opens new window)中关于风险的部分条款),并且我们跨链基金会和(或)Tendermint/CometBFT团队对于因为使用本产品而可能产生的损失不承担任何责任。使用Cosmos Hub需要遵守Apache 2.0开源软件授权条款,用户需要自己承担所有责任,所使用的软件按“现状”提供且不提供任何形式的保障或条件。 @@ -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 ce507702878..55761ec3131 100644 --- a/main/zh/gaia-tutorials/installation.html +++ b/main/zh/gaia-tutorials/installation.html @@ -8,8 +8,8 @@ - - + +

    # 安装 Gaia

    本教程将详细说明如何在你的系统上安装gaiadgaiad。安装后,你可以作为全节点或是验证人节点加入到主网。

    # 安装 Go

    按照官方文档 (opens new window)安装go。记得设置环境变量 $PATH:

    @@ -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 6244bf9c947..28b28d38ecd 100644 --- a/main/zh/gaia-tutorials/join-mainnet.html +++ b/main/zh/gaia-tutorials/join-mainnet.html @@ -8,8 +8,8 @@ - - + +

    # 加入主网

    ::: 提示 @@ -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 d85c942246f..823eb72af09 100644 --- a/main/zh/gaia-tutorials/join-testnet.html +++ b/main/zh/gaia-tutorials/join-testnet.html @@ -8,8 +8,8 @@ - - + +

    # 加入公共测试网

    ::: 提示 当前测试网 @@ -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 fb7b8819d90..ab77733e86c 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 1a72ccf5821..6a944735d9b 100644 --- a/main/zh/genesis-state.html +++ b/main/zh/genesis-state.html @@ -8,8 +8,8 @@ - - + +

    # Gaia 创世状态(Genesis State)

    Gaia 创世状态GenesisState由账户、各种模块状态和元数据组成,例如创世交易。 每个模块可以指定自己的GenesisState。 此外,每个模块可以指定自己的创世状态有效性验证、导入和导出功能。

    在 Gaia 的 ABCIinitChainer定义中调用initFromGenesisState,它在内部调用每个模块的InitGenesis,提供它自己的GenesisState作为参数。

    # 账户(Accounts)

    GenesisState 中的创世账户定义如下:

    @@ -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 e5f32934e81..1786dc0aa93 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 024737c096f..f885f18cea2 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 c904b66b72d..be6b1906a18 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 81af221b73a..841721c2814 100644 --- a/main/zh/resources/gaiad.html +++ b/main/zh/resources/gaiad.html @@ -8,8 +8,8 @@ - - + +

    # Gaia客户端

    # Gaia CLI

    gaiad是一个工具,使您能够与 Cosmos Hub 网络中的节点进行交互,无论您是否自己运行它。 让我们恰当的设置它。 要安装它,请按照[安装步骤](./ installation.md)进行安装。

    # 配置 gaiad

    设置gaiad的主要命令如下:

    @@ -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 cc0a2e76694..82a7248d570 100644 --- a/main/zh/resources/genesis.html +++ b/main/zh/resources/genesis.html @@ -8,8 +8,8 @@ - - + +

    # 创世(Genesis)文件

    本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的gaia testnet 创建一个 genesis 文件。

    请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:

    @@ -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 498667bf7f2..69ec50aeb1c 100644 --- a/main/zh/resources/ledger.html +++ b/main/zh/resources/ledger.html @@ -8,8 +8,8 @@ - - + +

    # Ledger Nano支持

    # 关于HD钱包

    HD钱包(分层确定性钱包), 最初是在比特币的BIP32 (opens new window)提案中提出, @@ -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 be58db121f0..d1ac93ebf71 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 4b766b33ba1..1fa135b3a96 100644 --- a/main/zh/validators/security.html +++ b/main/zh/validators/security.html @@ -8,8 +8,8 @@ - - + +

    # 验证人安全

    我们鼓励每一个验证人候选者独立运行其操作,因为不同的设置增加了网络的抵抗能力。为了能按时启动主网,验证人候选者现在就应该开始设置了。

    # 密钥管理 - HSM

    让攻击者无法盗取验证人的密钥是至关重要的任务。如果可能发生盗取,这将会使委托给抵抗力脆弱的验证人的所有股权都处于风险之中。硬件安全模块是防范该风险的一个重要策略。

    为了支持Cosmos Hub,HSM模块必须要支持ed25519签名。YubiHSM2支持了ed25519,我们期望在2017年12月时,能有一个可以使用的库。YubiHSM可以保护私钥但是不能确保它不会去重复签署一个区块。

    CometBFT团队也在为拓展Ledger Nano S应用以支持验证人签名做贡献。这个应用将会储存最近的区块,并能降低双重签名攻击的风险。

    我们会在有更多关于密钥保存安全的可行的解决方案出现时更新这个文档。

    # 哨兵节点(DDOS防御)

    验证人有责任确保网络能够经受住DDOS攻击。

    降低这种风险的一个推荐方案是验证人要在成为哨兵节点的网络拓扑结构上去精心搭建他们的网络结构。

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

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

    你可以按照下面的指令去设置你的哨兵节点架构:

    验证人节点必须编辑它们的config.toml文件:

    @@ -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 c7c3e2b296d..cd4a7a58278 100644 --- a/main/zh/validators/validator-faq.html +++ b/main/zh/validators/validator-faq.html @@ -8,8 +8,8 @@ - - + +

    # 验证人相关问题

    ::: 声明 @@ -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 c02ccdea234..d34a56a67c6 100644 --- a/main/zh/validators/validator-setup.html +++ b/main/zh/validators/validator-setup.html @@ -8,8 +8,8 @@ - - + +

    # 在主网上运行一个验证人

    ::: 提示 @@ -111,6 +111,6 @@ [Install] WantedBy=multi-user.target

    - +