【译】Look-ahead Staking in Qtum - What does that even mean?
所以,如果你已經閱讀過我的第3版文章的證明 ,那么你知道我們用來維持共識的PoS協議有很多。 然而,這實際上是相當古老的技術,于2015年在Blackcoin推出。 “風險投資者”,即“挖掘”股權證明區塊的東西最初很大程度上基于現有的Blackcoin代碼。 基本上,它的工作方式是從mempool中的交易中建立一個塊,然后檢查你的錢包中的每個成熟的UTXO,看看它們中的任何一個對于創建PoS塊是否有效,如果沒有,那么它就拋棄該進行中的程序段和16秒鐘后將再次完成。
這在Blackcoin中有點低效; 它多次處理事務。 然而,這并不是問題,因為Blackcoin的交易基本上與比特幣相同,非常便宜,無法驗證等。這在Qtum早期就成了問題。 基本上我們正在進行一些測試,看看如果我們將大量慢速合同事務塞入一個塊中,如果網絡能夠處理它,會發生什么。 網絡實際上確實處理了它,但是這個網站卻沒有。 基本上,創建一個塊需要很長的時間,在該塊已滿并且具有有效的證明UTXO的時候,它將不再有效。 另外,在這段時間內,放樣造成100%的CPU使用率,基本上是對相同事務進行無限循環的重新處理。
我們通過登陸一個顯而易見的想法解決了一些問題,即每次進行每次交易都不會完全重新處理每次交易。 這很容易。 但是,我們發現它嚴重限制了交易吞吐量,并增加了“過期”股份的比例。 即可能已經制作好的PoS塊,但是這個制作人花費了太多的時間創建,所以錢包所有者錯過了賭注獎勵并且“錯過了一個塊”。 這不僅影響他們的個人獎勵,而且會對整個網絡的整體安全產生重大影響。 人們可以制作交易,并在不幸的時間播出,基本上迫使人們放錯地塊。
這是一個嚴重的問題,當我們找到解決方案時,它大概在2周左右就嚴重地讓我們擔心了。 基本上,所有明顯的解決方案都嚴重限制了交易吞吐量。 然后燈泡熄滅,同時深入探究PoSv3的工作原理(我想這大概是我寫博客上發布的PoSv3文章的時候,它最初是作為內部開發人員的參考文檔形成的),我們終于達到了使用“前瞻性放樣”的想法。 這不是一個容易的改變,但它也不是一件會改變共識模式或以其他方式對交易吞吐量或安全性作出妥協的事情。
因此,對于那些沒有閱讀我嚴格技術性的PoSv3文章的人來說,快速回顧一下,基本上,當您嘗試創建PoS塊時,您遍歷所有硬幣,查看UTXO是否符合特定條件,然后以特定的方式在塊中使用它以創建一個有效的PoS塊。 為了安全起見,一個特定的PoS塊是有效的,并不關心該塊中的事務是什么。 如果那確實很重要,那么人們可以通過不同的交易排序等來進行迭代,以便挖掘類似于工作證明的塊。 PoS塊的時間要求與工作證明實現相比相當嚴格。 基本上你可以創建一個有效的PoS塊,它將在16秒后(或更少)過期。 在那16秒之后,你的用于創建PoS塊的UTXO不再有效,你需要再次檢查它們。
現在,也許你會看到我要去的地方。 前瞻性的賭注涉及以下基本的變化,以了解如何實際創建積木:
- 它通過UTXOs進行檢查,以便在生成塊或驗證任何事務之前首先進行放樣。 這樣,當你甚至沒有有效的PoS塊時,你不會浪費時間處理事務。 這個很明顯
- 現在有一個軟硬限制的時間限制,只要持有者花費在一個塊上的處理交易。 軟限期逼近時,它停止處理合約交易。 當硬限制接近時,它將停止處理所有事務,并且認為該塊將盡可能滿。
- 不是只檢查現在有效的塊,而是檢查現在有效的塊,并在將來達到120秒。
最后一點是重要的一部分。 前兩部分提供了一個可行的解決方案,但嚴重影響了交易吞吐量,只能在不到16秒的時間內完成處理。 盡管今天沒有任何塊需要16秒才能驗證,但是您必須記住,該筆者仍然可能遭受線程切換,CPU速度較慢等。因此,處理事務的時間越多越好。 回到第一次實現時,實際上有一個特定的事務需要30秒來處理(并且達到阻止氣體限制),這是由于指數復雜性錯誤,所以這也是更重要的,但這種方法對于可靠性和吞吐量。
基本上,先行者的核心特征在于,如果當前的錢包具有任何可以創建PoS塊的UTXO,它將檢查接下來的120秒(在16秒時隙中)。 在某些情況下,它可能會在64秒內看到它。 所以,它用64秒的時間準備塊來處理事務處理等等,然后當網絡將它識別為一個有效的塊時,這個角色就會廣播它。
最后,與Blackcoin中使用的老版本相比,我們做了很多優化。 因此,為了將它整理為一個易于理解的清單,這是對我們所做的工作的簡要總結,以確保Qtum的作者是最有效的作者:
- 只有在錢包中的UTXO可以創建PoS塊時才處理交易
- 使用lookahead,以便更長時間的睡眠是可能的
- 已經強制實施時間限制,以確保錯過的風險顯著減少
- Qtum不使用txindex數據庫,而是從磁盤讀取完整的數據塊數據(以及在共識級別驗證股權),而是使用速度更快,更優化的UTXO集和“chainstate”數據庫,其中只包含塊頭和一些元數據-數據。
- Qtum緩存用于確定UTXO是否可以放樣的數據。 這意味著需要從磁盤中讀取的數據少得多。
- 由于采用先行模式,可能會讓休眠者花費更多的時間休眠,這可能會讓您的電腦處于閑置的低功耗模式
我們的實施與原始版本相比有了很大的改進,但仍有一些可行的方法。 目前尚未完成的一件大事是,在創建預測PoS塊之后,即使有時間添加交易,也不會再添加任何交易。 這絕對是可行的,但由于比特幣區塊創建代碼的結構有點噩夢。 我們總是接受拉請求,盡管如果這聽起來有趣的人:)
https://zhuanlan.zhihu.com/p/26106511
總結
以上是生活随笔為你收集整理的【译】Look-ahead Staking in Qtum - What does that even mean?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】Thoughts and Goal
- 下一篇: 【译】The Faults and Sh