每個Cosmos賬戶的核心基礎是一個包含12或24個詞的助記片語,透過這個助記詞可以生成無數個Cosmos賬戶——一組私鑰/公鑰對。這就是一個硬體錢包2)。
私鑰是控制一個賬戶中所存資產的鑰匙,是透過助記詞單向產生的。如果您不小心丟失了私鑰,你可以透過助記詞恢復。 然而,如果你丟失了助記詞,那麼就有可能失去對由這個助記詞產生的所有私鑰的控制。同樣,如果有人獲得了你的助記詞,他們就可以操作所有相關賬戶。
警告:
謹慎保管並不要告訴他人你的助記詞。 為了防止資產被盜或者丟失,您最好多備份幾份助記詞, 並且把它們存放在只有您知道的安全地方,這樣做將有助於保障您的私鑰以及相關賬戶的安全。
Cosmos地址是一個以可讀詞開頭的字串(比如cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg) 如果有人想給你轉賬通證,他們就往這個地址轉賬。根據給定地址無法推算出私鑰。
透過募資人恢復一個賬戶
提示:
注:這部分內容僅適用於眾籌活動參與者。
如果您是眾籌的參與者,你應該有一個助記詞。新產生的助記詞用24個詞,但是12個詞的助記片語也相容所有Cosmos工具。
透過硬體錢包裝置進行操作
一個數字錢包裝置的核心是透過一個助記詞在多個區塊鏈上建立賬戶(包括Cosmos hub)。通常,您會在初始化您的數字錢包裝置時建立一個新的助記詞,也可以透過已有的助記詞進行匯入。讓我們一起來看如何將您在參與眾籌時獲得的助記詞設定為一個數字錢包裝置的seed。
警告:
最好使用一個新的錢包裝置來恢復您的Cosmos賬戶。確實,每個數字錢包裝置只能有一個助記詞。 當然,您可以透過 設定>裝置>重置所有 將一個已經有助記詞的(用過的)數字錢包重新初始化。但請注意,這樣會清空您裝置中現有的助記詞,如果您沒有做好備份的話,有可能會丟失您的資產 。
對於一個沒有初始化的數字錢包裝置,您需要做如下操作。
1. 將您的數字錢包裝置透過USB與電腦連結
2. 同時按下兩個按鈕
3. 不要選擇“配置一個新裝置”選項,而是選擇“恢復配置”
4. 選擇一個PIN
5. 選擇12個詞選項
6. 逐個按順序輸入您在眾籌時獲得的12個助記詞
現在,您的錢包已經正確地設定好您在眾籌時獲得的助記詞,切勿丟失!任何時候您的錢包裝置出現問題,您都可以透過助記詞在一個新的錢包裝置上恢復所有賬戶。
接下來,請點選這裡來學習如何生成一個賬戶。
在電腦上操作
警告:
在一臺沒有聯網的計算機上執行以下操作會更加安全。
如果您希望透過眾籌時獲得的助記詞恢復賬戶並儲存相關私鑰,請按以下步驟操作:
gaiacli keys add <yourKeyName> --recover
首先,您需要輸入一個密碼來對您硬碟上賬戶0的私鑰進行加密。每次您發出一筆交易時都將需要輸入這個密碼。如果您丟失了密碼,您可以透過助記詞來恢復您的私鑰。
-<yourKeyName> 是賬戶名稱,用來指代用助記詞生成私鑰/公鑰對的Cosmos賬戶。在您發起交易時,這個賬戶名稱被用來識別您的賬戶。
· 您可以透過增加 --account 標誌來指定您賬戶生成的路徑 (0, 1, 2, ...), 0 是預設值。
建立一個賬戶
在建立賬戶之前,您需要先安裝gaiacli,同時,您需要知道你希望在哪裡儲存和使用您的私鑰。 最好的辦法是把他們儲存在一臺沒有上網的電腦或者一個硬體錢包裝置裡面。 將私鑰儲存在一臺聯網的電腦裡面比較危險,任何人透過網路攻擊都有可能獲取您的私鑰,進而盜取您的資產。
使用硬體錢包裝置進行操作
警告:
建議僅使用您新買的錢包裝置或者您足夠信任的裝置
當您初始化錢包裝置時,裝置會產生一個24個詞的助記片語。這個助記片語和Cosmos是相容的,我們可以透過這個助記片語建立Cosmos賬戶。所以,您需要做的是確認您的錢包裝置相容gaiacli,透過下面的步驟可以幫助您確認您的裝置是否相容:
1. 下載Ledger Live應用。
2. 透過USB將錢包與計算機連線,並且將錢包韌體升級到最新版本。
3. 到Ledger Live錢包的應用商店下載”Cosmos“應用(這可能需要花些時間)。下載”Cosmos“應用程式需要在Ledger Live錢包Settings選項中啟用Dev Mode。
4. 在你的錢包裝置上操作Cosmos APP。
然後,透過以下命令建立賬戶:
gaiacli keys add <yourAccountName> --ledger
注意: 該命令僅在硬體錢包已匯入並在解鎖狀態時才有效
· <yourKeyName> 是賬戶名稱,用來指代用助記詞生成私鑰/公鑰對的Cosmos賬戶。在您發起交易時,這個賬戶名稱被用來識別您的賬戶。
· 您可以透過增加 --account 標誌來指定您賬戶生成的路徑 (0, 1, 2, ...), 0 是預設值。
使用電腦裝置進行操作
警告在一臺沒有聯網的電腦上操作會更加安全。
然後,透過以下命令建立賬戶:
gaiacli keys add <yourKeyName>
這個命令會產生一個24個詞的助記片語,並且同時儲存賬戶 0 的私鑰和公鑰。 另外,您還需要輸入一個密碼來對您硬碟上賬戶0的私鑰進行加密。 每次您發出一筆交易時都將需要輸入這個密碼。如果您丟失了密碼,您可以透過助記詞來恢復您的私鑰。
風險提示
千萬不要丟失或者告訴其他人你的12個詞的助記片語。 為了防止資產被盜或者丟失,您最好多備份幾份助記詞, 並且把它們存放在只有您知道的安全地方,如果有人取得您的助記詞,那麼他也就取得了您的私鑰並且可以控制相關賬戶。
警告
在確認已經安全儲存好您的助記詞以後(至少3遍!),你可以用如下命令清除終端視窗中的命令歷史記錄,以防有人透過歷史記錄獲得您的助記詞。
history -c
rm ~/.bash_history
你可以用以下命令使用助記詞生成多個賬戶:
gaiacli keys add <yourKeyName> --recover --account 1
· <yourKeyName> 是賬戶名稱,用來指代用助記詞生成私鑰/公鑰對的Cosmos賬戶。在您發起交易時,這個賬戶名稱用來識別您的賬戶。
· 您可以透過增加 --account 標誌來指定您賬戶生成的路徑 (0, 1, 2, ...), 0 是預設值。
這條命令需要您輸入一個密碼。改變賬號就代表生成了一個新的賬戶。
訪問Cosmos Hub網路
為了查詢網路狀態和發起交易,你需要透過自建一個全節點,或者連線到其他人的全節點訪問Cosmos Hub網路。
警告:請不要與任何人分享您的助記詞,您是唯一需要知道這些助記詞的人。如果任何人透過郵件或者其他社交媒體要求您提供助記詞,那就需要警惕了。 請記住,Cosmos/Tendermint團隊,或跨鏈基金會永遠不會透過郵件要求您提供賬戶密碼或助記詞。
執行您自己的全節點
這是最安全的途徑,但需要相當多的資源。您需要有較大的頻寬和至少1TB的磁碟容量來執行一個全節點。
gaia的安裝教程在這裡, 如何執行一個全節點指導在這裡。
連線到一個遠端全節點
如果您不想或沒有能力執行一個全節點,您也可以連線到其他人的全節點。您需要謹慎的選擇一個可信的運營商,因為惡意的運營商往往會向您反饋錯誤的查詢結果,或者對您的交易進行監控。 然而,他們永遠也無法盜取您的資產,因為您的私鑰僅保持在您的本地計算機或者錢包裝置中。 驗證人,錢包供應商或者交易所是可以提供全節點的運營商。
連線到其他人提供的全節點,你需要一個全節點地址,如https://77.87.106.33:26657。這個地址是您的供應商提供的一個可信的接入地址。你會在下一節中用到這個地址。
設定 gaiacli
提示:在開始設定 gaiacli前,請確認你已經可以訪問Cosmos Hub網路。
警告:請確認您使用的gaiacli是最新的穩定版本 。
無論您是否在自己執行一個節點,gaiacli 都可以幫您實現與Cosmos Hub網路的互動。讓我們來完成對它的配置。
您需要用下面的命令列完成對gaiacli的配置:
gaiacli config <flag> <value>
此命名允許您為每個引數設定預設值。
首先,設定你想要訪問的全節點的地址:
gaiacli config node <host>:<port
// 樣例: 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 可以幫助您獲得所有區塊鏈的相關資訊, 比如賬戶餘額,抵押通證數量,獎勵,治理提案以及其他資訊。下面是一組用於委託操作的命令:
// 查詢賬戶餘額或者其他賬戶相關資訊
gaiacli query account
// 查詢驗證人列表
gaiacli query staking validators
// 查詢指定地址的驗證人的資訊(e.g. cosmosvaloper1n5pepvmgsfd3p2tqqgvt505jvymmstf6s9gw27)
gaiacli query staking validator <validatorAddress>
//查詢指定地址的驗證人相關的所有委託資訊 (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)
gaiacli query staking delegations <delegatorAddress>
// 查詢從一個指定地址的委託人(e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)和一個指定地址的驗證人(e.g. cosmosvaloper1n5pepvmgsfd3p2tqqgvt505jvymmstf6s9gw27) 之間的委託交易
gaiacli query staking delegation <delegatorAddress> <validatorAddress>
// 查詢一個指定地址的委託人(e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)所能獲得的獎勵情況
gaiacli query distr rewards <delegatorAddress>
// 查詢所有現在正等待抵押的提案
gaiacli query gov proposals --status deposit_period
//查詢所有現在正等待投票的填
gaiacli query gov proposals --status voting_period
// 查詢一個指定propsalID的提案資訊
gaiacli query gov proposal <proposalID>
需要了解跟多的命令,只需要用:gaiacli query
對於每條命令,您都可以使用-h 或 --help 引數來獲得更多的資訊。
發起交易
關於gas費和手續費
Cosmos Hub網路上的交易在被執行時需要支付手續費。這個手續費是用於支付執行交易所需的gas。計算公式如下:
fees = gas * gasPrices
gas 的多少取決於交易型別,不同的交易型別會收取不同的 gas 。每個交易的 gas 費是在實際執行過程中計算的,但我們可以透過設定 gas 引數中的 auto 值實現在交易前對 gas 費的估算,但這只是一個粗略的估計,你可以透過 --gas-adjustment (預設值 1.0) 對預估的gas 值進行調節,以確保為交易支付足夠的gas 。
gasPrice 用於設定單位 gas 的價格。每個驗證人會設定一個最低gas價min-gas-price, 並只會將gasPrice大於min-gas-price的交易打包。
交易的fees 是gas 和 gasPrice的乘積。作為一個使用者,你需要輸入3個引數中至少2個, gasPrice/fees的值越大,您的交易就越有機會被打包執行。
抵押Atom通證 & 提取獎勵
提示:在您抵押通證或取回獎勵之前,您需要完成gaiacli 設定 和 建立賬戶。
警告:在抵押通證前,請仔細閱讀委託者常見問題 並且理解其中的風險和責任。
執行以下命令需要在一臺聯網的計算機。用一個硬體錢包裝置執行這些命令會更安全。關於離線交易過程請看這裡。
// 向指定驗證人繫結一定數量的Atom通證
// 引數設定樣例: <validatorAddress>=cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, <amountToBound>=10000stake, <gasPrice>=0.001stake
gaiacli tx staking delegate <validatorAddress> <amountToBond> --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
// 提取所有的獎勵
// 引數設定樣例: <gasPrice>=0.001stake
gaiacli tx distr withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
// 向指定驗證人申請解綁一定數量的Atom通證
// 解綁的通證需要3周後才能完全解綁並可以交易,
// 引數設定樣例: <validatorAddress>=cosmosvaloper18thamkhnj9wz8pa4nhnp9rldprgant57pk2m8s, <amountToUnbound>=10000stake, <gasPrice>=0.001stake
gaiacli tx staking unbond <validatorAddress> <amountToUnbond> --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
提示:如果您是使用一個聯網的錢包裝置,在交易被廣播到網路前您需要在裝置上確認交易。
確認您的交易已經發出,可以用以下查詢:
// 您的賬戶餘額在您抵押Atom通證或者取回獎勵後會發生變化
gaiacli query account
// 您在抵押後應該能查到委託交易
gaiacli query staking delegations <delegatorAddress>
// 如果交易已經被打包,將會返回交易記錄(tx)
// 在以下查詢命令中可以使用顯示的交易雜湊值作為引數
gaiacli query tx <txHash>
如果您是連線到一個可信全節點的話,您可以透過一個區塊鏈瀏覽器做檢查。
參與鏈上治理
鏈上治理入門
Cosmos Hub有一個內建的治理系統,該系統允許抵押通證的持有人參與提案投票。系統現在支援3種提案型別:
· Text Proposals: 這是最基本的一種提案型別,通常用於獲得大家對某個網路治理意見的觀點。
· Parameter Proposals: 這種提案通常用於改變網路引數的設定。
· Software Upgrade Proposal: 這個提案用於升級Hub的軟體。
任何Atom通證的持有人都能夠提交一個提案。為了讓一個提案獲准公開投票,提議人必須要抵押一定量的通證 deposit,且抵押值必須大於 minDeposit 引數設定值. 提案的抵押不需要提案人一次全部交付。如果早期提案人交付的 deposit 不足,那麼提案進入 deposit_period 狀態。 此後,任何通證持有人可以透過 depositTx 交易增加對提案的抵押。
當deposit 達到 minDeposit,提案進入2周的 voting_period 。 任何抵押了通證的持有人都可以參與對這個提案的投票。投票的選項有Yes, No, NoWithVeto 和 Abstain。投票的權重取決於投票人所抵押的通證數量。如果通證持有人不投票,那麼委託人將繼承其委託的驗證人的投票選項。當然,委託人也可以自己投出與所委託驗證人不同的票。
當投票期結束後,獲得50%(不包括投Abstain 票)以上 Yes 投票權重且少於33.33% 的NoWithVeto(不包括投Abstain 票)提案將被接受。
實踐練習
提示:在您能夠抵押通證或者提取獎勵以前,您需要了解通證抵押。
警告:執行以下命令需要一臺聯網的計算機。用一個硬體錢包裝置執行這些命令會更安全。關於離線交易過程請看這裡。
// 提交一個提案
// <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>
// 增加對提案的抵押
// Retrieve proposalID from $gaiacli query gov proposals --status deposit_period
// 透過 $gaiacli query gov proposals --status deposit_period 命令獲得 `proposalID`
// 引數設定樣例: <deposit>=1stake
gaiacli tx gov deposit <proposalID> <deposit> --gas auto --gas-prices <gasPrice> --from <delegatorKeyName>
// 對一個提案投票
// Retrieve proposalID from $gaiacli query gov proposals --status voting_period
透過 $gaiacli query gov proposals --status deposit_period 命令獲得 `proposalID`
// <option>=yes/no/no_with_veto/abstain
gaiacli tx gov vote <proposalID> <option> --gas auto --gas-prices <gasPrice> --from <delegatorKeyName>
從一臺離線電腦上籤署交易
如果你沒有數字錢包裝置,而且希望和一臺存有私鑰的沒有聯網的電腦進行互動,你可以使用如下過程。首先,在聯網的電腦上生成一個沒有簽名的交易,然後透過下列命令操作(下面以抵押交易為例):
// 抵押Atom通證
// 引數設定樣例: <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 並且幫它轉移到沒有聯網的電腦上(比如透過隨身碟)。如果沒有在沒聯網的電腦上建立賬戶,可先在沒有聯網的電腦上建立賬戶。為了進一步保障安全,你可以在簽署交易前用以下命令對引數進行檢查。
cat unsignedTx.json
現在,透過以下命令對交易簽名:
gaiacli tx sign unsignedTx.json --from-addr <delegatorAddr>> signedTx.json
複製 signedTx.json 並轉移回聯網的那臺電腦。最後,用以下命令向網路廣播交易。
gaiacli tx broadcast signedTx.json