概述
這篇文檔介紹了波卡账戶的基礎知識。有關账戶派生和索引等更多信息,請參見高級账戶頁面:
https://wiki.polkadot.network/docs/learn-account-advanced
有關波卡账戶背後的密碼學的更深入解釋,請參見密碼學頁面:
https://wiki.polkadot.network/docs/learn-cryptography
账戶地址
地址是波卡账戶的公共部分。私有部分是用於訪問此地址的密鑰。公共和私有部分共同組成波卡账戶。您可以將您的账戶的公共地址視爲您的郵箱,將私鑰視爲打开該郵箱的鑰匙。任何人都可以向您的郵箱發送郵件,但只有您可以訪問它們,因爲只有您可以訪問其密鑰。
在波卡账戶的環境中,任何人都可以向您的公共地址發送通證,但只有您可以使用私鑰進行交易。這就是爲什么您應該保密您的私鑰。
助記詞和地址生成
一個有效的账戶需要有一個私鑰,可以用來籤署一種支持的曲线和籤名方案。沒有私鑰,账戶無法籤署任何內容。在波卡中,有一些沒有私鑰的账戶的例外情況(即無密鑰账戶)。這些账戶是多重籤名账戶和匿名代理的,這裏不討論。
大多數錢包爲用戶生成助記詞短語,以備份他們的錢包並從助記詞生成私鑰。並非所有錢包都使用相同的算法將助記詞短語轉換爲私鑰,這會影響在多個錢包中使用相同助記詞短語的能力。使用不同措施的錢包將從完全相同的助記詞短語中獲得不同的地址集。
注意:並非所有錢包都使用相同的算法將助記詞短語轉換爲私鑰Subkey和Polkadot-JS基於BIP39這個標准中的字典來生成助記詞,但使用熵字節數(熵字節數組是一種隨機數的表示方式)組生成私鑰,而完整的BIP39錢包(如 Ledger)在助記詞上使用2048輪PBKDF2。由於使用了各種加密算法,同一助記詞可能會在其他錢包上生成不同的私鑰。有關更多信息,請參見Substrate BIP39存儲庫:
https://github.com/paritytech/substrate-bip39
Subkey工具生成的典型助記詞短語如下所示。
還顯示了其相應的私鑰/公鑰對。
Secret seed (Private key):
0x056a6a4e203766ffbea3146967ef25e9daf677b14dc6f6ed8919b1983c9bebbc
Public key (SS58):
5F3sa2TJAWMqDhXG6jhV4N8ko9SxwGy8TpaNS1repo5EYjQX
波卡默認地址格式是MultiAddress(多地址)類型。這意味着相同的助記詞短語將爲不同的平行鏈生成公共密鑰。有關更多信息,請參見高級账戶頁面(https://wiki.polkadot.network/docs/learn-account-advanced)上的地址格式部分(https://wiki.polkadot.network/docs/learn-account-advanced)。
獲取與管理地址
要了解有關在波卡上生成账戶的更多信息,請訪問账戶生成頁面:
https://wiki.polkadot.network/docs/learn-account-generation
账戶余額類型
在波卡中,根據账戶活動,有不同類型的余額。不同的余額類型表明您的余額是否可用於轉账、支付費用,或者由於鏈上要求而必須保持凍結和未使用狀態。下面的示例在Polkadot-JS UI的“账戶(Account)”選項卡中顯示Kusama账戶的不同余額類型(請注意,波卡账戶的余額類型相同)。
總余額表示账戶中通證的總數。請注意,此數字不一定對應您可以轉移的通證。在本例中,總通證數爲0.6274 KSM。可轉移余額表示可以自由轉移的通證數量。這是通過從通證總數中減去鎖定和保留的通證數量計算出來的。鎖定資金對應於用於Staking、治理和既得轉移Vested Transfer(見下文)的通證。在本例中,可轉移余額爲0.0106 KSM。
編者注:
既得轉移:DOT可能會被鎖定以體現資金的逐步釋放。與其他類型的鎖定類似,這些資金不能被轉移,但可以用於協議的其他部分,例如參與治理投票或作爲驗證者或提名者進行質押。逐步釋放的資金是按照一個釋放計劃來解鎖的,每個區塊會解鎖一定數量的通證(线性釋放),或者在特定的區塊號後解鎖全部通證(懸崖式釋放)。盡管通證是以這種方式釋放的,但它並不會自動反映在鏈上,因爲鎖定是惰性的,需要一個外部交易來更新。
既得余額(Vested Balance)表示發送到账戶並按照特定時間表釋放的通證。這些通證歸账戶所有,但被鎖定並在特定數量的區塊後可用於轉移。在本例中,既得余額爲0.25 KSM。
綁定余額表示鎖定以參與鏈上投注的通證數量。在本例中,綁定余額(Bonded Balance)爲0.4 KSM。
民主余額(Democracy Balance)表示被鎖定以在鏈上參與民主治理(即投票支持公投和議會)的通證數量。在本例中,民主余額爲0.4 KSM。
可贖回余額(Redeemable Balance)表示准備解鎖以再次變爲可轉移的通證數量。這些通證已經經歷了解除綁定期。在這種情況下,可贖回余額爲0.1 KSM。
鎖定余額(Locked Balance)表示凍結以參與鏈上Staking、治理或既得轉移的通證數量。鎖定不會堆疊,這意味着如果您有不同的鎖,則總鎖定余額不是所有單個鎖的總和。相反,最大的鎖定量決定了總鎖定余額。在本例中,由於民主治理上有最大的鎖定量(0.55 KSM),因此鎖定余額爲0.55 KSM。
保留余額(Reserved Balance)表示凍結用於鏈上活動而不是Staking、治理和既得轉移的通證數量。此類活動可以是設置身份或代理。由於鏈上要求,保留資金通常可以通過採取一些鏈上操作來釋放。例如,“身份(Identity)”面板在注冊鏈上身份時保留資金,但通過清除身份,您可以取消保留資金並使其再次自由。代理也是如此。這樣做的想法是這些操作需要一些網絡內存使用,這不是免費的。在本例中,我們創建了一個治理代理,其保留的資金爲0.0668 KSM。
在Polkadot-JS中查詢账戶數據
在Polkadot-JS UI中,您還可以在开發者(Developer)>鏈狀態(Chain State)下查詢账戶數據。在selected state query選擇系統托盤pallet,後面跟着account(AccountId32): FrameSystemAccountInfo,然後在Option中選擇一個账戶,然後單擊右側的“+”按鈕。
账戶信息包括:
- nonce,账戶發送的交易數量。
- consumers,當前依賴於該账戶存在的其他模塊的數量。在這個數爲零之前,該账戶不能被回收。
- providers,允許該账戶存在的其他模塊的數量。在這個數和sufficients都爲零之前,該账戶不能被回收。
- sufficients,出於自身目的允許該账戶存在的模塊的數量。在這個數和providers都爲零之前,該账戶不能被回收。
- data,屬於該账戶的額外數據。用於存儲許多鏈中的余額。
有關上述數據的更深入的信息可以在基礎密碼庫中找到。詳情請參見:
https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/system/src/lib.rs#LL767C1-L781C24
該AccountData結構定義了Substrate中的余額類型。三種類型的余額包括free、reserved和frozen。账戶的可用余額是free減去任何考慮的資金的金額frozen,而账戶的總free余額是和reserved資金的總和。描述flags有關账戶的額外信息。
有關上述數據的更深入信息可以在Substrate代碼庫的余額托盤中找到。詳情請參見:
https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/balances/src/types.rs#LL95-L114
解鎖鎖定余額
鎖定余額不能堆疊!最大的鎖定量決定了被鎖資金的總量。請看這個演練視頻教程,它將在上面的例子中指導您解鎖資金的過程。視頻地址詳情請參見:
https://www.youtube.com/watch?v=LHgY7ds_bZ0
在例子中,我們提到了鎖定余額是0.55 KSM,因爲最大的鎖定是在民主治理上,是0.55 KSM。一旦民主治理鎖定被移除,下一個最大的鎖定是在Staking上,是0.5 KSM(綁定的0.4 KSM + 可贖回的0.1 KSM)。這意味着鎖定余額會變成0.5 KSM,而0.05 KSM會被加到可轉移余額中。
在贖回未綁定的0.1 KSM後,鎖定余額會變成0.4 KSM,而另外0.1 KSM會被加到可轉移余額中。現在最大的鎖定仍然是綁定的那部分。這意味着即使我們移除了逐步釋放的鎖定(Vested Lock),鎖定余額仍然是0.4 KSM,而沒有任何通證會被加到可轉移余額中。要釋放那些綁定的通證,我們需要解除綁定,並等待解除綁定期結束後才能贖回它們。如果我們移除了代理,那么預留的資金會自動被加到可轉移余額中。
存在存款與回收
當您生成一個账戶(地址)時,您只是生成了一個讓您訪問它的密鑰。該账戶還不存在於鏈上。爲此,它需要1 DOT的存在存款。
編者注:
存在存款是波卡和大多數基於Substrate的鏈使用的一種機制,用於防止低余額的账戶佔用鏈的狀態空間。
如果一個账戶的余額低於存在存款,那么該账戶將被回收。該账戶將從區塊鏈的狀態中完全刪除,以節省空間,同時該地址中的任何資金也將被銷毀。您並沒有失去對被回收地址的訪問權——只要您有您的私鑰或恢復的助記詞短語,您仍然可以使用該地址——但它需要再次充值至少等於存在存款的金額才能與鏈進行交互。
交易費用不能導致一個账戶被回收。由於費用是在任何其他交易邏輯之前從账戶中扣除的,因此余額等於存在存款的账戶不能構建一個有效的交易。需要添加額外的資金來支付交易費用。
以下是另一種理解存在存款的方式。
您是否注意到過Windows上的Thumbs.db文件或Mac上的.DS_Store文件?這些都是垃圾文件,它們沒有特定的目的,只是讓預覽稍微快一點。如果一個文件夾爲空,只保存了這樣一個文件,您可以刪除該文件夾以清除硬盤上的垃圾。
這並不意味着您永遠失去了對這個文件夾的訪問權——您隨時可以重新創建它。畢竟,您有密鑰——您是電腦的主人。這只意味着您想要保持電腦幹淨,直到您可能再次需要這個文件夾並重新創建它。您的地址就像這個文件夾——當它裏面沒有東西時,它就會從鏈上移除,但當它有了存在存款時,它就會被放回。
账戶身份
波卡內置的身份托盤(Identity Pallet)允許用戶將鏈上元數據附加到他們的账戶。獨立注冊商可以驗證此元數據以提供可信度。
要了解有關如何設置或發布身份、如何定義子账戶或如何成爲注冊商的更多信息,請閱讀本指南。詳情請參見:
https://wiki.polkadot.network/docs/learn-identity)
代理账戶
波卡配備了通用代理账戶系統,允許用戶將密鑰保存在冷存儲中,而代理則代表他們執行受限(或不受限)功能。
有關代理的更多信息,請參閱代理頁面:
https://wiki.polkadot.network/docs/learn-proxies
多重籤名账戶
多重籤名账戶是由多個標准账戶、純代理甚至其他多重籤名账戶創建的账戶。
有關多籤名账戶的完整說明,包括用例,請參閱多重籤名账戶頁面:
https://wiki.polkadot.network/docs/learn-account-multisig
資源
Understanding Accounts and Keys in Polkadot(理解波卡中的账戶和密鑰):與Bill Laboon和BlockX Labs的Chinmay Patel一起解釋波卡中不同類型的账戶和密鑰的用途。文章詳情請參見:
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。