cosmos主网即将上线,对文档做了大量更新。特地翻译了一下,方便小伙伴们阅览, 之后会持续更新
第二章Gaia:
委托人指南(命令行操作)
本文档包含委派者通过命令行界面(CLI)与Cosmos Hub交互的所有必要信息。
它还包含有关如何管理帐户,从筹款人恢复帐户以及使用ledger nano硬件钱包的说明。
警告
非常重要 :请确保您仔细遵循下文所述的步骤,因为在此重要过程中的疏忽可能会导致你的Atom无限期丢失。因此,在继续操作之前,请完整阅读以下说明,并在需要支持的情况下与我们联系。
另请注意,你即将与Cosmos Hub进行互动,这是一种包含高度实验性软件的区块链技术。尽管区块链是根据现有技术开发的,并且经过了极其谨慎的审核,但我们仍然预见会出现问题,进行更新和遭遇错误。此外,与区块链技术的互动需要先进的技术技能,并且总是带来我们无法控制的风险。通过使用该软件,你要确认你了解与加密软件相关的固有风险(另请参阅Interchain Cosmos Contribution terms的风险部分),并且Interchain基金会与/或Tendermint团队可能不会对由此产生的潜在损害承担责任。使用该软件。根据Apache 2.0许可证发布的此开源软件的任何使用均由您自己承担风险并遵循“AS IS”原则,无任何形式的保证或条件。
练习时务必要小心!
目录
安装gaiacli
gaiacli
: 这是与gaiad
全节点交互的命令行界面。
警告
请检查您是否下载了最新的
gaiacli
稳定版本。
[下载可执行文件] 还不可以。
提示
gaiacli
要在终端中使用。请按照下列步骤操作来打开终端:
- Windows :
Start
>All Programs
>Accessories
>Command Prompt
- MacOS :
Finder
>Applications
>Utilities
>Terminal
- Linux :
Ctrl
+Alt
+T
Cosmos账户
每个Cosmos帐户的核心都有一个种子,它使用12或24个单词的助记词形式。从这个助记词中,可以创建任意数量的Cosmos帐户,即私钥/公钥对。这称为HD钱包(有关HD钱包规范的更多信息,请参阅BIP32)。
Account 0 Account 1 Account 2
+------------------+ +------------------+ +------------------+
| | | | | |
| Address 0 | | Address 1 | | Address 2 |
| ^ | | ^ | | ^ |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| + | | + | | + |
| Public key 0 | | Public key 1 | | Public key 2 |
| ^ | | ^ | | ^ |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| + | | + | | + |
| Private key 0 | | Private key 1 | | Private key 2 |
| ^ | | ^ | | ^ |
+------------------+ +------------------+ +------------------+
| | |
| | |
| | |
+--------------------------------------------------------------------+
|
|
+---------+---------+
| |
| Mnemonic (Seed) |
| |
+-------------------+
存储在帐户中的资金由私钥控制。此私钥使用单向函数从助记词的生成。如果丢失了私钥,则可以使用助记词来重新获得它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了你的助记词访问权限,他就可以访问所有相关帐户。
警告
不要丢失或与任何人分享你的12个单词。为防止盗窃或资金损失,最好确定保留多个助记词备份,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记符,他们将能够访问你的私钥并控制与其关联的帐户。
地址是一个空开的字符串,带有一个可读的前缀(例如cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg
),用于标识你的帐户。当有人想要向你发送资金时,他们会将其发送到你的地址。找到与给定地址相关的私钥在计算上是不可行的。
从筹款人那里恢复一个账户
提示
注意:本节仅涉及众筹参与者
如果你参加了众筹活动,你应该拥有12个词的助记词。新生成的助记符使用24个单词,但12个单词的助记词也兼容与所有Cosmos工具。
ledger钱包
ledger钱包的核心,有一个助记词用于在多个区块链(包括Cosmos Hub)上生成帐户。通常,在初始化ledger钱包时,你将创建新的助记词。但是,可以告诉ledger使用用户提供的助记词。让我们继续看看如何输入你在众筹活动中获得的助记词作为ledger钱包的种子。
警告
注意:要做到这一点,最好使用全新的ledger钱包。实际上,每个ledger钱包只能有一个助记词。但是,如果要使用已经初始化过的ledger钱包,可以通过
Setting
>Device
>Reset All
来重置。请注意,这将清除当前存储在设备上的种子。如果你没有正确保护相关的助记词,你可能会失去你的资金!
需要在未初始化的ledger钱包上执行以下步骤:
- 通过USB将ledger钱包连接到计算机
- 按两个按钮
- 不要选择“Config as a new device”选项。而是选择“Restore Configuration”
- 选择一个PIN
- 选择12个词的选项
- 以正确的顺序中输入你在众筹活动期间获得的每个单词。
- 你的ledger钱包现已正确设置与你的众筹助记词!不要遗失这个助记词!如果你的ledger钱包丢失,你始终可以使用相同的助记词重新恢复新设备。
接下来,单击此处了解如何生成帐户。
电脑
警告
注意:在离线计算机上执行此操作更安全
要使用众筹助记词恢复帐户并将关联的加密私钥存储在计算机上,请使用以下命令:
gaiacli keys add <yourKeyName> --recover
系统将提示你输入用于加密0
号帐户的私钥的密码。每次要发送交易时,都需要此密码。如果丢失了密码,则始终可以使用助记词恢复私钥。
-
<yourKeyName>
是帐户的名称。它是用于表示从助记词派生密钥对的帐号的引用。你希望发送交易时使用此名称来标识你的帐户。 - 你可以添加可选的
--account
标识以指定要用于生成帐户的路径(0,1,2,...)。默认情况下,会生成帐户0
。
创建一个账户
要创建帐户,你只需安装gaiacli
即可。在创建它之前,你需要知道你打算存储的位置以及与你私钥的交互。最好的选择是将它们存储在离线专用计算机或ledger钱包中。将它们存储在你的常用在线计算机上会带来更大的风险,因为任何通过互联网渗透你的计算机的人都可以泄露你的私钥并窃取你的资金。
使用ledger钱包
警告
只能使用你新购买或完全信任的Ledger钱包。
初始化ledger钱包时,会生成一个24字的助记词并存储在设备中。此助记词与Cosmos兼容,Cosmos帐户可以从中派生。因此,你所要做的就是让你的ledger钱包与gaiacli
兼容。为此,你需要执行以下步骤:
- 从这里下载Ledger Live app。
- 通过USB连接ledger并更新到最新固件。
- 到ledger live app store中, 下载"Cosmos" application (需要一会儿时间)。注意: 你可能必须在Ledger live的
Settings
中启用Dev Mode
才能下载"Cosmos" application。 - 导航到ledger钱包上的Cosmos app。
然后,要创建帐户,请使用以下命令:
gaiacli keys add <yourAccountName> --ledger
-
<yourKeyName>
是帐户的名称。它是用于表示从助记词派生密钥对的帐号的引用。你希望发送交易时使用此名称来标识你的帐户。 - 你可以添加可选的
--account
标识以指定要用于生成帐户的路径(0,1,2,...)。默认情况下,会生成帐户0
。
使用电脑
警告
在离线计算机上执行此操作更安全。
要生成帐户,只需使用以下命令:
gaiacli keys add <yourKeyName>
该命令将生成一个24词的助记词,同时保存帐户0
的私钥和公钥。系统将提示你输入用于加密0
号帐户的私钥的密码。每次要发送交易时,都需要此密码。如果丢失了密码,则始终可以使用助记词恢复私钥。
警告
不要丢失或与任何人分享你的12个单词。为防止盗窃或资金损失,最好确定保留多个助记词备份,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记符,他们将能够访问你的私钥并控制与其关联的帐户。
警告
在保护助记词(三重检查!)之后,你可以删除bash历史记录以确保没有人可以检索它:
history -c
rm ~/.bash_history
-
<yourKeyName>
是帐户的名称。它是用于表示从助记词派生密钥对的帐号的引用。你希望发送交易时使用此名称来标识你的帐户。 - 你可以添加可选的
--account
标识以指定要用于生成帐户的路径(0,1,2,...)。默认情况下,会生成帐户0
。
你可以使用以下命令从同一助记词生成更多帐户:
gaiacli keys add <yourKeyName> --recover --account 1
此命令将提示你输入密码以及助记词。更改帐号以生成其他帐户。
访问Cosmos Hub网络
为了查询状态和发送交易,你需要一种访问网络的方法。为此,你可以运行自己的全节点,也可以连接到其他人的全节点。
警告
不要与任何人分享你的助记词(12或24个单词)。唯一需要了解它的人就是你。如果你通过电子邮件或直接留言请求你与任何区块链服务或支持共享你的助记词,这一点尤其重要。 Cosmos,Tendermint团队或Interchain Foundation中的任何人都不会发送电子邮件,要求你分享任何类型的帐户凭据或助记词。
运行你自己的全节点
这是最安全的选择,但需要相对较高的资源。为了运行你自己的全节点,你需要良好的带宽和至少1TB的磁盘空间。
你将在此处找到有关如何安装gaiad
的教程,以及在此处运行完整节点。
连接到远程全节点
如果你不想或不能运行自己的节点,则可以连接到其他人的全节点。你应该选择你信任的运营商,因为恶意运营商可能会返回不正确的查询结果或审查你的交易。但是,他们永远无法窃取你的资金,因为你的私钥存储在你的计算机或ledger设备。全节点运营商的可能选项包括验证人,钱包提供商或交换机。
要连接到全节点,你需要以下格式的地址:https://77.87.106.33:26657
(注意:这是占位符)。该地址必须由你选择信任的全节点运营商进行通信。你将在以下部分中使用此地址。
设置gaiacli
提示
在设置
gaiacli
之前,请确保你已设置了访问Cosmos Hub网络的方法。
警告
请检查你是否始终使用最新的稳定版
gaiacli
。
gaiacli
是一个工具,使你能够与在Cosmos Hub网络上运行的节点进行交互,无论你是否自己运行它。让我们正确设置。
要设置gaiacli
,请使用以下命令:
gaiacli config <flag> <value>
它允许你为每个给定的标识设置默认值。
首先,设置要连接的全节点的地址:
gaiacli config node <host>:<port
// example: gaiacli config node https://77.87.106.33:26657
如果你运行自己的全节点,只需使用tcp://localhost:26657
作为地址。
然后,让我们设置--trust-node
标识的默认值:
gaiacli config trust-node false
// Set to true if you run a light-client node, false otherwise
最后,让我们设置我们想要与之交互的区块链的chain-id
:
gaiacli config chain-id gos-6
查询状态
提示
在你能够绑定Atom并获得奖励之前,你需要设置gaiacli
gaiacli
允许你查询区块链中的所有相关信息,例如账户余额,绑定代币的数额,奖励,治理建议等。下面是对委托人最有用的命令列表。
// query account balances and other account-related information
gaiacli query account
// query the list of validators
gaiacli query staking validators
// query the information of a validator given their address (e.g. cosmosvaloper1n5pepvmgsfd3p2tqqgvt505jvymmstf6s9gw27)
gaiacli query staking validator <validatorAddress>
// query all delegations made from a delegator given their address (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)
gaiacli query staking delegations <delegatorAddress>
// query a specific delegation made from a delegator (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg) to a validator (e.g. cosmosvaloper1n5pepvmgsfd3p2tqqgvt505jvymmstf6s9gw27) given their addresses
gaiacli query staking delegation <delegatorAddress> <validatorAddress>
// query the rewards of a delegator given a delegator address (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)
gaiacli query distr rewards <delegatorAddress>
// query all proposals currently open for depositing
gaiacli query gov proposals --status deposit_period
// query all proposals currently open for voting
gaiacli query gov proposals --status voting_period
// query a proposal given its proposalID
gaiacli query gov proposal <proposalID>
要获得更多命令,只需输入:
gaiacli query
对于每个命令,你可以使用-h
或--help
标识来获取更多信息。
发送交易
注意燃料和手续费
Cosmos Hub网络上的交易需要包含交易费用才能被进行处理。该费用用于支付运行交易所需的燃料。公式如下:
fees = gas * gasPrices
gas
取决于交易。不同的交易需要不同数量的gas
。交易的gas
是在处理时计算的,但是有一种方法可以通过使用gas
标识的auto
值预先估算它。当然,这只是估算。如果你想确保为交易提供足够的gas
,可以使用标识--gas-adjustment
(默认值1.0
)调整此估计值。
gasPrice
是每单位gas
的价格。每个验证人设置一个min-gas-price
,并且仅包括gasPrice
大于其min-gas-price
的交易。
fees
是gas
和gasPrice
的乘积。作为用户,您必须输入3个中的2个。gasPrice
/fees
越高,你的交易将被包含在区块中的可能性就越高。
绑定Atom和提取奖励
提示
在你能够绑定Atom并获得奖励之前,你需要设置gaiacli并创建账户
警告
在绑定Atom之前,请阅读委托人相关问题来了解委托人的相关责任及风险。
警告
注意:这些命令需要在在线计算机上运行。使用ledger钱包执行命令更安全。有关离线程序,请单击此处。
// Bond a certain amount of Atoms to a given validator
// ex value for flags: <validatorAddress>=cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, <amountToBound>=10000stake, <gasPrice>=0.001stake
gaiacli tx staking delegate <validatorAddress> <amountToBond> --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
// Withdraw all rewards
// ex value for flag: <gasPrice>=0.001stake
gaiacli tx distr withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
// Unbond a certain amount of Atoms from a given validator
// You will have to wait 3 weeks before your Atoms are fully unbonded and transferrable
// ex value for flags: <validatorAddress>=cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, <amountToUnbound>=10000stake, <gasPrice>=0.001stake
gaiacli tx staking unbond <validatorAddress> <amountToUnbond> --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
提示
如果你使用已连接的ledger钱包,系统将要求你在设备签名并向网络广播之前确认该交易。
要确认你的交易已完成,你可以使用以下查询:
// your balance should change after you bond Atoms or withdraw rewards
gaiacli query account
// you should have delegations after you bond Atom
gaiacli query staking delegations <delegatorAddress>
// this returns your tx if it has been included
// use the tx hash that was displayed when you created the tx
gaiacli query tx <txHash>
如果你通过受信任的全节点与网络交互,请使用区块链浏览器进行二次检查。
参与治理
治理入门
Cosmos Hub有一个内置的治理系统,允许绑定的Atom持有者对提案进行投票。提案有三种类型:
-
Text Proposals
: 这些是最基本的提案类型。它们可用于获取特定主题的网络意见。 -
Parameter Proposals
: 这些用于更新现有参数的值。 -
Text Proposals
: 这些用于提出对Hub软件的升级。
任何Atom持有者都可以提交提案。为了使提案可以投票,需要提供一个大于名为minDeposit
参数的deposit
。提交者提供全部的deposit
。如果初始提案者的deposit
不足,则提案进入deposit_period
状态。然后,任何Atom持有人都可以通过发送depositTx
来增加deposit
。
deposit
到达minDeposit
后,提案进入voting_period
,持续2周。任何bonded
的Atom持有人都可以对此提案进行投票。选项是Yes
,No
,NoWithVeto
和Abstain
。投票的权重取决于发件人的绑定原子数量。如果他们不投票,委托人把投票权重继承给其验证人。但是,委托人可以通过自己发送投票来覆盖验证人的投票。
在投票期结束时,如果有超过50%的Yes
投票(不包括Abstain
投票)和低于33.33%的NoWithVeto
投票(不包括Abstain
投票),则接受该提案。
实践
提示
在你能够绑定Atom并获得奖励之前,你需要绑定Atom
警告
注意:这些命令需要在在线计算机上运行。使用ledger钱包执行命令更安全。有关离线程序,请单击此处。
// Submit a Proposal
// <type>=text/parameter_change/software_upgrade
// ex value for flag: <gasPrice>=0.0001stake
gaiacli tx gov submit-proposal --title "Test Proposal" --description "My awesome proposal" --type <type> --deposit=10stake --gas auto --gas-prices <gasPrice> --from <delegatorKeyName>
// Increase deposit of a proposal
// Retrieve proposalID from $gaiacli query gov proposals --status deposit_period
// ex value for parameter: <deposit>=1stake
gaiacli tx gov deposit <proposalID> <deposit> --gas auto --gas-prices <gasPrice> --from <delegatorKeyName>
// Vote on a proposal
// Retrieve proposalID from $gaiacli query gov proposals --status voting_period
// <option>=yes/no/no_with_veto/abstain
gaiacli tx gov vote <proposalID> <option> --gas auto --gas-prices <gasPrice> --from <delegatorKeyName>
在离线电脑上签署交易
如果您没有ledger钱包并希望在离线计算机上与私钥交互,则可以使用下面的步骤。首先,使用以下命令在在线计算机上生成未签名的交易(带有绑定交易的示例):
// Bond Atoms
// ex value for flags: <amountToBound>=10000stake, <bech32AddressOfValidator>=cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, <gasPrice>=0.001stake
gaiacli tx staking delegate <validatorAddress> <amountToBond> --from <delegatorKeyName> --gas auto --gas-prices <gasPrice> --generate-only > unsignedTX.json
然后,复制unsignedTx.json
并将其传输(例如通过USB)到离线计算机。如果尚未完成,请在离线计算机上创建一个帐户。为了提高安全性,你可以在使用以下命令对交易进行签名之前仔细检查交易的参数:
cat unsignedTx.json
现在,使用以下命令对交易进行签名:
gaiacli tx sign unsignedTx.json --from <delegatorKeyName> > signedTx.json
复制signedTx.json
并将其传回在线计算机。最后,使用以下命令广播交易:
gaiacli tx broadcast signedTx.json