diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/404.html b/404.html new file mode 100644 index 00000000000..2c344cfa44d --- /dev/null +++ b/404.html @@ -0,0 +1,26 @@ + + + + + +Page Not Found | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + + + \ No newline at end of file diff --git a/404/index.html b/404/index.html new file mode 100644 index 00000000000..70dcee45355 --- /dev/null +++ b/404/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/architecture.html b/architecture.html new file mode 100644 index 00000000000..355dcfaff88 --- /dev/null +++ b/architecture.html @@ -0,0 +1,35 @@ + + + + + +Architecture Decision Records (ADR) | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

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. +An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software systemโ€™s architecture and quality. +An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM).

You can read more about the ADR concept here.

Rationaleโ€‹

ADRs are intended to be the primary mechanism for proposing new feature designs and new processes, for collecting community input on an issue, and for documenting the design decisions. +An ADR should provide:

  • Context on the relevant goals and the current state
  • Proposed changes to achieve the goals
  • Summary of pros and cons
  • Discarded solution spaces and why they were discarded
  • References
  • Changelog

Note the distinction between an ADR and a spec. The ADR provides the context, intuition, reasoning, and +justification for a change in architecture, or for the architecture of something +new. The spec is much more compressed and streamlined summary of everything as +it stands today.

If recorded decisions turn out to be lacking, convene a discussion, record the new decisions here, and then modify the code to match.

Creating new ADRโ€‹

Read about the PROCESS.

Use RFC 2119 Keywordsโ€‹

When writing ADRs, follow the same best practices for writing RFCs. +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.

ADR Table of Contentsโ€‹

Acceptedโ€‹

Proposedโ€‹

  • n/a

Draftโ€‹

  • n/a

Rejectedโ€‹

+ + + + \ No newline at end of file diff --git a/architecture.html.html b/architecture.html.html new file mode 100644 index 00000000000..b43d93b8ea1 --- /dev/null +++ b/architecture.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/architecture/PROCESS.html b/architecture/PROCESS.html new file mode 100644 index 00000000000..ad13313d055 --- /dev/null +++ b/architecture/PROCESS.html @@ -0,0 +1,26 @@ + + + + + +ADR Creation Process | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

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:

{CONSENSUS STATUS} {IMPLEMENTATION STATUS}

IMPLEMENTATION STATUS is either Implemented or Not Implemented.

Consensus Statusโ€‹

flowchart TD
A[DRAFT] --> B[PROPOSED]
B --> C[LAST CALL YYYY-MM-DD]
B --> D[ABANDONED]
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.
+ + + + \ No newline at end of file diff --git a/architecture/PROCESS.html.html b/architecture/PROCESS.html.html new file mode 100644 index 00000000000..51ec78b5e21 --- /dev/null +++ b/architecture/PROCESS.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/architecture/adr/adr-001-interchain-accounts.html b/architecture/adr/adr-001-interchain-accounts.html new file mode 100644 index 00000000000..48225cee68b --- /dev/null +++ b/architecture/adr/adr-001-interchain-accounts.html @@ -0,0 +1,26 @@ + + + + + +ADR 001 - Interchain Accounts | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

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

Developmentโ€‹

  • Integration requirements
    • Development has occured in IBC-go and progress tracked on the project board there.
  • Testing (Simulations, Core Team Testing, Partner Testing)
    • Simulations and Core Team tested this module
  • Audits (Internal Dev review, Third-party review, Bug Bounty)
    • An internal audit, an audit from Informal Systems, and an audit from Trail of Bits all took place with fixes made to all findings.
  • Networks (Testnets, Productionnets, Mainnets)
    • Testnets

Governance [optional]โ€‹

  • Needs Signaling Proposal
  • Core Community Governance
    • N/A
  • Steering Community
    • N/A. Possibly Aditya Srinpal, Sean King, Bez?
  • Timelines & Roadmap
    • Expected to be released as part of IBC 3.0 in Feb 2022 (currently in beta release)

Project Integrations [optional]โ€‹

  • Gaia Integrations
  • Integration Partner
    • IBC Team

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

Additional Research & Referencesโ€‹

+ + + + \ No newline at end of file diff --git a/architecture/adr/adr-001-interchain-accounts.html.html b/architecture/adr/adr-001-interchain-accounts.html.html new file mode 100644 index 00000000000..c07e575956e --- /dev/null +++ b/architecture/adr/adr-001-interchain-accounts.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/architecture/adr/adr-002-globalfee.html b/architecture/adr/adr-002-globalfee.html new file mode 100644 index 00000000000..5a455021bc2 --- /dev/null +++ b/architecture/adr/adr-002-globalfee.html @@ -0,0 +1,39 @@ + + + + + +ADR 002 - Globalfee Module | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

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 to remove zero-value coins. As a result, several methods from sdk.Coins were redefined in the Gaia fee antehandler.
  • 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:\ +Refactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods.
  • Bypass Message Types:\ +BypassMinFeeMsgTypes is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic.
  • Check Fees in DeliverTx:\ +The fee check is factored to executed in both DeliverTx and CheckTx. This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, MinimumGasPricesParam is introduced as a globalfee param.

ZeroCoins in MinimumGasPricesParamโ€‹

Coins Splitโ€‹

CombinedFeeRequirement refers to the fee requirement that takes into account both globalFees (MinimumGasPricesParam in the globalfee module) and localFees (minimum-gas-prices in app.toml). This requirement is calculated as the maximum value between globalFees and localFees for denomination exists globalFees. +The allowance of zero coins in the MinimumGasPricesParam within the globalfee module implies that CombinedFeeRequirement(globalFees, localFees) also permits zero coins. Therefore, the CombinedFeeRequirement doesn't meet the requirements of certain sdk.Coins methods. For instance, the DenomsSubsetOf method requires coins that do not contain zero coins.

To address this issue, the CombinedFeeRequirement and feeCoins are split as shown in the chart below.

---
title: Fee Requirements and Fee Splits
---
flowchart TD
subgraph feeReq
A[CombinedFeeRequirement]-->B[/Split zero/nonzero coins/]
B-->|zero coins| C[zeroCoinFeesDenomReq];
B-->|nonzero coins| D[nonzeroCoinFeesDenomReq];

end

subgraph feeCoin
E[feeCoins]-->F[/Split by the denoms in zero/nonzero CoinFeesDenomReq/]
F-->|denoms in zeroCoinFeesDenomReq set| G[feeCoinsZeroDenom]
F-->|denoms in nonzeroCoinFeesDenomReq set| H[feeCoinsNonZeroDenom]
end

The CombinedFeeRequirement is split into zero and non-zero coins, forming nonZeroCoinFeesReq and zeroCoinFeesDenomReq. Similarly, the paid fees (feeCoins) are split into feeCoinsNonZeroDenom and feeCoinsZeroDenom, based on the denominations of nonZeroCoinFeesReq and zeroCoinFeesDenomReq as shown in the following code snippet.

    nonZeroCoinFeesReq, zeroCoinFeesDenomReq := getNonZeroFees(feeRequired)

// feeCoinsNonZeroDenom contains non-zero denominations from the feeRequired
// feeCoinsNonZeroDenom is used to check if the fees meets the requirement imposed by nonZeroCoinFeesReq
// when feeCoins does not contain zero coins' denoms in feeRequired
feeCoinsNonZeroDenom, feeCoinsZeroDenom := splitCoinsByDenoms(feeCoins, zeroCoinFeesDenomReq)

Fee Checksโ€‹

The Workflow of feeCheck is shown below:

---
title: Fee Check
---
flowchart TD

A[feeCoinsNonZeroDenom]-->B[/DenomsSubsetOf_nonZeroCoinFeesReq/];
B-->|yes|C[is_bypass_msg];
B-->|no|D((reject));

C-->|yes|pass1((pass));
C-->|no|D[/contain_zeroCoinFeesDenomReq_denom/];

D-->|yes|pass2((pass));
D-->|no|E[/feeCoinsZeroDenom_nonEmpty/];


E-->|yes|pass3((pass));
E-->|no|F[/IsAnyGTE_nonZeroCoinFeesDenomReq/];

F-->|yes|pass4((pass));
F-->|no|reject2((reject));

The split enable checking feeCoinsNonZeroDenom against nonZeroCoinFeesReq, and feeCoinsZeroDenom against +zeroCoinFeesDenomReq (as shown in the following code snippet). In the check of feeCoinsNonZeroDenom against nonZeroCoinFeesReq, the Cosmos SDK coins' methods can be used since zero coins are removed from the nonZeroCoinFeesReq, while in the check feeCoinsZeroDenom against zeroCoinFeesDenomReq, only denoms need to be checked.

Checking feeCoinsNonZeroDenom against nonZeroCoinFeesReq:

    if !feeCoinsNonZeroDenom.IsAnyGTE(nonZeroCoinFeesReq) {
return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient fees; got: %s required: %s", feeCoins.String(), feeRequired.String())
}

Here is an example of how the coins split and checked in fee antehandler:\ +assumption:\ +globalfee=[1photon, 0uatom, 1stake] and local min-gas-prices=[0.5stake]

fee requirement:\ +combinedFeeRequirement=[1photon, 0uatom, 1stake]

split fee requirement:\ +the combinedFeeRequirement into nonZeroCoinFeesReq=[0uatom], and nonZeroCoinFeesReq=[1photon, 1stake]

split the paid fees:\ +if paidFee=[1uatom, 0.5photon], +the splitCoinsByDenoms splits the paidFee into feeCoinsZeroDenom=[1uatom] (the same denom as zero coins in combinedFeeRequirement), and feeCoinsNonZeroDenom=[0.5stake] +then feeCoinsZeroDenom=[1uatom] is checked by nonZeroCoinFeesReq=[1photon, 1stake].

Please note that feeCoins does not contain zero coins. The fee coins are split according to the denoms in zeroCoinFeesDenomReq or nonZeroCoinFeesDenomReq. If feeCoins contains coins not in both zeroCoinFeesDenomReq and nonZeroCoinFeesDenomReq, the transaction should be rejected. On the contrary, if feeCoins' denoms are in either zeroCoinFeesDenomReq or nonZeroCoinFeesDenomReq, and len(zeroCoinFeesDenomReq)!=0, the transaction can directly pass, otherwise, the fee amount need to be checked.

Bypass Message Typesโ€‹

BypassMinFeeMsgTypes was a setup in config/app.toml before the refactor. BypassMinFeeMsgTypes is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,MaxTotalBypassMinFeeMsgGasUsage is also introduced as a globalfee param.

Fee Checks in DeliverTxโ€‹

Implementing fee checks within the DeliverTx function introduces a few requirements:

  • Deterministic Minimum Fee Requirement: For the DeliverTx process, it is essential to have a deterministic minimum fee requirement. In CheckTx, fee is checked by the CombinedFeeRequirement(globalFees, localFees), which considers both minimum-gas-prices from config/app.toml and MinimumGasPricesParam from the globalfee Params (For more details, see globalfee.md). CombinedFeeRequirement contains non-deterministic part: minimum-gas-prices from app.toml. Therefore, CombinedFeeRequirement cannot be used in DeliverTx. In DeliverTx, only MinimumGasPricesParam in globalfee Params is used for fee verification. The code implementation is shown below.
func (mfd FeeDecorator) GetTxFeeRequired(ctx sdk.Context, tx sdk.FeeTx) (sdk.Coins, error) {
// Get required global fee min gas prices
// Note that it should never be empty since its default value is set to coin={"StakingBondDenom", 0}
globalFees, err := mfd.GetGlobalFee(ctx, tx)
if err != nil {
return sdk.Coins{}, err
}

// In DeliverTx, the global fee min gas prices are the only tx fee requirements.
if !ctx.IsCheckTx() {
return globalFees, nil
}

// In CheckTx mode, the local and global fee min gas prices are combined
// to form the tx fee requirements

// Get local minimum-gas-prices
localFees := GetMinGasPrice(ctx, int64(tx.GetGas()))

// Return combined fee requirements
return CombinedFeeRequirement(globalFees, localFees)
}
  • 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 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โ€‹

+ + + + \ No newline at end of file diff --git a/architecture/adr/adr-002-globalfee.html.html b/architecture/adr/adr-002-globalfee.html.html new file mode 100644 index 00000000000..d51f5c20ac5 --- /dev/null +++ b/architecture/adr/adr-002-globalfee.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/architecture/templates/adr-template.html b/architecture/templates/adr-template.html new file mode 100644 index 00000000000..8e8bb3969e5 --- /dev/null +++ b/architecture/templates/adr-template.html @@ -0,0 +1,35 @@ + + + + + +ADR Template | Cosmos Hub + + + + + + + + + + + + + + +
+
Skip to main content

ADR Template

ADR {ADR-NUMBER}: {TITLE}

Changelogโ€‹

  • {date}: {changelog}

Statusโ€‹

{DRAFT | PROPOSED} Not Implemented

Please have a look at the PROCESS page. +Use DRAFT if the ADR is in a draft stage (draft PR) or PROPOSED if it's in review.

Abstractโ€‹

"If you can't explain it simply, you don't understand it well enough." Provide +a simplified and layman-accessible explanation of the ADR. +A short (~200 word) description of the issue being addressed.

Contextโ€‹

This section contains all the context one needs to understand the current state, and why there is a problem. +It should be as succinct as possible and introduce the high level idea behind the solution. +The language in this section is value-neutral. It is simply describing facts.

Decisionโ€‹

This section explains all of the details of the proposed solution, including implementation details. +It should also describe affects / corollary items that may need to be changed as a part of this. +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โ€‹

{positive consequences}

Negativeโ€‹

{negative consequences}

Neutralโ€‹

{neutral consequences}

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!

  • {reference link}
