簡單瞭解 Polkadot 特有的術語、和其他鏈的顯著區別以及使用 Polkadot 的實用信息。

原文標題:《一些使用 Polkadot 的實用信息》
撰文:Polkadot
翻譯:PolkaWorld 社區

這篇文章是對 Polkadot 協議的概括介紹,主要會介紹 Polkadot 特有的術語、和其他鏈的顯著區別以及使用 Polkadot 的實用信息。

DOT 代幣

  • 代幣小數位數 : 12
  • 餘額類型 : u128

地址

在 Polkadot (和大多數 Substrate 鏈)中,用戶帳戶是一個 32 字節(256 位)的 AccountId。這是 Substrate 使用的加密的公鑰。

Polkadot (和 Substrate)使用 SS58 地址格式。這是一種廣泛的「元格式」,旨在處理許多不同的密碼和鏈。它與比特幣的 Base58Check 格式有很多共同點,比如版本前綴、基於哈希的校驗後綴以及 base-58 編碼。

有關編碼和更全面的網絡前綴列表的信息,請參見 Substrate wiki 中的 SS58 頁面

本指南的相關 SS58 前綴:(SS58 編碼前)

  • Polkadot: 0
  • Kusama: 2
  • Westend: 42

密碼學

Polkadot 支持以下加密密鑰對和簽名算法:

  • Ed25519
  • Sr25519 - Ristretto 羣上的 Schnorr 簽名
  • secp256k1 上的 ECDSA 簽名

請注意,secp256k1 密鑰的地址是公鑰哈希的 SS58 編碼,以便將公鑰從 33 字節減少到 32 字節。

小額存款

波卡使用小額存款(ED:existential deposit)來防止灰塵帳戶將狀態擠爆。如果一個帳戶低於 ED,它將被銷燬,即完全從存儲中刪除,並將 nonce 值重置。

出於審計目的追蹤賬戶 nonce 值的錢包和保管人應該注意不要讓帳戶銷燬,因爲用戶可能會朝該地址退款,並嘗試與其進行交易。餘額模塊提供 transfer_keep_alive 的功能(即在轉賬時保持賬戶存在的功能),使用了該功能後,如果一筆轉賬將導致銷燬發送方的帳戶,則會返回錯誤並中止交易,而不會進行轉賬。

自由的 vs 保留的 vs 鎖倉的 vs 鎖倉待釋放的餘額

帳戶餘額信息存儲在 AccountData 中。Polkadot 主要處理兩種類型的餘額:自由余額(free balance)和保留餘額(reserved balance)。

對於大多數操作,你可能感興趣的是自由余額。例如,它是一個賬戶在 staking 和治理方面的「權力」。保留餘額是指某項業務預留的資金,仍屬於賬戶持有人,但不能使用。

鎖倉(locks)是對自由余額的一種抽象,它暫時無法支出,只能用作某些特定目的。幾個鎖倉可以在同一個帳戶上操作,但它們是重疊的而不是相加的。例如,一個賬戶可以有 200 DOTs 的自由余額,上面有兩個鎖倉:150 DOTs 用於轉賬,100 DOTs 用於保留備用。帳戶不能進行導致自由余額低於 150 DOTs 的轉賬,但卻可以通過跟保留餘額相關的操作,導致自由賬戶低於 150 但高於 100 DOTs。

在治理公投中用於 staking 和投票的綁定代幣都是鎖倉的。

鎖倉待釋放的餘額(Vesting)是另一種使用了鎖倉的自由余額的抽象。Vesting 設定了一個鎖倉,隨着時間的推移,這個鎖倉會減少,直到所有的資金都可以轉移。

更多信息:

外部元素和事件

外部元素(Extrinsics)

外部元素包含了來自外部世界的信息,它有三種形式:

  • 內在因素(Inherents)
  • 簽名的交易(Signed Transactions)
  • 未簽名的交易(Unsigned Transactions)

作爲基礎設施提供者,你將幾乎只處理已簽名的交易。但是,你將在你解碼的區塊中看到其他外部元素。你可以在 Substrate 文檔 中找到更多信息。

