Update docs/translations/cn/cosmos-hub to 36dcd7b7 (#4211)

Update Chinese documents of cosmos-hub to 0e54369.

Remove non-Chinese blogs.

Fix some typo of English documents of cosmos-hub.

Rename gaia to cosmos-hub
This commit is contained in:
Frank Yang 2019-04-29 21:25:32 +08:00 committed by Alessio Treglia
parent 36dcd7b7ad
commit df2e0bf178
22 changed files with 622 additions and 67 deletions

View File

@ -249,7 +249,7 @@ gaiacli tx send <sender_address> <recipient_address> 10faucetToken \
```bash
gaiacli tx sign \
--chain-id=<chain_id> \
--from=<key_name>
--from=<key_name> \
unsignedSendTx.json > signedSendTx.json
```
@ -733,7 +733,7 @@ For example, given a multisig key comprising the keys `p1`, `p2`, and `p3`, each
by a distinct party, the user holding `p1` would require to import both `p2` and `p3` in order to
generate the multisig account public key:
```
```bash
gaiacli keys add \
p2 \
--pubkey=cosmospub1addwnpepqtd28uwa0yxtwal5223qqr5aqf5y57tc7kk7z8qd4zplrdlk5ez5kdnlrj4
@ -781,7 +781,7 @@ gaiacli tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--from=p1 \
--output-document=p1signature.json \
--output-document=p1signature.json
```
Once the signature is generated, `p1` transmits both `unsignedTx.json` and
@ -793,7 +793,7 @@ gaiacli tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--from=p2 \
--output-document=p2signature.json \
--output-document=p2signature.json
```
`p1p2p3` is a 2-of-3 multisig key, therefore one additional signature

View File

@ -1,6 +1,6 @@
# Genesis File
This document explains how the genesis file of the Cosmmos Hub mainnet is structured. It also explains how you can build a genesis file for your own `gaia` testnet.
This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own `gaia` testnet.
Note that you can generate a default genesis file for your own testnet by running the following command:

View File

@ -59,7 +59,7 @@ The funds stored in an account are controlled by the private key. This private k
At the core of a Ledger device, there is a mnemonic that is used to generate private keys. When you initialize you Ledger, a mnemonic is generated.
::: danger
**Do not lose or share your 12 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.**
**Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to ensure that you keep multiple copies of your mnemonic, and store it in a safe, secure place and that only you know how to access. If someone is able to gain access to your mnemonic, they will be able to gain access to your private keys and control the accounts associated with them.**
:::
This mnemonic is compatible with Cosmos accounts. The tool used to generate addresses and transactions on the Cosmos Hub network is called `gaiacli`, which supports derivation of account keys from a Ledger seed. Note that 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.

View File

@ -24,9 +24,9 @@ Please refer to the official english version of the documentation for the latest
- ToDo
### [`gaia`](../gaia/)
### [`cosmos-hub`](../cosmos-hub/)
- Synced until commit [9e7440a9](https://github.com/cosmos/cosmos-sdk/commit/9e7440a92c14187b05a3064864899f708a507d82)
- Synced until commit [36dcd7b7](https://github.com/cosmos/cosmos-sdk/commit/36dcd7b7ad94cf59a8471506e10b937507d1dfa5)
### [`intro`](../intro/)

View File

@ -12,10 +12,10 @@ Must specify these options: --chain-id when --trust-node is false
你必须选择是否要验证轻客户端的证明。如果你信任要查询的节点,则可以简单地传递`--trust-node=true` -- 否则你需要指定`--chain-id`。
:::
`gaiacli`是管理Cosmos测试网上的帐户和交易的命令行操作界面。它的配置文件位于`$HOME/.gaiacli/config/config.toml`中,可以手动编辑或通过`gaiacli config`命令编辑:
`gaiacli`是管理 Cosmos 测试网上的帐户和交易的命令行操作界面。它的配置文件位于`$HOME/.gaiacli/config/config.toml`中,可以手动编辑或通过`gaiacli config`命令编辑:
```bash
gaiacli config chain-id cosmoshub-1
gaiacli config chain-id gaia-9004
```
有关命令用法的更多信息,请参阅其帮助信息:`gaiacli config --help`。
@ -112,26 +112,32 @@ gaiacli keys add --multisig=baz,foo,bar --multisig-threshold=2 multisig_address
gaiacli keys show --multisig-threshold K name1 name2 name3 [...]
```
有关如何生成多签帐户,使用其签名和广播多签交易的详细信息,请参阅[多签交易]()
有关如何生成多签帐户,使用其签名和广播多签交易的详细信息,请参阅[多签交易](#多签交易)
### fee和gas
### Tx 广播
每笔交易可能会提供fee或gas price但不能同时提供。大多数用户通常会提供fee因为这是你将为最终被记入帐本中的交易提供的费用
在广播交易时,`gaiacli`接受`--broadcast-mode`标识。 这个标识的值可以是`sync`(默认值)、`async`或`block`,其中`sync`使客户端返回 CheckTx 响应,`async`使客户端立即返回,而`block`使得 客户端等待 tx 被提交(或超时)
验证人可以配置最低gas price多币种的并且在决定它们是否能被包含在区块中的`CheckTx`期间使用改值,其中 `gasPrices >= minGasPrices`。请注意,你的交易必须提供大于或等于验证人要求的任何接受币种的费用
值得注意的是,在大多数情况下**不**应该使用`block`模式。 这是因为广播可以超时但是 tx 仍然可能存在在块中,这可能导致很多不良结果。 因此,最好使用`sync`或`async`并通过 tx hash 查询以确定 tx 何时包含在块中
注意有了这样的机制验证人可能会开始在mempool中通过gasPrice来优先处理某些txs因此提供更高fee或gas price可能会产生更高的tx优先级。
### Fees 和 Gas
每笔交易可能会提供 fees 或 gas price但不能同时提供。
验证人可以配置最低 gas price多币种的并且在决定它们是否能被包含在区块中的`CheckTx`期间使用改值,其中 `gasPrices >= minGasPrices`。请注意,你的交易必须提供大于或等于验证人要求的任何接受币种的费用。
**注意**:有了这样的机制,验证人可能会开始在 mempool 中通过 gasPrice 来优先处理某些 txs因此提供更高 fee 或 gas price可能会产生更高的tx优先级。
比如:
```bash
gaiacli tx send ... --fees=100photino
gaiacli tx send ... --fees=50000uatom
```
或:
```bash
gaiacli tx send ... --gas-prices=0.000001stake
gaiacli tx send ... --gas-prices=0.025uatom
```
@ -149,25 +155,25 @@ gaiacli tx send ... --gas-prices=0.000001stake
gaiacli query account <account_cosmos>
```
::: 注意
::: warning 注意
当你查询余额为零的帐户时,你将收到以下错误:`No account with address <account_cosmos> was found in the state.` 如果你在节点与区块链完全同步之前就查询,也会发生这种情况。这些都很正常。
:::
#### 发送token
#### 发送 token
你可以通过如下命令从一个账户发送资金到另一个账户:
```bash
gaiacli tx send <destination_cosmos> 10faucetToken \
--chain-id=<chain_id> \
--from=<key_name> \
--from=<key_name>
```
::: 注意
::: warning 注意
`--amount`标识接收格式:`--amount=<value|coin_name>`
:::
::: 注意
::: tip 注意
你可能希望通过`--gas`标识限制交易可以消耗的最大燃料。如果你通过`--gas=auto`将在执行交易前自动估gas。gas估算可能是不准确的因为状态变化可能发生在模拟结束和交易的实际执行之间因此在原始估计之上应用调整以确保能够成功地广播交易。可以通过`--gas-adjustment`标识控制调整其默认值为1.0。
:::
@ -209,6 +215,10 @@ gaiacli tx sign \
unsignedSendTx.json > signedSendTx.json
```
::: tip 注意
标识 `--generate-only` 只能在访问本地 keybase 时使用。
:::
你可以通过下面的命令验证交易的签名:
```bash
@ -247,17 +257,18 @@ gaiacli query txs --tags='<tag1>:<value1>&<tag2>:<value2>'
gaiacli query txs --tags='<tag>:<value>' --page=1 --limit=20
```
::: 注意
action标签始终等于相关message的Type()函数返回的消息类型。
::: tip 注意
action标签始终等于相关message的`Type()`函数返回的消息类型。
你可以在每个SDK的模块中找到目前的标签列表
+ [Common tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/types/tags.go#L57-L63)
+ [Staking tags](https://github.com/cosmos/cosmos-sdk/blob/master/x/staking/tags/tags.go#L8-L24)
+ [Governance tags](https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/tags/tags.go#L8-L24)
+ [Slashing tags](https://github.com/cosmos/cosmos-sdk/blob/master/x/slashing/tags/tags.go#L8-L24)
+ [Distribution tags](https://github.com/cosmos/cosmos-sdk/blob/master/x/distribution/tags/tags.go#L8-L24)
+ [Bank tags](https://github.com/cosmos/cosmos-sdk/blob/master/x/bank/tags.go#L8-L24)
:::
- [Common tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/types/tags.go#L57-L63)
- [Staking tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/staking/tags/tags.go#L8-L24)
- [Governance tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/gov/tags/tags.go#L8-L22)
- [Slashing tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/slashing/handler.go#L52)
- [Distribution tags](https://github.com/cosmos/cosmos-sdk/blob/develop/x/distribution/tags/tags.go#L8-L17)
- [Bank tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/bank/keeper.go#L193-L206)
:::
#### 匹配一笔交易的hash
@ -357,12 +368,12 @@ gaiacli query staking delegations <delegator_addr>
你还可以通过添加`--height`标识来获取先前的委托状态。
#### 解绑token
如果出于一些原因验证人行为异常或者你想解绑一定数量的token请使用以下命令。你可以使用相应的`shares-amount`标识(例如:`12.1`)或`shares-fraction`(例如:`0.25`)来解绑。
如果出于一些原因验证人行为异常或者你想解绑一定数量的token请使用以下命令。
```bash
gaiacli tx staking unbond \
--validator=<account_cosmosval> \
--shares-fraction=0.5 \
<validator_addr> \
10atom \
--from=<key_name> \
--chain-id=<chain_id>
```
@ -397,9 +408,9 @@ gaiacli query staking unbonding-delegations-from <account_cosmosval>
```bash
gaiacli tx staking redelegate \
--addr-validator-source=<account_cosmosval> \
--addr-validator-dest=<account_cosmosval> \
--shares-fraction=50 \
<src-validator-operator-addr> \
<dst-validator-operator-addr> \
10atom \
--from=<key_name> \
--chain-id=<chain_id>
```
@ -492,7 +503,7 @@ gaiacli tx gov submit-proposal \
--title=<title> \
--description=<description> \
--type=<Text/ParameterChange/SoftwareUpgrade> \
--deposit=<40steak> \
--deposit="1000000uatom" \
--from=<name> \
--chain-id=<chain_id>
```
@ -521,10 +532,10 @@ gaiacli query gov proposer <proposal_id>
#### 增加存入金
为了将提案广播到网络,存入的金额必须高于`minDeposit`值(默认值:`10steak`)。如果你之前创建的提案不符合此要求,你仍可以增加存入的总金额以激活它。达到最低存入金后,提案进入投票期:
为了将提案广播到网络,存入的金额必须高于`minDeposit`值(初始值:`10steak`)。如果你之前创建的提案不符合此要求,你仍可以增加存入的总金额以激活它。达到最低存入金后,提案进入投票期:
```bash
gaiacli tx gov deposit <proposal_id> <200steak> \
gaiacli tx gov deposit <proposal_id> "10000000uatom" \
--from=<name> \
--chain-id=<chain_id>
```
@ -549,6 +560,16 @@ gaiacli query gov deposit <proposal_id> <depositor_address>
在提案的存入金达到`MinDeposit`后,投票期将开放。抵押了`Atom`的持有人可以投票:
```bash
gaiacli tx gov vote <proposal_id> <Yes/No/NoWithVeto/Abstain> \
--from=<name> \
--chain-id=<chain_id>
```
#### 查询投票
使用您刚才提交的参数检查投票:
```bash
gaiacli query gov vote <proposal_id> <voter_address>
```
@ -641,17 +662,17 @@ gaiacli query distr rewards <delegator_address>
```bash
gaiacli keys add \
--pubkey=cosmospub1addwnpepqtd28uwa0yxtwal5223qqr5aqf5y57tc7kk7z8qd4zplrdlk5ez5kdnlrj4 \
p2
p2 \
--pubkey=cosmospub1addwnpepqtd28uwa0yxtwal5223qqr5aqf5y57tc7kk7z8qd4zplrdlk5ez5kdnlrj4
gaiacli keys add \
--pubkey=cosmospub1addwnpepqgj04jpm9wrdml5qnss9kjxkmxzywuklnkj0g3a3f8l5wx9z4ennz84ym5t \
p3
p3 \
--pubkey=cosmospub1addwnpepqgj04jpm9wrdml5qnss9kjxkmxzywuklnkj0g3a3f8l5wx9z4ennz84ym5t
gaiacli keys add \
--multisig-threshold=2
p1p2p3 \
--multisig-threshold=2 \
--multisig=p1,p2,p3
p1p2p3
```
已存储新的多签公钥`p1p2p3`,其地址将用作多签交易的签名者:
@ -660,6 +681,14 @@ gaiacli keys add \
gaiacli keys show --address p1p2p3
```
您还可以通过查看 key 的 JSON 输出或增加`--show-multisig`标识来查看multisig阈值pubkey构成和相应的权重
```bash
gaiacli keys show p1p2p3 -o json
gaiacli keys show p1p2p3 --show-multisig
```
创建多签交易的第一步是使用上面创建的多签地址初始化:
```bash
@ -672,14 +701,26 @@ gaiacli tx send cosmos1570v2fq3twt0f0x02vhxpuzc9jc4yl30q2qned 10000000uatom \
```bash
gaiacli tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--name=p1 \
--output-document=p1signature.json \
unsignedTx.json
--from=p1 \
--output-document=p1signature.json
```
生成签名后,`p1`将`unsignedTx.json`和`p1signature.json`都发送到`p2`或`p3`,然后`p2`或`p3`将生成它们各自的签名:
```bash
gaiacli tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--from=p2 \
--output-document=p2signature.json
```
`p1p2p3` is a 2-of-3 multisig key, therefore one additional signature is sufficient. Any the key holders can now generate the multisig transaction by combining the required signature files:
p1p2p3` 是 2-of-3 多签key因此一个的签名就足够了。 现在,任何密钥持有者都可以通过组合所需的签名文件来生成多签交易:
```bash
gaiacli tx multisign \
unsignedTx.json \
@ -693,7 +734,7 @@ gaiacli tx multisign \
gaiacli tx broadcast signedTx.json
```
## shell全脚本
## shell 自动补全脚本
可以通过完全命令生成主流的UNIX shell解释器如`Bash`和`Zsh`)的`completion`命令,该命令可用于`gaiad`和`gaiacli`。

View File

@ -1,8 +1,8 @@
# Gaia的创世状态
# Gaia 创世状态Genesis State
`GenesisState`是Gaia的创世状态由账户不同模块的状态和例如创世交易这样的数据组成。每个模块可以指定自己的`GenesisState`,还有每个模块可以指定对创世状态的验证,导入和导出
Gaia 创世状态`GenesisState`由账户、各种模块状态和元数据组成,例如创世交易。 每个模块可以指定自己的`GenesisState`。 此外,每个模块可以指定自己的创世状态有效性验证、导入和导出功能
Gaia的创世状态有如下定义:
Gaia 创世状态定义如下:
```go
type GenesisState struct {
@ -18,11 +18,11 @@ type GenesisState struct {
}
```
gaia的ABCI接口`initChainer`的定义中`initFromGenesisState`被调用,它在内部调用每个模块的`InitGenesis`,提供各自的`GenesisState`作为参数
Gaia 的 ABCI`initChainer`定义中调用`initFromGenesisState`,它在内部调用每个模块的`InitGenesis`,提供它自己的`GenesisState`作为参数。
## 账户
## 账户Accounts
`GenesisState`中的创世账户有如下定义:
`GenesisState` 中的创世账户定义如下:
```go
type GenesisAccount struct {
@ -40,9 +40,8 @@ type GenesisAccount struct {
}
```
每个账户必须有一个合理的并唯一的account number还要有sequence number和address
除序列号nonce和地址外每个帐户还必须具有有效且唯一的账户编号
账户也可以是锁定账户,必须提供必要的锁定信息。锁定账户必须提供一个最小的`OriginalVesting`和`EndTime`。如果`StartTime`也提供了,这个账户将会被当做一个连续的锁定账户,将按照预定的时间线锁定代币。提供的`StartTime`必须小于`EndTime`,但可以是将来的某个时间。换句话说,`StartTime`不必小于创世时间。当一条新链从一个新状态(不是到处的)生成时,`OriginalVesting` 必须要小于`Coins`
<!-- TODO: Remaining modules and components in GenesisState -->
账户也可能锁仓,此时他们必须提供必要的锁仓信息,锁仓帐户必须至少提供`OriginalVesting`和`EndTime`。如果还提供了`StartTime`,则该帐户将被视为“连续”锁仓帐户,其中按预定义的时间表锁仓 coins。 提供的`StartTime`必须小于`EndTime`,但可能是未来的时间。 换句话说,它不必等于创世时间。 在从新状态(未导出)开始的新链中,`OriginalVesting`必须小于或等于`Coins`。
<!-- TODO: Remaining modules and components in GenesisState -->

View File

@ -0,0 +1,334 @@
# 创世Genesis文件
本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的`gaia` testnet 创建一个 genesis 文件。
请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:
```bash
gaiad init <moniker> --chain-id <chain-id>
```
genesis 文件存储在 `~/.gaiad/config/genesis.toml`.
## 什么是创世文件
genesis 文件是一个 JSON 文件,用于定义区块链的初始状态。 它可以看作是区块链的高度“0”。 高度为“1”的第一个块将引用 genesis 文件作为其父级。
genesis 文件中定义的状态包含所有必要的信息,如初始令牌分配、创建时间、默认参数等。 我们来分别描述这些信息。
## Genesis 时间和链ID
`genesis_time`定义在 genesis 文件的顶部。 它是一个“UTC”时间戳指示区块链何时启动。 此时,创世记验证人应该上线并开始参与共识过程。 当超过2/3的生成验证人通过投票权加权在线时区块链启动。
```json
"genesis_time": "2019-03-13T17:00:00.000000000Z",
```
`chain_id`是您的链的唯一标识符。 它有助于区分使用相同版本的软件的不同链。
```json
"chain_id": "cosmoshub-1",
```
## 共识参数
接下来,创世文件定义共识参数。 共识参数覆盖与共识层相关的所有参数,`gaia` 的共识层是 `Tendermint`。 我们来看看这些参数:
- `block`
- `max_bytes`: 每个块的最大字节数。
- `max_gas`: 每个块的最大 gas 数量。 该区块中包含的每笔交易都会消耗一些 gas包含在一个区块内的交易所使用的总 gas 不能超出。
- `evidence`
- `max_age`: 证据evidence是一种证明表明验证者在同一高度同一轮签署了两个不同的区块。 这是一种明显的恶意行为,会在状态机层受到惩罚。 `max_age`定义**块**的最大数量,在经过`max_age`块之后证据不再有效。
- `validator`
- `pub_key_types`: 可被验证人接受的公钥类型 (例如`ed25519`, `secp256k1`, ...) ,目前仅支持`ed25519`。
```json
"consensus_params": {
"block_size": {
"max_bytes": "150000",
"max_gas": "1500000"
},
"evidence": {
"max_age": "1000000"
},
"validator": {
"pub_key_types": [
"ed25519"
]
}
},
```
## 应用程序状态
应用程序状态定义了状态机的初始状态。
### 创世账号
在本节中,定义了初始分配的 Token。 可以通过直接编辑 genesis 文件手动添加帐户,但也可以使用以下命令:
```bash
// Example: gaiad add-genesis-account cosmos1qs8tnw2t8l6amtzvdemnnsq9dzk0ag0z37gh3h 10000000uatom
gaiad add-genesis-account <account-address> <amount><denom>
```
这个命令在 `app_state.accounts` 下创建一个条目。
```json
"accounts": [
{
"address": "cosmos1qs8tnw2t8l6amtzvdemnnsq9dzk0ag0z37gh3h",
"coins": [
{
"denom": "uatom",
"amount": "10000000"
}
],
"sequence_number": "0",
"account_number": "0",
"original_vesting": [
{
"denom": "uatom",
"amount": "26306000000"
}
],
"delegated_free": null,
"delegated_vesting": null,
"start_time": "0",
"end_time": "10000"
}
]
```
让我们来分别解读这些参数:
- `sequence_number`: 此编号用于计算此帐户发送的交易数。 每次事务包含在块中时它都会递增并用于防止重放攻击初始值为“0”。
- `account_number`: 帐户的唯一标识符,它在包含此帐户的首次被打包到块的交易中生成。
- `original_vesting`: 锁仓Vesting 由`gaia`原生支持。 您可以定义帐户需要锁仓 token 数量,这些 token 在一定时间之后才能流通。 锁仓中的 token 可用于委托。 默认值为“null”。
- `delegated_free`: 在 vest 过期后可转让的委托 token 数量。在创世文件中,大部分情况是 `null`
- `delegated_vesting`: 锁仓中的 token 数量。在创世文件中,大部分情况是 `null`
- `start_time`: vesting 期开始区块高度。创世文件中,大部分情况是`0`。
- `end_time`: vesting 期结束区块高度。如果没有 token 在 vesting 期,这个值是`0`。
### 银行Bank
`bank`模块负责 token。在本节中唯一 需要定义的参数是“转账”是否在创世文件启用。
```json
"bank": {
"send_enabled": false
}
```
### 权益Staking
`staking`模块处理状态机中的大多数 POS 逻辑。 此部分应如下所示:
```json
"staking": {
"pool": {
"not_bonded_tokens": "10000000",
"bonded_tokens": "0"
},
"params": {
"unbonding_time": "1814400000000000",
"max_validators": 100,
"max_entries": 7,
"bond_denom": "uatom"
},
"last_total_power": "0",
"last_validator_powers": null,
"validators": null,
"bonds": null,
"unbonding_delegations": null,
"redelegations": null,
"exported": false
}
```
让我们来分别解读这些参数:
- `pool`
- `not_bonded_tokens`: 在创世文件中没有绑定(即委托)的 token 数量。 通常情况下,它与权益 token (本例中是 `uatom`)的总供应量相等。
- `bonded_tokens`: 在创世文件中没绑定的 token 数量通常是0。
- `params`
- `unbonding_time`: 以**纳秒**为单位的解绑延迟时间。
- `max_validators`: 最大验证人节点数量。
- `max_entries`: 可同时进行解委托、重新委托的最大条目数。
- `bond_denom`: 权益代币符号。
- `last_total_power`: 总投票权重。在创世文件通常是0除非创世文件使用了之前的状态
- `last_validator_powers`: 最后一个区块的状态中每个验证人的投票权重。在创世文件中通常是 null除非创世文件使用了之前的状态
- `validators`: 最后一个区块中的验证人列表。在创世文件中通常是 null除非创世文件使用了之前的状态
- `bonds`: 最后一个区块中的委托列表。在创世文件中通常是 null除非创世文件使用了之前的状态
- `unbonding_delegations`: 最后一个区块中解绑的委托列表。在创世文件中通常是 null除非创世文件使用了之前的状态
- `redelegations`: 最后一个区块中的重新委托列表。在创世文件中通常是 null除非创世文件使用了之前的状态
- `exported`: 创世文件是否是从之前的状态导出得到的。
### 挖矿Mint
`mint`模块管理 token 供应的通胀逻辑。 创世文件中的`mint`部分如下所示:
```json
"mint": {
"minter": {
"inflation": "0.070000000000000000",
"annual_provisions": "0.000000000000000000"
},
"params": {
"mint_denom": "uatom",
"inflation_rate_change": "0.130000000000000000",
"inflation_max": "0.200000000000000000",
"inflation_min": "0.070000000000000000",
"goal_bonded": "0.670000000000000000",
"blocks_per_year": "6311520"
}
}
```
让我们来分别解读这些参数:
- `minter`
- `inflation`:总 token 供应量的年化通胀百分比,每周更新。值 “0.070000000000000000” 意味着目标是每年通货膨胀率为“7每周重新计算一次。
- `annual_provisions`: 每块重新计算。初始值是 `0.000000000000000000`
- `params`
- `mint_denom`: 增发权益代币面值,此处是 `uatom`
- `inflation_rate_change`: 通胀每年最大变化。
- `inflation_max`: 最高通胀水平。
- `inflation_min`: 最低通胀水平。
- `goal_bonded`: 目标绑定量占总供应量百分比。如果委托 token 的百分比低于此目标,则通胀率会增加(在`inflation_rate_change`之后),直至达到`inflation_max`。 如果委托 token 的百分比高于此目标,则通胀率会下降(在`inflation_rate_change`之后),直至达到`inflation_min`。
- `blocks_per_year`: 每年出块量估算。用于计算出块收益中权益 token 的通胀部分(称之为块供给)。
### 分配Distribution
`distr`模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的`distr`部分如下所示:
```json
"distr": {
"fee_pool": {
"community_pool": null
},
"community_tax": "0.020000000000000000",
"base_proposer_reward": "0.010000000000000000",
"bonus_proposer_reward": "0.040000000000000000",
"withdraw_addr_enabled": false,
"delegator_withdraw_infos": null,
"previous_proposer": "",
"outstanding_rewards": null,
"validator_accumulated_commissions": null,
"validator_historical_rewards": null,
"validator_current_rewards": null,
"delegator_starting_infos": null,
"validator_slash_events": null
}
```
让我们来分别解读这些参数:
- `fee_pool`
- `community_pool`: 用于支付奖励的 token 放在公共池中,它通过治理提案分配。在创世文件中通常是 null。
- `community_tax`: 税率,即交易费和出块收益中需要放入公共池部分的百分比。
- `base_proposer_reward`: 区块提议者在有效区块中收取的交易费用奖励的基础部分。 如果值为`0.010000000000000000`则1的费用将转给提议者。
- `bonus_proposer_reward`: 如果预提交取得了 2/3 (该块有效的最小值)的加权投票,他们会获得 `base_proposer_reward` 奖励。 如果预提交获得100的加权投票则此奖励线性增加至`bonus_proposer_reward`。
- `withdraw_addr_enabled`: 如果是`true`,委托人可以设置不同的地址来取回他们的奖励。 如果要在创世时禁用转账,则要设置为`false`,因为它可以绕过转账限制。
- `delegator_withdraw_infos`: 委托人收益地址列表。 如果没有从之前的状态导出,一般是`null`。
- `previous_proposer`: 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。
- `outstanding_rewards`: 未付(未提取)奖励。如果没有从之前的状态导出,设置为`null`。
- `validator_accumulated_commission`: 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为`null`。
- `validator_historical_rewards`: 验证人的历史奖励相关的信息,由`distr`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
- `validators_current_rewards`: 验证人的当前奖励相关的信息,由`distr`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
- `delegator_starting_infos`: Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为`null`。
- `validator_slash_events`: Set of information related to the past slashing of validators. Set to `null` if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为`null`。
### 治理Governance
`gov`模块处理所有与治理相关的事务。 `gov`部分的初始状态如下所示:
```json
"gov": {
"starting_proposal_id": "1",
"deposits": null,
"votes": null,
"proposals": null,
"deposit_params": {
"min_deposit": [
{
"denom": "uatom",
"amount": "512000000"
}
],
"max_deposit_period": "1209600000000000"
},
"voting_params": {
"voting_period": "1209600000000000"
},
"tally_params": {
"quorum": "0.4",
"threshold": "0.5",
"veto": "0.334",
"governance_penalty": "0.0"
}
}
```
让我们来分别解读这些参数:
- `starting_proposal_id`: 此参数定义第一个提案的ID每个提案都由唯一ID标识。
- `deposits`: 每个提案 ID 的保证金列表。如果没有从之前的状态导出,设置为`null`。
- `votes`: 每个提案 ID 的投票列表。 如果没有从之前的状态导出,设置为`null`。
- `proposals`: 所有提案列表。如果没有从之前的状态导出,设置为`null`。
- `deposit_params`
- `min_deposit`: 使提案进入投票期的最小抵押数量,如果提供了多种面值,满足其一即可。
- `max_deposit_period`: 最长抵押等待时间(单位**纳秒**),之后就不能再进行抵押了。
- `voting_params`
- `voting_period`: 投票期时长(单位**纳秒**)。
- `tally_params`
- `quorum`: 提议生效所需的投票数占总抵押数的百分比。
- `threshold`: 提议生效所需 `YES` 票最小百分比。
- `veto`: 若提议生效,`NO_WITH_VETO` 票最大百分比.
- `governance_penalty`: 对未给特定提案进行投票的验证人的处罚。
### 惩罚Slashing
The `slashing` module handles the logic to slash delegators if their validator misbehave. The `slashing` section in genesis looks as follows:
`slashing`模块处理对验证人行为不当的惩罚逻辑。 创世文件中的`slashing`部分如下:
```json
"slashing": {
"params": {
"max_evidence_age": "1814400000000000",
"signed_blocks_window": "10000",
"min_signed_per_window": "0.050000000000000000",
"downtime_jail_duration": "600000000000",
"slash_fraction_double_sign": "0.050000000000000000",
"slash_fraction_downtime": "0.000100000000000000"
},
"signing_infos": {},
"missed_blocks": {}
}
```
让我们来分别解读这些参数:
- `params`
- `max_evidence_age`: 证据最长有效期,单位 **纳秒**
- `signed_blocks_window`: 用于识别离线验证人节点的块滑动窗口。
- `min_signed_per_window`: 在滑动窗口中预提交的数量少于此值,认为验证人节点离线。
- `downtime_jail_duration`: 如果验证人离线时间超过此处设定的**纳秒**数,验证人节点将被关小黑屋。
- `slash_fraction_double_sign`: 验证人节点双签时,需缴纳罚金占总委托数量的百分比。
- `slash_fraction_downtime`: 验证人节点离线时,需缴纳罚金占总委托数量的百分比。
- `signing_infos`:`slashing` 模块所需的每个验证人节点的各种信息。如果没有从之前的状态导出,设置为`{}`。
- `missed_blocks`: `slashing` 模块所需的与丢块相关的各种信息。如果没有从之前的状态导出,设置为`{}`。
### 创世交易Genesis Transactions
默认情况下genesis文件不包含任何`gentxs`。 `gentx`是一种交易,在创世文件中的将`accounts`下的 token 委托给验证人节点,本质上就是在创世时创建验证人。 在`genesis_time`之后,一旦有超过 2/3 的验证人(加权投票)作为有效`gentx`的接收者上线,该链就会启动。
可以手动将`gentx`添加到genesis文件或通过以下命令
```bash
gaiad collect-gentxs
```
此命令将存储在`~/.gaiad/config/gentx`中的所有`gentxs`添加到genesis文件中。 要创建创世纪交易,请单击[此处](./validators/validator-setup.md#participation-in-genesis-as-a-validator)。

View File

@ -0,0 +1,71 @@
# Cosmos Hub主网上线计划
* 2016年夏天Cosmos首次发表了项目白皮书。
* 2017年春天Cosmos完成了首次募资。
* 2019年一月Cosmos Hub软件完成功能开发。
* 至此Cosmos Hub主网即将启动。
* 那么Cosmos 主网上线将为Cosmos通证Atom的持有者带来什么呢
如果你是一个Atom通证的持有者你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。
**Atom通证持有人务必仔细阅读以下内容以保障您的通证能够安全委托给验证人。在您开始实际操作前请先仔细阅读整个CLI指南并熟悉所有命令**
* [CLI指南](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/gaia/delegator-guide-cli.md)
CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件目前尚没有其他数字钱包供应商通过类似的安全审计。
请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。
**Cosmos Hub主网仍然是个实验型的网络。在主网的早期估计仍会出现一些问题比如软件升级或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险请见跨链 Cosmos 贡献条款中的风险部分条款。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以务必请谨慎行事**
* [跨链 Cosmos 贡献条款](https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf)
* [Apache 2.0授权协议](https://www.apache.org/licenses/LICENSE-2.0)
如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流您可以参加我们2月14日的线上直播在直播中我们将介绍主网启动后通证委托的整个流程。
注册链接:[gotowebinar.com/register/](https://register.gotowebinar.com/register/5028753165739687691)
## 主网启动的里程碑
欢迎收藏[cosmos.network/launch](https://cosmos.network/launch),跟踪主网启动全过程。
* Cosmos-SDK 安全审计✔: 在1月初Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估而第三家安全审计公司的评估工作也正在进行中。
* Cosmos-SDK正式发布版本: RC版本一旦完成Cosmos-SDK的功能在主网上线前将不再变更此后Cosmos-SDK团队将开始一轮内部漏洞检测以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布我们将启动一个新的Gaia测试网以便在实际运行环境中找到那些在测试中难以被发现的漏洞。
* 权益争夺赛结束: 2018年12月启动的权益争夺赛GoS是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止GoS区块链网络已经完成了3次硬分叉。GoS任务结束后我们将通过记分准则来判断获胜者并且在整个活动结束时宣布对获胜者的奖励。[GoS记分准则](https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring)
* 创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案提出了对Cosmos投资者参与者早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人或机构都可以提交一个gentx文件只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中
* Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件 并且占有2/3以上投票权的验证人们上线Cosmos主网就可以启动了。
## Cosmos官方交流渠道
**以下是Cosmos有关主网启动的官方渠道**
* Cosmos Network (twitter.com/cosmos)
* Cosmos GitHub (github.com/cosmos)
* Cosmos Blog (blog.cosmos.network)
**请注意Cosmos forumRiot群和Telegram群将不被视为官方信息发布渠道。**
* [Cosmos forum](https://forum.cosmos.network)
* [Riot群](https://riot.im/app/#/group/+cosmos:matrix.org)
* [Telegram群](http://t.me/cosmosproject)
如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑那么在启动时请先不要有任何行动您可以关注以上三个Cosmos官方渠道发布的最新情况另外不要向任何管理员、网站或者非官方软件提供您的助记词。
切记,我们绝不会要求您提供您的私钥或者助记词。
## 在主网启动期间确保资产安全可靠
任何公链启动都会令人十分激动但同时也会有一些唯利是图的人趁机作恶。自人类起源社会工程学就已经存在了在当今技术时代网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效95%以上的账户安全漏洞都是由这两种攻击造成的而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道无论您是使用SignalTelegramSMSTwitter或只是在论坛、社交媒体上接收信息都有可能受到网络攻击盗取您的重要信息和资产。
虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。
## 安全规则
#### 参与Cosmos主网启动您需要熟记以下规则:
* 直接从官方来源下载软件并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的TendermintCosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取从这些渠道下载可避免上当受骗避免使用恶意修改的软件版本。
* 不要将助记词告诉给任何人你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务那么就要警惕了为了避免对通证失去控制您应该将其离线存储最大限度降低被盗风险并制定安全的备份策略永远不要与任何人分享。
* 对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站以从您的计算机窃取敏感信息。如果您是Gmail用户[请在此处对钓鱼邮件进行测试](https://phishingquiz.withgoogle.com)。
* 在购买Atoms之前请做好充分的信息调研。通证在主网启动时是不允许交易的所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后请首先对卖方和交易所进行全面调研确保Atom通证的来源可信。
* Tendermint团队和跨链基金会都不会出售Atom通证所以如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告请不要相信一定是假的。
* 对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕您需要熟悉所有重要的指令特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档以避免上当受骗损害自身及他人的利益。请牢记Cosmos论坛Riot群和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。
* 在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。
如果突然出现的交易极具诱惑或显示的消息要求您提供永远不应该与其他人分享的信息您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记来自CosmosTendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词我们仅会通过我们的官方博客Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。

View File

@ -0,0 +1,116 @@
# **Cosmos主网上线三部曲**
Cosmos主网启动将分成3个阶段分布完成下面我们将具体介绍每一阶段的预期目标。
## **🚨第一阶段:网络逐步趋于稳定🚨**
在第一阶段主网可能会不太稳定也许会出现暂停或其他故障可能需要Cosmos主网验证人和全节点运营者们一起来协助修复。在网络趋于稳定过程中出现此类故障并不意外。
**状态修改和主网启动:**
区块链的核心价值之一是其不可篡改性,也就是说我们不会通过回滚来修改过去的状态记录。最终,这种不可篡改的理念在软件共识协议层面得到了支持,并最终在社区参与者之间形成了社会契约。
也就是说Cosmos Hub的底层技术开发是能够实现低难度的分叉和回滚的 我们已经看到社区在测试网上做过多次相应的演练。这些技术也会在主网上应用,用以最终抵御卡特尔风险的发生。
回滚网络状态通常被认为是非常严重的问题因为这将损害网络的经济最终性。因此回滚网络状态只能在极端状态下使用比如以太网的DAO硬分叉也就是说在Cosmos Hub主网启动初期转账交易不会开启因此回滚的危害性很小因为状态转换远比“经济最终性”的影响低。 如果需要,比如发现漏洞,我们可以将过去某一个高度时的网络状态导出,然后重启网络,就如同我们在测试网上演练过的那样。
一旦链上治理决定开启交易功能,全网将会遵从经济最终性。
总而言之如果在链上交易功能开启之前Cosmos Hub发现任何错误或漏洞那么用户可期望回滚至任意状态甚至创世块。
一旦链上交易功能开始后,状态回滚方式将很难被采纳。
**对开发人员的建议**Cosmos主网启动是投资者参与主网的第一阶段。作为分布式应用的开发人员您可能是Cosmos-SDK框架或Tendermint Core的用户。开发者基于[Cosmos-SDK](https://cosmos.network/docs/)或[Tendermint](https://tendermint.com/docs/)的应用开发进度现阶段应该不受Cosmos Hub的影响但如果您的项目需要使用[IBC](https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe)链间通信协议则必须要等到第三阶段或参与即将开始的IBC测试网络。
**对于用户的建议**在此阶段我们强烈建议您不要交易Atoms其实法律合同也限定不能交易因为在这个阶段仍然存在状态回滚的风险。
但是,您可以通过下面链接的[CLI指南](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/gaia/delegator-guide-cli.md)和视频教程的指导在此阶段将Atoms通证委托给验证人。当然如果发生状态修改那么所有收益包括手续费和通胀收益都将丢失。Voyager是用于与Cosmos Hub交互的图形化客户端目前处于alpha版正在持续开发中。一旦Voager beta版上线并可以安全使用我们将另行公告。
CLI指南和视频教程https://v.qq.com/x/page/q08425izfhi.html
## 第二阶段:链上交易开启
**摘要:**
一旦我们认为主网足够稳定在链上抵押了Atom的通证持有者将会通过链上治理过程投票决定是否开启链上交易。
Cosmos浏览器是查看治理提案状态的最佳途径可以在我们的主网启动页面上找到多款[Cosmos浏览器](https://cosmos.network/launch)。
对用户来说如果提案被社区接受并且链上交易开启您就可以在链上转移您的Atom了。
## 第三阶段启用IBC协议
**摘要:**
第三阶段我们将会发布[IBC协议](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/spec/ibc/overview.md)并且对是否将其纳入Cosmos-SDK的核心模块库进行链上治理投票。
**对开发人员的建议**使用Cosmos-SDK或Tendermint BFT构建的应用专有链将能够连接到 Cosmos Hub并与连接到Hubs上的其他任意区块链进行跨链交互。
**对用户的建议**您可以将各种通证和NFT直接从采用IBC协议连接的一个链转移到另一个通过IBC协议连接的链而无需通过一个第三方中心化平台。
## 验证人提示: 提交您的主网gentx文件
1. 验证人应该已经生成并且安全的保存好用于主网验证的共识密钥。
2. 验证人根据自己获得ATOM通证的来源比如募资参与者或权益争夺活动的获奖者准备好在创世文件Genesis中需要签署的交易。
3. 一旦创世通证分配计划发布我们将开始征集gentx文件。
## 总结
Cosmos旨在建立所有区块链间的桥梁最终建立一个区块链互联网。然而路漫漫其修远兮我们还有很长的路要走。主网上线之后我们需要完成与整个通证经济世界的深度融合很多的工作要做等着我们去完成。正如肯尼迪在逆境中曾经说过的那样
“我们选择去月球,不是因为很容易,而是因为很难......”
走更崎岖的路,才会看见更美的风景!
****

View File

@ -159,7 +159,7 @@ gaiacli query tendermint-validator-set | grep "$(gaiad tendermint show-validator
你必须要在[区块浏览器](https://explorecosmos.network/validators)中看见你的验证人节点信息。你可以在`~/.gaiad/config/priv_validator.json`文件中找到`bech32`编码格式的`address`。
::: 注意
::: warning 注意
为了能进入验证人集合你的权重必须超过第100名的验证人。
:::
@ -171,12 +171,6 @@ gaiacli query tendermint-validator-set | grep "$(gaiad tendermint show-validator
如果被因为掉线而遭到jail你可以重获你的投票股权以重回验证人队伍。首先如果`gaiad`没有运行,请再次启动:
```
gaiad start
```
等待你的全节点追赶上最新的区块。接下来,运行以下命令。请注意,`<cosmos>`是你的验证人帐户的地址,`<name>`是验人帐户的名称。你可以通过运行`gaiacli keys list`找到此信息。
```bash
gaiad start
```