如何提升 PoS 挖礦收益?Qtum 量子鏈改進提案#16:實現 PoS 鎖倉激勵


者的話::本提案爲Qtum聯合創始人以及核心開發工程師Jordan Earls發佈在Github 的新的技術提案,旨在幫助質押人(Staker,可理解爲PoS中的「礦工」)經過實施這個QIP,能夠將他們的代幣設置必定的鎖倉時間,並在鎖倉期間提升得到區塊獎勵的可能性。算法

動機數據庫

隨着區塊鏈技術的發展,權益證實(PoS)共識機制變得愈來愈流行。權益證實的區塊鏈容許代幣持有者質押他們的代幣,做爲權益證實的一部分參與區塊的驗證,並所以得到相應的獎勵回報。安全


一些大型服務商和企業被認爲質押了那些嚴格上來講並不屬於他們的代幣(從而得到區塊獎勵)。這其中包括交易所和中心化的錢包提供商等。因爲這些服務商須要確保爲用戶提供服務的及時性,而用戶又能夠隨時提取代幣,所以服務商沒法將用戶的代幣鎖定太長時間。網絡


雖然這些服務商對代幣進行質押的行爲對整個網絡的安全和生態系統都不會帶來什麼害處,然而,他們所控制的大量的代幣卻增長了整個網絡Staking的難度。區塊鏈


這使得我的經過質押少許代幣所能得到的獎勵的可能性變得很是之低。這一提案將有助於提升我的質押人獲取獎勵的機率。此外,該提案還有助於激勵用戶對節點進行按期更新升級,由於爲了得到更多獎勵,用戶須要從新鎖定正在質押中的代幣,這將鼓勵這些質押人檢查他們的質押節點,並按期進行更新。測試

本提案還提供了一個選項,可以使用戶進行超長期質押。那些幫助保障網絡安全的質押人能夠得到額外的獎勵,但這將會限制他們提取代幣的能力。現現在,愈來愈多的父母選擇買銀行的教育儲蓄基金,孩子能夠在他的整個學年裏從這筆基金裏獲取質押獎勵,但他只有到了18歲時才能花費實際獎勵的這些幣。請參見「風險」一節,瞭解爲何最好不去實施這個操做的緣由(即最好限制質押幣的鎖定時間)。設計


詳述code

本提案理論上不須要進行任何特殊的交易格式的修改,也不須要添加操做碼。 比特幣以及 Qtum 生態系統能夠很好地支持操做碼 OP_CHECKLOCKTIME,而且能夠很容易地用於查看鎖倉時間。鎖定代幣的輸出腳本示例以下:cdn


<lock time>blog

OP_CHECKLOCKTIMEVERIFY

OP_DROP

OP_DUP

OP_HASH160

<pubKeyHash>

OP_EQUALVERIFY

OP_CHECKSIG

這只是一個標準的pubkeyhash交易,但有一個前提是沒法在鎖定時間到期前花費代幣。這個交易類型的提議名稱爲「pay-to-lockedpubkeyhash」

在鎖定時間到期前,該交易將沒法正常花費。但在本提案中,該交易可以用於質押。這個 UTXO 可以在特殊的 coinstake 交易中被「花費」。實際中須要添加共識規則以確保已花費的這些已被鎖定的代幣相應地會有一個新的輸出(或者多個),且有着與其相同的數量、相同的鎖定時間以及有效的 pubkeyhash 地址。


例如,在coinstake中給出如下這些輸入:

  • 10 Qtum 發給A, 鎖到2019年

  • 10 Qtum 發給A, 鎖到2019年

  • 10 Qtum 發給A, 鎖到2021年

  • 5 Qtum 發給B, 鎖到2018年 (已是可花費的狀態)

coinstake 交易的輸出將會是:

  • 20 Qtum 發給A, 鎖到2019年

  • 10 Qtum 發給A, 鎖到2021年

  • 5 Qtum 發給B, 鎖到2018年

  • 4 Qtum 發給A, 不鎖定 (區塊獎勵)

固然,輸出也多是:

  • 20 Qtum 發給A, 鎖到2019年

  • 5 Qtum 發給A, 鎖到2021年

  • 5 Qtum 發給A, 鎖到2021年

  • 2 Qtum 發給B, 鎖到2018年

  • 3 Qtum 發給B, 鎖到2018年

  • 4 Qtum 發給A, 不鎖定(區塊獎勵)

請注意:爲簡單起見,此處未體現MPoS的拆分獎勵/費用,但經過MPoS所得到獎勵的總輸出還是發送給「A」地址並是解鎖狀態。

任何鎖定的代幣均可以在 coinstake 中花費(固然,前提是要提供私鑰的全部權),可是鎖定的代幣必須在每一個獨特的鎖按期內以相同的總數量輸出。

鎖定代幣的影響在於代幣的「加權」難度上。目前,算法相似於:

if ( stakeHash < difficulty * actualCoins ) then 知足條件,建立區塊

新的算法以下所示:

coins = actualCoins + (actualCoins * lockBenefit)

if ( stakeHash < difficulty * coins ) then 知足條件,建立區塊

例如,若是某個輸出有0.5 QTUM的鎖定增益(lockBenefit),加上該輸出中原有的 1QTUM真實代幣,就至關於用戶有 1.5 QTUM 用於質押(雖然實際他只有 1QTUM),即至關於50%的「鎖定增益」。

建議鎖定增益按照層級進行劃分,例如:

  • 7 天- 20% 鎖定增益

  • 15 天- 50% 鎖定增益

  • 30 天- 100% 鎖定增益

  • 90 天- 200% 鎖定增益