內在因素包含未被證明爲真,但驗證人基於某種合理性的方法對其達成了一致的信息。例如,時間戳無法被證明,但是驗證人可以一致同意它在系統時鐘的某個範圍內。內在因素並沒有在網絡上 「八卦」,只有區塊生產者將其插入到區塊中。

已簽名的交易包含發佈交易的賬戶的簽名,並且需要支付費用才能將交易包含在鏈上。由於在鏈上包含簽名交易的價值可以在執行之前識別出來,因此它們可以在網絡上的節點之間進行「八卦」,從而降低垃圾信息的風險。簽名交易符合以太坊或比特幣交易的概念。

某些交易不能由手續費帳戶簽名,並且使用未簽名的交易。例如,當用戶從有 DOT 的以太坊合約向新的 DOT 地址進行映射的時候,新地址還沒有任何資金來支付費用。

交易永存性

外部元素可以是有限期的,也可以是永存的。交易負載包括一個區塊號和一個區塊哈希檢查點,交易從該檢查點開始有效,以及一個有效期(在某些地方也稱爲 「era」),該有效期表示交易有效的檢查點之後的區塊數。如果此有效性窗口內的區塊中未包含外部項,則將從交易隊列中丟棄它。

鏈只存儲有限數量的先前區塊哈希作爲引用。你可以從鏈狀態或元數據中查詢這個名爲 BlockHashCount 的參數。該參數在 genesis 設置爲 2400 個區塊(大約 4 小時)。如果有效期大於存儲在鏈上的塊的數量,那麼只要有一個要檢查的塊(即有效期的最小值和塊哈希計數),交易纔有效。

使用 genesis 哈希將塊檢查點設置爲零,有效期爲零將使交易永存。

注意:如果一個帳戶被銷燬並且一個用戶重新爲該帳戶提供資金,那麼他們可以重放一個永存的交易。務必默認使用有限期的外部元素。

事件(Events)

外部元素代表來自外部世界的信息,而事件則代表來自鏈的信息。外部元素可以觸發事件。例如,當認領 staking 獎勵時,staking 模塊發出獎勵事件,以告知用戶賬戶的獎勵金額。

手續費

Polkadot 使用基於 weight 的費用,與 gas 不同,它是在調度前收取的。用戶還可以添加一筆 「小費」 來提高擁擠時段的交易優先級。有關更多信息,請參見 交易費頁面

編碼

Parity 的集成工具應該允許你處理解碼的數據。如果你想繞過它們直接與鏈數據交互或實現自己的編解碼器,Polkadot 使用 SCALE 編解碼器 對區塊和交易數據進行編碼。

智能合約

波卡的中繼鏈不支持智能合約。

其他網絡

除了運行專用網絡外,Polkadot 還有另外兩個網絡,在部署到 Polkadot 主網之前,你可以在其中測試基礎結構。

  • Kusaam 網絡:Kusama 是波卡的瘋狂表親。許多有風險的功能在在進入 Polkadot 之前,都會被部署到 Kusama。
  • Westend 測試網:Westend 是 Polkadot 的測試網,使用 Polkadot runtime。

其他問題

如果沒有相應的鏈上交易,帳戶的餘額是否可以更改?

不,但並非所有的餘額變化都在一個交易中,有些是在事件中。你將需要運行一個存檔節點並監聽事件和交易以跟蹤所有帳戶活動。這尤其適用於鎖倉的操作,如果你將餘額計算爲可消耗餘額,即自由余額減去最大鎖倉。

什麼樣的鏈深度被認爲是 「安全的」?

波卡使用確定性的最終機制。一旦一個塊完成,它就不能被還原,除非用硬分叉。爲了取消 runtime 升級,Kusama 已經有了硬分叉,它還原了四個最終確定的塊。使用 10 個區塊的最終深度應該是安全的。

請注意,在 Polkadot 中,區塊生成和終結是獨立的過程,鏈可以有一個長的未完成區塊頭。

用戶需要與任何智能合約交互嗎?

不,用戶直接與鏈的邏輯交互。

波卡有狀態租賃嗎?

沒有,Polkadot 使用小額存款來防止灰塵帳戶和其他經濟機制,如爲使用狀態的操作鎖定或保留代幣。

來源鏈接:wiki.polkadot.network