上文深刻比特幣、以太坊源碼帶你解讀POW共識機制咱們學習探討了POW共識機制,看完得童鞋們應該就知道POW是有幾大缺點的:出塊慢,共識時間長、開銷大等等,那麼有沒有其它的共識機制可以解決這些問題呢?答案固然是:有,它就是POS共識機制。下面咱們一塊兒來看看它是怎麼作到的。算法
全稱爲Proof Of Stake,又叫權益證實。POS是指礦工節點經過本身持有的代幣,競爭區塊簽名機會,持有的代幣越多,簽名成功出塊的機率就越高。出塊成功以後,根據各個礦工簽名時的代幣數量進行獎勵分配,簡單來講就是付出成本越高,收益越高。安全
講原理以前,先給你們普及兩個概念:難度值、nonce和幣齡ide
難度值和nonce在上文深刻比特幣、以太坊源碼帶你解讀POW共識機制有對該名詞的詳細解釋,這裏就再也不贅述了。學習
幣齡,顧名思義,就是代幣的年齡。那麼它是怎麼計算出來的呢?它有什麼用呢?咱們先看下它是怎麼計算出來的:
coinage = 幣的個數*持有時間
看到這你們應該就懂了,幣齡就是你持有可用幣的時間,你的幣越多,或者你持有時間越長,你擁有的幣齡就越大。你的幣齡越大,參與簽名出塊成功率就越高,由於更容易達到51%嘛。值得一提的是,當你使用幣參與簽名出塊,不管你出塊成功仍是失敗,你這次使用的幣齡都將被清空,須要從新從0開始累計。設計
好比你有10個幣,持有了10天未發生簽名投票出塊,那麼產生的幣齡就是100;若是這時候你這10個幣參與了簽名投票出塊,那麼你擁有的這100個幣齡就被花掉了,你的幣數量雖然仍是10個,可是幣齡要被重置,變動爲0。幣齡在數據鏈上就能夠取到,任何人均可以驗證。資源
收益計算公式:
收益 = 幣齡 * 年利率 / 365
打個比方說,你若是擁有3650的幣齡,持幣利率爲1%,那麼可得到的收益爲 3650*0.01/365 = 0.1。說明該礦工這次挖礦成功可得到0.1的代幣獎勵。get
咱們先看下它的有效hash計算方式:
hash (block_header) < target * coinage
其實POS的原理和POW比較相似,系統設定好挖礦目標值target,而後礦工開始工做出塊,礦工每次出塊都是nonce從1開始遞增進行尋找可用的nonce值,直到找到符合規則、可用的hash爲止,最早找到的礦工可得到挖礦獎勵。
可是,從上面的就能夠看出,coinage這個變量會形成每一個礦工得到有效hash的集合大小不同,礦工的幣齡越大,也就意味着它得到有效hash越容易。且礦工參與簽名的幣越多,就越容易知足51%的成功出塊條件,更容易得到獎勵。源碼
例如當前target是4369,完整的哈希長度假設是16位.
A礦工的幣齡是15,那麼A礦工的目標值爲65535,換算成十六進制就是0x000000000000FFFF。即
hash( block_header ) < 0x000000000000FFFF
而B礦工比較有錢,他的幣齡是240,那麼B礦工的目標值就是1,048,560,換算成十六進制就是0x00000000000FFFFF。即:
hash( block_header ) < 0x00000000000FFFFF
B礦工的可用hash集合更大,因此B礦工得到記帳權的機率確定要比A高。hash
破解了51%***
若是挖礦者發起51%***,就須要擁有全網51%的幣或幣齡,這幾乎不可能辦到,即便你成功地實施了51%***,那麼也意味着做爲全網最大的持幣大戶的你,損失也會最大。
相比POW,效率更高
可用更快的達成共識,出塊更快。
能耗低
挖礦不依賴於大量資源的消耗。經過持幣利息進行通脹。
安全性
規則上限制了必須持幣30天以上才能參與區塊簽名,加大了做惡成本。it
趨於中心化
POS基於權益證實機制,若代幣趨向集中的化,去中心化也變相的趨向於中心化了
效率不高
雖然相比於POW,POS的效率有顯著的提高,可是仍是沒法知足用戶的需求。
幣發行問題
咱們從pos的實現算法公式去看,幣齡的計算公式中,假如一開始挖礦,只有創始區塊中有幣,也就是說其餘礦機是無法參與挖礦的,由於幣的個數這個值對他們來講永遠是零,這也就是pos機制的缺陷之一幣沒法發行的問題。
幣齡積攢問題
一樣是從pos的實現算法公式能夠分析到,幣齡其實就是時間,一旦挖礦者囤積必定的幣,好久好久以後發起***,這樣他也將很容易拿到記帳權,因此咱們得給每一個幣設計一個時間上限。
弱流通性
設計時間上限後,雖然解決掉了部分挖礦者囤積幣的缺陷,從公式中仍然看到還會面臨一個問題,也就是幣的數量這個因素仍是會影響咱們拿到記帳權,不少挖礦者還會囤積代幣,持幣者長期不參與出塊,想着長時間持幣得到利息,給代幣形成流通上的缺陷。目前有些平臺引入幣齡按時間衰弱的方案來解決這一缺陷(例如:瑞迪幣)。
礦工離線***
接下來讓咱們來看看pos共識機制還有哪方面的不足,即便上面的各類缺陷都多少有些解決方案,但例如挖礦者挖一段時間後離線,此時,時間將不歸入幣齡減弱計算,這樣,挖礦者經過離線時間長來囤積挖礦,一樣面臨災難。
Nothing at Stake
Nothing at Stake,又叫無成本利益問題。意思在PoS系統中作任何事幾乎沒有成本,好比在PoS系統上挖礦幾乎沒有成本,這也就意味着分叉很是方便。方便到什麼程度呢,每一個誠實礦工在產生孤塊的時候均可以繼續挖下去,反正也沒什麼成本,反正分叉鏈和主鏈均可以同時挖,也就是任何持幣較少的用戶均可以嘗試分叉,而且把分叉鏈廣播出去。這個時候若是其餘誠實礦工看到了,第一反應也是沒有成本,那麼我們也來挖吧,說不定何時就值錢了,意思就是說任何逐利的礦工並不會使這個系統變得更強壯穩定,而是更加的混亂,可能會出現分叉鏈長度超過主鏈長度。
POS咱們就介紹到這裏了,你們有什麼不一樣的看法歡迎留言討論哦