重要的是,鎖定增益不該該按連續比例發放,而且必須有硬性限制。若是沒有限制且比例爲天天1%,那麼1個代幣被鎖定20,000,000天后,將能夠用來發起對網絡的51%攻擊。

用「天」做爲時間單位描述上述問題是爲了幫助人們理解,可是在實際程序實現中,使用區塊高度做爲度量將大大下降實現的複雜性。現有數據庫中已經具備在打包交易時查詢鎖定時間的功能。所以,上述按「天」的數字應改成基於標準的2分鐘出一個新區塊的區塊高度差來計算。

LockedPubKeyHash交易類型須要成爲一個標準交易,這樣,那些平均一個月才能得到一次區塊獎勵的用戶才能當即獲取鎖定的質押收益。

若是該提案肯定值得進一步研究,那麼以後將設計如何將鎖定的資金公開給錢包用戶。


原理

這種容許在 coinstake 交易中花費任何已鎖定的輸出的設計能夠兼容現有的代幣組合和代幣分割算法。

設計上要力求在儘量少的更改共識的狀況下實現此功能。locktime和checklocktime功能在比特幣和 Qtum 中獲得了很長時間的驗證,所以很是適合用於實現此功能。對共識的惟一更改將是讓質押者容許用這些鎖定的代幣進行質押(staking),並確保將已花費的鎖定代幣輸出爲相同類型的鎖定代幣。


升級策略

對共識更改實際上很是簡單,然而對錢包的更改會稍顯複雜。若是在測試和分析設計時沒有遇到任何問題,那麼能夠將這個共識更改(可能錢包功能有必定限制)包括在計劃中的QIP-8硬分叉中。若是事實證實它比預期的要困難,那麼最好在x86的硬分叉中再實現這一提案。


風險

首先,必須進行仔細的經濟模型分析,以便評估該提案可能致使的通脹率提升,以及其餘「超出協議以外」的影響。這一升級可能會引發社區的爭議,所以須要在社區內進行投票,以肯定社區對這一提案的支持程度,建議在得到大多數支持後再進行具體的實現工做。

使用已有的OP_CHECKLOCKTIMEVERIFY操做碼可能會對某些現有的非標準交易類型的範例帶來意想不到的後果,包括可能對已部署的交易引入有追溯效力(且危險)的改變。比較好的方式是建立一個具備相同功能但ID不一樣的新操做碼(opcode),這個新操做碼只在質押上下文中(即Staking的時候)纔有效。

若是泄露了鎖定代幣的私鑰,將很難阻止攻擊者將這些代幣進行質押,並與用戶競爭獲取獎勵,固然也很難保證用戶在代幣解鎖後能夠將代幣提取到新地址。

Qtum 核心開發者Djaen表示,本提案還存在一些理論上的潛在風險,即稍微增長了用於發起 stake grinding攻擊(即預測後續的區塊生產者)的數據集。實際上,目前這個數據集已經很是龐大,不可能在超過50個區塊後發起stake grinding攻擊。要想成功的進行攻擊,須要達到500個區塊才能使代幣「成熟」。儘管這個提案在理論上下降了的攻擊難度,但成功發起攻擊仍然須要比宇宙中存在的計算更多的計算。所以這個問題並不大,但仍須要進一步分析。

本提案將鼓勵用戶持有代幣,而不是使用代幣參與生態系統。然而,許多質押中的人並不打算在短時間內花掉他們的代幣,除非是發生重大的市場事件(即,堅決持有者)。尚不清楚是否會對生態形成影響。

質押者每每對競爭者不大友好,他們可能會拒絕打包手續費較低的鎖定交易,或者根本不進行打包。惡意的質押者能夠利用其做惡,從而致使競爭者因爲錯過1個區塊而落入較低層級的鎖定增益。例如,若是第一層是鎖定1000個區塊,那麼質押者能夠拒絕將競爭者的交易打包到區塊中,直到交易僅能被鎖定到999個區塊,從而下降競爭者的收益率。要緩解這一問題,可使錢包在默認狀況下設置一個「經驗係數」,好比說100個區塊,以使該區塊更有可能被網絡中其餘的質押者打包,但這種方法會使交易被鎖定額外100個區塊。另外一種方法是採用帶限制的浮動收益率,好比天天最多隻容許1%的鎖定代幣享受上述90天鎖倉期的收益增益。



超長期質押(可選)

超長時間質押的最大風險在於用戶的誤操做,好比有人不當心將質押的幣鎖了10年以上。即便決定實現該功能,也最好不要公開任何使用這個功能的「簡單」方法,應該強制用戶經過發送原始交易(rawtransaction)觸發該功能,以確保他們徹底理解正在執行的操做。


此外,這限制了用戶在Qtum發展方向上經過市場進行「投票」的能力。若是用戶不一樣意計劃中的硬分叉的決定,他們應該可以經過出售手中代幣等方式「退出」區塊鏈(但鎖定中的幣沒法進行轉移和出售)。這一問題可能能夠經過容許轉移鎖定的代幣來緩解。從而能夠基於鎖定的代幣建立二級市場,但這種功能可能會有更大的風險,難以實現和正確分析,並可能對整個生態產生不可預見的後果。此外,若是鎖定的代幣能夠轉移,那「鎖定」自己就沒有任何意義了。


本技術提案僅爲草案,更多的技術討論和實現細節將在從此陸續公佈。

相關文章
相關標籤/搜索