+ + + + \ No newline at end of file diff --git a/architecture/templates/adr-template.html.html b/architecture/templates/adr-template.html.html new file mode 100644 index 00000000000..2f3b39e9940 --- /dev/null +++ b/architecture/templates/adr-template.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/css/styles.5c86bcf9.css b/assets/css/styles.5c86bcf9.css new file mode 100644 index 00000000000..e2a01e9c9af --- /dev/null +++ b/assets/css/styles.5c86bcf9.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal)}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500);--docsearch-searchbox-shadow:inset 0 0 0 1px var(--docsearch-primary-color)}.markdown li,body{word-wrap:break-word}pre,table{overflow:auto}.button,code{vertical-align:middle}html .menu__link:hover,html .table-of-contents__link--active,html .table-of-contents__link:hover{text-shadow:.1px .1px 0 var(--ifm-font-color-base),-.1px -.1px 0 var(--ifm-font-color-base),.1px -.1px 0 var(--ifm-font-color-base),-.1px .1px 0 var(--ifm-font-color-base),-.1px 0 0 var(--ifm-font-color-base),.1px 0 0 var(--ifm-font-color-base),0 .1px 0 var(--ifm-font-color-base),0 -.1px 0 var(--ifm-font-color-base)}html .navbar,html .pagination-nav>a:hover,html[data-theme=dark] .navbar-sidebar__brand{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.markdown,html .markdown{--ifm-heading-vertical-rhythm-bottom:1}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *,:after,:before{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width);width:100%}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}progress,sub,sup{vertical-align:initial}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);color:inherit;text-decoration:inherit}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.clean-btn,hr{color:inherit}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.lowercase,.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase,.uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover),html .DocSearch-Button .DocSearch-Search-Icon,html .DocSearch-Hits mark{color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button,.grow{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items,.tabItem_Ymn6>:last-child,html .theme-doc-markdown li:last-child li:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox],dialog,fieldset,legend{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;visibility:hidden;bottom:0;top:0;left:0}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.flex,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand,blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html .theme-doc-sidebar-container>div:first-child>a,p,pre{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.pills__item,.tabs__item,[role=button],button{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"ยซ "}.pagination-nav__link--next .pagination-nav__label:after{content:" ยป"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.px-5,html .theme-doc-sidebar-menu li li li{padding-left:1rem}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary:#fff;--ifm-color-primary-dark:#e6e6e6;--ifm-color-primary-darker:#d9d9d9;--ifm-color-primary-darkest:#b3b3b3;--ifm-color-primary-light:#fff;--ifm-color-primary-lighter:#fff;--ifm-color-primary-lightest:#fff;--ifm-background-color:#000;--docusaurus-highlighted-code-line-bg:#00000054;--docsearch-modal-background:#000!important;--docsearch-highlight-color:#ffffff70!important;--docsearch-hit-background:#181818ab!important;--docsearch-key-gradient:linear-gradient(-26.5deg,#5d5d5d,#3c3c3c)!important;--docsearch-key-shadow:inset 0 -2px 0 0 #353535,inset 0 0 1px 1px #7a7a7b,0 2px 2px 0 #2d2d2d4d!important;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#5064fb;--ifm-color-primary-dark:#000;--ifm-color-primary-darker:#000;--ifm-color-primary-darkest:#000;--ifm-color-primary-light:#000;--ifm-color-primary-lighter:#000;--ifm-color-primary-lightest:#000;--ifm-code-font-size:95%;--ifm-breadcrumb-item-background-active:#0000;--ifm-breadcrumb-padding-horizontal:0;--ifm-list-paragraph-margin:0;--ifm-spacing-horizontal:2rem;--ifm-blockquote-border-color:#000;--ifm-menu-link-padding-vertical:0.6rem;--ifm-background-color:#fff;--ifm-footer-link-color:var(--ifm-font-color-base);--ifm-menu-link-sublist-icon:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMSAxIDQgNCA0LTQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9Ii42NjciIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiLz48L3N2Zz4=);--docsearch-searchbox-background:#f7f7f7;--docsearch-modal-background:#f7f7f7!important;--ifm-navbar-height:5.563rem;--ifm-navbar-sidebar-width:100vw;--docsearch-highlight-color:#181818ab!important;--aa-primary-color-rgb:0,0,0;--ifm-menu-color-background-active:none;--ifm-menu-color-background-hover:none;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base)}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}*,:after,:before{border:0 solid;margin:0}hr,html .footer{border-top-width:1px}:after,:before{--tw-content:""}html{font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{display:block;margin-bottom:var(--ifm-spacing-vertical);border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}.admonitionHeading_tbUL code,button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}html,html .navbar{background-color:var(--ifm-background-color)}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden],html .DocSearch-Button .DocSearch-Button-Keys,html .breadcrumbs__item:first-child>a>svg{display:none}html{font-feature-settings:"kern","liga","calt","zero" 0;-webkit-font-feature-settings:"kern","liga","calt","zero" 0;-webkit-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}@supports (font-variation-settings:normal){html{font-family:Inter var,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}}.inline,.tags_jXut,svg{display:inline}::selection{background-color:var(--ifm-color-primary);color:#fff}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/gaia/assets/fonts/Inter-Regular-c8ba52b05a9ef10f47584d08ece2ec5c.woff2) format("woff2"),url(/gaia/assets/fonts/Inter-Regular-8c206db99195777c67691cbba9d64393.woff) format("woff")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:500;src:url(/gaia/assets/fonts/Inter-Medium-293fd13dbca5a3e450ef1ebfb232a299.woff2) format("woff2"),url(/gaia/assets/fonts/Inter-Medium-9053572c46aeb4b16caafd643a543b8d.woff) format("woff")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/gaia/assets/fonts/Inter-Bold-ec64ea577b0349e055ad6646c1d8797a.woff2) format("woff2"),url(/gaia/assets/fonts/Inter-Bold-93c1301bd9f486c573b3d9001c6ec0e4.woff) format("woff")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:900;src:url(/gaia/assets/fonts/Inter-Black-15ca31c0a2a68f76d2d12055bdf97bd0.woff2) format("woff2"),url(/gaia/assets/fonts/Inter-Black-c6938660eec019fefd684894b6d00900.woff) format("woff")}@font-face{font-display:swap;font-family:Inter var;font-style:oblique 0deg 10deg;font-weight:100 900;src:url(/gaia/assets/fonts/Inter.var-c2fe3cb2b7c746f7966a973d869d21c3.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;src:url(/gaia/assets/fonts/JetBrainsMono-Regular-1e66c47aca088de94ae789a48719cb00.woff2) format("woff2")}.container,html .navbar-sidebar{width:100%}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block,.tocCollapsibleContent_vkbj a{display:block}.table{display:table}.contents{display:contents}.resize{resize:both}.flex-col{flex-direction:column}.gap-8{gap:3rem}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rounded{border-radius:1rem}.px-5{padding-right:1rem}.px-5\.5{padding-left:1.25rem;padding-right:1.25rem}.text-left,html .pagination-nav .pagination-nav__link--next{text-align:left}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}html #__docusaurus>div[role=banner]{--tw-text-opacity:1;background-color:#00000008;color:rgb(0 0 0/var(--tw-text-opacity));font-weight:400}html #__docusaurus>div[role=banner] a{font-size:.8125rem;text-decoration-line:none;width:100%}html .navbar{border-bottom-color:var(--ifm-color-emphasis-200);border-bottom-width:1px;height:auto;padding-bottom:.375rem;padding-top:.375rem}html .DocSearch-Button,html .navbar__toggle{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity));height:3rem;width:3rem}html .navbar__toggle{align-items:center;border-end-start-radius:1rem;border-radius:.5rem;border-start-start-radius:1rem;display:flex;justify-content:center}html .navbar__brand+*{margin-left:auto}html .menu__link,html .navbar__link--active{--tw-text-opacity:1;color:rgb(85 85 85/var(--tw-text-opacity))}html .navbar__items:not(:last-child){justify-content:space-between}html .navbar__items:not(:last-child) button{margin-right:0;order:2}html .navbar__items--right>:last-child{right:3.25rem}html[data-theme=dark] .menu__link,html[data-theme=dark] .navbar__item{color:#ffffffab}html[data-theme=dark] .navbar__toggle,html[data-theme=dark] .pagination-nav>a,html[data-theme=dark] .theme-doc-toc-mobile{background-color:#181818ab}html .github-icon:hover{opacity:.5}html .DocSearch-Button{border-radius:.625rem;color:#00000054;justify-content:center;margin-right:.5rem}html .navbar-sidebar__close,html[data-theme=dark] .DocSearch-Footer,html[data-theme=dark] .DocSearch-Modal,html[data-theme=dark] .navbar-sidebar{background-color:rgb(0 0 0/var(--tw-bg-opacity));--tw-bg-opacity:1}html .DocSearch-Button .DocSearch-Button-Placeholder{padding-right:6rem}.algoliaLogoPathFill_WdUC,html .DocSearch-Logo path{fill:var(--ifm-font-color-base)}html .navbar-sidebar__brand{height:auto;padding-left:1.5rem;padding-right:1.5rem}html .navbar-sidebar__item{padding-left:1.5rem;padding-right:1.5rem;width:100%}html .navbar-sidebar__back{display:none;padding-left:0;padding-right:0}html .navbar-sidebar__close{align-items:center;border-end-start-radius:1rem;border-radius:.5rem;border-start-start-radius:1rem;display:flex;height:3rem;justify-content:center;margin-left:0;width:3rem}html .navbar-sidebar__close>svg>g{stroke:#fff}html[data-theme=dark] .navbar-sidebar__brand{position:relative}html[data-theme=dark] .navbar-sidebar__brand:after{--tw-bg-opacity:1;background-color:rgb(85 85 85/var(--tw-bg-opacity));bottom:0;content:"";display:block;height:1px;left:0;margin-left:1.5rem;margin-right:1.5rem;position:absolute;right:.5rem}html[data-theme=dark] .navbar-sidebar__close{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}html[data-theme=dark] .navbar-sidebar__close>svg>g{stroke:#000}html[data-theme=dark] .DocSearch-Button{background-color:#181818ab;color:#ffffff70}html[data-theme=dark] .DocSearch-Button-Key{border-color:#ffffff70;color:#ffffff70}html .breadcrumbs__item:first-child>a:after{content:"Docs"}html .breadcrumbs__item:not(:last-child):after{background-image:none;content:">"}html .theme-doc-toc-mobile{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity));border-radius:1rem;padding:1.25rem 1.5rem 0}html .theme-doc-toc-mobile>button{display:flex;justify-content:space-between;padding:0 0 1.25rem}html .theme-doc-toc-mobile>button:after{background-image:var(--ifm-menu-link-sublist-icon);background-size:70%;margin-left:1rem;order:9999}html .theme-doc-toc-mobile ul li{margin:1rem 0}html[data-theme=dark] .theme-doc-sidebar-menu .menu__list:before{background-color:#ffffff70}html .theme-doc-sidebar-menu{font-weight:400}html .theme-doc-sidebar-menu .menu__list{padding-left:0;position:relative}html .theme-doc-sidebar-menu .menu__list:before{background-color:#00000012;content:"";display:block;height:100%;left:.5rem;position:absolute;top:0;width:2px}#__docusaurus-base-url-issue-banner-container,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html .footer__col:first-child .footer__title,html .footer__link-item>svg,html .menu__caret,html .menu__link>svg,html .theme-doc-sidebar-menu .menu__list ul:before,html li li .menu__link--sublist-caret:after,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}html .theme-doc-sidebar-menu .menu__link{padding-left:0;padding-right:1rem}html .theme-doc-sidebar-menu .menu__link--active:not(.menu__link--sublist){color:var(--ifm-font-color-base);font-weight:500}html .theme-doc-sidebar-menu li li{padding-left:2rem}html .theme-doc-sidebar-menu li li .menu__link--active:not(.menu__link--sublist){color:var(--ifm-font-color-base);font-weight:500;position:relative}html .theme-doc-sidebar-menu li li .menu__link--active:not(.menu__link--sublist):before{background-color:var(--ifm-font-color-base);content:"";display:block;height:100%;left:-1.5rem;position:absolute;top:0;width:2px}html .theme-doc-sidebar-menu li li li .menu__link--active:not(.menu__link--sublist):before{left:-2.5rem}html .theme-doc-sidebar-menu li li li li .menu__link--active:not(.menu__link--sublist):before{left:-3.5rem}html .theme-doc-sidebar-menu li li li li li .menu__link--active:not(.menu__link--sublist):before{left:-4.5rem}html .theme-doc-sidebar-menu li li li li li li .menu__link--active:not(.menu__link--sublist):before{left:-5.5rem}html .theme-doc-sidebar-menu li li li li li li li .menu__link--active:not(.menu__link--sublist):before{left:-6.5rem}html .theme-doc-sidebar-item-link .menu__link[target=_blank]:after{content:"\2197";margin-left:.25rem}html .menu__link:hover{color:var(--ifm-font-color-base)}html .menu__link--sublist-caret{display:flex}html .menu__link--sublist-caret:after{background-repeat:no-repeat;background-size:16px;margin-left:0;margin-right:.75rem;order:-9999}html .menu__list-item--collapsed .menu__caret:before,html .menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(0)}html .pagination-nav{margin-top:4rem;padding-bottom:2rem}html .pagination-nav>a{border-color:#0000;border-radius:1rem;box-shadow:0 0 80px #00000012;grid-column:span 2/span 2;padding:1.5rem 1.5rem 3.25rem}html .pagination-nav .pagination-nav__sublabel{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity));font-size:1rem;margin-bottom:.625rem}html .pagination-nav .pagination-nav__label{font-size:1.3125rem;font-weight:600}html .footer{background-color:var(--ifm-font-color-base);border-top-color:var(--ifm-color-emphasis-200);padding-top:6rem}html .footer__link-item:hover,html .theme-doc-markdown a:hover{text-decoration-line:underline}html .footer__bottom{margin:0 calc(var(--ifm-spacing-horizontal)*-1)}html .footer__copyright{font-size:.8125rem;margin-top:4rem;text-align:center}html .footer__col:not(:first-child){flex-basis:50%}html .theme-back-to-top-button{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}html .theme-back-to-top-button:after{width:50%}html .theme-code-block{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;margin-top:.5rem}html .markdown{--ifm-h1-vertical-rhythm-bottom:1}html .theme-doc-markdown{border-bottom-color:#00000012;border-bottom-width:1px;margin-top:2rem;padding-bottom:3rem}html .theme-doc-markdown h1{font-size:2.375rem;font-weight:700;letter-spacing:-.025em;line-height:2.5rem}html .theme-doc-markdown h2{font-size:2rem;font-weight:700;letter-spacing:-.025em;line-height:2.25rem}html .theme-doc-markdown h3{font-size:1.3125rem;font-weight:600;letter-spacing:-.025em;line-height:2rem}html .theme-doc-markdown h4{font-size:1rem;font-weight:600;letter-spacing:-.025em;line-height:1.75rem}html .theme-doc-markdown h5{font-size:1rem;font-weight:600;letter-spacing:.025em;line-height:1.5rem}html .theme-doc-markdown p{line-height:1.625}html .theme-doc-markdown blockquote,html .theme-doc-markdown ol,html .theme-doc-markdown p,html .theme-doc-markdown ul{font-size:1rem}html .theme-doc-markdown code{border-width:0;font-weight:400;padding-left:.5rem;padding-right:.5rem;vertical-align:initial}html .theme-doc-markdown blockquote{margin-bottom:2rem;margin-top:2rem}html .theme-doc-markdown a{text-decoration-line:none;color:var(--ifm-color-primary)}html .theme-doc-markdown ol,html .theme-doc-markdown ul{margin-bottom:1.5rem;margin-top:1.5rem}html .theme-doc-markdown ul li{margin-bottom:.75rem;padding-left:1.5rem;position:relative}html .theme-doc-markdown ul li:before{background-color:currentColor;content:var(--tw-content);display:block;height:4px;left:0;position:absolute;top:.5em;width:4px}html .theme-doc-markdown ul li li:before{background-color:initial;border-color:currentColor;border-width:1px;content:var(--tw-content)}html .theme-doc-markdown ul li li:last-child{margin-bottom:1.5rem}html .theme-doc-markdown ol{counter-reset:a;list-style-type:none}html .theme-doc-markdown ol>li{margin-bottom:1.25rem;padding-left:3rem;position:relative}html .theme-doc-markdown ol>li:before{content:counters(a,".",decimal-leading-zero) ".";counter-increment:a;display:flex;font-size:1rem;font-weight:600;left:0;letter-spacing:-.025em;position:absolute;top:.2rem}html .theme-doc-markdown ol ol{counter-reset:b}html .theme-doc-markdown ol ol>li:before{content:counters(b,".",decimal-leading-zero) ".";counter-increment:b}html .theme-doc-markdown li>ol,html .theme-doc-markdown li>ul{margin-bottom:1rem;margin-top:1rem}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.DocSearch-Container a,.tag_zVej:hover{text-decoration:none}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:c;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(c);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"ยป "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}.tocMobile_ITEo,html .navbar__toggle{display:none}html .navbar__items:not(:last-child){justify-content:flex-start;padding-left:.5rem;padding-right:.5rem}html .DocSearch-Button{justify-content:space-between;width:auto}html .theme-doc-breadcrumbs{padding-top:1rem}html .theme-doc-sidebar-container{border-right-color:var(--ifm-color-emphasis-200);border-right-width:1px;margin-left:.75rem}html .pagination-nav>a{grid-column:span 1/span 1}.lastUpdated_vwxv,html .pagination-nav .pagination-nav__link--next{text-align:right}html .footer__col:not(:first-child){flex-basis:0}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.docItemCol_VOVn{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (min-width:1536px){.container{max-width:1536px}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-color-scheme:dark){html .pagination-nav .pagination-nav__sublabel{color:var(--ifm-font-color-base)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media screen and (prefers-reduced-motion){:root{transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/fonts/Inter-Black-15ca31c0a2a68f76d2d12055bdf97bd0.woff2 b/assets/fonts/Inter-Black-15ca31c0a2a68f76d2d12055bdf97bd0.woff2 new file mode 100644 index 00000000000..68f64c9ed98 Binary files /dev/null and b/assets/fonts/Inter-Black-15ca31c0a2a68f76d2d12055bdf97bd0.woff2 differ diff --git a/assets/fonts/Inter-Black-c6938660eec019fefd684894b6d00900.woff b/assets/fonts/Inter-Black-c6938660eec019fefd684894b6d00900.woff new file mode 100644 index 00000000000..a18593a096e Binary files /dev/null and b/assets/fonts/Inter-Black-c6938660eec019fefd684894b6d00900.woff differ diff --git a/assets/fonts/Inter-Bold-93c1301bd9f486c573b3d9001c6ec0e4.woff b/assets/fonts/Inter-Bold-93c1301bd9f486c573b3d9001c6ec0e4.woff new file mode 100644 index 00000000000..eaf3d4bfd7d Binary files /dev/null and b/assets/fonts/Inter-Bold-93c1301bd9f486c573b3d9001c6ec0e4.woff differ diff --git a/assets/fonts/Inter-Bold-ec64ea577b0349e055ad6646c1d8797a.woff2 b/assets/fonts/Inter-Bold-ec64ea577b0349e055ad6646c1d8797a.woff2 new file mode 100644 index 00000000000..2846f29cc8a Binary files /dev/null and b/assets/fonts/Inter-Bold-ec64ea577b0349e055ad6646c1d8797a.woff2 differ diff --git a/assets/fonts/Inter-Medium-293fd13dbca5a3e450ef1ebfb232a299.woff2 b/assets/fonts/Inter-Medium-293fd13dbca5a3e450ef1ebfb232a299.woff2 new file mode 100644 index 00000000000..f92498a2ecf Binary files /dev/null and b/assets/fonts/Inter-Medium-293fd13dbca5a3e450ef1ebfb232a299.woff2 differ diff --git a/assets/fonts/Inter-Medium-9053572c46aeb4b16caafd643a543b8d.woff b/assets/fonts/Inter-Medium-9053572c46aeb4b16caafd643a543b8d.woff new file mode 100644 index 00000000000..d546843f283 Binary files /dev/null and b/assets/fonts/Inter-Medium-9053572c46aeb4b16caafd643a543b8d.woff differ diff --git a/assets/fonts/Inter-Regular-8c206db99195777c67691cbba9d64393.woff b/assets/fonts/Inter-Regular-8c206db99195777c67691cbba9d64393.woff new file mode 100644 index 00000000000..62d3a618710 Binary files /dev/null and b/assets/fonts/Inter-Regular-8c206db99195777c67691cbba9d64393.woff differ diff --git a/assets/fonts/Inter-Regular-c8ba52b05a9ef10f47584d08ece2ec5c.woff2 b/assets/fonts/Inter-Regular-c8ba52b05a9ef10f47584d08ece2ec5c.woff2 new file mode 100644 index 00000000000..6c2b6893d59 Binary files /dev/null and b/assets/fonts/Inter-Regular-c8ba52b05a9ef10f47584d08ece2ec5c.woff2 differ diff --git a/assets/fonts/Inter.var-c2fe3cb2b7c746f7966a973d869d21c3.woff2 b/assets/fonts/Inter.var-c2fe3cb2b7c746f7966a973d869d21c3.woff2 new file mode 100644 index 00000000000..365eedc50cd Binary files /dev/null and b/assets/fonts/Inter.var-c2fe3cb2b7c746f7966a973d869d21c3.woff2 differ diff --git a/assets/fonts/JetBrainsMono-Regular-1e66c47aca088de94ae789a48719cb00.woff2 b/assets/fonts/JetBrainsMono-Regular-1e66c47aca088de94ae789a48719cb00.woff2 new file mode 100644 index 00000000000..8c862e334da Binary files /dev/null and b/assets/fonts/JetBrainsMono-Regular-1e66c47aca088de94ae789a48719cb00.woff2 differ diff --git a/assets/images/cosmos-hub-image-64b35193bcb3998afd27f30060ed5ab5.jpg b/assets/images/cosmos-hub-image-64b35193bcb3998afd27f30060ed5ab5.jpg new file mode 100644 index 00000000000..2c3cb5cf7c9 Binary files /dev/null and b/assets/images/cosmos-hub-image-64b35193bcb3998afd27f30060ed5ab5.jpg differ diff --git a/assets/images/ledger-tuto-dev-mode-c4e394fda2491363a287cbf1fc82ab39.png b/assets/images/ledger-tuto-dev-mode-c4e394fda2491363a287cbf1fc82ab39.png new file mode 100644 index 00000000000..0973355c7d1 Binary files /dev/null and b/assets/images/ledger-tuto-dev-mode-c4e394fda2491363a287cbf1fc82ab39.png differ diff --git a/assets/images/ledger-tuto-manager-f0a3a54c10bfa2405995efaed78536f1.png b/assets/images/ledger-tuto-manager-f0a3a54c10bfa2405995efaed78536f1.png new file mode 100644 index 00000000000..561028128a8 Binary files /dev/null and b/assets/images/ledger-tuto-manager-f0a3a54c10bfa2405995efaed78536f1.png differ diff --git a/assets/images/ledger-tuto-search-d4d718ef5efa0fb720af125ef8819fd5.png b/assets/images/ledger-tuto-search-d4d718ef5efa0fb720af125ef8819fd5.png new file mode 100644 index 00000000000..ae651dbaf7c Binary files /dev/null and b/assets/images/ledger-tuto-search-d4d718ef5efa0fb720af125ef8819fd5.png differ diff --git a/assets/images/ledger_1-333b5a02b13138ef329933950ec162af.jpg b/assets/images/ledger_1-333b5a02b13138ef329933950ec162af.jpg new file mode 100644 index 00000000000..100175e1a7f Binary files /dev/null and b/assets/images/ledger_1-333b5a02b13138ef329933950ec162af.jpg differ diff --git a/assets/images/ledger_2-0fe258512b66899f1a60ffb8986ebb48.jpg b/assets/images/ledger_2-0fe258512b66899f1a60ffb8986ebb48.jpg new file mode 100644 index 00000000000..9c6fa6b1a65 Binary files /dev/null and b/assets/images/ledger_2-0fe258512b66899f1a60ffb8986ebb48.jpg differ diff --git a/assets/js/00c52b9e.6ca0df2e.js b/assets/js/00c52b9e.6ca0df2e.js new file mode 100644 index 00000000000..baa53cf8483 --- /dev/null +++ b/assets/js/00c52b9e.6ca0df2e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[2066],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>d});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=s(n),k=i,d=c["".concat(p,".").concat(k)]||c[k]||u[k]||r;return n?a.createElement(d,o(o({ref:t},m),{},{components:n})):a.createElement(d,o({ref:t},m))}));function d(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=k;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));const r={title:"\ucd5c\uc2e0 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ucc38\uac00\ud558\uae30",order:4},o=void 0,l={unversionedId:"translations/ko/gaia-tutorials/join-mainnet",id:"translations/ko/gaia-tutorials/join-mainnet",title:"\ucd5c\uc2e0 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ucc38\uac00\ud558\uae30",description:"\ucd5c\uc2e0 \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 \ub2e4\uc74c\uc758 \ud14c\uc2a4\ud2b8\ub137 \ub9ac\ud3ec\ub97c \ucc38\uace0\ud558\uc138\uc694. \uc5b4\ub5a4 \ucf54\uc2a4\ubaa8\uc2a4 SDK \ubc84\uc804\uacfc \uc81c\ub124\uc2dc\uc2a4 \ud30c\uc77c\uc5d0 \ub300\ud55c \uc815\ubcf4\uac00 \ud3ec\ud569\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.",source:"@site/docs/translations/ko/gaia-tutorials/join-mainnet.md",sourceDirName:"translations/ko/gaia-tutorials",slug:"/translations/ko/gaia-tutorials/join-mainnet",permalink:"/gaia/translations/ko/gaia-tutorials/join-mainnet",draft:!1,tags:[],version:"current",frontMatter:{title:"\ucd5c\uc2e0 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ucc38\uac00\ud558\uae30",order:4},sidebar:"tutorialSidebar",previous:{title:"Gaia \uc124\uce58\ud558\uae30",permalink:"/gaia/translations/ko/gaia-tutorials/installation"},next:{title:"\ucd5c\uc2e0 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ucc38\uac00\ud558\uae30",permalink:"/gaia/translations/ko/gaia-tutorials/join-testnet"}},p={},s=[{value:"\uc0c8\ub85c\uc6b4 \ub178\ub4dc \uc138\ud305\ud558\uae30",id:"\uc0c8\ub85c\uc6b4-\ub178\ub4dc-\uc138\ud305\ud558\uae30",level:2},{value:"\uc81c\ub124\uc2dc\uc2a4\uc640 \uc2dc\ub4dc",id:"\uc81c\ub124\uc2dc\uc2a4\uc640-\uc2dc\ub4dc",level:2},{value:"\uc81c\ub124\uc2dc\uc2a4 \ud30c\uc77c \ubcf5\uc0ac\ud558\uae30",id:"\uc81c\ub124\uc2dc\uc2a4-\ud30c\uc77c-\ubcf5\uc0ac\ud558\uae30",level:3},{value:"\uc2dc\ub4dc \ub178\ub4dc \ucd94\uac00\ud558\uae30",id:"\uc2dc\ub4dc-\ub178\ub4dc-\ucd94\uac00\ud558\uae30",level:3},{value:"\uac00\uc2a4\uc640 \uc218\uc218\ub8cc\uc5d0 \ub300\ud574\uc11c",id:"\uac00\uc2a4\uc640-\uc218\uc218\ub8cc\uc5d0-\ub300\ud574\uc11c",level:3},{value:"\ucd5c\uc18c \uac00\uc2a4 \uac00\uaca9(minimum-gas-prices) \uc124\uc815\ud558\uae30",id:"\ucd5c\uc18c-\uac00\uc2a4-\uac00\uaca9minimum-gas-prices-\uc124\uc815\ud558\uae30",level:2},{value:"\ud480\ub178\ub4dc \uc6b4\uc601\ud558\uae30",id:"\ud480\ub178\ub4dc-\uc6b4\uc601\ud558\uae30",level:2},{value:"\uc0c1\ud0dc \ub0b4\ubcf4\ub0b4\uae30(Export State)",id:"\uc0c1\ud0dc-\ub0b4\ubcf4\ub0b4\uae30export-state",level:2},{value:"\uba54\uc778\ub137 \uac80\uc99d\ud558\uae30",id:"\uba54\uc778\ub137-\uac80\uc99d\ud558\uae30",level:2},{value:"\uac80\uc99d\uc778 \ub178\ub4dc\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uae30",id:"\uac80\uc99d\uc778-\ub178\ub4dc\ub85c-\uc5c5\uadf8\ub808\uc774\ub4dc-\ud558\uae30",level:2}],m={toc:s},c="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(c,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"\ucd5c\uc2e0-\ud37c\ube14\ub9ad-\ud14c\uc2a4\ud2b8\ub137\uc5d0-\ucc38\uac00\ud558\uae30"},"\ucd5c\uc2e0 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ucc38\uac00\ud558\uae30"),(0,i.kt)("admonition",{title:"\ucd5c\uc2e0 \ud14c\uc2a4\ud2b8\ub137",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"\ucd5c\uc2e0 \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 \ub2e4\uc74c\uc758 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/cosmos/testnets"},"\ud14c\uc2a4\ud2b8\ub137 \ub9ac\ud3ec"),"\ub97c \ucc38\uace0\ud558\uc138\uc694. \uc5b4\ub5a4 \ucf54\uc2a4\ubaa8\uc2a4 SDK \ubc84\uc804\uacfc \uc81c\ub124\uc2dc\uc2a4 \ud30c\uc77c\uc5d0 \ub300\ud55c \uc815\ubcf4\uac00 \ud3ec\ud569\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.")),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\uc5ec\uae30\uc5d0\uc11c \ub354 \uc9c4\ud589\ud558\uc2dc\uae30 \uc804\uc5d0 ",(0,i.kt)("a",{parentName:"strong",href:"/gaia/translations/ko/gaia-tutorials/installation"},"gaia"),"\uac00 \uaf2d \uc124\uce58\ub418\uc5b4\uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."))),(0,i.kt)("h2",{id:"\uc0c8\ub85c\uc6b4-\ub178\ub4dc-\uc138\ud305\ud558\uae30"},"\uc0c8\ub85c\uc6b4 \ub178\ub4dc \uc138\ud305\ud558\uae30"),(0,i.kt)("p",null,"\ub2e4\uc74c \uc808\ucc28\ub294 \uc0c8\ub85c\uc6b4 \ud480\ub178\ub4dc\ub97c \ucc98\uc74c\ubd80\ud130 \uc138\ud305\ud558\ub294 \uc808\ucc28\uc785\ub2c8\ub2e4."),(0,i.kt)("p",null,"\uc6b0\uc120 \ub178\ub4dc\ub97c \uc2e4\ud589\ud558\uace0 \ud544\uc694\ud55c config \ud30c\uc77c\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad init \n")),(0,i.kt)("admonition",{title:"\ucc38\uace0",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("inlineCode",{parentName:"p"},"--moniker"),"\ub294 ASCII \uce90\ub9ad\ud130\ub9cc\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. Unicode \uce90\ub9ad\ud130\ub97c \uc774\uc6a9\ud558\ub294 \uacbd\uc6b0 \ub178\ub4dc \uc811\uadfc\uc774 \ubd88\uac00\ub2a5\ud560 \uc218 \uc788\uc73c\ub2c8 \ucc38\uace0\ud558\uc138\uc694.")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"moniker"),"\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.gaia/config/config.toml")," \ud30c\uc77c\uc744 \ud1b5\ud574 \ucd94\ud6c4\uc5d0 \ubcc0\uacbd\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-toml"},'# A custom human readable name for this node\nmoniker = ""\n')),(0,i.kt)("p",null,"\ucd5c\uc18c \uac00\uc2a4 \uac00\uaca9\ubcf4\ub2e4 \ub0ae\uc740 \ud2b8\ub79c\uc7ad\uc158\uc744 \uac70\uc808\ud558\ub294 \uc2a4\ud338 \ubc29\uc9c0 \uba54\ucee4\ub2c8\uc998\uc744 \ud65c\uc131\ud654 \ud558\uc2dc\ub824\uba74 ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.gaia/config/gaiad.toml")," \ud30c\uc77c\uc744 \ubcc0\uacbd\ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n##### main base config options #####\n\n# The minimum gas prices a validator is willing to accept for processing a\n# transaction. A transaction\'s fees must meet the minimum of any denomination\n# specified in this config (e.g. 10uatom).\n\nminimum-gas-prices = ""\n')),(0,i.kt)("p",null,"\uc774\uc81c \ud480\ub178\ub4dc\uac00 \ud65c\uc131\ud654 \ub418\uc5c8\uc2b5\ub2c8\ub2e4!"),(0,i.kt)("h2",{id:"\uc81c\ub124\uc2dc\uc2a4\uc640-\uc2dc\ub4dc"},"\uc81c\ub124\uc2dc\uc2a4\uc640 \uc2dc\ub4dc"),(0,i.kt)("h3",{id:"\uc81c\ub124\uc2dc\uc2a4-\ud30c\uc77c-\ubcf5\uc0ac\ud558\uae30"},"\uc81c\ub124\uc2dc\uc2a4 \ud30c\uc77c \ubcf5\uc0ac\ud558\uae30"),(0,i.kt)("p",null,"\ud14c\uc2a4\ud2b8\ub137\uc758 ",(0,i.kt)("inlineCode",{parentName:"p"},"genesis.json"),"\ud30c\uc77c\uc744 ",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),"\uc758 config \ub514\ub809\ud1a0\ub9ac\ub85c \uac00\uc838\uc635\ub2c8\ub2e4."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir -p $HOME/.gaia/config\ncurl https://raw.githubusercontent.com/cosmos/launch/master/genesis.json > $HOME/.gaia/config/genesis.json\n")),(0,i.kt)("p",null,"\uc704 \uc608\uc2dc\uc5d0\uc11c\ub294 \ucd5c\uc2e0 \ud14c\uc2a4\ud2b8\ub137\uc5d0 \ub300\ud55c \uc815\ubcf4\uac00 \ud3ec\ud568\ub418\uc5b4\uc788\ub294 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/cosmos/launch"},"launch repo"),"\uc758 ",(0,i.kt)("inlineCode",{parentName:"p"},"latest")," \ub514\ub809\ud1a0\ub9ac\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uc744 \ucc38\uace0\ud558\uc138\uc694."),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"\ub9cc\uc57d \ub2e4\ub978 \ud37c\ube14\ub9ad \ud14c\uc2a4\ud2b8\ub137\uc5d0 \uc5f0\uacb0\ud558\uc2e0\ub2e4\uba74 ",(0,i.kt)("a",{parentName:"p",href:"/gaia/translations/ko/gaia-tutorials/join-testnet"},"\uc5ec\uae30"),"\uc5d0 \uc788\ub294 \uc815\ubcf4\ub97c \ud655\uc778\ud558\uc138\uc694.")),(0,i.kt)("p",null,"\uc124\uc815\uc774 \uc62c\ubc14\ub974\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574\uc11c\ub294 \ub2e4\uc74c\uc744 \uc2e4\ud589\ud558\uc138\uc694:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad start\n")),(0,i.kt)("h3",{id:"\uc2dc\ub4dc-\ub178\ub4dc-\ucd94\uac00\ud558\uae30"},"\uc2dc\ub4dc \ub178\ub4dc \ucd94\uac00\ud558\uae30"),(0,i.kt)("p",null,"\uc774\uc81c \ub178\ub4dc\uac00 \ub2e4\ub978 \ud53c\uc5b4\ub4e4\uc744 \ucc3e\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\uc57c\ud569\ub2c8\ub2e4. ",(0,i.kt)("inlineCode",{parentName:"p"},"$HOME/.gaia/config/config.toml"),"\uc5d0 \uc548\uc815\uc801\uc778 \uc2dc\ub4dc \ub178\ub4dc\ub4e4\uc744 \ucd94\uac00\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4. ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/cosmos/launch"},(0,i.kt)("inlineCode",{parentName:"a"},"launch"))," repo\uc5d0 \uba87 \uac1c \uc2dc\ub4dc \ub178\ub4dc \ub9c1\ud06c\uac00 \ud3ec\ud568\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4."),(0,i.kt)("p",null,"\ub9cc\uc57d \ud574\ub2f9 \uc2dc\ub4dc\uac00 \uc791\ub3d9\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74, \ucd94\uac00\uc801\uc778 \uc2dc\ub4dc\uc640 \ud53c\uc5b4\ub4e4\uc744 \ucf54\uc2a4\ubaa8\uc2a4 \ud5c8\ube0c \uc775\uc2a4\ud50c\ub85c\ub7ec\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694(\ubaa9\ub85d\uc740 ",(0,i.kt)("a",{parentName:"p",href:"https://cosmos.network/launch"},"launch")," \ud398\uc774\uc9c0\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.)"),(0,i.kt)("p",null,"\uc774 \uc678\uc5d0\ub3c4 ",(0,i.kt)("a",{parentName:"p",href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org"},"\ubc38\ub9ac\ub370\uc774\ud130 \ub77c\uc774\uc5c7 \ucc44\ud305\ubc29"),"\uc744 \ud1b5\ud574\uc11c \ud53c\uc5b4 \uc694\uccad\uc744 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,i.kt)("p",null,"\uc2dc\ub4dc\uc640 \ud53c\uc5b4\uc5d0 \ub300\ud55c \ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \uc6d0\ud558\uc2dc\uba74 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers"},"\uc5ec\uae30"),"\ub97c \ud655\uc778\ud558\uc138\uc694."),(0,i.kt)("h3",{id:"\uac00\uc2a4\uc640-\uc218\uc218\ub8cc\uc5d0-\ub300\ud574\uc11c"},"\uac00\uc2a4\uc640 \uc218\uc218\ub8cc\uc5d0 \ub300\ud574\uc11c"),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"\ucf54\uc2a4\ubaa8\uc2a4 \uba54\uc778\ub137\uc5d0\uc11c\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"uatom")," \ub2e8\uc704\uac00 \ud45c\uc900 \ub2e8\uc704\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. ",(0,i.kt)("inlineCode",{parentName:"p"},"1atom = 1,000,000uatom"),"\uc73c\ub85c \ud658\uc0b0\ub429\ub2c8\ub2e4.")),(0,i.kt)("p",null,"\ucf54\uc2a4\ubaa8\uc2a4 \ud5c8\ube0c \ub124\ud2b8\uc6cc\ud06c\ub294 \ud2b8\ub79c\uc7ad\uc158 \ucc98\ub9ac\ub97c \uc704\ud574 \ud2b8\ub79c\uc7ad\uc158 \uc218\uc218\ub8cc\ub97c \ubd80\uacfc\ud569\ub2c8\ub2e4. \ud574\ub2f9 \uc218\uc218\ub8cc\ub294 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc2e4\ud589\ud558\uae30 \uc704\ud55c \uac00\uc2a4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uacf5\uc2dd\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"\uc218\uc218\ub8cc(Fee) = \uac00\uc2a4(Gas) * \uac00\uc2a4 \uac12(GasPrices)\n")),(0,i.kt)("p",null,"\uc704 \uacf5\uc2dd\uc5d0\uc11c ",(0,i.kt)("inlineCode",{parentName:"p"},"gas"),"\ub294 \uc804\uc1a1\ud558\ub294 \ud2b8\ub79c\uc7ad\uc158\uc5d0 \ub530\ub77c \ub2e4\ub985\ub2c8\ub2e4. \ub2e4\ub978 \ud615\ud0dc\uc758 \ud2b8\ub79c\uc7ad\uc158\uc740 \uac01\uc790 \ub2e4\ub978 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas"),"\ub7c9\uc744 \ud544\uc694\ub85c \ud569\ub2c8\ub2e4. ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \uc218\ub7c9\uc740 \ud2b8\ub79c\uc7ad\uc158\uc774 \uc2e4\ud589\ub420\ub54c \uacc4\uc0b0\ub428\uc73c\ub85c \uc0ac\uc804\uc5d0 \uc815\ud655\ud55c \uac12\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub9cc, ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \ud50c\ub798\uadf8\uc758 \uac12\uc744 ",(0,i.kt)("inlineCode",{parentName:"p"},"auto"),"\ub85c \uc124\uc815\ud568\uc73c\ub85c \uc608\uc0c1 \uac12\uc744 \ucd94\ucd9c\ud560 \uc218\ub294 \uc788\uc2b5\ub2c8\ub2e4. \uc608\uc0c1 \uac12\uc744 \uc218\uc815\ud558\uae30 \uc704\ud574\uc11c\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"--gas-adjustment")," (\uae30\ubcf8 \uac12 ",(0,i.kt)("inlineCode",{parentName:"p"},"1.0"),") \ud50c\ub798\uadf8 \uac12\uc744 \ubcc0\uacbd\ud558\uc154\uc11c \ud2b8\ub79c\uc7ad\uc158\uc774 \ucda9\ubd84\ud55c \uac00\uc2a4\ub97c \ud655\ubcf4\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uc2ed\uc2dc\uc624."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\ub294 \uac01 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \uc720\ub2db\uc758 \uac00\uaca9\uc785\ub2c8\ub2e4. \uac01 \uac80\uc99d\uc778\uc740 \uc9c1\uc811 \ucd5c\uc18c \uac00\uc2a4 \uac00\uaca9\uc778 ",(0,i.kt)("inlineCode",{parentName:"p"},"min-gas-price"),"\ub97c \uc124\uc815\ud558\uba70, \ud2b8\ub79c\uc7ad\uc158\uc758 ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\uac00 \uc124\uc815\ud55c ",(0,i.kt)("inlineCode",{parentName:"p"},"min-gas-price"),"\ubcf4\ub2e4 \ub192\uc744\ub54c \ud2b8\ub79c\uc7ad\uc158\uc744 \ucc98\ub9ac\ud569\ub2c8\ub2e4."),(0,i.kt)("p",null,"\ud2b8\ub79c\uc7ad\uc158 \ud53c(",(0,i.kt)("inlineCode",{parentName:"p"},"fees"),")\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \uc218\ub7c9\uacfc ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\ub97c \uacf1\ud55c \uac12\uc785\ub2c8\ub2e4. \uc720\uc800\ub294 3\uac1c\uc758 \uac12 \uc911 2\uac1c\uc758 \uac12\uc744 \uc785\ub825\ud558\uac8c \ub429\ub2c8\ub2e4. ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\uac00 \ub192\uc744\uc218\ub85d \ud2b8\ub79c\uc7ad\uc158\uc774 \ube14\ub85d\uc5d0 \ud3ec\ud568\ub420 \ud655\ub960\uc774 \ub192\uc544\uc9d1\ub2c8\ub2e4."),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"\uba54\uc778\ub137 \uad8c\uc7a5 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas-prices"),"\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"0.0025uatom")," \uc785\ub2c8\ub2e4.")),(0,i.kt)("h2",{id:"\ucd5c\uc18c-\uac00\uc2a4-\uac00\uaca9minimum-gas-prices-\uc124\uc815\ud558\uae30"},"\ucd5c\uc18c \uac00\uc2a4 \uac00\uaca9(",(0,i.kt)("inlineCode",{parentName:"h2"},"minimum-gas-prices"),") \uc124\uc815\ud558\uae30"),(0,i.kt)("p",null,"\ud480\ub178\ub4dc\ub294 \ucee8\ud38c\ub418\uc9c0 \uc54a\uc740 \ud2b8\ub79c\uc7ad\uc158\uc744 \uba64\ud480\uc5d0 \ubcf4\uad00\ud569\ub2c8\ub2e4. \uc2a4\ud338 \ud2b8\ub79c\uc7ad\uc158\uc73c\ub85c\ubd80\ud130 \ud480\ub178\ub4dc\ub97c \ubcf4\ud638\ud558\uae30 \uc704\ud574\uc11c \ub178\ub4dc \uba64\ud480\uc5d0 \ubcf4\uad00\ub418\uae30 \uc704\ud55c \ud2b8\ub79c\uc7ad\uc158\uc758 \ucd5c\uc18c \uac00\uc2a4 \uac00\uaca9(",(0,i.kt)("inlineCode",{parentName:"p"},"minimum-gas-prices"),")\uc744 \uc124\uc815\ud560 \uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4. \ud574\ub2f9 \ud30c\ub77c\ubbf8\ud130\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.gaia/config/gaiad.toml"),"\uc5d0\uc11c \uc124\uc815\ud558\uc2e4 \uc218 \uc788\uc501\ub2c8\ub2e4."),(0,i.kt)("p",null,"\uae30\ubcf8 \uad8c\uc7a5 ",(0,i.kt)("inlineCode",{parentName:"p"},"minimum-gas-prices"),"\ub294 ",(0,i.kt)("inlineCode",{parentName:"p"},"0.0025uatom"),"\uc774\uc9c0\ub9cc, \ucd94\ud6c4 \ubc14\uafb8\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,i.kt)("h2",{id:"\ud480\ub178\ub4dc-\uc6b4\uc601\ud558\uae30"},"\ud480\ub178\ub4dc \uc6b4\uc601\ud558\uae30"),(0,i.kt)("p",null,"\ub2e4\uc74c \ucee4\ub9e8\ub4dc\ub85c \ud480\ub178\ub4dc\ub97c \uc2dc\uc791\ud558\uc138\uc694:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad start\n")),(0,i.kt)("p",null,"\ubaa8\ub4e0 \uac83\uc774 \uc798 \uc791\ub3d9\ud558\uace0 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574\uc11c\ub294:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad status\n")),(0,i.kt)("p",null,"\ub124\ud2b8\uc6cc\ud06c \uc0c1\ud0dc\ub97c ",(0,i.kt)("a",{parentName:"p",href:"https://cosmos.network/launch"},"\ucf54\uc2a4\ubaa8\uc2a4 \uc775\uc2a4\ud50c\ub85c\ub7ec"),"\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694."),(0,i.kt)("h2",{id:"\uc0c1\ud0dc-\ub0b4\ubcf4\ub0b4\uae30export-state"},"\uc0c1\ud0dc \ub0b4\ubcf4\ub0b4\uae30(Export State)"),(0,i.kt)("p",null,"Gaia\ub294 \ud604\uc7ac \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc0c1\ud0dc\ub97c JSON\ud30c\uc77c \ud615\ud0dc\ub85c \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7f0 \ub370\uc774\ud130\ub294 \uc218\ub3d9 \ubd84\uc11d\uacfc \uc0c8\ub85c\uc6b4 \ub124\ud2b8\uc6cc\ud06c\uc758 \uc81c\ub124\uc2dc\uc2a4 \ud30c\uc77c\ub85c \uc774\uc6a9\ub420 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,i.kt)("p",null,"\ud604\uc7ac \uc0c1\ud0dc\ub97c \ub0b4\ubcf4\ub0b4\uae30 \uc704\ud574\uc11c\ub294:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad export > [filename].json\n")),(0,i.kt)("p",null,"\ud2b9\uc815 \ube14\ub85d \ub192\uc774\uc758 \uc0c1\ud0dc\ub97c \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4(\ud574\ub2f9 \ube14\ub85d \ucc98\ub9ac \ud6c4 \uc0c1\ud0dc):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad export --height [height] > [filename].json\n")),(0,i.kt)("p",null,"\ub9cc\uc57d \ud574\ub2f9 \uc0c1\ud0dc\ub97c \uae30\ubc18\uc73c\ub85c \uc0c8\ub85c\uc6b4 \ub124\ud2b8\uc6cc\ud06c\ub97c \uc2dc\uc791\ud558\uc2dc\ub824 \ud55c\ub2e4\uba74, ",(0,i.kt)("inlineCode",{parentName:"p"},"--for-zero-height")," \ud50c\ub798\uadf8\ub97c \uc774\uc6a9\ud558\uc154\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad export --height [height] --for-zero-height > [filename].json\n")),(0,i.kt)("h2",{id:"\uba54\uc778\ub137-\uac80\uc99d\ud558\uae30"},"\uba54\uc778\ub137 \uac80\uc99d\ud558\uae30"),(0,i.kt)("p",null,"\uac01 \ud3f4\ub178\ub4dc\uc5d0\uc11c invariant\ub97c \uc2e4\ud589\ud558\uc5ec \uac80\uc99d \uc911 \uc704\ud5d8\ud55c \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud558\ub294 \uac83\uc744 \ubc29\uc9c0\ud558\uc138\uc694. Invariant\ub97c \uc0ac\uc6a9\ud558\uc5ec \uba54\uc778\ub137\uc758 \uc0c1\ud0dc(state)\uac00 \uc62c\ubc14\ub978 \uc0c1\ud0dc\uc778 \uac83\uc744 \ud655\uc778\ud569\ub2c8\ub2e4. \uc911\uc694\ud55c invariant \uac80\uc99d \uc911 \ud558\ub098\ub294 \ud504\ub85c\ud1a0\ucf5c \uc608\uc0c1 \ubc94\uc704 \ubc16\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \uc544\ud1b0\uc774 \uc0dd\uc131\ub418\uac70\ub098 \uc0ac\ub77c\uc9c0\ub294 \ud589\uc704\ub97c \ubbf8\ub9ac \uac10\uc9c0\ud558\uace0 \uc608\ube75\ud569\ub2c8\ub2e4. \uc774 \uc678\uc5d0\ub3c4 \ub2e4\uc591\ud55c invariant check\uac00 \ubaa8\ub4c8 \ub0b4 \ub0b4\uc7a5\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4."),(0,i.kt)("p",null,"Invariant check\ub294 \ube14\ub85d\uccb4\uc778 \uc5f0\uc0b0\ub825\uc744 \uc0c1\ub2f9\ud558\uac8c \uc18c\ubaa8\ud558\uae30 \ub54c\ubb38\uc5d0, \uae30\ubcf8\uc801\uc73c\ub85c \ube44\ud65c\uc131\ud654 \ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. Invariant check\ub97c \uc2e4\ud589\ud55c \uc0c1\ud0dc\ub85c \ub178\ub4dc\ub97c \uc2dc\uc791\ud558\uae30 \uc6d0\ud558\uc2dc\ub294 \uacbd\uc6b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"inv-check-period")," \ud50c\ub798\uadf8\ub97c \ucd94\uac00\ud558\uc138\uc694:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad start --inv-check-period [block-count]\n")),(0,i.kt)("p",null,"\ub9cc\uc57d \ub178\ub4dc \ub0b4 invariant\uac00 \ubb38\uc81c\ub97c \uac10\uc9c0\ud558\ub294 \uacbd\uc6b0, \ub178\ub4dc\ub294 \ud328\ub2c9\ud558\uc5ec \uba54\uc778\ub137\uc744 \uc911\uc9c0\ud558\ub294 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc804\uc1a1\ud569\ub2c8\ub2e4. \uc608\uc2dc \uba54\uc2dc\uc9c0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"invariant broken:\n loose token invariance:\n pool.NotBondedTokens: 100\n sum of account tokens: 101\n CRITICAL please submit the following transaction:\n gaiad tx crisis invariant-broken staking supply\n\n")),(0,i.kt)("p",null,"Invariant-broken \ud2b8\ub79c\uc7ad\uc158\uc744 \uc804\uc1a1\ud558\ub294 \uacbd\uc6b0 \ube14\ub85d\uccb4\uc778\uc774 \uc911\uc9c0\ub418\uae30 \ub584\ubb38\uc5d0 \uc218\uc218\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."),(0,i.kt)("h2",{id:"\uac80\uc99d\uc778-\ub178\ub4dc\ub85c-\uc5c5\uadf8\ub808\uc774\ub4dc-\ud558\uae30"},"\uac80\uc99d\uc778 \ub178\ub4dc\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uae30"),(0,i.kt)("p",null,"\uc774\uc81c \ud480\ub178\ub4dc \uc124\uc815\uc744 \uc644\ub8cc\ud558\uc168\uc2b5\ub2c8\ub2e4. \uc6d0\ud558\uc2e0\ub2e4\uba74 \ud480\ub178\ub4dc\ub97c \ucf54\uc2a4\ubaa8\uc2a4 \uac80\uc99d\uc778\uc73c\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubcf4\ud305 \ud30c\uc6cc \uc0c1\uc704 100\uc704 \uac80\uc99d\uc778\uc740 \ucf54\uc2a4\ubaa8\uc2a4 \ud5c8\ube0c\uc758 \uc0c8\ub85c\uc6b4 \ube14\ub85d \ud504\ub85c\ud3ec\uc988 \uacfc\uc815\uc5d0 \ucc38\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ",(0,i.kt)("a",{parentName:"p",href:"./validators/validator-setup.md"},"\uac80\uc99d\uc778 \uc138\ud305\ud558\uae30"),"\ub97c \ud655\uc778\ud558\uc138\uc694."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/01b0839c.62604091.js b/assets/js/01b0839c.62604091.js new file mode 100644 index 00000000000..52b63e4341e --- /dev/null +++ b/assets/js/01b0839c.62604091.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[292],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>p});var n=o(7294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),u=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=u(o),d=a,p=h["".concat(l,".").concat(d)]||h[d]||m[d]||r;return o?n.createElement(p,i(i({ref:t},c),{},{components:o})):n.createElement(p,i({ref:t},c))}));function p(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,i[1]=s;for(var u=2;u{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var n=o(7462),a=(o(7294),o(3905));const r={title:"Cosmos Hub to Launch Mainnet",order:1},i=void 0,s={unversionedId:"roadmap/launch/blog-1-en",id:"roadmap/launch/blog-1-en",title:"Cosmos Hub to Launch Mainnet",description:"Pre-launch Dependencies & How to Safely Claim Your Atoms",source:"@site/docs/roadmap/launch/blog-1-en.md",sourceDirName:"roadmap/launch",slug:"/roadmap/launch/blog-1-en",permalink:"/gaia/roadmap/launch/blog-1-en",draft:!1,tags:[],version:"current",frontMatter:{title:"Cosmos Hub to Launch Mainnet",order:1},sidebar:"tutorialSidebar",previous:{title:"Roadmap & Previous Releases",permalink:"/gaia/roadmap/"},next:{title:"The 3 Phases of the Cosmos Hub Mainnet",permalink:"/gaia/roadmap/launch/blog-2-en"}},l={},u=[{value:"Pre-launch Dependencies & How to Safely Claim Your Atoms",id:"pre-launch-dependencies--how-to-safely-claim-your-atoms",level:2},{value:"Remaining Milestones for Launch",id:"remaining-milestones-for-launch",level:2},{value:"5 Cosmos-SDK Security Audits \u2714",id:"5-cosmos-sdk-security-audits-",level:3},{value:"4 Cosmos SDK Feature Freeze",id:"4-cosmos-sdk-feature-freeze",level:3},{value:"3 Game of Stakes Completed",id:"3-game-of-stakes-completed",level:3},{value:"2 Genesis Transactions Collected",id:"2-genesis-transactions-collected",level:3},{value:"1 Cosmos Hub Mainnet Launch",id:"1-cosmos-hub-mainnet-launch",level:3},{value:"Official Cosmos Communication Channels",id:"official-cosmos-communication-channels",level:2},{value:"Staying Safe (and Secure!) for Mainnet Launch",id:"staying-safe-and-secure-for-mainnet-launch",level:2}],c={toc:u},h="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"pre-launch-dependencies--how-to-safely-claim-your-atoms"},"Pre-launch Dependencies & How to Safely Claim Your Atoms"),(0,a.kt)("p",null,"In the summer of 2016, the ",(0,a.kt)("a",{parentName:"p",href:"https://cosmos.network/resources/whitepaper"},"Cosmos whitepaper")," was released. In the\nspring of 2017, the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/cosmos/fundraiser"},"Cosmos fundraiser")," was completed. In the first\nmonths of 2019, the software is ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/cosmos/cosmos-sdk/releases"},"feature complete"),". The launch of the\nCosmos Hub draws near. What does this mean for Atom holders?"),(0,a.kt)("p",null,"If you are an Atom holder, you will be able to delegate Atoms to validators on\nthe main network and vote on governance proposals. In fact, the future success\nof the network depends on you responsibly doing so! However, you will not be\nable to transfer Atoms yet. Transfers will be disabled at the protocol level\nuntil a hard-fork is executed to enable them."),(0,a.kt)("p",null,"Atom holders should carefully follow the guidelines in order to safely delegate\nAtoms. Please read through the entire guide first to familiarize yourself\nbefore you actually do anything: ",(0,a.kt)("a",{parentName:"p",href:"https://hub.cosmos.network/main/delegators/delegator-guide-cli.html"},"CLI guide")),(0,a.kt)("p",null,"The process outlined in the guide is currently the only verified and secure way\nto delegate Atoms at launch. This is because the gaiad tool used in the guide\nis the only wallet software undergoing third-party security audits right now.\nNo other wallet providers have begun security audits yet."),(0,a.kt)("p",null,"Remember that delegating Atoms involves significant risk. Once delegated to a\nvalidator, Atoms are bonded for a period of time during which they cannot be\nrecovered. If the validator misbehaves during this time, some or all of the\ndelegated Atoms may be burned. It is your responsibility to perform due\ndiligence on validators before delegating!"),(0,a.kt)("p",null,"The Cosmos Hub is highly experimental software. In these early days, we can\nexpect to have issues, updates, and bugs. The existing tools require advanced\ntechnical skills and involve risks which are outside of the control of the\nInterchain Foundation and/or the Tendermint team (see also the risk section in\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf"},"Interchain Cosmos Contribution Terms"),"). Any use of this open source\n",(0,a.kt)("a",{parentName:"p",href:"https://www.apache.org/licenses/LICENSE-2.0"},"Apache 2.0 licensed")," software is done at your own risk and on a \u201cAS\nIS\u201d basis without warranties or conditions of any kind, and any and all\nliability of the Interchain Foundation and/or the Tendermint team for damages\narising in connection to the software is excluded. Please exercise extreme\ncaution!"),(0,a.kt)("p",null,"If you are looking for more information about delegation and want to talk to\nthe folks developing Cosmos, join the virtual meetup on February 14 where you\nwill be walked through the step-by-step instructions for delegating Atoms at\nlaunch."),(0,a.kt)("p",null,"Register here: ",(0,a.kt)("a",{parentName:"p",href:"https://register.gotowebinar.com/register/5028753165739687691"},"gotowebinar.com/register/")),(0,a.kt)("h2",{id:"remaining-milestones-for-launch"},"Remaining Milestones for Launch"),(0,a.kt)("p",null,"To follow mainnet launch progress, please bookmark:\n",(0,a.kt)("a",{parentName:"p",href:"https://cosmos.network/launch"},"cosmos.network/launch"),"."),(0,a.kt)("h3",{id:"5-cosmos-sdk-security-audits-"},"5 Cosmos-SDK Security Audits \u2714"),(0,a.kt)("p",null,"In early January, the Cosmos-SDK underwent the first in a series of third-party\nsecurity assessments scheduled for Q1 2019. This audit took place over a two\nand a half week period. To date, two different security auditing firms have\nassessed various parts of the Cosmos-SDK and a third audit is under way."),(0,a.kt)("h3",{id:"4-cosmos-sdk-feature-freeze"},"4 Cosmos SDK Feature Freeze"),(0,a.kt)("p",null,"The final breaking changes to the Cosmos-SDK are included in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/cosmos/cosmos-sdk/projects/27"},"v0.31.0\nlaunch RC"),". Once this RC is completed, the Cosmos-SDK team will engage in a\nround of internal bug hunting to further ensure sufficient pre-launch security\ndue diligence."),(0,a.kt)("p",null,"Right after Cosmos-SDK v0.31.0 is released, a Gaia testnet will be released in\nan effort to flush out any hard to find bugs."),(0,a.kt)("h3",{id:"3-game-of-stakes-completed"},"3 Game of Stakes Completed"),(0,a.kt)("p",null,"Game of Stakes (GoS), ",(0,a.kt)("a",{parentName:"p",href:"https://blog.cosmos.network/announcing-incentivized-testnet-game-efe64e0956f6"},"the first adversarial testnet competition of its\nkind"),", was launched in December 2018 to stress test the economic incentive\nand social layers of a blockchain network secured purely by Proof-of-Stake. The\nGoS blockchain was successfully hard-forked three times to date. As soon as the\nGoS concludes, the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring"},"scoring criteria")," will be used to determine\nwinners. Those will be announced following the completion of the game."),(0,a.kt)("h3",{id:"2-genesis-transactions-collected"},"2 Genesis Transactions Collected"),(0,a.kt)("p",null,"The Interchain Foundation will publish a recommendation for the allocation of\nAtoms at genesis. This will include allocations for Cosmos fundraiser\nparticipants, early contributors, and Game of Stakes winners. Any one with a\nrecommended allocation will have the opportunity to submit a gentx, which is\nrequired to become a validator at genesis. The ultimate result of the\nrecommended allocation and the collection of gentxs is a final ",(0,a.kt)("a",{parentName:"p",href:"https://forum.cosmos.network/t/genesis-files-network-starts-vs-upgrades/1464"},"genesis\nfile"),"."),(0,a.kt)("h3",{id:"1-cosmos-hub-mainnet-launch"},"1 Cosmos Hub Mainnet Launch"),(0,a.kt)("p",null,"Once a genesis file is adopted by the community, and +\u2154 of the voting power\ncomes online, the Cosmos mainnet will be live."),(0,a.kt)("h2",{id:"official-cosmos-communication-channels"},"Official Cosmos Communication Channels"),(0,a.kt)("p",null,"These are the official accounts that will communicate launch details:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://twitter.com/cosmos"},"Cosmos Network")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/cosmos"},"Cosmos GitHub")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://blog.cosmos.network"},"Cosmos Blog"))),(0,a.kt)("p",null,"Please be aware that the ",(0,a.kt)("a",{parentName:"p",href:"https://forum.cosmos.network/"},"Cosmos forum"),", ",(0,a.kt)("a",{parentName:"p",href:"https://riot.im/app/#/group/+cosmos:matrix.org"},"Riot chat groups"),", and\n",(0,a.kt)("a",{parentName:"p",href:"http://t.me/cosmosproject"},"Telegram group")," should not be treated as official news from Cosmos."),(0,a.kt)("p",null,"If you have doubt or confusion about what next steps to take and are unsure\nabout trustworthy sources of information, do nothing for the initial period and\nwait for an update via the three communication channels listed above. Do not\never provide your 12 words to any admin, websites or unofficial software."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"We will never ask you for your private key or your seed phrase.")),(0,a.kt)("h2",{id:"staying-safe-and-secure-for-mainnet-launch"},"Staying Safe (and Secure!) for Mainnet Launch"),(0,a.kt)("p",null,"The launch of any public blockchain is an incredibly exciting time, and it\u2019s\ndefinitely one that malicious actors may try to take advantage of for their own\npersonal gain. ",(0,a.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Social_engineering_%28security%29"},"Social engineering")," has existed for about as long as\nhuman beings have been on the planet, and in the technical era, it usually\ntakes in the form of ",(0,a.kt)("a",{parentName:"p",href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks"},"phishing")," or ",(0,a.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing"},"spearphishing"),". Both of these attacks are\nwildly successful forms of trickery that are responsible for over 95% of\naccount security breaches, and they don\u2019t just happen via email: these days,\nopportunistic and targeted phishing attempts take place ",(0,a.kt)("a",{parentName:"p",href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls"},"anywhere that you have\nan inbox"),". It doesn\u2019t matter if you\u2019re using Signal, Telegram, SMS,\nTwitter, or just checking your DMs on forums or social networks, attackers have\na ",(0,a.kt)("a",{parentName:"p",href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy"},"plethora of opportunities")," to gain foothold in your digital\nlife in effort to separate you from valuable information and assets that you\nmost definitely don\u2019t want to lose."),(0,a.kt)("p",null,"While the prospect of having to deal with a malicious actor plotting against\nyou may seem daunting, there are many things that you can do to protect\nyourself from all kinds of social engineering schemes. In terms of preparing\nfor mainnet launch, this should require training your instincts to successfully\ndetect and avoid security risks, curating resources to serve as a source of\ntruth for verifying information, and going through a few technical steps to\nreduce or eliminate the risk of key or credential theft."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Here are few rules of engagement to keep in mind when you\u2019re preparing for\nCosmos mainnet launch:")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Download software directly from official sources, and make sure that you\u2019re\nalways using the latest, most secure version of gaiad when you\u2019re doing\nanything that involves your 12 words. The latest versions of Tendermint, the\nCosmos-SDK, and gaiad will always be available from our official GitHub\nrepositories, and downloading them from there ensures that you will not be\ntricked into using a maliciously modified version of software.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Do not share your 12 words with anyone. The only person who should ever need\nto know them is you. This is especially important if you\u2019re ever approached\nby someone attempting to offer custodial services for your Atom: to avoid\nlosing control of your tokens, you should store them offline to minimize the\nrisk of theft and have a strong backup strategy in place. And never, ever\nshare them with anyone else.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Be skeptical of unexpected attachments or emails that ask you to visit a\nsuspicious or unfamiliar website in the context of blockchains or\ncryptocurrency. An attacker may attempt to lure you to a ",(0,a.kt)("a",{parentName:"p",href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/"},"compromised site"),"\ndesigned to steal sensitive information from your computer. If you\u2019re a Gmail\nuser, test your resilience against the latest email-based phishing tactics\n",(0,a.kt)("a",{parentName:"p",href:"https://phishingquiz.withgoogle.com/"},"here"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Do your due diligence before purchasing Atoms. Atoms will not be transferable\nat launch, so they ",(0,a.kt)("em",{parentName:"p"},"cannot")," be bought or sold until a hard fork enables them\nto be. If and when they become transferable, make sure that you\u2019ve researched\nthe seller or exchange to confirm that the Atoms are coming from a\ntrustworthy source.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Neither the Tendermint team nor the Interchain Foundation will be selling\nAtoms, so if you see social media posts or emails advertising a token sale\nfrom us, they\u2019re not real and should be avoided. Enable 2-factor\nauthentication, and be mindful of recovery methods used to regain access to\nyour most important accounts. Unprotected accounts like email, social media,\nyour GitHub account, the Cosmos Forum and anything in between could give an\nattacker opportunities to gain foothold in your online life. If you haven\u2019t\ndone so yet, start using an authenticator app or a hardware key immediately\nwherever you manage your tokens. This is a simple, effective, and proven way\nto reduce the risk of account theft.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Be skeptical of technical advice, especially advice that comes from people\nyou do not know in forums and on group chat channels. Familiarize yourself\nwith important commands, especially those that will help you carry out\nhigh-risk actions, and consult our official documentation to make sure that\nyou\u2019re not being tricked into doing something that will harm you or your\nvalidator. And remember that the Cosmos forum, Riot channels, and Telegram\nare not sources of official information or news about Cosmos.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Verify transactions before hitting send. Yes, those address strings are long,\nbut visually comparing them in blocks of 4 characters at a time may be the\ndifference between sending them to the right place or sending them into\noblivion."))),(0,a.kt)("p",null,(0,a.kt)("em",{parentName:"p"},"If a deal pops up that ",(0,a.kt)("a",{parentName:"em",href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets"},"sounds too good to be true"),", or a message shows\nup asking for information that should never, ever be shared with someone else,\nyou can always work to verify it before engaging with it by navigating to a\nwebsite or official Cosmos communication channel on your own. No one from\nCosmos, the Tendermint team or the Interchain Foundation will ever send an\nemail that asks for you to share any kind of account credentials or your 12\nwords with us, and we will always use our official blog, Twitter and GitHub\naccounts to communicate important news directly to the Cosmos community.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/01c94f40.2eb88dcb.js b/assets/js/01c94f40.2eb88dcb.js new file mode 100644 index 00000000000..2f1dcdfad59 --- /dev/null +++ b/assets/js/01c94f40.2eb88dcb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[5840],{3905:(e,t,o)=>{o.d(t,{Zo:()=>m,kt:()=>d});var i=o(7294);function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function a(e){for(var t=1;t=0||(s[o]=e[o]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(s[o]=e[o])}return s}var l=i.createContext({}),c=function(e){var t=i.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},m=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var o=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,m=r(e,["components","mdxType","originalType","parentName"]),u=c(o),h=s,d=u["".concat(l,".").concat(h)]||u[h]||p[h]||n;return o?i.createElement(d,a(a({ref:t},m),{},{components:o})):i.createElement(d,a({ref:t},m))}));function d(e,t){var o=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=o.length,a=new Array(n);a[0]=h;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[u]="string"==typeof e?e:s,a[1]=r;for(var c=2;c{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>n,metadata:()=>r,toc:()=>c});var i=o(7462),s=(o(7294),o(3905));const n={title:"ATOM \ud83e\udd1d Osmosis - Allocate Community Pool to ATOM Liquidity Incentives"},a=void 0,r={unversionedId:"governance/proposals/2021-07-atom-liquidity-incentives/README",id:"governance/proposals/2021-07-atom-liquidity-incentives/README",title:"ATOM \ud83e\udd1d Osmosis - Allocate Community Pool to ATOM Liquidity Incentives",description:"ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos.",source:"@site/docs/governance/proposals/2021-07-atom-liquidity-incentives/README.md",sourceDirName:"governance/proposals/2021-07-atom-liquidity-incentives",slug:"/governance/proposals/2021-07-atom-liquidity-incentives/",permalink:"/gaia/governance/proposals/2021-07-atom-liquidity-incentives/",draft:!1,tags:[],version:"current",frontMatter:{title:"ATOM \ud83e\udd1d Osmosis - Allocate Community Pool to ATOM Liquidity Incentives"},sidebar:"tutorialSidebar",previous:{title:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",permalink:"/gaia/governance/proposals/2021-05-gravity-bridge-deployment/"},next:{title:"Make the Cosmos Hub the IBC Router",permalink:"/gaia/governance/proposals/2021-09-hub-ibc-router/"}},l={},c=[],m={toc:c},u="wrapper";function p(e){let{components:t,...o}=e;return(0,s.kt)(u,(0,i.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"Osmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x\u2019d 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."),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"In addition to these native OSMO LP Rewards, the platform also includes a feature called \u201cexternal incentives\u201d 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: ",(0,s.kt)("a",{parentName:"p",href:"https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413"},"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."),(0,s.kt)("p",null,"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."),(0,s.kt)("p",null,"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:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Zaki Manian"),(0,s.kt)("li",{parentName:"ul"},"Federico Kunze"),(0,s.kt)("li",{parentName:"ul"},"Marko Baricevic")),(0,s.kt)("p",null,"This is one small step for the Hub, but one giant leap for ATOM-aligned."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/03ffd32e.ee48bffc.js b/assets/js/03ffd32e.ee48bffc.js new file mode 100644 index 00000000000..ece38db0ab7 --- /dev/null +++ b/assets/js/03ffd32e.ee48bffc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[9364],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var o=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},c=o.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=p(a),c=r,m=h["".concat(l,".").concat(c)]||h[c]||d[c]||n;return a?o.createElement(m,i(i({ref:t},u),{},{components:a})):o.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var o=a(7462),r=(a(7294),a(3905));const n={title:"Stargate Upgrade- Second time is a charm"},i=void 0,s={unversionedId:"governance/proposals/2021-01-stargate-upgrade-b/README",id:"governance/proposals/2021-01-stargate-upgrade-b/README",title:"Stargate Upgrade- Second time is a charm",description:"Stargate Upgrade banner graphic",source:"@site/docs/governance/proposals/2021-01-stargate-upgrade-b/README.md",sourceDirName:"governance/proposals/2021-01-stargate-upgrade-b",slug:"/governance/proposals/2021-01-stargate-upgrade-b/",permalink:"/gaia/governance/proposals/2021-01-stargate-upgrade-b/",draft:!1,tags:[],version:"current",frontMatter:{title:"Stargate Upgrade- Second time is a charm"},sidebar:"tutorialSidebar",previous:{title:"Cosmos Stargate Hub Upgrade Proposal 2 - Time to Upgrade",permalink:"/gaia/governance/proposals/2021-01-stargate-upgrade/"},next:{title:"Enable IBC Transfers",permalink:"/gaia/governance/proposals/2021-03-enable-ibc-transfers/"}},l={},p=[{value:"by Iqlusion",id:"by-iqlusion",level:2},{value:"Key Results",id:"key-results",level:2},{value:"Context",id:"context",level:2},{value:"Aborting of Proposal 35",id:"aborting-of-proposal-35",level:3},{value:"The Stargate Plan",id:"the-stargate-plan",level:2},{value:"Stargate Plan Results",id:"stargate-plan-results",level:2},{value:"1. Ecoystem Participation",id:"1-ecoystem-participation",level:3},{value:"2. Critical Partner Support",id:"2-critical-partner-support",level:3},{value:"3. Documentation and Self-Certification",id:"3-documentation-and-self-certification",level:3},{value:"Conclusion",id:"conclusion",level:3},{value:"Cosmos Stargate Integration Success",id:"cosmos-stargate-integration-success",level:3},{value:"Prop 29",id:"prop-29",level:2},{value:"Stargate Upgrade Steps",id:"stargate-upgrade-steps",level:2},{value:"Time of the Upgrade",id:"time-of-the-upgrade",level:2},{value:"The git commit of Gaia that we are upgrading to",id:"the-git-commit-of-gaia-that-we-are-upgrading-to",level:2},{value:"What we're doing while voting is happening",id:"what-were-doing-while-voting-is-happening",level:2},{value:"What is the upgrade abort process",id:"what-is-the-upgrade-abort-process",level:2}],u={toc:p},h="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(h,(0,o.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://siasky.net/bADrO0dW2KJC0ZS1uie389nmV6MTroRqTNaeFPuTtR7qow",alt:"Stargate Upgrade banner graphic"})),(0,r.kt)("h2",{id:"by-iqlusion"},"by Iqlusion"),(0,r.kt)("p",null,"Jan 28, 2021"),(0,r.kt)("h2",{id:"key-results"},"Key Results"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"If passed, this governance proposal would commit the Cosmos Hub to halting the ",(0,r.kt)("inlineCode",{parentName:"p"},"cosmoshub-3")," at 06:00 UTC on Feb 18th exporting the state and starting ",(0,r.kt)("inlineCode",{parentName:"p"},"cosmoshub-4")," based on gaia 4.0.0"),(0,r.kt)("h2",{id:"context"},"Context"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"In ",(0,r.kt)("a",{parentName:"p",href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW"},"Proposal 27"),", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate."),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"aborting-of-proposal-35"},"Aborting of Proposal 35"),(0,r.kt)("p",null,"Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cosmos/gaia/pull/559"},"Additional review of prop 29 and migration testing by zmanian \xb7 Pull Request #559 \xb7 cosmos/gaia \xb7 GitHub")),(0,r.kt)("li",{parentName:"ul"},"A balance validation regression was identified during Prop 29 code review. ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk/pull/8417"},"x/bank: balance and metadata validation by fedekunze \xb7 Pull Request #8417 \xb7 cosmos/cosmos-sdk \xb7 GitHub"))),(0,r.kt)("h2",{id:"the-stargate-plan"},"The Stargate Plan"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"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 ",(0,r.kt)("a",{parentName:"p",href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW"},"original Stargate Upgrade Proposal 27"),". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Report back to the Hub on the success of the integration process."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub\u2019s ecosystem."))),(0,r.kt)("h2",{id:"stargate-plan-results"},"Stargate Plan Results"),(0,r.kt)("hr",null),(0,r.kt)("h3",{id:"1-ecoystem-participation"},"1. Ecoystem Participation"),(0,r.kt)("p",null,"The results of ecosystem participation and engagement are available in our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md"},"Stargate Ecosystem Readiness Report"),". 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."),(0,r.kt)("p",null,"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 ",(0,r.kt)("a",{parentName:"p",href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8"},'"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),"."),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet."),(0,r.kt)("h3",{id:"2-critical-partner-support"},"2. Critical Partner Support"),(0,r.kt)("p",null,"We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md"},"IBC Readiness Matrix")," that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate."),(0,r.kt)("p",null,"We also completed and delivered a completed legacy Amino Audit, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md"},"AminoRest & You"),". 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."),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"3-documentation-and-self-certification"},"3. Documentation and Self-Certification"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"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 ",(0,r.kt)("a",{parentName:"p",href:"https://discord.com/invite/cosmosnetwork"},"#stargate Discord")," channel."),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"conclusion"},"Conclusion"),(0,r.kt)("p",null,"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 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmosdevs/stargate"},"repository"),"."),(0,r.kt)("h3",{id:"cosmos-stargate-integration-success"},"Cosmos Stargate Integration Success"),(0,r.kt)("p",null,"Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams."),(0,r.kt)("h2",{id:"prop-29"},"Prop 29"),(0,r.kt)("p",null,"This upgrade also implements the fund recovery procedure defined in proposal 29. The code is ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go"},"here"),". 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."),(0,r.kt)("h2",{id:"stargate-upgrade-steps"},"Stargate Upgrade Steps"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:"),(0,r.kt)("p",null,"The upgrade instructions will continue to improve as a living ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-3.md"},"document"),". The Gaia maintainers will continue to improve the instruction below."),(0,r.kt)("p",null,"This section is with the current ",(0,r.kt)("inlineCode",{parentName:"p"},"gaia 2.0.*")," implementation."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Validators should set their ",(0,r.kt)("inlineCode",{parentName:"p"},"gaia")," with a halt time of ",(0,r.kt)("inlineCode",{parentName:"p"},"1613628000"),"ie. 06:00 UTC on Feb 18th in Unix time.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Validators should then export the current cosmos state with ",(0,r.kt)("inlineCode",{parentName:"p"},"gaiad export > cosmoshub-3-export.json"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Validators should determine the height of the last block as ",(0,r.kt)("inlineCode",{parentName:"p"},"last-cosmoshub-3_block"),". This can be easily determined from gaia logs.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Validators should back up their ",(0,r.kt)("inlineCode",{parentName:"p"},".gaiad")," directory."))),(0,r.kt)("p",null,"This section is with the upgraded ",(0,r.kt)("inlineCode",{parentName:"p"},"gaia 4.0.*")," implemenataion."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Validators should then migrate the exported genesis state. ",(0,r.kt)("inlineCode",{parentName:"li"},"gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")),(0,r.kt)("li",{parentName:"ol"},"Validators should (",(0,r.kt)("strong",{parentName:"li"},"AFTER ENSURING IT IS BACKED UP"),"!) delete their ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.gaiad")," directory and create a new one with ",(0,r.kt)("inlineCode",{parentName:"li"},"gaiad init [name]")," and then edit their configuration files or recover the config files from backups."),(0,r.kt)("li",{parentName:"ol"},"Validators should then start ",(0,r.kt)("inlineCode",{parentName:"li"},"cosmoshub-4")," with ",(0,r.kt)("inlineCode",{parentName:"li"},"gaiad start"),". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by ",(0,r.kt)("inlineCode",{parentName:"li"},"gaiad start --x-crisis-skip-assert-invariants"),".")),(0,r.kt)("p",null,"Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4."),(0,r.kt)("h2",{id:"time-of-the-upgrade"},"Time of the Upgrade"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"West Coast USA: 10 PM on Feb 17"),(0,r.kt)("li",{parentName:"ul"},"East Coast USA: 1 AM on Feb 18"),(0,r.kt)("li",{parentName:"ul"},"Central Europe: 7 AM on Feb 18"),(0,r.kt)("li",{parentName:"ul"},"Seoul: 5 PM on Feb 18")),(0,r.kt)("h2",{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"},"The git commit of Gaia that we are upgrading to"),(0,r.kt)("hr",null),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"a279d091c6f66f8a91c87943139ebaecdd84f689")),(0,r.kt)("h2",{id:"what-were-doing-while-voting-is-happening"},"What we're doing while voting is happening"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running."),(0,r.kt)("p",null,"We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/cosmos/stargate-launch/blob/master/ecosystem_readiness.md"},"Stargate Ecosystem Readiness Report")," 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."),(0,r.kt)("h2",{id:"what-is-the-upgrade-abort-process"},"What is the upgrade abort process"),(0,r.kt)("hr",null),(0,r.kt)("p",null,"There are multiple circumstances where the proposal should be abandoned even if it passes:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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 ",(0,r.kt)("inlineCode",{parentName:"p"},"cosmoshub-4"),". In this case, the validator set should restart cosmoshub-3 at ",(0,r.kt)("inlineCode",{parentName:"p"},"last-cosmoshub-3_block")," and a future governance proposal will be done to initiate another upgrade."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b65cac9.a4fb5473.js b/assets/js/0b65cac9.a4fb5473.js new file mode 100644 index 00000000000..4aa9dbf6221 --- /dev/null +++ b/assets/js/0b65cac9.a4fb5473.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[7382],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>h});var i=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function r(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=i.createContext({}),m=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},p=function(e){var n=m(e.components);return i.createElement(l.Provider,{value:n},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=m(t),u=o,h=d["".concat(l,".").concat(u)]||d[u]||c[u]||a;return t?i.createElement(h,r(r({ref:n},p),{},{components:t})):i.createElement(h,r({ref:n},p))}));function h(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var a=t.length,r=new Array(a);r[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[d]="string"==typeof e?e:o,r[1]=s;for(var m=2;m{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>m});var i=t(7462),o=(t(7294),t(3905));const a={title:"ADR 002 - Globalfee Module",order:2},r=void 0,s={unversionedId:"architecture/adr/adr-002-globalfee",id:"architecture/adr/adr-002-globalfee",title:"ADR 002 - Globalfee Module",description:"Changelog",source:"@site/docs/architecture/adr/adr-002-globalfee.md",sourceDirName:"architecture/adr",slug:"/architecture/adr/adr-002-globalfee",permalink:"/gaia/architecture/adr/adr-002-globalfee",draft:!1,tags:[],version:"current",frontMatter:{title:"ADR 002 - Globalfee Module",order:2},sidebar:"tutorialSidebar",previous:{title:"ADR 001 - Interchain Accounts",permalink:"/gaia/architecture/adr/adr-001-interchain-accounts"},next:{title:"ADR Template",permalink:"/gaia/architecture/templates/adr-template"}},l={},m=[{value:"Changelog",id:"changelog",level:2},{value:"Status",id:"status",level:2},{value:"Context",id:"context",level:2},{value:"Decision",id:"decision",level:2},{value:"ZeroCoins in MinimumGasPricesParam",id:"zerocoins-in-minimumgaspricesparam",level:3},{value:"Coins Split",id:"coins-split",level:4},{value:"Fee Checks",id:"fee-checks",level:4},{value:"Bypass Message Types",id:"bypass-message-types",level:3},{value:"Fee Checks in DeliverTx",id:"fee-checks-in--delivertx",level:3},{value:"Consequences",id:"consequences",level:2},{value:"Positive",id:"positive",level:3},{value:"Negative",id:"negative",level:3},{value:"References",id:"references",level:2}],p={toc:m},d="wrapper";function c(e){let{components:n,...t}=e;return(0,o.kt)(d,(0,i.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"changelog"},"Changelog"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"2023-06-12: Initial Draft")),(0,o.kt)("h2",{id:"status"},"Status"),(0,o.kt)("p",null,"ACCEPTED Implemented"),(0,o.kt)("h2",{id:"context"},"Context"),(0,o.kt)("p",null,"The globalfee module was created to manage a parameter called ",(0,o.kt)("inlineCode",{parentName:"p"},"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:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the ",(0,o.kt)("inlineCode",{parentName:"li"},"MinimumGasPricesParam"),". The ",(0,o.kt)("inlineCode",{parentName:"li"},"MinimumGasPricesParam")," is of ",(0,o.kt)("inlineCode",{parentName:"li"},"sdk.DecCoins")," type. In the Cosmos SDK, ",(0,o.kt)("inlineCode",{parentName:"li"},"sdk.DecCoins")," are ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk/blob/67f04e629623d4691c4b2e48806f7793a3aa211e/types/dec_coin.go#L160-L177"},"sanitized")," to remove zero-value coins. As a result, several methods from ",(0,o.kt)("inlineCode",{parentName:"li"},"sdk.Coins")," were ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/cosmos/gaia/blob/890ab3aa2e5788537b0d2ebc9bafdc968340e0e5/x/globalfee/ante/fee_utils.go#L46-L104"},"redefined in the Gaia fee antehandler"),".")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"BypassMinFeeMsgTypes")," exists in ",(0,o.kt)("inlineCode",{parentName:"li"},"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."),(0,o.kt)("li",{parentName:"ul"},"The fee check logic is only executed in ",(0,o.kt)("inlineCode",{parentName:"li"},"CheckTx"),". This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.")),(0,o.kt)("h2",{id:"decision"},"Decision"),(0,o.kt)("p",null,"To fix these problems, the following changes are added to the globalfee module:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"ZeroCoins in ",(0,o.kt)("inlineCode",{parentName:"strong"},"MinimumGasPricesParam"),":"),"\\\nRefactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Bypass Message Types:"),"\\\n",(0,o.kt)("inlineCode",{parentName:"li"},"BypassMinFeeMsgTypes")," is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Check Fees in ",(0,o.kt)("inlineCode",{parentName:"strong"},"DeliverTx"),":"),"\\\nThe fee check is factored to executed in both ",(0,o.kt)("inlineCode",{parentName:"li"},"DeliverTx")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"CheckTx"),". This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, ",(0,o.kt)("inlineCode",{parentName:"li"},"MinimumGasPricesParam")," is introduced as a globalfee param.")),(0,o.kt)("h3",{id:"zerocoins-in-minimumgaspricesparam"},"ZeroCoins in ",(0,o.kt)("inlineCode",{parentName:"h3"},"MinimumGasPricesParam")),(0,o.kt)("h4",{id:"coins-split"},"Coins Split"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"CombinedFeeRequirement")," refers to the fee requirement that takes into account both ",(0,o.kt)("inlineCode",{parentName:"p"},"globalFees")," (",(0,o.kt)("inlineCode",{parentName:"p"},"MinimumGasPricesParam")," in the globalfee module) and ",(0,o.kt)("inlineCode",{parentName:"p"},"localFees")," (",(0,o.kt)("inlineCode",{parentName:"p"},"minimum-gas-prices")," in ",(0,o.kt)("inlineCode",{parentName:"p"},"app.toml"),"). This requirement is calculated as the maximum value between ",(0,o.kt)("inlineCode",{parentName:"p"},"globalFees")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"localFees")," for denomination exists ",(0,o.kt)("inlineCode",{parentName:"p"},"globalFees"),".\nThe allowance of zero coins in the ",(0,o.kt)("inlineCode",{parentName:"p"},"MinimumGasPricesParam")," within the globalfee module implies that ",(0,o.kt)("inlineCode",{parentName:"p"},"CombinedFeeRequirement(globalFees, localFees)")," also permits zero coins. Therefore, the ",(0,o.kt)("inlineCode",{parentName:"p"},"CombinedFeeRequirement")," doesn't meet the requirements of certain ",(0,o.kt)("inlineCode",{parentName:"p"},"sdk.Coins")," methods. For instance, the ",(0,o.kt)("inlineCode",{parentName:"p"},"DenomsSubsetOf")," method requires coins that do not contain zero coins."),(0,o.kt)("p",null,"To address this issue, the ",(0,o.kt)("inlineCode",{parentName:"p"},"CombinedFeeRequirement")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoins")," are split as shown in the chart below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-mermaid"},"---\ntitle: Fee Requirements and Fee Splits\n---\nflowchart TD\n subgraph feeReq\n A[CombinedFeeRequirement]--\x3eB[/Split zero/nonzero coins/]\n B--\x3e|zero coins| C[zeroCoinFeesDenomReq];\n B--\x3e|nonzero coins| D[nonzeroCoinFeesDenomReq];\n\n end\n\n subgraph feeCoin\n E[feeCoins]--\x3eF[/Split by the denoms in zero/nonzero CoinFeesDenomReq/]\n F--\x3e|denoms in zeroCoinFeesDenomReq set| G[feeCoinsZeroDenom]\n F--\x3e|denoms in nonzeroCoinFeesDenomReq set| H[feeCoinsNonZeroDenom]\n end\n")),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"CombinedFeeRequirement")," is split into zero and non-zero coins, forming ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq"),". Similarly, the paid fees (feeCoins) are split into ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsNonZeroDenom")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsZeroDenom"),", based on the denominations of ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq")," as shown in the following code snippet."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-go"}," nonZeroCoinFeesReq, zeroCoinFeesDenomReq := getNonZeroFees(feeRequired)\n\n // feeCoinsNonZeroDenom contains non-zero denominations from the feeRequired\n // feeCoinsNonZeroDenom is used to check if the fees meets the requirement imposed by nonZeroCoinFeesReq\n // when feeCoins does not contain zero coins' denoms in feeRequired\n feeCoinsNonZeroDenom, feeCoinsZeroDenom := splitCoinsByDenoms(feeCoins, zeroCoinFeesDenomReq)\n\n")),(0,o.kt)("h4",{id:"fee-checks"},"Fee Checks"),(0,o.kt)("p",null,"The Workflow of feeCheck is shown below:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-mermaid"},"---\ntitle: Fee Check\n---\nflowchart TD\n\nA[feeCoinsNonZeroDenom]--\x3eB[/DenomsSubsetOf_nonZeroCoinFeesReq/];\nB--\x3e|yes|C[is_bypass_msg];\nB--\x3e|no|D((reject));\n\nC--\x3e|yes|pass1((pass));\nC--\x3e|no|D[/contain_zeroCoinFeesDenomReq_denom/];\n\nD--\x3e|yes|pass2((pass));\nD--\x3e|no|E[/feeCoinsZeroDenom_nonEmpty/];\n\n\nE--\x3e|yes|pass3((pass));\nE--\x3e|no|F[/IsAnyGTE_nonZeroCoinFeesDenomReq/];\n\nF--\x3e|yes|pass4((pass));\nF--\x3e|no|reject2((reject));\n")),(0,o.kt)("p",null,"The split enable checking ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsNonZeroDenom")," against ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsZeroDenom")," against\n",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq")," (as shown in the following code snippet). In the check of ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsNonZeroDenom")," against ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq"),", the Cosmos SDK coins' methods can be used since zero coins are removed from the ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq"),", while in the check ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsZeroDenom")," against ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq"),", only denoms need to be checked."),(0,o.kt)("p",null,"Checking ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsNonZeroDenom")," against ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq"),":"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-go"},' if !feeCoinsNonZeroDenom.IsAnyGTE(nonZeroCoinFeesReq) {\n return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient fees; got: %s required: %s", feeCoins.String(), feeRequired.String())\n }\n')),(0,o.kt)("p",null,"Here is an example of how the coins split and checked in fee antehandler:\\\n",(0,o.kt)("strong",{parentName:"p"},"assumption"),":\\\n",(0,o.kt)("inlineCode",{parentName:"p"},"globalfee=[1photon, 0uatom, 1stake]")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"local min-gas-prices=[0.5stake]")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"fee requirement"),":\\\n",(0,o.kt)("inlineCode",{parentName:"p"},"combinedFeeRequirement=[1photon, 0uatom, 1stake]")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"split fee requirement"),":\\\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"combinedFeeRequirement")," into ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq=[0uatom]"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq=[1photon, 1stake]")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"split the paid fees"),":\\\nif ",(0,o.kt)("inlineCode",{parentName:"p"},"paidFee=[1uatom, 0.5photon]"),",\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"splitCoinsByDenoms")," splits the paidFee into ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsZeroDenom=[1uatom]")," (the same denom as zero coins in ",(0,o.kt)("inlineCode",{parentName:"p"},"combinedFeeRequirement"),"), and ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsNonZeroDenom=[0.5stake]"),"\nthen ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoinsZeroDenom=[1uatom]")," is checked by ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesReq=[1photon, 1stake]"),"."),(0,o.kt)("p",null,"Please note that ",(0,o.kt)("inlineCode",{parentName:"p"},"feeCoins")," does not contain zero coins. The fee coins are split according to the denoms in ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesDenomReq"),". If feeCoins contains coins not in both ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesDenomReq"),", the transaction should be rejected. On the contrary, if feeCoins' denoms are in either ",(0,o.kt)("inlineCode",{parentName:"p"},"zeroCoinFeesDenomReq")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"nonZeroCoinFeesDenomReq"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"len(zeroCoinFeesDenomReq)!=0"),", the transaction can directly pass, otherwise, the fee amount need to be checked."),(0,o.kt)("h3",{id:"bypass-message-types"},"Bypass Message Types"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"BypassMinFeeMsgTypes")," was a setup in ",(0,o.kt)("inlineCode",{parentName:"p"},"config/app.toml")," before the refactor. ",(0,o.kt)("inlineCode",{parentName:"p"},"BypassMinFeeMsgTypes")," is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,",(0,o.kt)("inlineCode",{parentName:"p"},"MaxTotalBypassMinFeeMsgGasUsage")," is also introduced as a globalfee param."),(0,o.kt)("h3",{id:"fee-checks-in--delivertx"},"Fee Checks in ",(0,o.kt)("inlineCode",{parentName:"h3"},"DeliverTx")),(0,o.kt)("p",null,"Implementing fee checks within the ",(0,o.kt)("inlineCode",{parentName:"p"},"DeliverTx")," function introduces a few requirements:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Deterministic Minimum Fee Requirement"),": For the ",(0,o.kt)("inlineCode",{parentName:"li"},"DeliverTx")," process, it is essential to have a deterministic minimum fee requirement. In ",(0,o.kt)("inlineCode",{parentName:"li"},"CheckTx"),", fee is checked by the ",(0,o.kt)("inlineCode",{parentName:"li"},"CombinedFeeRequirement(globalFees, localFees)"),", which considers both ",(0,o.kt)("inlineCode",{parentName:"li"},"minimum-gas-prices")," from ",(0,o.kt)("inlineCode",{parentName:"li"},"config/app.toml")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"MinimumGasPricesParam")," from the globalfee Params (For more details, see ",(0,o.kt)("a",{parentName:"li",href:"../modules/globalfee.md"},"globalfee.md"),"). ",(0,o.kt)("inlineCode",{parentName:"li"},"CombinedFeeRequirement")," contains non-deterministic part: ",(0,o.kt)("inlineCode",{parentName:"li"},"minimum-gas-prices")," from ",(0,o.kt)("inlineCode",{parentName:"li"},"app.toml"),". Therefore, ",(0,o.kt)("inlineCode",{parentName:"li"},"CombinedFeeRequirement")," cannot be used in ",(0,o.kt)("inlineCode",{parentName:"li"},"DeliverTx"),". In ",(0,o.kt)("inlineCode",{parentName:"li"},"DeliverTx"),", only ",(0,o.kt)("inlineCode",{parentName:"li"},"MinimumGasPricesParam")," in globalfee Params is used for fee verification. The code implementation is shown below. ")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-go"},'func (mfd FeeDecorator) GetTxFeeRequired(ctx sdk.Context, tx sdk.FeeTx) (sdk.Coins, error) {\n // Get required global fee min gas prices\n // Note that it should never be empty since its default value is set to coin={"StakingBondDenom", 0}\n globalFees, err := mfd.GetGlobalFee(ctx, tx)\n if err != nil {\n return sdk.Coins{}, err\n }\n\n // In DeliverTx, the global fee min gas prices are the only tx fee requirements.\n if !ctx.IsCheckTx() {\n return globalFees, nil\n }\n\n // In CheckTx mode, the local and global fee min gas prices are combined\n // to form the tx fee requirements\n\n // Get local minimum-gas-prices\n localFees := GetMinGasPrice(ctx, int64(tx.GetGas()))\n\n // Return combined fee requirements\n return CombinedFeeRequirement(globalFees, localFees)\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Deterministic Bypass Parameters"),": The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, ",(0,o.kt)("inlineCode",{parentName:"p"},"BypassMinFeeMsgTypes")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"MaxTotalBypassMinFeeMsgGasUsage")," parameters are moved to a persistent store.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Module Initialization Order"),": The genutils module must be initialized before the globalfee module. This is due to the ",(0,o.kt)("inlineCode",{parentName:"p"},"DeliverGenTxs")," in the genutils module, is called during ",(0,o.kt)("inlineCode",{parentName:"p"},"initGenesis"),". This function executes ",(0,o.kt)("inlineCode",{parentName:"p"},"DeliverTx"),", which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in ",(0,o.kt)("inlineCode",{parentName:"p"},"DeliverTx"),".\nTo prevent the ",(0,o.kt)("inlineCode",{parentName:"p"},"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 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/issues/2489"},"Gaia Issue #2489")," for more context."))),(0,o.kt)("h2",{id:"consequences"},"Consequences"),(0,o.kt)("h3",{id:"positive"},"Positive"),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"negative"},"Negative"),(0,o.kt)("p",null,"The introduction of FeeDecorator has replaced the usage of ",(0,o.kt)("inlineCode",{parentName:"p"},"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."),(0,o.kt)("h2",{id:"references"},"References"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"../modules/globalfee.md"},"Documentation of the globalfee module"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0cac3bff.4fd218a0.js b/assets/js/0cac3bff.4fd218a0.js new file mode 100644 index 00000000000..18bc67008bb --- /dev/null +++ b/assets/js/0cac3bff.4fd218a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[7248],{3905:(e,a,t)=>{t.d(a,{Zo:()=>u,kt:()=>h});var r=t(7294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var l=r.createContext({}),p=function(e){var a=r.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},u=function(e){var a=p(e.components);return r.createElement(l.Provider,{value:a},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},c=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=p(t),c=n,h=m["".concat(l,".").concat(c)]||m[c]||d[c]||o;return t?r.createElement(h,i(i({ref:a},u),{},{components:t})):r.createElement(h,i({ref:a},u))}));function h(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var o=t.length,i=new Array(o);i[0]=c;var s={};for(var l in a)hasOwnProperty.call(a,l)&&(s[l]=a[l]);s.originalType=e,s[m]="string"==typeof e?e:n,i[1]=s;for(var p=2;p{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=t(7462),n=(t(7294),t(3905));const o={title:"Cosmos Hub 4, v9-Lambda Upgrade Instructions",order:5},i=void 0,s={unversionedId:"migration/cosmoshub-4-v9-Lambda-upgrade",id:"migration/cosmoshub-4-v9-Lambda-upgrade",title:"Cosmos Hub 4, v9-Lambda Upgrade Instructions",description:"This document describes the steps for validator and full node operators for the successful execution of the v9-Lambda Upgrade, which contains the following main new features/improvement:",source:"@site/docs/migration/cosmoshub-4-v9-Lambda-upgrade.md",sourceDirName:"migration",slug:"/migration/cosmoshub-4-v9-Lambda-upgrade",permalink:"/gaia/migration/cosmoshub-4-v9-Lambda-upgrade",draft:!1,tags:[],version:"current",frontMatter:{title:"Cosmos Hub 4, v9-Lambda Upgrade Instructions",order:5},sidebar:"tutorialSidebar",previous:{title:"Cosmos Hub 4, v8-Rho Upgrade Instructions",permalink:"/gaia/migration/cosmoshub-4-v8-Rho-upgrade"},next:{title:"Architecture Decision Records (ADR)",permalink:"/gaia/architecture/"}},l={},p=[{value:"On-chain governance proposal attains consensus",id:"on-chain-governance-proposal-attains-consensus",level:2},{value:"Upgrade will take place March 14-16, 2023",id:"upgrade-will-take-place-march-14-16-2023",level:2},{value:"Chain-id will remain the same",id:"chain-id-will-remain-the-same",level:2},{value:"Preparing for the upgrade",id:"preparing-for-the-upgrade",level:2},{value:"System requirement",id:"system-requirement",level:3},{value:"Backups",id:"backups",level:3},{value:"Testing",id:"testing",level:3},{value:"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1",id:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801",level:3},{value:"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0",id:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900",level:3},{value:"v9-Lambda upgrade steps",id:"v9-lambda-upgrade-steps",level:2},{value:"Method I: Manual Upgrade",id:"method-i-manual-upgrade",level:3},{value:"Method II: Upgrade using Cosmovisor",id:"method-ii-upgrade-using-cosmovisor",level:3},{value:"Manually preparing the Gaia v9.0.0 binary",id:"manually-preparing-the-gaia-v900-binary",level:3},{value:"Preparation",id:"preparation",level:5},{value:"Expected upgrade result",id:"expected-upgrade-result",level:4},{value:"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)",id:"auto-downloading-the-gaia-v900-binary-not-recommended",level:3},{value:"Preparation",id:"preparation-1",level:4},{value:"Expected result",id:"expected-result",level:4},{value:"Upgrade duration",id:"upgrade-duration",level:2},{value:"Rollback plan",id:"rollback-plan",level:2},{value:"Communications",id:"communications",level:2},{value:"Risks",id:"risks",level:2},{value:"Reference",id:"reference",level:2}],u={toc:p},m="wrapper";function d(e){let{components:a,...t}=e;return(0,n.kt)(m,(0,r.Z)({},u,t,{components:a,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"This document describes the steps for validator and full node operators for the successful execution of the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v9-lambda-upgrade-expected-q1-2023"},"v9-Lambda Upgrade"),", which contains the following main new features/improvement:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/interchain-security"},"Interchain-Security")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/interchain-security/releases/tag/v1.0.0"},"v1.0.0")," provider module. See the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md"},"ICS Spec")," for more details."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk"},"cosmos-sdk")," to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics"},"v0.45.13-ics"),". See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk/blob/releases/tag/v0.45.13-ics"},"CHANGELOG.md")," for details."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/ibc-go"},"ibc-go")," to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/ibc-go/blob/release/v4.2.x/CHANGELOG.md"},"v4.2.0"),". See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0"},"v4.2 Release Notes")," for details."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/informalsystems/tendermint"},"tendermint")," to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/informalsystems/tendermint/tree/v0.34.26"},"0.34.26"),". See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/informalsystems/tendermint/blob/v0.34.26/CHANGELOG.md#v03426"},"CHANGELOG.md")," for details."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/strangelove-ventures/packet-forward-middleware"},"packet-forward-middleware")," to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v4.0.4"},"v4.0.4"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/gaia/blob/main/tests/e2e/e2e_gov_test.go#L138"},"E2E ccv tests"),". Tests covering new functionality introduced by the provider module to add and remove a consumer chain via governance proposal."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/gaia/blob/main/tests/ics/interchain_security_test.go"},"integration ccv tests"),". Imports Interchain-Security's ",(0,n.kt)("inlineCode",{parentName:"li"},"TestCCVTestSuite")," and implements Gaia as the provider chain.")),(0,n.kt)("p",null,"TOC:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"},"Cosmos Hub 4, v9-Lambda Upgrade, Instructions"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#on-chain-governance-proposal-attains-consensus"},"On-chain governance proposal attains consensus")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#upgrade-will-take-place-march-15-2023"},"Upgrade will take place March 15, 203")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#chain-id-will-remain-the-same"},"Chain-id will remain the same")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#preparing-for-the-upgrade"},"Preparing for the upgrade"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#system-requirement"},"System requirement")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#backups"},"Backups")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#testing"},"Testing")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801"},"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900"},"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#v9-Lambda-upgrade-steps"},"v9-Lambda upgrade steps"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#method-i-manual-upgrade"},"Method I: Manual Upgrade")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#method-ii-upgrade-using-cosmovisor"},"Method II: Upgrade using Cosmovisor"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#manually-preparing-the-gaia-v900-binary"},"Manually preparing the binary"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#preparation"},"Preparation")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#expected-upgrade-result"},"Expected upgrade result")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#auto-downloading-the-gaia-v900-binary-not-recommended"},"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#preparation-1"},"Preparation")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#expected-result"},"Expected result")))))))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#upgrade-duration"},"Upgrade duration")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#rollback-plan"},"Rollback plan")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#communications"},"Communications")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#risks"},"Risks")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"#reference"},"Reference"))))),(0,n.kt)("h2",{id:"on-chain-governance-proposal-attains-consensus"},"On-chain governance proposal attains consensus"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.mintscan.io/cosmos/proposals/187"},"Proposal #187")," 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 ",(0,n.kt)("em",{parentName:"p"},"fully decentralized")," way."),(0,n.kt)("h2",{id:"upgrade-will-take-place-march-14-16-2023"},"Upgrade will take place March 14-16, 2023"),(0,n.kt)("p",null,"The upgrade will take place at a block height of ",(0,n.kt)("inlineCode",{parentName:"p"},"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 ",(0,n.kt)("a",{parentName:"p",href:"https://www.mintscan.io/cosmos/blocks/14470501"},"live countdown")," page."),(0,n.kt)("h2",{id:"chain-id-will-remain-the-same"},"Chain-id will remain the same"),(0,n.kt)("p",null,"The chain-id of the network will remain the same, ",(0,n.kt)("inlineCode",{parentName:"p"},"cosmoshub-4"),". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state."),(0,n.kt)("h2",{id:"preparing-for-the-upgrade"},"Preparing for the upgrade"),(0,n.kt)("h3",{id:"system-requirement"},"System requirement"),(0,n.kt)("p",null,"32GB RAM is recommended to ensure a smooth upgrade."),(0,n.kt)("p",null,"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."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"sudo fallocate -l 16G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n")),(0,n.kt)("h3",{id:"backups"},"Backups"),(0,n.kt)("p",null,"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 ",(0,n.kt)("inlineCode",{parentName:"p"},".gaia")," directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below ",(0,n.kt)("a",{parentName:"p",href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"},"upgrade by cosmovisor")," section."),(0,n.kt)("p",null,"It is critically important for validator operators to back-up the ",(0,n.kt)("inlineCode",{parentName:"p"},".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."),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("p",null,"For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/testnets/tree/master/local"},"v8-Rho local testnet")," or join in our ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/testnets/tree/master/public"},"v9-Lambda public-testnet"),"."),(0,n.kt)("h3",{id:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801"},"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1"),(0,n.kt)("p",null,"The Cosmos Hub mainnet network, ",(0,n.kt)("inlineCode",{parentName:"p"},"cosmoshub-4"),", is currently running ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/releases/v8.0.1"},"Gaia v8.0.1"),". 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 ",(0,n.kt)("inlineCode",{parentName:"p"},"1.18"),"."),(0,n.kt)("h3",{id:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900"},"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0"),(0,n.kt)("p",null,"The Cosmos Hub mainnet network, ",(0,n.kt)("inlineCode",{parentName:"p"},"cosmoshub-4"),", will run ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0"},"Gaia v9.0.0"),". Operators ",(0,n.kt)("em",{parentName:"p"},"MUST")," use this version post-upgrade to remain connected to the network."),(0,n.kt)("h2",{id:"v9-lambda-upgrade-steps"},"v9-Lambda upgrade steps"),(0,n.kt)("p",null,"There are 2 major ways to upgrade a node:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Manual upgrade"),(0,n.kt)("li",{parentName:"ul"},"Upgrade using ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor"},"Cosmovisor"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Either by manually preparing the new binary"),(0,n.kt)("li",{parentName:"ul"},"Or by using the auto-download functionality (this is not yet recommended)")))),(0,n.kt)("p",null,"If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade."),(0,n.kt)("h3",{id:"method-i-manual-upgrade"},"Method I: Manual Upgrade"),(0,n.kt)("p",null,"Make sure Gaia v9.0.0 is installed by either downloading a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0"},"compatable binary"),", or building from source. Building from source requires go 1.18."),(0,n.kt)("p",null,"Run Gaia v8.0.1 till upgrade height, the node will panic:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'ERR UPGRADE "v9-Lambda" NEEDED at height: 14470501: upgrade to v9-Lambda and applying upgrade "v9-Lambda" at height:14470501\n')),(0,n.kt)("p",null,"Stop the node, and switch the binary to Gaia v9.0.0 and re-start by ",(0,n.kt)("inlineCode",{parentName:"p"},"gaiad start"),"."),(0,n.kt)("p",null,"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."),(0,n.kt)("h3",{id:"method-ii-upgrade-using-cosmovisor"},"Method II: Upgrade using Cosmovisor"),(0,n.kt)("admonition",{type:"warning"},(0,n.kt)("span",{style:{color:"red"}},"**Please Read Before Proceeding**"),(0,n.kt)("br",null),"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."),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},(0,n.kt)("strong",{parentName:"p"},"For Example:")," ",(0,n.kt)("br",null),"\n",(0,n.kt)("strong",{parentName:"p"},"Cosmovisor =< ",(0,n.kt)("inlineCode",{parentName:"strong"},"1.1.0"),": ",(0,n.kt)("inlineCode",{parentName:"strong"},"/upgrades/v9-Lambda/bin/gaiad")),(0,n.kt)("br",null),"\n",(0,n.kt)("strong",{parentName:"p"},"Cosmovisor >= ",(0,n.kt)("inlineCode",{parentName:"strong"},"1.2.0"),": ",(0,n.kt)("inlineCode",{parentName:"strong"},"/upgrades/v9-lambda/bin/gaiad")),(0,n.kt)("br",null))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Cosmovisor Version"),(0,n.kt)("th",{parentName:"tr",align:null},"Binary Name in Path"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1.3"),(0,n.kt)("td",{parentName:"tr",align:null},"v9-lambda")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1.2"),(0,n.kt)("td",{parentName:"tr",align:null},"v9-lambda")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1.1"),(0,n.kt)("td",{parentName:"tr",align:null},"v9-Lambda")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1.0"),(0,n.kt)("td",{parentName:"tr",align:null},"v9-Lambda")))),(0,n.kt)("h3",{id:"manually-preparing-the-gaia-v900-binary"},(0,n.kt)("em",{parentName:"h3"},"Manually preparing the Gaia v9.0.0 binary")),(0,n.kt)("h5",{id:"preparation"},"Preparation"),(0,n.kt)("p",null,"Install the latest version of Cosmovisor (",(0,n.kt)("inlineCode",{parentName:"p"},"1.3.0"),"):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest\n")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Verify Cosmovisor Version")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"cosmovisor version\ncosmovisor version: v1.3.0\n")),(0,n.kt)("p",null,"Create a cosmovisor folder:"),(0,n.kt)("p",null,"create a Cosmovisor folder inside ",(0,n.kt)("inlineCode",{parentName:"p"},"$GAIA_HOME")," and move Gaia v8.0.1 into ",(0,n.kt)("inlineCode",{parentName:"p"},"$GAIA_HOME/cosmovisor/genesis/bin")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"mkdir -p $GAIA_HOME/cosmovisor/genesis/bin\ncp $(which gaiad) $GAIA_HOME/cosmovisor/genesis/bin\n")),(0,n.kt)("p",null,"build Gaia v9.0.0, and move gaiad v9.0.0 to ",(0,n.kt)("inlineCode",{parentName:"p"},"$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"mkdir -p $GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin\ncp $(which gaiad) $GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin\n")),(0,n.kt)("p",null,"Then you should get the following structure:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},".\n\u251c\u2500\u2500 current -> genesis or upgrades/\n\u251c\u2500\u2500 genesis\n\u2502 \u2514\u2500\u2500 bin\n\u2502 \u2514\u2500\u2500 gaiad #v8.0.1\n\u2514\u2500\u2500 upgrades\n \u2514\u2500\u2500 v9-lambda\n \u2514\u2500\u2500 bin\n \u2514\u2500\u2500 gaiad #v9.0.0\n")),(0,n.kt)("p",null,"Export the environmental variables:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"export DAEMON_NAME=gaiad\n# please change to your own gaia home dir\n# please note `DAEMON_HOME` has to be absolute path\nexport DAEMON_HOME=$GAIA_HOME\nexport DAEMON_RESTART_AFTER_UPGRADE=true\n")),(0,n.kt)("p",null,"Start the node:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"cosmovisor run start --x-crisis-skip-assert-invariants --home $DAEMON_HOME\n")),(0,n.kt)("p",null,"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."),(0,n.kt)("h4",{id:"expected-upgrade-result"},"Expected upgrade result"),(0,n.kt)("p",null,"When the upgrade block height is reached, Gaia will panic and stop:"),(0,n.kt)("p",null,"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."),(0,n.kt)("h3",{id:"auto-downloading-the-gaia-v900-binary-not-recommended"},(0,n.kt)("em",{parentName:"h3"},"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")),(0,n.kt)("h4",{id:"preparation-1"},"Preparation"),(0,n.kt)("p",null,"Install the latest version of Cosmovisor (",(0,n.kt)("inlineCode",{parentName:"p"},"1.3.0"),"):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest\n")),(0,n.kt)("p",null,"Create a cosmovisor folder:"),(0,n.kt)("p",null,"create a cosmovisor folder inside gaia home and move gaiad v8.0.1 into ",(0,n.kt)("inlineCode",{parentName:"p"},"$GAIA_HOME/cosmovisor/genesis/bin")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"mkdir -p $GAIA_HOME/cosmovisor/genesis/bin\ncp $(which gaiad) $GAIA_HOME/cosmovisor/genesis/bin\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},".\n\u251c\u2500\u2500 current -> genesis or upgrades/\n\u2514\u2500\u2500 genesis\n \u2514\u2500\u2500 bin\n \u2514\u2500\u2500 gaiad #v8.0.1\n")),(0,n.kt)("p",null,"Export the environmental variables:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"export DAEMON_NAME=gaiad\n# please change to your own gaia home dir\nexport DAEMON_HOME=$GAIA_HOME\nexport DAEMON_RESTART_AFTER_UPGRADE=true\nexport DAEMON_ALLOW_DOWNLOAD_BINARIES=true\n")),(0,n.kt)("p",null,"Start the node:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"cosmovisor run start --x-crisis-skip-assert-invariants --home $DAEMON_HOME\n")),(0,n.kt)("p",null,"Skipping the invariant checks can help decrease the upgrade time significantly."),(0,n.kt)("h4",{id:"expected-result"},"Expected result"),(0,n.kt)("p",null,"When the upgrade block height is reached, you can find the following information in the log:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'ERR UPGRADE "v9-Lambda" NEEDED at height: 14470501: upgrade to v9-Lambda and applying upgrade "v9-Lambda" at height:14470501\n')),(0,n.kt)("p",null,"Then the Cosmovisor will create ",(0,n.kt)("inlineCode",{parentName:"p"},"$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")," and download the Gaia v9.0.0 binary to this folder according to links in the ",(0,n.kt)("inlineCode",{parentName:"p"},"--info")," 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."),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Please Note:")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"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."),(0,n.kt)("li",{parentName:"ul"},"Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.")),(0,n.kt)("h2",{id:"upgrade-duration"},"Upgrade duration"),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"rollback-plan"},"Rollback plan"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"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:"),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},"gaiad start --unsafe-skip-upgrade 14470501")),(0,n.kt)("p",null,"Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams."),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"communications"},"Communications"),(0,n.kt)("p",null,"Operators are encouraged to join the ",(0,n.kt)("inlineCode",{parentName:"p"},"#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 ",(0,n.kt)("inlineCode",{parentName:"p"},"#cosmos-hub-validators-verified")," channel can be sent to the ",(0,n.kt)("inlineCode",{parentName:"p"},"#general-support")," channel."),(0,n.kt)("h2",{id:"risks"},"Risks"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"reference"},"Reference"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://github.com/cosmos/mainnet"},"Join Cosmos Hub Mainnet")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ce6bca3.ab65b344.js b/assets/js/0ce6bca3.ab65b344.js new file mode 100644 index 00000000000..3ebef62cb69 --- /dev/null +++ b/assets/js/0ce6bca3.ab65b344.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[9284],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(a),m=r,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return a?n.createElement(h,l(l({ref:t},p),{},{components:a})):n.createElement(h,l({ref:t},p))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:r,l[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(7462),r=(a(7294),a(3905));const i={title:"ADR Creation Process",order:2},l=void 0,o={unversionedId:"architecture/PROCESS",id:"architecture/PROCESS",title:"ADR Creation Process",description:"1. Copy the adr-template.md file. Use the following filename pattern: adr-next_number-title.md",source:"@site/docs/architecture/PROCESS.md",sourceDirName:"architecture",slug:"/architecture/PROCESS",permalink:"/gaia/architecture/PROCESS",draft:!1,tags:[],version:"current",frontMatter:{title:"ADR Creation Process",order:2},sidebar:"tutorialSidebar",previous:{title:"ADR Template",permalink:"/gaia/architecture/templates/adr-template"},next:{title:"Gaia Modules",permalink:"/gaia/modules/"}},s={},u=[{value:"ADR life cycle",id:"adr-life-cycle",level:2},{value:"ADR status",id:"adr-status",level:3},{value:"Consensus Status",id:"consensus-status",level:4},{value:"Language used in ADR",id:"language-used-in-adr",level:2}],p={toc:u},c="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Copy the ",(0,r.kt)("inlineCode",{parentName:"li"},"adr-template.md")," file. Use the following filename pattern: ",(0,r.kt)("inlineCode",{parentName:"li"},"adr-next_number-title.md")),(0,r.kt)("li",{parentName:"ol"},"Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback."),(0,r.kt)("li",{parentName:"ol"},"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."),(0,r.kt)("li",{parentName:"ol"},"Add an entry to a list in the README file ",(0,r.kt)("a",{parentName:"li",href:"/gaia/architecture/#adr-table-of-contents"},"Table of Contents"),"."),(0,r.kt)("li",{parentName:"ol"},"Create a Pull Request to propose a new ADR.")),(0,r.kt)("h2",{id:"adr-life-cycle"},"ADR life cycle"),(0,r.kt)("p",null,"ADR creation is an ",(0,r.kt)("strong",{parentName:"p"},"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."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the ",(0,r.kt)("inlineCode",{parentName:"p"},"adr-template.md"),".")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"An ADR doesn't have to arrive to ",(0,r.kt)("inlineCode",{parentName:"p"},"main")," with an ",(0,r.kt)("em",{parentName:"p"},"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 ",(0,r.kt)("em",{parentName:"p"},"proposed")," status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"If a ",(0,r.kt)("em",{parentName:"p"},"proposed")," ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a ",(0,r.kt)("em",{parentName:"p"},"rejected")," status. The only time the ADR SHOULD NOT be merged is if the author abandons it.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Merged ADRs SHOULD NOT be deleted."))),(0,r.kt)("h3",{id:"adr-status"},"ADR status"),(0,r.kt)("p",null,"Status has two components:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},"{CONSENSUS STATUS} {IMPLEMENTATION STATUS}\n")),(0,r.kt)("p",null,"IMPLEMENTATION STATUS is either ",(0,r.kt)("inlineCode",{parentName:"p"},"Implemented")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"Not Implemented"),"."),(0,r.kt)("h4",{id:"consensus-status"},"Consensus Status"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-mermaid"},"flowchart TD\n A[DRAFT] --\x3e B[PROPOSED]\n B --\x3e C[LAST CALL YYYY-MM-DD]\n B --\x3e D[ABANDONED]\n C --\x3e E[ACCEPTED or REJECTED]\n E --\x3e F[SUPERSEDED by ADR-xxx]\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"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."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PROPOSED"),": an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LAST CALL "),": ","[optional]"," clear notify that we are close to accept updates. Changing a status to ",(0,r.kt)("inlineCode",{parentName:"li"},"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."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ACCEPTED"),": ADR which will represent a currently implemented or to be implemented architecture design."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"REJECTED"),": ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SUPERSEEDED by ADR-xxx"),": ADR which has been superseded by a new ADR."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ABANDONED"),": the ADR is no longer pursued by the original authors.")),(0,r.kt)("h2",{id:"language-used-in-adr"},"Language used in ADR"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The context/background should be written in the present tense."),(0,r.kt)("li",{parentName:"ul"},"Avoid using a first, personal form.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0d45cdb8.d344accf.js b/assets/js/0d45cdb8.d344accf.js new file mode 100644 index 00000000000..b042cae459b --- /dev/null +++ b/assets/js/0d45cdb8.d344accf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcosmos_hub_docs_site=self.webpackChunkcosmos_hub_docs_site||[]).push([[8164],{3905:(e,a,t)=>{t.d(a,{Zo:()=>m,kt:()=>u});var n=t(7294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(i[t]=e[t]);return i}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=n.createContext({}),s=function(e){var a=n.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},m=function(e){var a=s(e.components);return n.createElement(p.Provider,{value:a},e.children)},d="mdxType",k={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},g=n.forwardRef((function(e,a){var t=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),g=i,u=d["".concat(p,".").concat(g)]||d[g]||k[g]||o;return t?n.createElement(u,r(r({ref:a},m),{},{components:t})):n.createElement(u,r({ref:a},m))}));function u(e,a){var t=arguments,i=a&&a.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=g;var l={};for(var p in a)hasOwnProperty.call(a,p)&&(l[p]=a[p]);l.originalType=e,l[d]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>r,default:()=>k,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=t(7462),i=(t(7294),t(3905));const o={title:"\u59d4\u6258\u4eba\u6307\u5357 (CLI)",order:1},r=void 0,l={unversionedId:"translations/zh/delegator/delegator-guide-cli",id:"translations/zh/delegator/delegator-guide-cli",title:"\u59d4\u6258\u4eba\u6307\u5357 (CLI)",description:"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528Cosmos Hub\u7684\u547d\u4ee4\u884c\u4ea4\u4e92\uff08CLI\uff09\u7a0b\u5e8f\u5b9e\u73b0\u901a\u8bc1\u59d4\u6258\u7684\u76f8\u5173\u77e5\u8bc6\u548c\u64cd\u4f5c\u6b65\u9aa4\u3002",source:"@site/docs/translations/zh/delegator/delegator-guide-cli.md",sourceDirName:"translations/zh/delegator",slug:"/translations/zh/delegator/delegator-guide-cli",permalink:"/gaia/translations/zh/delegator/delegator-guide-cli",draft:!1,tags:[],version:"current",frontMatter:{title:"\u59d4\u6258\u4eba\u6307\u5357 (CLI)",order:1},sidebar:"tutorialSidebar",previous:{title:"Gaia\u6587\u6863",permalink:"/gaia/translations/zh/"},next:{title:"\u5b89\u88c5 Gaia",permalink:"/gaia/translations/zh/gaia-tutorials/installation"}},p={},s=[{value:"\u76ee\u5f55",id:"\u76ee\u5f55",level:2},{value:"\u5b89\u88c5 gaiad",id:"\u5b89\u88c5-gaiad",level:2},{value:"Cosmos\u8d26\u6237",id:"cosmos\u8d26\u6237",level:2},{value:"\u901a\u8fc7\u52df\u8d44\u4eba\u6062\u590d\u4e00\u4e2a\u8d26\u6237",id:"\u901a\u8fc7\u52df\u8d44\u4eba\u6062\u590d\u4e00\u4e2a\u8d26\u6237",level:3},{value:"\u901a\u8fc7\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c",id:"\u901a\u8fc7\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c",level:4},{value:"\u5728\u7535\u8111\u4e0a\u64cd\u4f5c",id:"\u5728\u7535\u8111\u4e0a\u64cd\u4f5c",level:4},{value:"\u521b\u5efa\u4e00\u4e2a\u8d26\u6237",id:"\u521b\u5efa\u4e00\u4e2a\u8d26\u6237",level:3},{value:"\u4f7f\u7528\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c",id:"\u4f7f\u7528\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c",level:4},{value:"\u8bbf\u95eeCosmos Hub\u7f51\u7edc",id:"\u8bbf\u95eecosmos-hub\u7f51\u7edc",level:2},{value:"\u8fd0\u884c\u60a8\u81ea\u5df1\u7684\u5168\u8282\u70b9",id:"\u8fd0\u884c\u60a8\u81ea\u5df1\u7684\u5168\u8282\u70b9",level:3},{value:"\u8fde\u63a5\u5230\u4e00\u4e2a\u8fdc\u7a0b\u5168\u8282\u70b9",id:"\u8fde\u63a5\u5230\u4e00\u4e2a\u8fdc\u7a0b\u5168\u8282\u70b9",level:3},{value:"\u8bbe\u7f6e gaiad",id:"\u8bbe\u7f6e-gaiad",level:2},{value:"\u72b6\u6001\u67e5\u8be2",id:"\u72b6\u6001\u67e5\u8be2",level:2},{value:"\u53d1\u8d77\u4ea4\u6613",id:"\u53d1\u8d77\u4ea4\u6613",level:2},{value:"\u5173\u4e8egas\u8d39\u548c\u624b\u7eed\u8d39",id:"\u5173\u4e8egas\u8d39\u548c\u624b\u7eed\u8d39",level:3},{value:"\u62b5\u62bcAtom\u901a\u8bc1 & \u63d0\u53d6\u5956\u52b1",id:"\u62b5\u62bcatom\u901a\u8bc1--\u63d0\u53d6\u5956\u52b1",level:3},{value:"\u53c2\u4e0e\u94fe\u4e0a\u6cbb\u7406",id:"\u53c2\u4e0e\u94fe\u4e0a\u6cbb\u7406",level:2},{value:"\u94fe\u4e0a\u6cbb\u7406\u5165\u95e8",id:"\u94fe\u4e0a\u6cbb\u7406\u5165\u95e8",level:4},{value:"\u5b9e\u8df5\u7ec3\u4e60",id:"\u5b9e\u8df5\u7ec3\u4e60",level:4},{value:"\u4ece\u4e00\u53f0\u79bb\u7ebf\u7535\u8111\u4e0a\u7b7e\u7f72\u4ea4\u6613",id:"\u4ece\u4e00\u53f0\u79bb\u7ebf\u7535\u8111\u4e0a\u7b7e\u7f72\u4ea4\u6613",level:3}],m={toc:s},d="wrapper";function k(e){let{components:a,...t}=e;return(0,i.kt)(d,(0,n.Z)({},m,t,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528Cosmos Hub\u7684\u547d\u4ee4\u884c\u4ea4\u4e92\uff08CLI\uff09\u7a0b\u5e8f\u5b9e\u73b0\u901a\u8bc1\u59d4\u6258\u7684\u76f8\u5173\u77e5\u8bc6\u548c\u64cd\u4f5c\u6b65\u9aa4\u3002"),(0,i.kt)("p",null,"\u540c\u65f6\uff0c\u672c\u6587\u4e5f\u4ecb\u7ecd\u4e86\u5982\u4f55\u7ba1\u7406\u8d26\u6237\uff0c\u5982\u4f55\u4ece\u7b79\u6b3e\u4eba\u90a3\u91cc\u6062\u590d\u8d26\u6237\uff0c\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528\u4e00\u4e2a\u786c\u4ef6\u94b1\u5305\u7684\u76f8\u5173\u77e5\u8bc6\u3002"),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u91cd\u8981\u63d0\u793a"),"\uff1a\u8bf7\u52a1\u5fc5\u6309\u7167\u4e0b\u9762\u7684\u64cd\u4f5c\u6b65\u9aa4\u8c28\u614e\u64cd\u4f5c\uff0c\u8fc7\u7a0b\u4e2d\u53d1\u751f\u4efb\u4f55\u9519\u8bef\u90fd\u6709\u53ef\u80fd\u5bfc\u81f4\u60a8\u6c38\u8fdc\u5931\u53bb\u6240\u62e5\u6709\u7684\u901a\u8bc1\u3002\u56e0\u6b64\uff0c\u8bf7\u5728\u5f00\u59cb\u64cd\u4f5c\u4e4b\u524d\u5148\u4ed4\u7ec6\u9605\u8bfb\u5168\u6587\uff0c\u5982\u679c\u6709\u4efb\u4f55\u95ee\u9898\u53ef\u4ee5\u8054\u7cfb\u6211\u4eec\u83b7\u5f97\u652f\u6301\u3002"),(0,i.kt)("p",{parentName:"admonition"},"\u53e6\u8bf7\u6ce8\u610f\uff0c\u60a8\u5373\u5c06\u8981\u4e0eCosmos Hub\u8fdb\u884c\u4ea4\u4e92\uff0cCosmos Hub\u4ecd\u7136\u662f\u4e00\u4e2a\u8bd5\u9a8c\u578b\u7684\u533a\u5757\u94fe\u6280\u672f\u8f6f\u4ef6\u3002\u867d\u7136Cosmos Hub\u533a\u5757\u94fe\u662f\u5e94\u7528\u73b0\u6709\u6700\u65b0\u6280\u672f\u5f00\u53d1\u5e76\u7ecf\u8fc7\u5ba1\u6838\u7684\uff0c\u4f46\u6211\u4eec\u4ecd\u7136\u53ef\u80fd\u4f1a\u5728\u8fd0\u884c\u65f6\u9047\u5230\u95ee\u9898\uff0c\u9700\u8981\u4e0d\u65ad\u66f4\u65b0\u548c\u4fee\u590d\u6f0f\u6d1e\u3002\u6b64\u5916\uff0c\u4f7f\u7528\u533a\u5757\u94fe\u6280\u672f\u4ecd\u7136\u8981\u6c42\u6709\u5f88\u9ad8\u7684\u6280\u672f\u80fd\u529b\uff0c\u5e76\u4e14\u6709\u53ef\u80fd\u9047\u5230\u6211\u4eec\u65e0\u6cd5\u9884\u77e5\u548c\u63a7\u5236\u7684\u98ce\u9669\u3002\u4f7f\u7528Cosmos Hub\u524d\uff0c\u60a8\u9700\u8981\u5145\u5206\u4e86\u89e3\u4e0e\u52a0\u5bc6\u8f6f\u4ef6\u76f8\u5173\u7684\u6f5c\u5728\u98ce\u9669\uff08\u8bf7\u53c2\u8003",(0,i.kt)("a",{parentName:"p",href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf"},"Cosmos\u8de8\u94fe\u8d21\u732e\u6761\u6b3e"),"\u4e2d\u5173\u4e8e\u98ce\u9669\u7684\u90e8\u5206\u6761\u6b3e\uff09\uff0c\u5e76\u4e14\u6211\u4eec\u8de8\u94fe\u57fa\u91d1\u4f1a\u548c(\u6216)Tendermint/CometBFT\u56e2\u961f\u5bf9\u4e8e\u56e0\u4e3a\u4f7f\u7528\u672c\u4ea7\u54c1\u800c\u53ef\u80fd\u4ea7\u751f\u7684\u635f\u5931\u4e0d\u627f\u62c5\u4efb\u4f55\u8d23\u4efb\u3002\u4f7f\u7528Cosmos Hub\u9700\u8981\u9075\u5b88Apache 2.0\u5f00\u6e90\u8f6f\u4ef6\u6388\u6743\u6761\u6b3e\uff0c\u7528\u6237\u9700\u8981\u81ea\u5df1\u627f\u62c5\u6240\u6709\u8d23\u4efb\uff0c\u6240\u4f7f\u7528\u7684\u8f6f\u4ef6\u6309\u201c\u73b0\u72b6\u201d\u63d0\u4f9b\u4e14\u4e0d\u63d0\u4f9b\u4efb\u4f55\u5f62\u5f0f\u7684\u4fdd\u969c\u6216\u6761\u4ef6\u3002")),(0,i.kt)("p",null,"\u8bf7\u52a1\u5fc5\u8c28\u614e\u884c\u4e8b\uff01"),(0,i.kt)("h2",{id:"\u76ee\u5f55"},"\u76ee\u5f55"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E5%AE%89%E8%A3%85-gaiad"},"\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"a"},"gaiad"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#Cosmos%E8%B4%A6%E6%88%B7"},"Cosmos\u8d26\u6237"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",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"},"\u901a\u8fc7\u52df\u8d44\u4eba\u6062\u590d\u4e00\u4e2a\u8d26\u6237")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"},"\u521b\u5efa\u4e00\u4e2a\u8d26\u6237")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E8%AE%BF%E9%97%AECosmos-Hub%E7%BD%91%E7%BB%9C"},"\u8bbf\u95eeCosmos Hub\u7f51\u7edc"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",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"},"\u8fd0\u884c\u60a8\u81ea\u5df1\u7684\u5168\u8282\u70b9")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",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"},"\u8fde\u63a5\u5230\u4e00\u4e2a\u8fdc\u7a0b\u5168\u8282\u70b9")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E8%AE%BE%E7%BD%AE-gaiad"},"\u8bbe\u7f6e",(0,i.kt)("inlineCode",{parentName:"a"},"gaiad"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E7%8A%B6%E6%80%81%E6%9F%A5%E8%AF%A2"},"\u72b6\u6001\u67e5\u8be2")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E5%8F%91%E8%B5%B7%E4%BA%A4%E6%98%93"},"\u53d1\u8d77\u4ea4\u6613"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E5%85%B3%E4%BA%8Egas%E8%B4%B9%E5%92%8C%E6%89%8B%E7%BB%AD%E8%B4%B9"},"\u5173\u4e8egas\u8d39\u548c\u624b\u7eed\u8d39")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",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"},"\u62b5\u62bcAtom\u901a\u8bc1 & \u63d0\u53d6\u5956\u52b1")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#%E5%8F%82%E4%B8%8E%E9%93%BE%E4%B8%8A%E6%B2%BB%E7%90%86"},"\u53c2\u4e0e\u94fe\u4e0a\u6cbb\u7406")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",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"},"\u4ece\u4e00\u53f0\u79bb\u7ebf\u7535\u8111\u4e0a\u7b7e\u7f72\u4ea4\u6613"))))),(0,i.kt)("h2",{id:"\u5b89\u88c5-gaiad"},"\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"gaiad")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),": \u4e0e",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),"\u5168\u8282\u70b9\u4ea4\u4e92\u7684\u547d\u4ee4\u884c\u7528\u6237\u754c\u9762\u3002"),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u8bf7\u68c0\u67e5\u5e76\u4e14\u786e\u8ba4\u4f60\u4e0b\u8f7d\u7684",(0,i.kt)("inlineCode",{parentName:"strong"},"gaiad"),"\u662f\u53ef\u83b7\u5f97\u7684\u6700\u65b0\u7a33\u5b9a\u7248\u672c"))),(0,i.kt)("p",null,"[",(0,i.kt)("strong",{parentName:"p"},"\u4e0b\u8f7d\u5df2\u7f16\u8bd1\u4ee3\u7801"),"]","\u6682\u4e0d\u63d0\u4f9b"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://cosmos.network/docs/gaia/installation.html"},(0,i.kt)("strong",{parentName:"a"},"\u901a\u8fc7\u6e90\u4ee3\u7801\u5b89\u88c5"))),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("inlineCode",{parentName:"p"},"gaiad")," \u9700\u8981\u901a\u8fc7\u64cd\u4f5c\u7cfb\u7edf\u7684\u7ec8\u7aef\u7a97\u53e3\u4f7f\u7528\uff0c\u6253\u5f00\u6b65\u9aa4\u5982\u4e0b\u6240\u793a\uff1a"),(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Windows"),": ",(0,i.kt)("inlineCode",{parentName:"li"},"\u5f00\u59cb")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u6240\u6709\u7a0b\u5e8f")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u9644\u4ef6")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u7ec8\u7aef")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"MacOS"),": ",(0,i.kt)("inlineCode",{parentName:"li"},"\u8bbf\u8fbe")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u5e94\u7528\u7a0b\u5e8f")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u5b9e\u7528\u5de5\u5177")," > ",(0,i.kt)("inlineCode",{parentName:"li"},"\u7ec8\u7aef")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Linux"),": ",(0,i.kt)("inlineCode",{parentName:"li"},"Ctrl")," + ",(0,i.kt)("inlineCode",{parentName:"li"},"Alt")," + ",(0,i.kt)("inlineCode",{parentName:"li"},"T")))),(0,i.kt)("h2",{id:"cosmos\u8d26\u6237"},"Cosmos\u8d26\u6237"),(0,i.kt)("p",null,"\u6bcf\u4e2aCosmos\u8d26\u6237\u7684\u6838\u5fc3\u57fa\u7840\u662f\u4e00\u4e2a\u5305\u542b12\u621624\u4e2a\u8bcd\u7684\u52a9\u8bb0\u8bcd\u7ec4\uff0c\u901a\u8fc7\u8fd9\u4e2a\u52a9\u8bb0\u8bcd\u53ef\u4ee5\u751f\u6210\u65e0\u6570\u4e2aCosmos\u8d26\u6237\uff0c\u4f8b\u5982\uff0c\u4e00\u7ec4\u79c1\u94a5/\u516c\u94a5\u5bf9\u3002\u8fd9\u88ab\u79f0\u4e3a\u4e00\u4e2a\u786c\u4ef6\u94b1\u5305\uff08\u8ddf\u591a\u786c\u4ef6\u94b1\u5305\u76f8\u5173\u8bf4\u660e\u8bf7\u53c2\u89c1",(0,i.kt)("a",{parentName:"p",href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki"},"BIP32"),"\uff09 "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," \u8d26\u6237 0 \u8d26\u6237 1 \u8d26\u6237 2\n\n+------------------+ +------------------+ +------------------+\n| | | | | |\n| \u5730\u5740 0 | | \u5730\u5740 1 | | \u5730\u5740 2 |\n| ^ | | ^ | | ^ |\n| | | | | | | | |\n| | | | | | | | |\n| | | | | | | | |\n| + | | + | | + |\n| \u516c\u94a5 0 | | \u516c\u94a5 1 | | \u516c\u94a5 2 |\n| ^ | | ^ | | ^ |\n| | | | | | | | |\n| | | | | | | | |\n| | | | | | | | |\n| + | | + | | + |\n| \u79c1\u94a5 0 | | \u79c1\u94a5 1 | | \u79c1\u94a5 2 |\n| ^ | | ^ | | ^ |\n+------------------+ +------------------+ +------------------+\n | | |\n | | |\n | | |\n +--------------------------------------------------------------------+\n |\n |\n +---------+---------+\n | |\n | \u52a9\u8bb0\u8bcd (Seed) |\n | |\n +-------------------+\n")),(0,i.kt)("p",null,"\u79c1\u94a5\u662f\u63a7\u5236\u4e00\u4e2a\u8d26\u6237\u4e2d\u6240\u5b58\u8d44\u4ea7\u7684\u94a5\u5319\u3002\u79c1\u94a5\u662f\u901a\u8fc7\u52a9\u8bb0\u8bcd\u5355\u5411\u4ea7\u751f\u7684\u3002\u5982\u679c\u60a8\u4e0d\u5c0f\u5fc3\u4e22\u5931\u4e86\u79c1\u94a5\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u52a9\u8bb0\u8bcd\u6062\u590d\u3002 \u7136\u800c\uff0c\u5982\u679c\u4f60\u4e22\u5931\u4e86\u52a9\u8bb0\u8bcd\uff0c\u90a3\u4e48\u4f60\u5c31\u6709\u53ef\u80fd\u5931\u53bb\u5bf9\u7531\u8fd9\u4e2a\u52a9\u8bb0\u8bcd\u4ea7\u751f\u7684\u6240\u6709\u79c1\u94a5\u7684\u63a7\u5236\u3002\u540c\u6837\uff0c\u5982\u679c\u6709\u4eba\u83b7\u5f97\u4e86\u4f60\u7684\u52a9\u8bb0\u8bcd\uff0c\u4ed6\u4eec\u5c31\u53ef\u4ee5\u64cd\u4f5c\u6240\u6709\u76f8\u5173\u8d26\u6237\u3002 "),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u8c28\u614e\u4fdd\u7ba1\u5e76\u4e0d\u8981\u544a\u8bc9\u4ed6\u4eba\u4f60\u7684\u52a9\u8bb0\u8bcd\u3002 \u4e3a\u4e86\u9632\u6b62\u8d44\u4ea7\u88ab\u76d7\u6216\u8005\u4e22\u5931\uff0c\u60a8\u6700\u597d\u591a\u5907\u4efd\u51e0\u4efd\u52a9\u8bb0\u8bcd\uff0c \u5e76\u4e14\u628a\u5b83\u4eec\u5b58\u653e\u5728\u53ea\u6709\u60a8\u77e5\u9053\u7684\u5b89\u5168\u5730\u65b9\uff0c\u8fd9\u6837\u505a\u5c06\u6709\u52a9\u4e8e\u4fdd\u969c\u60a8\u7684\u79c1\u94a5\u4ee5\u53ca\u76f8\u5173\u8d26\u6237\u7684\u5b89\u5168\u3002"))),(0,i.kt)("p",null,"Cosmos\u5730\u5740\u662f\u4e00\u4e2a\u4ee5\u53ef\u8bfb\u8bcd\u5f00\u5934\u7684\u5b57\u7b26\u4e32(\u6bd4\u5982",(0,i.kt)("inlineCode",{parentName:"p"},"cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg"),") \u5982\u679c\u6709\u4eba\u60f3\u7ed9\u4f60\u8f6c\u8d26\u901a\u8bc1\uff0c\u4ed6\u4eec\u5c31\u5f80\u8fd9\u4e2a\u5730\u5740\u8f6c\u8d26\u3002\u6839\u636e\u7ed9\u5b9a\u5730\u5740\u6765\u63a8\u7b97\u79c1\u94a5\u662f\u4e0d\u53ef\u884c\u7684\u3002"),(0,i.kt)("h3",{id:"\u901a\u8fc7\u52df\u8d44\u4eba\u6062\u590d\u4e00\u4e2a\u8d26\u6237"},"\u901a\u8fc7\u52df\u8d44\u4eba\u6062\u590d\u4e00\u4e2a\u8d26\u6237"),(0,i.kt)("p",null,"::tip \u63d0\u793a"),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"\u6ce8\uff1a\u8fd9\u90e8\u5206\u5185\u5bb9\u4ec5\u9002\u7528\u4e8e\u4f17\u7b79\u6d3b\u52a8\u53c2\u4e0e\u8005"),"\n:::"),(0,i.kt)("p",null,"\u5982\u679c\u60a8\u662f\u4f17\u7b79\u7684\u53c2\u4e0e\u8005\uff0c\u4f60\u5e94\u8be5\u6709\u4e00\u4e2a\u52a9\u8bb0\u8bcd\u3002\u65b0\u4ea7\u751f\u7684\u52a9\u8bb0\u8bcd\u752824\u4e2a\u8bcd\uff0c\u4f46\u662f12\u4e2a\u8bcd\u7684\u52a9\u8bb0\u8bcd\u7ec4\u4e5f\u517c\u5bb9\u6240\u6709Cosmos\u5de5\u5177\u3002"),(0,i.kt)("h4",{id:"\u901a\u8fc7\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c"},"\u901a\u8fc7\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c"),(0,i.kt)("p",null,"\u4e00\u4e2a\u6570\u5b57\u94b1\u5305\u8bbe\u5907\u7684\u6838\u5fc3\u662f\u901a\u8fc7\u4e00\u4e2a\u52a9\u8bb0\u8bcd\u5728\u591a\u4e2a\u533a\u5757\u94fe\u4e0a\u521b\u5efa\u8d26\u6237\uff08\u5305\u62ecCosmos hub\uff09\u3002\u901a\u5e38\uff0c\u60a8\u4f1a\u5728\u521d\u59cb\u5316\u60a8\u7684\u6570\u5b57\u94b1\u5305\u8bbe\u5907\u65f6\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u52a9\u8bb0\u8bcd,\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5df2\u6709\u7684\u52a9\u8bb0\u8bcd\u8fdb\u884c\u5bfc\u5165\u3002\u8ba9\u6211\u4eec\u4e00\u8d77\u6765\u770b\u5982\u4f55\u5c06\u60a8\u5728\u53c2\u4e0e\u4f17\u7b79\u65f6\u83b7\u5f97\u7684\u52a9\u8bb0\u8bcd\u8bbe\u5b9a\u4e3a\u4e00\u4e2a\u6570\u5b57\u94b1\u5305\u8bbe\u5907\u7684seed\u3002"),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"*\u6ce8\u610f\uff1a",(0,i.kt)("strong",{parentName:"p"},"\u6700\u597d\u4f7f\u7528\u4e00\u4e2a\u65b0\u7684\u94b1\u5305\u8bbe\u5907"),"\u6765\u6062\u590d\u60a8\u7684Cosmos\u8d26\u6237\u3002\u786e\u5b9e\uff0c\u6bcf\u4e2a\u6570\u5b57\u94b1\u5305\u8bbe\u5907\u53ea\u80fd\u6709\u4e00\u4e2a\u52a9\u8bb0\u8bcd\u3002 \u5f53\u7136\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8bbe\u7f6e"),">",(0,i.kt)("inlineCode",{parentName:"p"},"\u8bbe\u5907"),">",(0,i.kt)("inlineCode",{parentName:"p"},"\u91cd\u7f6e\u6240\u6709")," \u5c06\u4e00\u4e2a\u5df2\u7ecf\u6709\u52a9\u8bb0\u8bcd\u7684\uff08\u7528\u8fc7\u7684\uff09\u6570\u5b57\u94b1\u5305\u91cd\u65b0\u521d\u59cb\u5316\u3002",(0,i.kt)("strong",{parentName:"p"},"\u4f46\u8bf7\u6ce8\u610f\uff0c\u8fd9\u6837\u4f1a\u6e05\u7a7a\u60a8\u8bbe\u5907\u4e2d\u73b0\u6709\u7684\u52a9\u8bb0\u8bcd\uff0c\u5982\u679c\u60a8\u6ca1\u6709\u505a\u597d\u5907\u4efd\u7684\u8bdd\uff0c\u6709\u53ef\u80fd\u4f1a\u4e22\u5931\u60a8\u7684\u8d44\u4ea7*"))),(0,i.kt)("p",null,"\u5bf9\u4e8e\u4e00\u4e2a\u6ca1\u6709\u521d\u59cb\u5316\u7684\u6570\u5b57\u94b1\u5305\u8bbe\u5907\uff0c\u60a8\u9700\u8981\u505a\u5982\u4e0b\u64cd\u4f5c\u3002"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u5c06\u60a8\u7684\u6570\u5b57\u94b1\u5305\u8bbe\u5907\u901a\u8fc7USB\u4e0e\u7535\u8111\u94fe\u63a5"),(0,i.kt)("li",{parentName:"ol"},"\u540c\u65f6\u6309\u4e0b\u4e24\u4e2a\u6309\u94ae"),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"\u4e0d\u8981"),"\u9009\u62e9\u201c\u914d\u7f6e\u4e00\u4e2a\u65b0\u8bbe\u5907\u201d\u9009\u9879\uff0c\u800c\u662f\u9009\u62e9\u201c\u6062\u590d\u914d\u7f6e\u201d"),(0,i.kt)("li",{parentName:"ol"},"\u9009\u62e9\u4e00\u4e2aPIN"),(0,i.kt)("li",{parentName:"ol"},"\u9009\u62e912\u4e2a\u8bcd\u9009\u9879"),(0,i.kt)("li",{parentName:"ol"},"\u9010\u4e2a\u6309\u987a\u5e8f\u8f93\u5165\u60a8\u5728\u4f17\u7b79\u65f6\u83b7\u5f97\u768412\u4e2a\u52a9\u8bb0\u8bcd")),(0,i.kt)("p",null,"\u73b0\u5728\uff0c\u60a8\u7684\u94b1\u5305\u5df2\u7ecf\u6b63\u786e\u5730\u8bbe\u7f6e\u597d\u60a8\u5728\u4f17\u7b79\u65f6\u83b7\u5f97\u7684\u52a9\u8bb0\u8bcd\uff0c\u5207\u52ff\u4e22\u5931\uff01\u4efb\u4f55\u65f6\u5019\u60a8\u7684\u94b1\u5305\u8bbe\u5907\u51fa\u73b0\u95ee\u9898\uff0c\u60a8\u90fd\u53ef\u4ee5\u901a\u8fc7\u52a9\u8bb0\u8bcd\u5728\u4e00\u4e2a\u65b0\u7684\u94b1\u5305\u8bbe\u5907\u4e0a\u6062\u590d\u6240\u6709\u8d26\u6237\u3002"),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u8bf7\u70b9\u51fb",(0,i.kt)("a",{parentName:"p",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"},"\u8fd9\u91cc"),"\u6765\u5b66\u4e60\u5982\u4f55\u751f\u6210\u4e00\u4e2a\u8d26\u6237\u3002"),(0,i.kt)("h4",{id:"\u5728\u7535\u8111\u4e0a\u64cd\u4f5c"},"\u5728\u7535\u8111\u4e0a\u64cd\u4f5c"),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a \u5728\u4e00\u53f0\u6ca1\u6709\u8054\u7f51\u7684\u8ba1\u7b97\u673a\u4e0a\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\u4f1a\u66f4\u52a0\u5b89\u5168"))),(0,i.kt)("p",null,"\u5982\u679c\u60a8\u5e0c\u671b\u901a\u8fc7\u4f17\u7b79\u65f6\u83b7\u5f97\u7684\u52a9\u8bb0\u8bcd\u6062\u590d\u8d26\u6237\u5e76\u4fdd\u5b58\u76f8\u5173\u79c1\u94a5\uff0c\u8bf7\u6309\u4ee5\u4e0b\u6b65\u9aa4\u64cd\u4f5c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad keys add --recover\n")),(0,i.kt)("p",null,"\u9996\u5148\uff0c\u60a8\u9700\u8981\u8f93\u5165\u4e00\u4e2a\u5bc6\u7801\u6765\u5bf9\u60a8\u786c\u76d8\u4e0a\u8d26\u6237",(0,i.kt)("inlineCode",{parentName:"p"},"0"),"\u7684\u79c1\u94a5\u8fdb\u884c\u52a0\u5bc6\u3002\u6bcf\u6b21\u60a8\u53d1\u51fa\u4e00\u7b14\u4ea4\u6613\u65f6\u90fd\u5c06\u9700\u8981\u8f93\u5165\u8fd9\u4e2a\u5bc6\u7801\u3002\u5982\u679c\u60a8\u4e22\u5931\u4e86\u5bc6\u7801\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u52a9\u8bb0\u8bcd\u6765\u6062\u590d\u60a8\u7684\u79c1\u94a5\u3002"),(0,i.kt)("p",null,"-",(0,i.kt)("inlineCode",{parentName:"p"},"")," \u662f\u8d26\u6237\u540d\u79f0\uff0c\u7528\u6765\u6307\u4ee3\u7528\u52a9\u8bb0\u8bcd\u751f\u6210\u79c1\u94a5/\u516c\u94a5\u5bf9\u7684Cosmos\u8d26\u6237\u3002\u5728\u60a8\u53d1\u8d77\u4ea4\u6613\u65f6\uff0c\u8fd9\u4e2a\u8d26\u6237\u540d\u79f0\u88ab\u7528\u6765\u8bc6\u522b\u60a8\u7684\u8d26\u6237\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u60a8\u53ef\u4ee5\u901a\u8fc7\u589e\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"--account")," \u6807\u5fd7\u6765\u6307\u5b9a\u60a8\u8d26\u6237\u751f\u6210\u7684\u8def\u5f84 (",(0,i.kt)("inlineCode",{parentName:"li"},"0"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"1"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"2"),", ...)\uff0c ",(0,i.kt)("inlineCode",{parentName:"li"},"0")," \u662f\u7f3a\u7701\u503c\u3002")),(0,i.kt)("h3",{id:"\u521b\u5efa\u4e00\u4e2a\u8d26\u6237"},"\u521b\u5efa\u4e00\u4e2a\u8d26\u6237"),(0,i.kt)("p",null,"\u524d\uff0c\u60a8\u9700\u8981\u5148\u5b89\u88c5",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),"\uff0c\u540c\u65f6\uff0c\u60a8\u9700\u8981\u77e5\u9053\u4f60\u5e0c\u671b\u5728\u54ea\u91cc\u4fdd\u5b58\u548c\u4f7f\u7528\u60a8\u7684\u79c1\u94a5\u3002 \u6700\u597d\u7684\u529e\u6cd5\u662f\u628a\u4ed6\u4eec\u4fdd\u5b58\u5728\u4e00\u53f0\u6ca1\u6709\u4e0a\u7f51\u7684\u7535\u8111\u6216\u8005\u4e00\u4e2a\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u91cc\u9762\u3002 \u5c06\u79c1\u94a5\u4fdd\u5b58\u5728\u4e00\u53f0\u8054\u7f51\u7684\u7535\u8111\u91cc\u9762\u6bd4\u8f83\u5371\u9669\uff0c\u4efb\u4f55\u4eba\u901a\u8fc7\u7f51\u7edc\u653b\u51fb\u90fd\u6709\u53ef\u80fd\u83b7\u53d6\u60a8\u7684\u79c1\u94a5\uff0c\u8fdb\u800c\u76d7\u53d6\u60a8\u7684\u8d44\u4ea7\u3002"),(0,i.kt)("h4",{id:"\u4f7f\u7528\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c"},"\u4f7f\u7528\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c"),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5efa\u8bae\u4ec5\u4f7f\u7528\u60a8\u65b0\u4e70\u7684\u94b1\u5305\u8bbe\u5907\u6216\u8005\u60a8\u8db3\u591f\u4fe1\u4efb\u7684\u8bbe\u5907"))),(0,i.kt)("p",null,"\u5f53\u60a8\u521d\u59cb\u5316\u94b1\u5305\u8bbe\u5907\u65f6\uff0c\u8bbe\u5907\u4f1a\u4ea7\u751f\u4e00\u4e2a24\u4e2a\u8bcd\u7684\u52a9\u8bb0\u8bcd\u7ec4\u3002\u8fd9\u4e2a\u52a9\u8bb0\u8bcd\u7ec4\u548cCosmos\u662f\u517c\u5bb9\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u52a9\u8bb0\u8bcd\u7ec4\u521b\u5efaCosmos\u8d26\u6237\u3002\u6240\u4ee5\uff0c\u60a8\u9700\u8981\u505a\u7684\u662f\u786e\u8ba4\u60a8\u7684\u94b1\u5305\u8bbe\u5907\u517c\u5bb9",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),"\uff0c\u901a\u8fc7\u4e0b\u9762\u7684\u6b65\u9aa4\u53ef\u4ee5\u5e2e\u52a9\u60a8\u786e\u8ba4\u60a8\u7684\u8bbe\u5907\u662f\u5426\u517c\u5bb9\uff1a"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u4e0b\u8f7d",(0,i.kt)("a",{parentName:"li",href:"https://www.ledger.com/pages/ledger-live"},"Ledger Live\u5e94\u7528"),"."),(0,i.kt)("li",{parentName:"ol"},"\u901a\u8fc7USB\u5c06\u94b1\u5305\u4e0e\u8ba1\u7b97\u673a\u8fde\u63a5\uff0c\u5e76\u4e14\u5c06\u94b1\u5305\u56fa\u4ef6\u5347\u7ea7\u5230\u6700\u65b0\u7248\u672c\u3002"),(0,i.kt)("li",{parentName:"ol"},"\u5230Ledger Live\u94b1\u5305\u7684\u5e94\u7528\u5546\u5e97\u4e0b\u8f7d\u201dCosmos\u201c\u5e94\u7528\uff08\u8fd9\u53ef\u80fd\u9700\u8981\u82b1\u4e9b\u65f6\u95f4\uff09\u3002",(0,i.kt)("strong",{parentName:"li"},"\u4e0b\u8f7d\u201dCosmos\u201c\u5e94\u7528\u7a0b\u5e8f\u9700\u8981\u5728Ledger Live\u94b1\u5305",(0,i.kt)("inlineCode",{parentName:"strong"},"Settings"),"\u9009\u9879\u4e2d\u6fc0\u6d3b",(0,i.kt)("inlineCode",{parentName:"strong"},"Dev Mode"))),(0,i.kt)("li",{parentName:"ol"},"\u5728\u4f60\u7684\u94b1\u5305\u8bbe\u5907\u4e0a\u64cd\u4f5cCosmos APP\u3002")),(0,i.kt)("p",null,"\u7136\u540e\uff0c\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u8d26\u6237\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad keys add --ledger \n")),(0,i.kt)("admonition",{title:"\u6ce8\u610f\uff1a \u8be5\u547d\u4ee4\u4ec5\u5728\u786c\u4ef6\u94b1\u5305\u5df2\u5bfc\u5165\u5e76\u5728\u89e3\u9501\u72b6\u6001\u65f6\u624d\u6709\u6548:::",type:"tip"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"")," \u662f\u8d26\u6237\u540d\u79f0\uff0c\u7528\u6765\u6307\u4ee3\u7528\u52a9\u8bb0\u8bcd\u751f\u6210\u79c1\u94a5/\u516c\u94a5\u5bf9\u7684Cosmos\u8d26\u6237\u3002\u5728\u60a8\u53d1\u8d77\u4ea4\u6613\u65f6\uff0c\u8fd9\u4e2a\u8d26\u6237\u540d\u79f0\u88ab\u7528\u6765\u8bc6\u522b\u60a8\u7684\u8d26\u6237\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u60a8\u53ef\u4ee5\u901a\u8fc7\u589e\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"--account")," \u6807\u5fd7\u6765\u6307\u5b9a\u60a8\u8d26\u6237\u751f\u6210\u7684\u8def\u5f84 (",(0,i.kt)("inlineCode",{parentName:"li"},"0"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"1"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"2"),", ...)\uff0c ",(0,i.kt)("inlineCode",{parentName:"li"},"0")," \u662f\u7f3a\u7701\u503c\u3002")),(0,i.kt)("h4",{parentName:"admonition",id:"\u4f7f\u7528\u7535\u8111\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c"},"\u4f7f\u7528\u7535\u8111\u8bbe\u5907\u8fdb\u884c\u64cd\u4f5c")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a\u5728\u4e00\u53f0\u6ca1\u6709\u8054\u7f51\u7684\u7535\u8111\u4e0a\u64cd\u4f5c\u4f1a\u66f4\u52a0\u5b89\u5168"),"\n:::"),(0,i.kt)("p",null,"\u7136\u540e\uff0c\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u8d26\u6237\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad keys add \n")),(0,i.kt)("p",null,"\u8fd9\u4e2a\u547d\u4ee4\u4f1a\u4ea7\u751f\u4e00\u4e2a24\u4e2a\u8bcd\u7684\u52a9\u8bb0\u8bcd\u7ec4\uff0c\u5e76\u4e14\u540c\u65f6\u4fdd\u5b58\u8d26\u6237 ",(0,i.kt)("inlineCode",{parentName:"p"},"0")," \u7684\u79c1\u94a5\u548c\u516c\u94a5\u3002 \u53e6\u5916\uff0c\u60a8\u8fd8\u9700\u8981\u8f93\u5165\u4e00\u4e2a\u5bc6\u7801\u6765\u5bf9\u60a8\u786c\u76d8\u4e0a\u8d26\u6237",(0,i.kt)("inlineCode",{parentName:"p"},"0"),"\u7684\u79c1\u94a5\u8fdb\u884c\u52a0\u5bc6\u3002 \u6bcf\u6b21\u60a8\u53d1\u51fa\u4e00\u7b14\u4ea4\u6613\u65f6\u90fd\u5c06\u9700\u8981\u8f93\u5165\u8fd9\u4e2a\u5bc6\u7801\u3002\u5982\u679c\u60a8\u4e22\u5931\u4e86\u5bc6\u7801\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u52a9\u8bb0\u8bcd\u6765\u6062\u590d\u60a8\u7684\u79c1\u94a5\u3002"),(0,i.kt)("admonition",{title:"\u5371\u9669\u63d0\u793a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5343\u4e07\u4e0d\u8981\u4e22\u5931\u6216\u8005\u544a\u8bc9\u5176\u4ed6\u4eba\u4f60\u768412\u4e2a\u8bcd\u7684\u52a9\u8bb0\u8bcd\u7ec4\u3002 \u4e3a\u4e86\u9632\u6b62\u8d44\u4ea7\u88ab\u76d7\u6216\u8005\u4e22\u5931\uff0c\u60a8\u6700\u597d\u591a\u5907\u4efd\u51e0\u4efd\u52a9\u8bb0\u8bcd\uff0c \u5e76\u4e14\u628a\u5b83\u4eec\u5b58\u653e\u5728\u53ea\u6709\u60a8\u77e5\u9053\u7684\u5b89\u5168\u5730\u65b9\uff0c\u5982\u679c\u6709\u4eba\u53d6\u5f97\u60a8\u7684\u52a9\u8bb0\u8bcd\uff0c\u90a3\u4e48\u4ed6\u4e5f\u5c31\u53d6\u5f97\u4e86\u60a8\u7684\u79c1\u94a5\u5e76\u4e14\u53ef\u4ee5\u63a7\u5236\u76f8\u5173\u8d26\u6237\u3002"))),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"\u5728\u786e\u8ba4\u5df2\u7ecf\u5b89\u5168\u4fdd\u5b58\u597d\u60a8\u7684\u52a9\u8bb0\u8bcd\u4ee5\u540e\uff08\u81f3\u5c113\u904d\uff01\uff09\uff0c\u4f60\u53ef\u4ee5\u7528\u5982\u4e0b\u547d\u4ee4\u6e05\u9664\u7ec8\u7aef\u7a97\u53e3\u4e2d\u7684\u547d\u4ee4\u5386\u53f2\u8bb0\u5f55\uff0c\u4ee5\u9632\u6709\u4eba\u901a\u8fc7\u5386\u53f2\u8bb0\u5f55\u83b7\u5f97\u60a8\u7684\u52a9\u8bb0\u8bcd\u3002"),(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"history -c\nrm ~/.bash_history\n"))),(0,i.kt)("p",null,"\u4f60\u53ef\u4ee5\u7528\u4ee5\u4e0b\u547d\u4ee4\u4f7f\u7528\u52a9\u8bb0\u8bcd\u751f\u6210\u591a\u4e2a\u8d26\u6237\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad keys add --recover --account 1\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"")," \u662f\u8d26\u6237\u540d\u79f0\uff0c\u7528\u6765\u6307\u4ee3\u7528\u52a9\u8bb0\u8bcd\u751f\u6210\u79c1\u94a5/\u516c\u94a5\u5bf9\u7684Cosmos\u8d26\u6237\u3002\u5728\u60a8\u53d1\u8d77\u4ea4\u6613\u65f6\uff0c\u8fd9\u4e2a\u8d26\u6237\u540d\u79f0\u7528\u6765\u8bc6\u522b\u60a8\u7684\u8d26\u6237\u3002"))),(0,i.kt)("li",{parentName:"ul"},"\u60a8\u53ef\u4ee5\u901a\u8fc7\u589e\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"--account")," \u6807\u5fd7\u6765\u6307\u5b9a\u60a8\u8d26\u6237\u751f\u6210\u7684\u8def\u5f84 (",(0,i.kt)("inlineCode",{parentName:"li"},"0"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"1"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"2"),", ...)\uff0c ",(0,i.kt)("inlineCode",{parentName:"li"},"0")," \u662f\u7f3a\u7701\u503c\u3002")),(0,i.kt)("p",null,"\u8fd9\u6761\u547d\u4ee4\u9700\u8981\u60a8\u8f93\u5165\u4e00\u4e2a\u5bc6\u7801\u3002\u6539\u53d8\u8d26\u53f7\u5c31\u4ee3\u8868\u751f\u6210\u4e86\u4e00\u4e2a\u65b0\u7684\u8d26\u6237\u3002 "),(0,i.kt)("h2",{id:"\u8bbf\u95eecosmos-hub\u7f51\u7edc"},"\u8bbf\u95eeCosmos Hub\u7f51\u7edc"),(0,i.kt)("p",null,"\u4e3a\u4e86\u67e5\u8be2\u7f51\u7edc\u72b6\u6001\u548c\u53d1\u8d77\u4ea4\u6613\uff0c\u4f60\u9700\u8981\u901a\u8fc7\u81ea\u5efa\u4e00\u4e2a\u5168\u8282\u70b9\uff0c\u6216\u8005\u8fde\u63a5\u5230\u5176\u4ed6\u4eba\u7684\u5168\u8282\u70b9\u8bbf\u95eeCosmos Hub\u7f51\u7edc"),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a \u8bf7\u4e0d\u8981\u4e0e\u4efb\u4f55\u4eba\u5206\u4eab\u60a8\u7684\u52a9\u8bb0\u8bcd\uff0c\u60a8\u662f\u552f\u4e00\u9700\u8981\u77e5\u9053\u8fd9\u4e9b\u52a9\u8bb0\u8bcd\u7684\u4eba\u3002\u5982\u679c\u4efb\u4f55\u4eba\u901a\u8fc7\u90ae\u4ef6\u6216\u8005\u5176\u4ed6\u793e\u4ea4\u5a92\u4f53\u5411\u60a8\u8981\u6c42\u60a8\u63d0\u4f9b\u60a8\u7684\u52a9\u8bb0\u8bcd\uff0c\u90a3\u5c31\u9700\u8981\u8b66\u60d5\u4e86\u3002 \u8bf7\u8bb0\u4f4f\uff0cCosmos/Tendermint\u56e2\u961f\uff0c\u6216\u8de8\u94fe\u57fa\u91d1\u4f1a\u6c38\u8fdc\u4e0d\u4f1a\u901a\u8fc7\u90ae\u4ef6\u8981\u6c42\u60a8\u63d0\u4f9b\u60a8\u7684\u8d26\u6237\u5bc6\u7801\u6216\u52a9\u8bb0\u8bcd\u3002"))),(0,i.kt)("h3",{id:"\u8fd0\u884c\u60a8\u81ea\u5df1\u7684\u5168\u8282\u70b9"},"\u8fd0\u884c\u60a8\u81ea\u5df1\u7684\u5168\u8282\u70b9"),(0,i.kt)("p",null,"\u8fd9\u662f\u6700\u5b89\u5168\u7684\u9014\u5f84\uff0c\u4f46\u9700\u8981\u76f8\u5f53\u591a\u7684\u8d44\u6e90\u3002\u60a8\u9700\u8981\u6709\u8f83\u5927\u7684\u5e26\u5bbd\u548c\u81f3\u5c111TB\u7684\u78c1\u76d8\u5bb9\u91cf\u6765\u8fd0\u884c\u4e00\u4e2a\u5168\u8282\u70b9\u3002 "),(0,i.kt)("p",null," ",(0,i.kt)("inlineCode",{parentName:"p"},"gaia"),"\u7684\u5b89\u88c5\u6559\u7a0b\u5728",(0,i.kt)("a",{parentName:"p",href:"../getting-started/installation.md"},"\u8fd9\u91cc"),"\uff0c \u5982\u4f55\u8fd0\u884c\u4e00\u4e2a\u5168\u8282\u70b9\u6307\u5bfc\u5728",(0,i.kt)("a",{parentName:"p",href:"../hub-tutorials/join-mainnet.md"},"\u8fd9\u91cc")),(0,i.kt)("h3",{id:"\u8fde\u63a5\u5230\u4e00\u4e2a\u8fdc\u7a0b\u5168\u8282\u70b9"},"\u8fde\u63a5\u5230\u4e00\u4e2a\u8fdc\u7a0b\u5168\u8282\u70b9"),(0,i.kt)("p",null,"\u5982\u679c\u60a8\u4e0d\u60f3\u6216\u6ca1\u6709\u80fd\u529b\u8fd0\u884c\u4e00\u4e2a\u5168\u8282\u70b9\uff0c\u60a8\u4e5f\u53ef\u4ee5\u8fde\u63a5\u5230\u5176\u4ed6\u4eba\u7684\u5168\u8282\u70b9\u3002\u60a8\u9700\u8981\u8c28\u614e\u7684\u9009\u62e9\u4e00\u4e2a\u53ef\u4fe1\u7684\u8fd0\u8425\u5546\uff0c\u56e0\u4e3a\u6076\u610f\u7684\u8fd0\u8425\u5546\u5f80\u5f80\u4f1a\u5411\u60a8\u53cd\u9988\u9519\u8bef\u7684\u67e5\u8be2\u7ed3\u679c\uff0c\u6216\u8005\u5bf9\u60a8\u7684\u4ea4\u6613\u8fdb\u884c\u76d1\u63a7\u3002 \u7136\u800c\uff0c\u4ed6\u4eec\u6c38\u8fdc\u4e5f\u65e0\u6cd5\u76d7\u53d6\u60a8\u7684\u8d44\u4ea7\uff0c\u56e0\u4e3a\u60a8\u7684\u79c1\u94a5\u4ec5\u4fdd\u6301\u5728\u60a8\u7684\u672c\u5730\u8ba1\u7b97\u673a\u6216\u8005\u94b1\u5305\u8bbe\u5907\u4e2d\u3002 \u9a8c\u8bc1\u4eba\uff0c\u94b1\u5305\u4f9b\u5e94\u5546\u6216\u8005\u4ea4\u6613\u6240\u662f\u53ef\u4ee5\u63d0\u4f9b\u5168\u8282\u70b9\u7684\u8fd0\u8425\u5546\u3002"),(0,i.kt)("p",null,"\u8fde\u63a5\u5230\u5176\u4ed6\u4eba\u63d0\u4f9b\u7684\u5168\u8282\u70b9\uff0c\u4f60\u9700\u8981\u4e00\u4e2a\u5168\u8282\u70b9\u5730\u5740\uff0c\u5982",(0,i.kt)("inlineCode",{parentName:"p"},"https://77.87.106.33:26657"),"\u3002\u8fd9\u4e2a\u5730\u5740\u662f\u60a8\u7684\u4f9b\u5e94\u5546\u63d0\u4f9b\u7684\u4e00\u4e2a\u53ef\u4fe1\u7684\u63a5\u5165\u5730\u5740\u3002\u4f60\u4f1a\u5728\u4e0b\u4e00\u8282\u4e2d\u7528\u5230\u8fd9\u4e2a\u5730\u5740\u3002"),(0,i.kt)("h2",{id:"\u8bbe\u7f6e-gaiad"},"\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"h2"},"gaiad")),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5728\u5f00\u59cb\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"strong"},"gaiad"),"\u524d\uff0c\u8bf7\u786e\u8ba4\u4f60\u5df2\u7ecf\u53ef\u4ee5",(0,i.kt)("a",{parentName:"strong",href:"#%E8%AE%BF%E9%97%AEcosmos-hub%E7%BD%91%E7%BB%9C"},"\u8bbf\u95eeCosmos Hub\u7f51\u7edc")))),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u8bf7\u786e\u8ba4\u60a8\u4f7f\u7528\u7684",(0,i.kt)("inlineCode",{parentName:"strong"},"gaiad"),"\u662f\u6700\u65b0\u7684\u7a33\u5b9a\u7248\u672c"))),(0,i.kt)("p",null,"\u65e0\u8bba\u60a8\u662f\u5426\u5728\u81ea\u5df1\u8fd0\u884c\u4e00\u4e2a\u8282\u70b9\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad")," \u90fd\u53ef\u4ee5\u5e2e\u60a8\u5b9e\u73b0\u4e0eCosmos Hub\u7f51\u7edc\u7684\u4ea4\u4e92\u3002\u8ba9\u6211\u4eec\u6765\u5b8c\u6210\u5bf9\u5b83\u7684\u914d\u7f6e\u3002"),(0,i.kt)("p",null,"\u60a8\u9700\u8981\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u884c\u5b8c\u6210\u5bf9",(0,i.kt)("inlineCode",{parentName:"p"},"gaiad"),"\u7684\u914d\u7f6e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad config \n")),(0,i.kt)("p",null,"\u6b64\u547d\u540d\u5141\u8bb8\u60a8\u4e3a\u6bcf\u4e2a\u53c2\u6570\u8bbe\u7f6e\u7f3a\u7701\u503c\u3002"),(0,i.kt)("p",null,"\u9996\u5148\uff0c\u8bbe\u7f6e\u4f60\u60f3\u8981\u8bbf\u95ee\u7684\u5168\u8282\u70b9\u7684\u5730\u5740\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad config node :\n\n// \u67e5\u8be2\u6307\u5b9a\u5730\u5740\u7684\u9a8c\u8bc1\u4eba\u76f8\u5173\u7684\u6240\u6709\u59d4\u6258\u4fe1\u606f (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)\ngaiad query staking delegations \n\n// \u67e5\u8be2\u4ece\u4e00\u4e2a\u6307\u5b9a\u5730\u5740\u7684\u59d4\u6258\u4eba(e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)\u548c\u4e00\u4e2a\u6307\u5b9a\u5730\u5740\u7684\u9a8c\u8bc1\u4eba(e.g. cosmosvaloper1n5pepvmgsfd3p2tqqgvt505jvymmstf6s9gw27) \u4e4b\u95f4\u7684\u59d4\u6258\u4ea4\u6613\ngaiad query staking delegation \n\n// \u67e5\u8be2\u4e00\u4e2a\u6307\u5b9a\u5730\u5740\u7684\u59d4\u6258\u4eba(e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)\u6240\u80fd\u83b7\u5f97\u7684\u5956\u52b1\u60c5\u51b5\ngaiad query distribution rewards \n\n// \u67e5\u8be2\u6240\u6709\u73b0\u5728\u6b63\u7b49\u5f85\u62b5\u62bc\u7684\u63d0\u6848\ngaiad query gov proposals --status deposit_period\n\n//\u67e5\u8be2\u6240\u6709\u73b0\u5728\u6b63\u7b49\u5f85\u6295\u7968\u7684\u586b\ngaiad query gov proposals --status voting_period\n\n// \u67e5\u8be2\u4e00\u4e2a\u6307\u5b9apropsalID\u7684\u63d0\u6848\u4fe1\u606f\ngaiad query gov proposal \n")),(0,i.kt)("p",null,"\u9700\u8981\u4e86\u89e3\u8ddf\u591a\u7684\u547d\u4ee4\uff0c\u53ea\u9700\u8981\u7528\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"gaiad query\n")),(0,i.kt)("p",null,"\u5bf9\u4e8e\u6bcf\u6761\u547d\u4ee4\uff0c\u60a8\u90fd\u53ef\u4ee5\u4f7f\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"-h")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"--help")," \u53c2\u6570\u6765\u83b7\u5f97\u66f4\u591a\u7684\u4fe1\u606f\u3002"),(0,i.kt)("h2",{id:"\u53d1\u8d77\u4ea4\u6613"},"\u53d1\u8d77\u4ea4\u6613"),(0,i.kt)("h3",{id:"\u5173\u4e8egas\u8d39\u548c\u624b\u7eed\u8d39"},"\u5173\u4e8egas\u8d39\u548c\u624b\u7eed\u8d39"),(0,i.kt)("p",null,"Cosmos Hub\u7f51\u7edc\u4e0a\u7684\u4ea4\u6613\u5728\u88ab\u6267\u884c\u65f6\u9700\u8981\u652f\u4ed8\u624b\u7eed\u8d39\u3002\u8fd9\u4e2a\u624b\u7eed\u8d39\u662f\u7528\u4e8e\u652f\u4ed8\u6267\u884c\u4ea4\u6613\u6240\u9700\u7684gas\u3002\u8ba1\u7b97\u516c\u5f0f\u5982\u4e0b\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"fees = gas * gasPrices\n")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u7684\u591a\u5c11\u53d6\u51b3\u4e8e\u4ea4\u6613\u7c7b\u578b\uff0c\u4e0d\u540c\u7684\u4ea4\u6613\u7c7b\u578b\u4f1a\u6536\u53d6\u4e0d\u540c\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u3002\u6bcf\u4e2a\u4ea4\u6613\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u8d39\u662f\u5728\u5b9e\u9645\u6267\u884c\u8fc7\u7a0b\u4e2d\u8ba1\u7b97\u7684\uff0c\u4f46\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u53c2\u6570\u4e2d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"auto")," \u503c\u5b9e\u73b0\u5728\u4ea4\u6613\u524d\u5bf9 ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u8d39\u7684\u4f30\u7b97\uff0c\u4f46\u8fd9\u53ea\u662f\u4e00\u4e2a\u7c97\u7565\u7684\u4f30\u8ba1\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"--gas-adjustment")," (\u7f3a\u7701\u503c ",(0,i.kt)("inlineCode",{parentName:"p"},"1.0"),") \u5bf9\u9884\u4f30\u7684",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u503c\u8fdb\u884c\u8c03\u8282\uff0c\u4ee5\u786e\u4fdd\u4e3a\u4ea4\u6613\u652f\u4ed8\u8db3\u591f\u7684",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice")," \u7528\u4e8e\u8bbe\u7f6e\u5355\u4f4d ",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u7684\u4ef7\u683c\u3002\u6bcf\u4e2a\u9a8c\u8bc1\u4eba\u4f1a\u8bbe\u7f6e\u4e00\u4e2a\u6700\u4f4egas\u4ef7",(0,i.kt)("inlineCode",{parentName:"p"},"min-gas-price"),", \u5e76\u53ea\u4f1a\u5c06",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\u5927\u4e8e",(0,i.kt)("inlineCode",{parentName:"p"},"min-gas-price"),"\u7684\u4ea4\u6613\u6253\u5305\u3002"),(0,i.kt)("p",null,"\u4ea4\u6613\u7684",(0,i.kt)("inlineCode",{parentName:"p"},"fees")," \u662f",(0,i.kt)("inlineCode",{parentName:"p"},"gas")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"\u7684\u4e58\u79ef\u3002\u4f5c\u4e3a\u4e00\u4e2a\u7528\u6237\uff0c\u4f60\u9700\u8981\u8f93\u51653\u4e2a\u53c2\u6570\u4e2d\u81f3\u5c112\u4e2a\uff0c ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice"),"/",(0,i.kt)("inlineCode",{parentName:"p"},"fees"),"\u7684\u503c\u8d8a\u5927\uff0c\u60a8\u7684\u4ea4\u6613\u5c31\u8d8a\u6709\u673a\u4f1a\u88ab\u6253\u5305\u6267\u884c\u3002"),(0,i.kt)("h3",{id:"\u62b5\u62bcatom\u901a\u8bc1--\u63d0\u53d6\u5956\u52b1"},"\u62b5\u62bcAtom\u901a\u8bc1 & \u63d0\u53d6\u5956\u52b1"),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5728\u60a8\u62b5\u62bc\u901a\u8bc1\u6216\u53d6\u56de\u5956\u52b1\u4e4b\u524d\uff0c\u60a8\u9700\u8981\u5b8c\u6210",(0,i.kt)("a",{parentName:"strong",href:"#%E8%AE%BE%E7%BD%AE-gaiad"},(0,i.kt)("inlineCode",{parentName:"a"},"gaiad")," \u8bbe\u7f6e")," \u548c ",(0,i.kt)("a",{parentName:"strong",href:"#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%B4%A6%E6%88%B7"},"\u521b\u5efa\u8d26\u6237")))),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5728\u62b5\u62bc\u901a\u8bc1\u524d\uff0c\u8bf7\u4ed4\u7ec6\u9605\u8bfb",(0,i.kt)("a",{parentName:"strong",href:"https://cosmos.network/resources/delegators"},"\u59d4\u6258\u8005\u5e38\u89c1\u95ee\u9898")," \u5e76\u4e14\u7406\u89e3\u5176\u4e2d\u7684\u98ce\u9669\u548c\u8d23\u4efb"))),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u9700\u8981\u5728\u4e00\u53f0\u8054\u7f51\u7684\u8ba1\u7b97\u673a\u3002\u7528\u4e00\u4e2a\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u6267\u884c\u8fd9\u4e9b\u547d\u4ee4\u4f1a\u66f4\u5b89\u5168\u3002\u5173\u4e8e\u79bb\u7ebf\u4ea4\u6613\u8fc7\u7a0b\u8bf7\u770b",(0,i.kt)("a",{parentName:"strong",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"},"\u8fd9\u91cc"),"."))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"// \u5411\u6307\u5b9a\u9a8c\u8bc1\u4eba\u7ed1\u5b9a\u4e00\u5b9a\u6570\u91cf\u7684Atom\u901a\u8bc1\n// \u53c2\u6570\u8bbe\u5b9a\u6837\u4f8b: =cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, =10000000000uatom, =1000uatom\n\ngaiad tx staking delegate --from --gas auto --gas-prices \n\n\n// \u63d0\u53d6\u6240\u6709\u7684\u5956\u52b1\n// \u53c2\u6570\u8bbe\u5b9a\u6837\u4f8b: =1000uatom\n\ngaiad tx distribution withdraw-all-rewards --from --gas auto --gas-prices \n\n\n// \u5411\u6307\u5b9a\u9a8c\u8bc1\u4eba\u7533\u8bf7\u89e3\u7ed1\u4e00\u5b9a\u6570\u91cf\u7684Atom\u901a\u8bc1\n// \u89e3\u7ed1\u7684\u901a\u8bc1\u9700\u89813\u5468\u540e\u624d\u80fd\u5b8c\u5168\u89e3\u7ed1\u5e76\u53ef\u4ee5\u4ea4\u6613\uff0c\n// \u53c2\u6570\u8bbe\u5b9a\u6837\u4f8b: =cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, =10000000000uatom, =1000uatom\n\ngaiad tx staking unbond --from --gas auto --gas-prices \n")),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"}),(0,i.kt)("p",null,"\u5982\u679c\u60a8\u662f\u4f7f\u7528\u4e00\u4e2a\u8054\u7f51\u7684\u94b1\u5305\u8bbe\u5907\uff0c\u5728\u4ea4\u6613\u88ab\u5e7f\u64ad\u5230\u7f51\u7edc\u524d\u60a8\u9700\u8981\u5728\u8bbe\u5907\u4e0a\u786e\u8ba4\u4ea4\u6613\u3002"),(0,i.kt)("p",null,"\u786e\u8ba4\u60a8\u7684\u4ea4\u6613\u5df2\u7ecf\u53d1\u51fa\uff0c\u53ef\u4ee5\u7528\u4ee5\u4e0b\u67e5\u8be2\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"// \u60a8\u7684\u8d26\u6237\u4f59\u989d\u5728\u60a8\u62b5\u62bcAtom\u901a\u8bc1\u6216\u8005\u53d6\u56de\u5956\u52b1\u540e\u4f1a\u53d1\u751f\u53d8\u5316\ngaiad query account\n\n// \u60a8\u5728\u62b5\u62bc\u540e\u5e94\u8be5\u80fd\u67e5\u5230\u59d4\u6258\u4ea4\u6613\ngaiad query staking delegations \n\n// \u5982\u679c\u4ea4\u6613\u5df2\u7ecf\u88ab\u6253\u5305\uff0c\u5c06\u4f1a\u8fd4\u56de\u4ea4\u6613\u8bb0\u5f55\uff08tx\uff09\n// \u5728\u4ee5\u4e0b\u67e5\u8be2\u547d\u4ee4\u4e2d\u53ef\u4ee5\u4f7f\u7528\u663e\u793a\u7684\u4ea4\u6613\u54c8\u5e0c\u503c\u4f5c\u4e3a\u53c2\u6570\ngaiad query tx \n\n")),(0,i.kt)("p",null,"\u5982\u679c\u60a8\u662f\u8fde\u63a5\u5230\u4e00\u4e2a\u53ef\u4fe1\u5168\u8282\u70b9\u7684\u8bdd\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u4e00\u4e2a\u533a\u5757\u94fe\u6d4f\u89c8\u5668\u505a\u68c0\u67e5\u3002"),(0,i.kt)("h2",{id:"\u53c2\u4e0e\u94fe\u4e0a\u6cbb\u7406"},"\u53c2\u4e0e\u94fe\u4e0a\u6cbb\u7406"),(0,i.kt)("h4",{id:"\u94fe\u4e0a\u6cbb\u7406\u5165\u95e8"},"\u94fe\u4e0a\u6cbb\u7406\u5165\u95e8"),(0,i.kt)("p",null,"Cosmos Hub\u6709\u4e00\u4e2a\u5185\u5efa\u7684\u6cbb\u7406\u7cfb\u7edf\uff0c\u8be5\u7cfb\u7edf\u5141\u8bb8\u62b5\u62bc\u901a\u8bc1\u7684\u6301\u6709\u4eba\u53c2\u4e0e\u63d0\u6848\u6295\u7968\u3002\u7cfb\u7edf\u73b0\u5728\u652f\u63013\u79cd\u63d0\u6848\u7c7b\u578b\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Text Proposals"),": \u8fd9\u662f\u6700\u57fa\u672c\u7684\u4e00\u79cd\u63d0\u6848\u7c7b\u578b\uff0c\u901a\u5e38\u7528\u4e8e\u83b7\u5f97\u5927\u5bb6\u5bf9\u67d0\u4e2a\u7f51\u7edc\u6cbb\u7406\u610f\u89c1\u7684\u89c2\u70b9\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Parameter Proposals"),": \u8fd9\u79cd\u63d0\u6848\u901a\u5e38\u7528\u4e8e\u6539\u53d8\u7f51\u7edc\u53c2\u6570\u7684\u8bbe\u5b9a\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Software Upgrade Proposal"),": \u8fd9\u4e2a\u63d0\u6848\u7528\u4e8e\u5347\u7ea7Hub\u7684\u8f6f\u4ef6\u3002")),(0,i.kt)("p",null,"\u4efb\u4f55Atom\u901a\u8bc1\u7684\u6301\u6709\u4eba\u90fd\u80fd\u591f\u63d0\u4ea4\u4e00\u4e2a\u63d0\u6848\u3002\u4e3a\u4e86\u8ba9\u4e00\u4e2a\u63d0\u6848\u83b7\u51c6\u516c\u5f00\u6295\u7968\uff0c\u63d0\u8bae\u4eba\u5fc5\u987b\u8981\u62b5\u62bc\u4e00\u5b9a\u91cf\u7684\u901a\u8bc1 ",(0,i.kt)("inlineCode",{parentName:"p"},"deposit"),"\uff0c\u4e14\u62b5\u62bc\u503c\u5fc5\u987b\u5927\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"minDeposit")," \u53c2\u6570\u8bbe\u5b9a\u503c. \u63d0\u6848\u7684\u62b5\u62bc\u4e0d\u9700\u8981\u63d0\u6848\u4eba\u4e00\u6b21\u5168\u90e8\u4ea4\u4ed8\u3002\u5982\u679c\u65e9\u671f\u63d0\u6848\u4eba\u4ea4\u4ed8\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"deposit")," \u4e0d\u8db3\uff0c\u90a3\u4e48\u63d0\u6848\u8fdb\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"deposit_period")," \u72b6\u6001\u3002 \u6b64\u540e\uff0c\u4efb\u4f55\u901a\u8bc1\u6301\u6709\u4eba\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"depositTx")," \u4ea4\u6613\u589e\u52a0\u5bf9\u63d0\u6848\u7684\u62b5\u62bc\u3002"),(0,i.kt)("p",null,"\u5f53",(0,i.kt)("inlineCode",{parentName:"p"},"deposit")," \u8fbe\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"minDeposit"),"\uff0c\u63d0\u6848\u8fdb\u51652\u5468\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"voting_period")," \u3002 \u4efb\u4f55",(0,i.kt)("strong",{parentName:"p"},"\u62b5\u62bc\u4e86\u901a\u8bc1"),"\u7684\u6301\u6709\u4eba\u90fd\u53ef\u4ee5\u53c2\u4e0e\u5bf9\u8fd9\u4e2a\u63d0\u6848\u7684\u6295\u7968\u3002\u6295\u7968\u7684\u9009\u9879\u6709",(0,i.kt)("inlineCode",{parentName:"p"},"Yes"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"No"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"NoWithVeto")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Abstain"),"\u3002\u6295\u7968\u7684\u6743\u91cd\u53d6\u51b3\u4e8e\u6295\u7968\u4eba\u6240\u62b5\u62bc\u7684\u901a\u8bc1\u6570\u91cf\u3002\u5982\u679c\u901a\u8bc1\u6301\u6709\u4eba\u4e0d\u6295\u7968\uff0c\u90a3\u4e48\u59d4\u6258\u4eba\u5c06\u7ee7\u627f\u5176\u59d4\u6258\u7684\u9a8c\u8bc1\u4eba\u7684\u6295\u7968\u9009\u9879\u3002\u5f53\u7136\uff0c\u59d4\u6258\u4eba\u4e5f\u53ef\u4ee5\u81ea\u5df1\u6295\u51fa\u4e0e\u6240\u59d4\u6258\u9a8c\u8bc1\u4eba\u4e0d\u540c\u7684\u7968\u3002 "),(0,i.kt)("p",null,"\u5f53\u6295\u7968\u671f\u7ed3\u675f\u540e\uff0c\u83b7\u5f9750%\uff08\u4e0d\u5305\u62ec\u6295",(0,i.kt)("inlineCode",{parentName:"p"},"Abstain"),"\u7968\uff09\u4ee5\u4e0a ",(0,i.kt)("inlineCode",{parentName:"p"},"Yes")," \u6295\u7968\u6743\u91cd\u4e14\u5c11\u4e8e33.33% \u7684",(0,i.kt)("inlineCode",{parentName:"p"},"NoWithVeto"),"\uff08\u4e0d\u5305\u62ec\u6295",(0,i.kt)("inlineCode",{parentName:"p"},"Abstain"),"\u7968\uff09\u63d0\u6848\u5c06\u88ab\u63a5\u53d7\uff0c"),(0,i.kt)("h4",{id:"\u5b9e\u8df5\u7ec3\u4e60"},"\u5b9e\u8df5\u7ec3\u4e60"),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u5728\u60a8\u80fd\u591f\u62b5\u62bc\u901a\u8bc1\u6216\u8005\u63d0\u53d6\u5956\u52b1\u4ee5\u524d\uff0c\u60a8\u9700\u8981\u4e86\u89e3",(0,i.kt)("a",{parentName:"strong",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"},"\u901a\u8bc1\u62b5\u62bc")))),(0,i.kt)("admonition",{title:"\u8b66\u544a",type:"warning"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u9700\u8981\u4e00\u53f0\u8054\u7f51\u7684\u8ba1\u7b97\u673a\u3002\u7528\u4e00\u4e2a\u786c\u4ef6\u94b1\u5305\u8bbe\u5907\u6267\u884c\u8fd9\u4e9b\u547d\u4ee4\u4f1a\u66f4\u5b89\u5168\u3002\u5173\u4e8e\u79bb\u7ebf\u4ea4\u6613\u8fc7\u7a0b\u8bf7\u770b",(0,i.kt)("a",{parentName:"strong",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"},"\u8fd9\u91cc"),"."))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'// \u63d0\u4ea4\u4e00\u4e2a\u63d0\u6848\n// =text/parameter_change/software_upgrade\n// ex value for flag: =100uatom\n\ngaiad tx gov submit-proposal --title "Test Proposal" --description "My awesome proposal" --type --deposit=10000000uatom --gas auto --gas-prices --from \n\n// \u589e\u52a0\u5bf9\u63d0\u6848\u7684\u62b5\u62bc\n// Retrieve proposalID from $gaiad query gov proposals --status deposit_period\n// \u901a\u8fc7 $gaiad query gov proposals --status deposit_period \u547d\u4ee4\u83b7\u5f97 `proposalID` \n// \u53c2\u6570\u8bbe\u5b9a\u6837\u4f8b: =1000000uatom\n\ngaiad tx gov deposit --gas auto --gas-prices --from \n\n// \u5bf9\u4e00\u4e2a\u63d0\u6848\u6295\u7968\n// Retrieve proposalID from $gaiad query gov proposals --status voting_period \n\u901a\u8fc7 $gaiad query gov proposals --status deposit_period \u547d\u4ee4\u83b7\u5f97 `proposalID` \n//