Cleanup in preparation of new docs (#183)

* l

* start cleanup

* cleanup gaia

* remove alpha mention

* crop

* update version

* link fix
This commit is contained in:
gamarin2 2019-12-11 16:50:36 +01:00 committed by Federico Kunze
parent 6e21ebe8c8
commit 495feeca8e
40 changed files with 617 additions and 125 deletions

View File

@ -9,22 +9,13 @@
[![GolangCI](https://golangci.com/badges/github.com/cosmos/gaia.svg)](https://golangci.com/r/github.com/cosmos/gaia)
[![riot.im](https://img.shields.io/badge/riot.im-JOIN%20CHAT-green.svg)](https://riot.im/app/#/room/#cosmos-sdk:matrix.org)
This repository hosts `Gaia`, the first implementation of the Cosmos Hub.
This repository hosts `Gaia`, the first implementation of the Cosmos Hub based on the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk).
**Note**: Requires [Go 1.13+](https://golang.org/dl/)
**DISCLAIMER**: The current version of Gaia running the Cosmos Hub (v0.34.x) is
__NOT__ maintained in this repository. Gaia and the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/)
have been recently split. All future versions of Gaia, including the next major
upgrade, will be maintained in this repository. However, until the next major upgrade,
Gaia should be fetched and built from the latest [released](https://github.com/cosmos/cosmos-sdk/releases)
__v0.34.x__ version in the SDK repository. In addition, this repository should be
considered unstable until the next major release of Gaia. Please bear with us
while we continue the migration process and update documentation.
## Cosmos Hub Mainnet
To run a full-node for the mainnet of the Cosmos Hub, first [install `gaia`](./docs/installation.md), then follow [the guide](./docs/join-mainnet.md).
To run a full-node for the mainnet of the Cosmos Hub, first [install `gaiad`](./docs/installation.md), then follow [the guide](./docs/join-mainnet.md).
For status updates and genesis file, see the [launch repo](https://github.com/cosmos/launch).

View File

@ -24,13 +24,6 @@ The [README.md](./README.md) is also the landing page for the documentation
on the website. During the Jenkins build, the current commit is added to the bottom
of the README.
## Config.js
The [config.js](./.vuepress/config.js) generates the sidebar and Table of Contents
on the website docs. Note the use of relative links and the omission of
file extensions. Additional features are available to improve the look
of the sidebar.
## Links
**NOTE:** Strongly consider the existing links - both within this directory
@ -90,14 +83,6 @@ python -m SimpleHTTPServer 8080
then navigate to localhost:8080 in your browser.
## Build RPC Docs
First, run `make tools` from the root of repo, to install the swagger-ui tool.
Then, edit the `swagger.yaml` manually; it is found [here](https://github.com/cosmos/gaia/blob/master/cmd/gaiacli/swagger-ui/swagger.yaml)
Finally, run `make update-gaia-lite-docs` from the root of the repo.
## Search
We are using [Algolia](https://www.algolia.com) to power full-text search. This uses a public API search-only key in the `config.js` as well as a [cosmos_network.json](https://github.com/algolia/docsearch-configs/blob/master/configs/cosmos_network.json) configuration file that we can update with PRs.
@ -105,7 +90,7 @@ We are using [Algolia](https://www.algolia.com) to power full-text search. This
## Consistency
Because the build processes are identical (as is the information contained herein), this file should be kept in sync as
much as possible with its [counterpart in the Tendermint Core repo](https://github.com/tendermint/tendermint/blob/develop/docs/DOCS_README.md).
much as possible with its [counterpart in the Tendermint Core repo](https://github.com/tendermint/tendermint/blob/master/docs/DOCS_README.md).
### Update and Build the RPC docs

View File

@ -4,32 +4,31 @@ Welcome to the documentation of the **Cosmos Hub application: `gaia`**.
## What is Gaia?
- [Gaia](./what-is-gaia.md)
- [Intro to the `gaia` software](./gaia-tutorials/what-is-gaia.md)
## Join the Cosmos Hub Mainnet
- [Install the `gaia` application](./installation.md)
- [Set up a full node and join the mainnet](./join-mainnet.md)
- [Install the `gaia` application](./gaia-tutorials/installation.md)
- [Set up a full node and join the mainnet](./gaia-tutorials/join-mainnet.md)
- [Upgrade to a validator node](./validators/validator-setup.md)
## Join the Cosmos Hub Public Testnet
- [Join the testnet](./join-testnet.md)
- [Join the testnet](./gaia-tutorials/join-testnet.md)
## Setup Your Own `gaia` Testnet
- [Setup your own `gaia` testnet](./deploy-testnet.md)
- [Setup your own `gaia` testnet](./gaia-tutorials/deploy-testnet.md)
## Additional Resources
- [Intro to validators](./validators/overview.md)
- [Validator FAQ](./validators/validator-faq.md)
- [Validator security considerations](./validators/security.md)
- [Reproducible builds](./reproducible-builds.md)
- [Validator Resources](./validators/README.md): Contains documentation for `gaia` validators.
- [Delegator Resources](./delegators/README.md): Contains documentation for delegators.
- [Other Resources](./resources/README.md): Contains documentation on `gaiacli`, genesis file, service providers, ledger wallets, ...
# Contribute
See [this file](https://github.com/cosmos/gaia/blob/master/docs/DOCS_README.md) for details of the build process and
See [this file](./DOCS_README.md) for details of the build process and
considerations when making changes.
# Version

13
docs/delegators/README.md Normal file
View File

@ -0,0 +1,13 @@
---
order: false
parent:
order: 2
---
# Delegators
This folder contains documentation relevant to delegators of the Cosmos Hub and other `gaia` blockchains.
- [Delegator CLI Guide](./delegator-guide-cli.md)
- [Delegators FAQ](./delegator-faq.md)
- [Delegator Security Notice](./delegator-security.md)

View File

@ -0,0 +1,71 @@
---
order: 2
---
# Delegator FAQ
## What is a delegator?
People that cannot or do not want to operate [validator nodes](..//validators/overview.md) can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 100 addresses with highest stake, they will exit the validator set.
**Delegators share the revenue of their validators, but they also share the risks.** In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see [section](#choosing-a-validator) below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see [Risks](#risks) section.
To become delegators, Atom holders need to send a ["Delegate transaction"](./delegator-guide-cli.md#sending-transactions) where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.
For a practical guide on how to become a delegator, click [here](./delegator-guide-cli.md).
## Choosing a validator
In order to choose their validators, delegators have access to a range of information directly in [Lunie](https://lunie.io) or other Cosmos block explorers.
- **Validator's moniker**: Name of the validator candidate.
- **Validator's description**: Description provided by the validator operator.
- **Validator's website**: Link to the validator's website.
- **Initial commission rate**: The commission rate on revenue charged to any delegator by the validator (see below for more detail).
- **Commission max change rate:** The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.
- **Maximum commission:** The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.
- **Minimum self-bond amount**: Minimum amount of Atoms the validator candidate need to have bonded at all time. If the validator's self-bonded stake falls below this limit, their entire staking pool (i.e. all its delegators) will unbond. This parameter exists as a safeguard for delegators. Indeed, when a validator misbehaves, part of their total stake gets slashed. This included the validator's self-delegateds stake as well as their delegators' stake. Thus, a validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount. The minimum self-bond amount parameter guarantees to delegators that a validator will never fall below a certain amount of self-bonded stake, thereby ensuring a minimum level of skin-in-the-game. This parameter can only be increased by the validator operator.
## Directives of delegators
Being a delegator is not a passive task. Here are the main directives of a delegator:
- **Perform careful due diligence on validators before delegating.** If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.
- **Actively monitor their validator after having delegated.** Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).
- **Participate in governance.** Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.
## Revenue
Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:
- **Block provisions (Atoms):** They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.
- **Transaction fees (various tokens):** Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.
## Validator Commission
Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:
We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:
- 990 Atoms in block provisions
- 10 Atoms in transaction fees.
This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.
Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:
- Commission = `10% * 80% * 100` Atoms = 8 Atoms
- Validator's revenue = `20% * 100` Atoms + Commission = 28 Atoms
- Delegators' total revenue = `80% * 100` Atoms - Commission = 72 Atoms
Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.
## Risks
Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.
There is one main slashing condition:
- **Double signing:** If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.
This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s

View File

@ -1,3 +1,7 @@
---
order: 1
---
# Delegator Guide (CLI)
This document contains all the necessary information for delegators to interact with the Cosmos Hub through the Command-Line Interface (CLI).

View File

@ -0,0 +1,56 @@
---
order: 3
---
# Delegator Security
The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.
## Social Engineering
_[Social engineering](https://en.wikipedia.org/wiki/Social_engineering_(security))_ has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of [phishing](https://ssd.eff.org/en/module/how-avoid-phishing-attacks) or [spearphishing](https://en.wikipedia.org/wiki/Phishing#Spear_phishing) . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place [anywhere that you have an inbox](https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls) . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a [plethora of opportunities](https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy) to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that [sounds too good to be true](https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets) , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.
* **Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.** An attacker may attempt to lure you to a [compromised site](https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/) designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics [here](https://phishingquiz.withgoogle.com/) .
* **Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch**, so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.
* **No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us**, and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.
If you receive an email or tweet that sounds too good to be true, is likely to be a scam.
## Key Management
The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.
**To protect your ATOM, do not share your 12 words with anyone.** The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,
## Software Vulnerabilities
To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.
*To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of `gaiacli` when you're doing anything that involves your 12 words*. The latest versions of `Tendermint`, the `Cosmos-SDK`, and `gaiacli` will always be available from our official Github repositories.
No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.
## Verifying Transactions
Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.
**When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send**. While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.
## Account Security
One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.
For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.
* First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or [U2F hardware key](https://en.wikipedia.org/wiki/Universal_2nd_Factor) as a second factor.
* Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.
## Supply Chain Attacks
Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.
## Disclaimer
Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`

View File

@ -0,0 +1,16 @@
---
order: false
parent:
order: 3
---
# Gaia Tutorials
This folder contains tutorials related to the `gaia` application.
- [Introduction to the `gaia` application](./what-is-gaia.md)
- [Installing `gaiad`](./installation.md)
- [Running a full-node for the Cosmos Hub Mainnet](./join-mainnet.md)
- [Running a full-node for a `gaia` testnet](./join-testnet.md)
- [Upgrading a Node from a previous version](./upgrade-node.md)
- [Deploying a `gaia` testnet](./deploy-testnet.md)

View File

@ -1,3 +1,7 @@
---
order: 6
---
# Deploy Your Own Gaia Testnet
This document describes 3 ways to setup a network of `gaiad` nodes, each serving a different usecase:

View File

@ -1,9 +1,13 @@
---
order: 2
---
# Install Gaia
This guide will explain how to install the `gaiad` and `gaiacli` entrypoints
onto your system. With these installed on a server, you can participate in the
mainnet as either a [Full Node](./join-mainnet.md) or a
[Validator](./validators/validator-setup.md).
[Validator](../validators/validator-setup.md).
## Install Go
@ -61,8 +65,8 @@ $ gaiacli version --long
name: gaia
server_name: gaiad
client_name: gaiacli
version: 1.0.0
commit: 89e6316a27343304d332aadfe2869847bf52331c
version: 2.0.3
commit: 2f6783e298f25ff4e12cb84549777053ab88749a
build_tags: netgo,ledger
go: go version go1.12.5 darwin/amd64
```

View File

@ -1,4 +1,8 @@
# Join the mainnet
---
order: 3
---
# Join the Cosmos Hub Mainnet
::: tip
See the [launch repo](https://github.com/cosmos/launch) for
@ -79,7 +83,7 @@ If those seeds aren't working, you can find more seeds and persistent peers on a
You can also ask for peers on the [Validators Riot Room](https://riot.im/app/#/room/#cosmos-validators:matrix.org)
For more information on seeds and peers, you can [read this](https://github.com/tendermint/tendermint/blob/develop/docs/tendermint-core/using-tendermint.md#peers).
For more information on seeds and peers, you can [read this](https://tendermint.com/docs/spec/p2p/peer.html#peers).
## A Note on Gas and Fees
@ -179,4 +183,4 @@ deducted as the blockchain will halt (aka. this is a free transaction).
## Upgrade to Validator Node
You now have an active full node. What's the next step? You can upgrade your full node to become a Cosmos Validator. The top 100 validators have the ability to propose new blocks to the Cosmos Hub. Continue onto [the Validator Setup](./validators/validator-setup.md).
You now have an active full node. What's the next step? You can upgrade your full node to become a Cosmos Validator. The top 100 validators have the ability to propose new blocks to the Cosmos Hub. Continue onto [the Validator Setup](../validators/validator-setup.md).

View File

@ -1,3 +1,7 @@
---
order: 4
---
# Join the Public Testnet
::: tip Current Testnet
@ -17,7 +21,7 @@ of Gaia to use and details about the genesis file.
To start a new node, the mainnet instructions apply:
- [Join the mainnet](./join-mainnet.md)
- [Deploy a validator](./validators/validator-setup.md)
- [Deploy a validator](../validators/validator-setup.md)
The only difference is the SDK version and genesis file. See the [testnet repo](https://github.com/cosmos/testnets) for information on testnets, including the correct version of the Cosmos-SDK to use and details about the genesis file.

View File

@ -1,3 +1,7 @@
---
order: 5
---
# Upgrade Your Node
This document describes the upgrade procedure of a `gaiad` full-node to a new version.
@ -60,7 +64,7 @@ cp -f genesis.json new_genesis.json
mv new_genesis.json genesis.json
```
At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the `Account` type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script [here](https://github.com/cosmos/cosmos-sdk/blob/master/contrib/export/v0.33.x-to-v0.34.0.py).
At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the `Account` type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script [here](https://github.com/cosmos/cosmos-sdk/blob/02c6c9fafd58da88550ab4d7d494724a477c8a68/contrib/migrate/v0.33.x-to-v0.34.0.py).
## Reset Data

View File

@ -1,3 +1,7 @@
---
order: 1
---
# What is Gaia?
`gaia` is the name of the Cosmos SDK application for the Cosmos Hub. It comes with 2 main entrypoints:
@ -17,6 +21,6 @@
- `x/ibc`: Inter-blockchain transfers.
- `x/params`: Handles app-level parameters.
>About the Cosmos Hub: The Cosmos Hub is the first Hub to be launched in the Cosmos Network. The role of a Hub is to facilitate transfers between blockchains. If a blockchain connects to a Hub via IBC, it automatically gains access to all the other blockchains that are connected to it. The Cosmos Hub is a public Proof-of-Stake chain. Its staking token is called the Atom.
About the Cosmos Hub: The Cosmos Hub is the first Hub to be launched in the Cosmos Network. The role of a Hub is to facilitate transfers between blockchains. If a blockchain connects to a Hub via IBC, it automatically gains access to all the other blockchains that are connected to it. The Cosmos Hub is a public Proof-of-Stake chain. Its staking token is called the Atom.
Next, learn how to [install Gaia](./installation.md).

View File

@ -1,46 +0,0 @@
# Gaia Genesis State
Gaia genesis state, `GenesisState`, is composed of accounts, various module
states and metadata such as genesis transactions. Each module may specify its
own `GenesisState`. In addition, each module may specify its own genesis state
validation, import and export functionality.
The Gaia genesis state is defined as follows:
```go
type GenesisState struct {
AuthData auth.GenesisState `json:"auth"`
BankData bank.GenesisState `json:"bank"`
StakingData staking.GenesisState `json:"staking"`
MintData mint.GenesisState `json:"mint"`
DistrData distr.GenesisState `json:"distribution"`
GovData gov.GenesisState `json:"gov"`
SlashingData slashing.GenesisState `json:"slashing"`
GenTxs []json.RawMessage `json:"gentxs"`
}
```
In the ABCI `initChainer` definition of Gaia the `initFromGenesisState` is called
which internally calls each module's `InitGenesis` providing its own respective
`GenesisState` as a parameter.
## Accounts
Genesis accounts are defined in the `GenesisState` of the `x/auth` module and
exist under the `accounts` key. There is no single concrete implementation of a
genesis account but they all implement the `GenesisAccount` interface defined by
`x/auth`.
Each account must have a valid and unique account number in addition to a
sequence number (nonce) and address.
Accounts may also be vesting, in which case they must provide the necessary vesting
information. Vesting accounts must provide at a minimum `OriginalVesting` and
`EndTime`. If `StartTime` is also provided, the account will be treated as a
"continuous" vesting account in which it vests coins at a predefined schedule.
Providing a `StartTime` must be less than `EndTime` but may be in the future.
In other words, it does not have to be equal to the genesis time. In a new chain
starting from a fresh state (not exported), `OriginalVesting` must be less than
or equal to `Coins.`
<!-- TODO: Remaining modules and components in GenesisState -->

View File

@ -0,0 +1,71 @@
---
parent:
order: 1
---
![Welcome to the Cosmos Hub](../images/cosmos-hub-image.jpg)
# Cosmos Hub
The Cosmos Hub is the first of [thousands of interconnected blockchains](https://cosmos.network) that will eventually comprise the **Cosmos Network**. The primary token of the Cosmos Hub is the **ATOM**, but the Hub will support many tokens in the future.
## The ATOM
Do you have ATOM tokens? With ATOM, you have the superpower to contribute to the security and governance of the Cosmos Hub. Delegate your ATOM to one or more of the 100 validators on the Cosmos Hub blockchain to earn more ATOM through Proof-of-Stake. You can also vote with your ATOM to influence the future of the Cosmos Hub through on-chain governance proposals.
Learn more about [being a delegator](../delegators/delegator-faq.md), learn about [the security risks](../delegators/delegator-security.md), and start participating with one of the following wallets.
## Cosmos Hub Wallets
::: warning
Do your own research and take precautions in regards to wallet security. Neither Tendermint Inc nor the Interchain Foundation is liable if you lose your funds using these third party wallets.
:::
These community-maintained web and mobile wallets allow you to store & transfer ATOM, delegate ATOM to validators, and vote on on-chain governance proposals. Note that we do not endorse any of the wallets, they are listed for your convenience.
* [Atomic Wallet](https://atomicwallet.io/) - Android, Linux, macOS, Windows
* [Cobo](https://cobo.com/) - Android, iOS
* [Cosmostation](https://www.cosmostation.io/) - Android, iOS
* [Huobi Wallet](https://www.huobiwallet.com/) - Android, iOS
* [imToken](https://token.im/) - Android, iOS
* [Lunagram](https://lunamint.com/) - Android, iOS
* [Lunie](https://lunie.io) - Web
* [Math Wallet](https://www.mathwallet.org/en/) - Android, iOS, Web
* [Rainbow Wallet](https://www.rainbow.one) - Android, iOS
* [Qbao Wallet](https://qbao.fund/) - Android, iOS
* [Trust Wallet](https://trustwallet.com/) Android, iOS
* [Wetez](https://www.wetez.io/pc/homepage) - Android, iOS
## Cosmos Hub Explorers
These block explorers allow you to search, view and analyze Cosmos Hub data&mdash;like blocks, transactions, validators, etc.
* [Big Dipper](https://cosmos.bigdipper.live)
* [Cosmos Overview](https://genesislab.net)
* [Coris](http://coris.network)
* [Cosmos Visualizer](https://nylira.net/3d)
* [Hubble](https://hubble.figment.network)
* [Mintscan](https://mintscan.io)
* [Stargazer](https://stargazer.certus.one)
## Cosmos Hub CLI
`gaiacli` is a command-line interface that lets you interact with the Cosmos Hub. `gaiacli` is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about `gaiacli` with the [delegator's CLI guide](../delegators/delegator-guide-cli.md).
## Running a full-node on the Cosmos Hub Mainnet
In order to run a full-node for the Cosmos Hub mainnet, you must first [install `gaiad`](../gaia-tutorials/installation.md). Then, follow [the guide](../gaia-tutorials/join-mainnet.md).
If you are looking to run a validator node, follow the [validator setup guide](../validators/validator-setup.md).
## Join the Community
Have questions, comments, or new ideas? Participate in the Cosmos community through one of the following channels. Also check out the [latest events](https://cosmos.network/community).
* [Cosmos Community Chat](https://t.me/cosmosproject)
* [Cosmos Developer Chat](https://riot.im/app/#/room/#cosmos:matrix.org)
* [Cosmos Forum](https://forum.cosmos.network)
* [Cosmos on Reddit](https://reddit.com/r/cosmosnetwork)
To learn more about the Cosmos Hub and how it fits within the Cosmos Network, visit [cosmos.network](https://cosmos.network).

View File

Before

Width:  |  Height:  |  Size: 317 KiB

After

Width:  |  Height:  |  Size: 317 KiB

View File

Before

Width:  |  Height:  |  Size: 230 KiB

After

Width:  |  Height:  |  Size: 230 KiB

View File

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

View File

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

View File

@ -1,10 +0,0 @@
# Keys
See the [Tendermint specification](https://github.com/tendermint/tendermint/blob/master/docs/spec/blockchain/encoding.md#public-key-cryptography) for how we work with keys.
See `gaiacli keys --help`.
Also see the [testnet
tutorial](./join-testnet).
TODO: cleanup the UX and document this properly

View File

@ -6,7 +6,7 @@
아톰 보유자는 메인넷에서 본인의 아톰을 검증인에게 위임하고 거버넌스 프로포절에 투표를 할 수 있는 권리를 가질 수 있게 됩니다. 어떻게 보면 위임자들의 선택이 코스모스 네트워크의 성공을 좌우할 수 있다고 볼 수 있습니다. 단, 런칭 초기 아톰 송금 기능은 프로토콜 레벨에서 비활성화될 계획이며, 추후 하드포크를 통해 활성화될 것입니다.
**📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 [CLI 사용법](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/gaia/delegator-guide-cli.md)을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.**
**📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 [CLI 사용법](https://github.com/cosmos/gaia/blob/develop/docs/delegators/delegator-guide-cli.md)을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.**
안전하게 아톰을 위임하는 방법은 이 가이드에 설명된 것 외에는 없습니다. 현재로써 `gaiacli` 외 보안 감사를 거친 월렛 소프트웨어는 없습니다. 다른 월렛은 보안 감사를 시작하지 않은 상태입니다.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

14
docs/resources/README.md Normal file
View File

@ -0,0 +1,14 @@
---
order: false
parent:
order: 5
---
This folder contains resources on the `gaia` software.
- [`gaiacli` documentation](./gaiacli.md)
- [`gaia` genesis file](./genesis.md)
- [HD Wallets for `gaia`](./hd-wallets.md)
- [Ledger Integration for `gaia`](./ledger.md)
- [Service Providers Documentation](./service-providers.md)
- [Reproducible Builds](./reproducible-builds.md)

View File

@ -1,8 +1,12 @@
---
order: 1
---
# Gaia Client
## Gaia CLI
`gaiacli` is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not. Let us set it up properly. In order to install it, follow the [installation procedure](./installation.md).
`gaiacli` is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not. Let us set it up properly. In order to install it, follow the [installation procedure](../gaia-tutorials/installation.md).
### Setting up gaiacli
@ -194,7 +198,7 @@ gaiacli tx send ... --gas-prices=0.025uatom
#### Get Tokens
The best way to get tokens is from the [Cosmos Testnet Faucet](https://faucetcosmos.network). If the faucet is not working for you, try asking [#cosmos-validators](https://riot.im/app/#/room/#cosmos-validators:matrix.org). The faucet needs the `cosmos` from the account you wish to use for staking.
On a testnet, getting tokens is usually done via a faucet.
#### Query Account Balance
@ -384,7 +388,7 @@ Please refer to the [Validator Setup](../validators/validator-setup.md) section
#### Delegate to a Validator
On the upcoming mainnet, you can delegate `atom` to a validator. These [delegators](/resources/delegators-faq) can receive part of the validator's fee revenue. Read more about the [Cosmos Token Model](https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf).
On the upcoming mainnet, you can delegate `atom` to a validator. These [delegators](../delegators/delegator-faq.md) can receive part of the validator's fee revenue. Read more about the [Cosmos Token Model](https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf).
##### Query Validators
@ -568,7 +572,7 @@ only the most recently cast vote will count as valid
- `((YesVotes+NoVotes+NoWithVetoVotes) / totalBondedStake) >= quorum`
For more information about the governance process and how it works, please check
out the Governance module [specification](./../spec/governance).
out the Governance module [specification](https://github.com/cosmos/cosmos-sdk/tree/master/x/gov/spec).
#### Create a Governance Proposal

View File

@ -1,3 +1,7 @@
---
order: 2
---
# Genesis File
This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own `gaia` testnet.
@ -329,4 +333,4 @@ A `gentx` can be added manually to the genesis file, or via the following comman
gaiad collect-gentxs
```
This command will add all the `gentxs` stored in `~/.gaiad/config/gentx` to the genesis file. In order to create a genesis transaction, click [here](./validators/validator-setup.md#participate-in-genesis-as-a-validator).
This command will add all the `gentxs` stored in `~/.gaiad/config/gentx` to the genesis file. In order to create a genesis transaction, click [here](../validators/validator-setup.md#participate-in-genesis-as-a-validator).

View File

@ -1,3 +1,7 @@
---
order: 3
---
# HD Wallets
Accounts in Cosmos are Hierarchical Deterministic (HD) Wallets. Originally specified in Bitcoin's [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki), HD wallets are a special kind of wallet that let users derive any number of accounts from a single seed. To understand what that means, let us first define some terminology:

View File

@ -1,3 +1,7 @@
---
order: 4
---
# Ledger Nano Support
Using a hardware wallet to store your keys greatly improves the security of your crypto assets. The Ledger device acts as an enclave of the seed and private keys, and the process of signing transaction takes place within it. No private information ever leaves the Ledger device. The following is a short tutorial on using the Cosmos Ledger app with the Gaia CLI or the [Lunie.io](https://lunie.io/#/) web wallet.
@ -10,22 +14,22 @@ Do not lose or share your 24 words with anyone. To prevent theft or loss of fund
## Install the Cosmos Ledger application
Installing the `Cosmos` application on your ledger device is required before you can use either [Lunie](#lunie-io-+-ledger-nano) or [`gaiacli`](gaia-cli-+-ledger-nano). To do so, you need to:
Installing the `Cosmos` application on your ledger device is required before you can use either [Lunie](#lunie-io-+-ledger-nano) or [`gaiacli`](#gaia-cli-+-ledger-nano). To do so, you need to:
1. Install [Ledger Live](https://shop.ledger.com/pages/ledger-live) on your machine.
2. Using Ledger Live, [update your Ledger Nano S with the latest firmware](https://support.ledger.com/hc/en-us/articles/360002731113-Update-device-firmware).
3. On the Ledger Live application, navigate to the `Manager` menu .
![manager](./ledger-tuto-manager.png)
![manager](../images/ledger-tuto-manager.png)
4. Connect your Ledger Nano device and allow Ledger Manager from it.
5. On the Ledger Live application, Search for `Cosmos`.
![search](./ledger-tuto-search.png)
![search](../images/ledger-tuto-search.png)
6. Install the Cosmos application by clicking on `Install`.
::: tip
To see the `Cosmos` application when you search for it, you might need to activate the `Developer Mode`, located in the Experimental features tab of the Ledger Live application.
:::
![Devmode](./ledger-tuto-dev-mode.png)
![Devmode](../images/ledger-tuto-dev-mode.png)
## Lunie.io + Ledger Nano
@ -34,12 +38,12 @@ To see the `Cosmos` application when you search for it, you might need to activa
1. Connect your Ledger device to your computer, unlock it with the PIN and open the Cosmos app.
2. Open [https://app.lunie.io](https://app.lunie.io/existing) in your web browser (latest version of [Brave](https://brave.com/) preferred).
3. Choose `Sign in with Ledger Nano S`.
![lunie-option](./ledger-tuto-lunie-option.png)
![lunie-option](../images/ledger-tuto-lunie-option.png)
4. Make sure your Ledger device is unlocked and with the Cosmos app open and then click on the`Sign in` button.
That's it! You can now use Lunie with your Ledger Nano S. You will find your Cosmos address here:
![lunie-address](./ledger-tuto-lunie-address.png)
![lunie-address](../images/ledger-tuto-lunie-address.png)
**Note: Each time you will send a transaction, you will need to confirm it on your Ledger device. Indication will be prompted from the Lunie interface**
@ -152,7 +156,7 @@ When prompted with `confirm transaction before signing`, Answer `Y`.
Next you will be prompted to review and approve the transaction on your Ledger device. Be sure to inspect the transaction JSON displayed on the screen. You can scroll through each field and each message. Scroll down to read more about the data fields of a standard transaction object.
Now, you are all set to start [sending transactions on the network](./delegator-guide-cli.md#sending-transactions).
Now, you are all set to start [sending transactions on the network](../delegators/delegator-guide-cli.md#sending-transactions).
### Receive funds

View File

@ -1,4 +1,8 @@
## Build Gaia Deterministically
---
order: 6
---
# Build Gaia Deterministically
Gitian is the deterministic build process that is used to build the Gaia executables. It provides a way to be reasonably sure that the executables are really built from the git source. It also makes sure that the same, tested dependencies are used and statically built into the executable.

View File

@ -0,0 +1,243 @@
---
order: 5
---
# Service Providers
We define 'service providers' as entities providing services for end-users that involve some form of interaction with a Cosmos-SDK based blockchain (this includes the Cosmos Hub). More specifically, this document will be focused around interactions with tokens.
This section does not concern wallet builders that want to provide Light-Client functionalities. Service providers are expected to act as trusted point of contact to the blockchain for their end-users.
## High-level description of the architecture
There are three main pieces to consider:
- Full-nodes: To interact with the blockchain.
- Rest Server: This acts as a relayer for HTTP calls.
- Rest API: Define available endpoints for the Rest Server.
## Running a Full-Node
### Installation and configuration
We will describe the steps to run and interact with a full-node for the Cosmos Hub. For other SDK-based blockchain, the process should be similar.
First, you need to [install the software](../gaia-tutorials/installation.md).
Then, you can start [running a full-node](../gaia-tutorials/join-mainnet.md).
### Command-Line interface
## Setting Up `gaiacli`
::: tip
**Before setting up `gaiacli`, make sure you have set up a way to [access the Cosmos Hub network](#accessing-the-cosmos-hub-network)**
:::
::: warning
**Please check that you are always using the latest stable release of `gaiacli`**
:::
`gaiacli` is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not. Let us set it up properly.
In order to set up `gaiacli`, use the following command:
```bash
gaiacli config <flag> <value>
```
It allows you to set a default value for each given flag.
First, set up the address of the full-node you want to connect to:
```bash
gaiacli config node <host>:<port
// example: gaiacli config node https://77.87.106.33:26657
```
If you run your own full-node, just use `tcp://localhost:26657` as the address.
Then, let us set the default value of the `--trust-node` flag:
```bash
gaiacli config trust-node false
// Set to true if you run a light-client node, false otherwise
```
Finally, let us set the `chain-id` of the blockchain we want to interact with:
```bash
gaiacli config chain-id cosmoshub-2
```
Next you will find a few useful CLI commands to interact with the Full-Node.
#### Creating a key-pair
To generate a new key (default secp256k1 elliptic curve):
```bash
gaiacli keys add <your_key_name>
```
You will be asked to create a password (at least 8 characters) for this key-pair. This will return the information listed below:
- `NAME`: Name of your key
- `TYPE`: Type of your key, always `local`.
- `ADDRESS`: Your address. Used to receive funds.
- `PUBKEY`: Your public key. Useful for validators.
- `MNEMONIC`: 24-words phrase. **Save this mnemonic somewhere safe**. It is used to recover your private key in case you forget the password.
You can see all your available keys by typing:
```bash
gaiacli keys list
```
#### Checking your balance
After receiving tokens to your address, you can view your account's balance by typing:
```bash
gaiacli query account <YOUR_ADDRESS>
```
*Note: When you query an account balance with zero tokens, you will get this error: No account with address <YOUR_ADDRESS> was found in the state. This is expected! We're working on improving our error messages.*
#### Sending coins via the CLI
Here is the command to send coins via the CLI:
```bash
gaiacli tx send <from_key_or_address> <to_address> <amount> \
--chain-id=<name_of_testnet_chain>
```
Parameters:
- `<from_key_or_address>`: Key name or address of sending account.
- `<to_address>`: Address of the recipient.
- `<amount>`: This parameter accepts the format `<value|coinName>`, such as `10faucetToken`.
Flags:
- `--chain-id`: This flag allows you to specify the id of the chain. There will be different ids for different testnet chains and main chain.
#### Help
If you need to do something else, the best command you can run is:
```bash
gaiacli
```
It will display all the available commands. For each command, you can use the `--help` flag to get further information.
## Setting up the Rest Server
The Rest Server acts as an intermediary between the front-end and the full-node. You don't need to run the Rest Server on the same machine as the full-node.
To start the Rest server:
```bash
gaiacli rest-server --node=<full_node_address:full_node_port>
```
Flags:
- `--trust-node`: A boolean. If `true`, light-client verification is disabled. If `false`, it is disabled. For service providers, this should be set to `true`. By default, it set to `true`.
- `--node`: This is where you indicate the address and the port of your full-node. The format is `<full_node_address:full_node_port>`. If the full-node is on the same machine, the address should be `tcp://localhost:26657`.
- `--laddr`: This flag allows you to specify the address and port for the Rest Server (default `1317`). You will mostly use this flag only to specify the port, in which case just input "localhost" for the address. The format is <rest_server_address:port>.
### Listening for incoming transaction
The recommended way to listen for incoming transaction is to periodically query the blockchain through the following endpoint of the LCD:
[`/bank/balance/{address}`](https://cosmos.network/rpc/#/ICS20/get_bank_balances__address_)
## Rest API
The Rest API documents all the available endpoints that you can use to interact
with your full node. It can be found [here](https://cosmos.network/rpc/).
The API is divided into ICS standards for each category of endpoints. For
example, the [ICS20](https://cosmos.network/rpc/#/ICS20/) describes the API to
interact with tokens.
To give more flexibility to developers, we have included the ability to
generate unsigned transactions, [sign](https://cosmos.network/rpc/#/ICS20/post_tx_sign)
and [broadcast](https://cosmos.network/rpc/#/ICS20/post_tx_broadcast) them with
different API endpoints. This allows service providers to use their own signing
mechanism for instance.
In order to generate an unsigned transaction (example with
[coin transfer](https://cosmos.network/rpc/#/ICS20/post_bank_accounts__address__transfers)),
you need to use the field `generate_only` in the body of `base_req`.
## Cosmos SDK Transaction Signing
Cosmos SDK transaction signing is a fairly simple process.
Every Cosmos SDK transaction has a canonical JSON representation. The `gaiacli`
and Stargate REST interfaces provide canonical JSON representations of transactions
and their "broadcast" functions will provide compact Amino (a protobuf-like wire format)
encoding translations.
Things to know when signing messages:
The format is as follows
```json
{
"account_number": XXX,
"chain_id": XXX,
"fee": XXX,
"sequence": XXX,
"memo": XXX,
"msgs": XXX
}
```
The signer must supply `"chain_id"`, `"account number"` and `"sequence number"`.
The `"fee"`, `"msgs"` and `"memo"` fields will be supplied by the transaction
composer interface.
The `"account_number"` and `"sequence"` fields can be queried directly from the
blockchain or cached locally. Getting these numbers wrong, along with the chainID,
is a common cause of invalid signature error. You can load the mempool of a full
node or validator with a sequence of uncommitted transactions with incrementing
sequence numbers and it will mostly do the correct thing.
Before signing, all keys are lexicographically sorted and all white space is
removed from the JSON output.
The signature encoding is the 64-byte concatenation of ECDSArands (i.e. `r || s`),
where `s` is lexicographically less than its inverse in order to prevent malleability.
This is like Ethereum, but without the extra byte for PubKey recovery, since
Tendermint assumes the PubKey is always provided anyway.
Signatures and public key examples in a signed transaction:
``` json
{
"type": "auth/StdTx",
"value": {
"msg": [...],
"signatures": [
{
"pub_key": {
"type": "tendermint/PubKeySecp256k1",
"value": XXX
},
"signature": XXX
}
],
}
}
```
Once signatures are properly generated, insert the JSON into into the generated
transaction and then use the broadcast endpoint.

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 KiB

17
docs/validators/README.md Normal file
View File

@ -0,0 +1,17 @@
---
order: false
parent:
order: 4
---
# Validators
This folder contains documentation relevant to validators of the Cosmos Hub and other `gaia` blockchains.
- [Validator Overview](./overview.md)
- [Setting Up a Validator for Cosmos Hub Mainnet](./validator-setup.md)
- [Validator FAQ](./validator-faq.md)
- [Validator Security Notice](./security.md)
- Key Management System
+ [Intro to KMS](./kms/kms.md)
+ [KMS + Ledger](./kms/kms_ledger.md)

View File

@ -1,3 +1,7 @@
---
order: 5
---
# KMS - Key Management System
[Tendermint KMS](https://github.com/tendermint/kms) is a key management service that allows separating key management from Tendermint nodes. In addition it provides other advantages such as:

View File

@ -1,7 +1,11 @@
---
order: 6
---
# Setting up Tendermint KMS + Ledger
::: danger Warning
The following instructions are a brief walkthrough and not a comprehensive guideline. You should consider and [research more about the security implications](./security.md) of activating an external KMS.
The following instructions are a brief walkthrough and not a comprehensive guideline. You should consider and [research more about the security implications](../security.md) of activating an external KMS.
:::
::: danger Warning

View File

@ -1,10 +1,14 @@
---
order: 1
---
# Validators Overview
## Introduction
The [Cosmos Hub](../README.md) is based on [Tendermint](https://github.com/tendermint/tendermint/tree/master/docs/introduction), which relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes which contain cryptographic signatures signed by each validator's private key.
Validator candidates can bond their own Atoms and have Atoms ["delegated"](../delegator-guide-cli.md), or staked, to them by token holders. The Cosmos Hub will have 100 validators, but over time this will increase to 300 validators according to a predefined schedule. The validators are determined by who has the most stake delegated to themthe top 100 validator candidates with the most stake will become Cosmos validators.
Validator candidates can bond their own Atoms and have Atoms ["delegated"](../delegators/delegator-guide-cli.md), or staked, to them by token holders. The Cosmos Hub will have 100 validators, but over time this will increase to 300 validators according to a predefined schedule. The validators are determined by who has the most stake delegated to themthe top 100 validator candidates with the most stake will become Cosmos validators.
Validators and their delegators will earn Atoms as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Initially, transaction fees will be paid in Atoms but in the future, any token in the Cosmos ecosystem will be valid as fee tender if it is whitelisted by governance. Note that validators can set commission on the fees their delegators receive as additional incentive.

View File

@ -1,4 +1,8 @@
## Validator Security
---
order: 4
---
# Validator Security
Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now in order to be on time for launch.

View File

@ -1,3 +1,7 @@
---
order: 3
---
# Validator FAQ
::: warning Disclaimer
@ -8,7 +12,7 @@ This is work in progress. Mechanisms and values are susceptible to change.
### What is a validator?
The [Cosmos Hub](../what-is-gaia.md) is based on [Tendermint](https://tendermint.com/docs/introduction/what-is-tendermint.html), which relies on a set of validators to secure the network. The role of validators is to run a full-node and participate in consensus by broadcasting votes which contain cryptographic signatures signed by their private key. Validators commit new blocks in the blockchain and receive revenue in exchange for their work. They must also participate in governance by voting on proposals. Validators are weighted according to their total stake.
The [Cosmos Hub](../gaia-tutorials/what-is-gaia.md) is based on [Tendermint](https://tendermint.com/docs/introduction/what-is-tendermint.html), which relies on a set of validators to secure the network. The role of validators is to run a full-node and participate in consensus by broadcasting votes which contain cryptographic signatures signed by their private key. Validators commit new blocks in the blockchain and receive revenue in exchange for their work. They must also participate in governance by voting on proposals. Validators are weighted according to their total stake.
### What is 'staking'?
@ -70,7 +74,7 @@ Out of all validator candidates that signaled themselves, the 100 with the most
The Testnet is a great environment to test your validator setup before launch.
We view testnet participation as a great way to signal to the community that you are ready and able to operate a validator. You can find all relevant information about the testnet [here](../join-testnet.md) and [here](https://github.com/cosmos/testnets).
We view testnet participation as a great way to signal to the community that you are ready and able to operate a validator. You can find all relevant information about the testnet [here](../gaia-tutorials/join-testnet.md) and [here](https://github.com/cosmos/testnets).
### What are the different types of keys?

View File

@ -1,10 +1,14 @@
---
order: 2
---
# Run a Validator on the Cosmos Hub Mainnet
::: tip
Information on how to join the mainnet (`genesis.json` file and seeds) is held [in our `launch` repo](https://github.com/cosmos/launch/tree/master/latest).
Information on how to join the mainnet (`genesis.json` file and seeds) is held [in our `launch` repo](https://github.com/cosmos/launch/).
:::
Before setting up your validator node, make sure you've already gone through the [Full Node Setup](../join-mainnet.md) guide.
Before setting up your validator node, make sure you've already gone through the [Full Node Setup](../gaia-tutorials/join-mainnet.md) guide.
If you plan to use a KMS (key management system), you should go through these steps first: [Using a KMS](kms/kms.md).
@ -16,7 +20,7 @@ If you plan to use a KMS (key management system), you should go through these st
If you want to become a validator for the Hub's `mainnet`, you should [research security](./security.md).
:::
You may want to skip the next section if you have already [set up a full-node](../join-mainnet.md).
You may want to skip the next section if you have already [set up a full-node](../gaia-tutorials/join-mainnet.md).
## Create Your Validator