天天看點

【譯】Look-ahead Staking in Qtum - What does that even mean?

在談到Qtum時 ,我多次提到“前瞻性放樣”作為我們“智能放樣協定”的一部分。 這聽起來像是一種很酷的技術,但究竟是什麼呢? 我隻會在技術上稍微回答一下。

是以,如果你已經閱讀過我的第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

繼續閱讀