什麼是驗證者遊戲或“如何啟動權益證明區塊鏈”

因此,您的團隊已經完成了區塊鏈的 alpha 版本,是時候啟動測試網,然後啟動主網了。 你有一個真正的區塊鏈,有獨立的參與者,良好的經濟模型,安全性,你已經設計了治理,現在是時候在行動中嘗試這一切了。 在理想的加密無政府主義世界中,您將創世區塊放在網路上,節點的最終程式碼和驗證器本身啟動一切,啟動所有輔助服務,一切都會自行發生。 但這是在虛構的世界中,但在現實世界中,團隊必須準備相當多的輔助軟體和各種操作來幫助驗證者啟動穩定的網路。 這就是本文的主題。

啟動基於「權益證明」類型共識的網絡,其中驗證者由系統代幣持有者的投票決定,是一個相當具體的事件,因為即使啟動擁有數十和數百台伺服器的傳統集中管理系統也不是一件容易的任務本身,區塊鏈需要忠誠但獨立的參與者的努力來啟動。 而且,如果在公司中,在啟動時,管理員可以完全存取所有機器、日誌、一般監控,那麼驗證器將不允許任何人存取他們的伺服器,並且很可能更願意獨立建置他們的基礎設施,因為它控制訪問驗證者的主要資產 - 投票者的權益。 正是這種行為使得建立分散式安全網路成為可能- 所使用的雲端提供者的獨立性、虛擬和「裸機」伺服器、不同的作業系統,所有這些都使您對此類網路的攻擊極其無效-差異太大使用軟體。 例如,以太坊使用 Go 和 Rust 兩種主要節點來實現,對一種實現有效的攻擊對另一種實現無效。

因此,啟動和操作區塊鏈的所有流程都必須以這樣的方式組織:任何驗證者,甚至一小群驗證者,都可以隨時將他們的電腦扔出窗外並離開,而不會出現任何問題,其餘驗證者也應該繼續有效支援營運網路並連接新的驗證者。 當啟動一個網路時,當一個驗證者在歐洲,第二個驗證者在南美洲,第三個驗證者在亞洲時,要實現幾十個獨立團體的協調工作並引起他們的興趣是相當困難的。

驗證者

讓我們想像一下假設的現代區塊鏈的推出(所描述的大部分內容都適用於基於任何現代區塊鏈系列的區塊鏈:以太坊、EOS、Polkadot、Cosmos 等,它們提供了權益證明共識。這樣的區塊鏈是驗證者團隊,負責安裝自己的獨立伺服器來驗證和產生新的區塊,並獲得網絡為參與共識的人提供的獎勵。要啟動新網絡,需要幾十個驗證者(現在可以有很多驗證者)或多或少在幾秒鐘內有效地達成共識),因此該項目宣布註冊,其中驗證者與用戶共享有關自己的公共信息,讓他們相信他們將為啟動的網絡提供高品質的服務。

驗證是一門業務,可以讓你極其準確地評估驗證者的潛在收入,在項目之間快速轉移權力,如果他選擇的網絡成功,驗證者可以作為 DAO 的正式參與者和負責人,開發項目,或只是提供優秀的技術服務以獲得完全透明、誠實的賺錢。錢。 在計算驗證者的獎勵時,專案會嘗試考慮驗證者的成本,並為區塊提供獎勵,以使該業務有利可圖,但同時不允許驗證者透過向驗證者註入大量金錢和資金來拖垮經濟。剝奪其他網路使用者的使用權。

驗證者的業務需要確保服務的高容錯性,這意味著對 DevOps 和開發人員的高水準培訓以及昂貴的運算資源。 即使不需要在工作量證明網路中挖掘哈希值,區塊鏈節點也是一個大型服務,佔用大量內存,消耗大量計​​算、驗證、寫入磁碟並向網路發送大量資料。 為了儲存一個區塊中包含數千個小交易的區塊鏈的交易日誌和區塊鏈,現在需要 50 GB 或更多的儲存空間,對於區塊來說,它必須是 SSD。 支援智慧合約的區塊鏈狀態資料庫已經可以超過 64Gb RAM。 具有所需特性的伺服器非常昂貴;以太坊或 EOS 節點的成本可能為 100 到 200 美元/月。 除此之外,開發人員和開發人員全天候工作的工資也增加了,他們在發布期間甚至在晚上也能解決問題,因為一些驗證器很容易位於另一個半球。 然而,在適當的時候,擁有驗證者節點可以帶來可觀的收入(就 EOS 而言,每天高達 10 美元)。

驗證只是企業家和公司新的潛在IT 角色之一;隨著程式設計師想出越來越複雜的演算法來獎勵誠實並懲罰詐欺和盜竊,出現了執行發布重要數據(預言機)、執行監督等功能的服務(透過發布欺騙證據來削減存款和懲罰作弊者)、爭議解決服務、保險和選擇權,甚至垃圾收集都是智慧合約系統中潛在的巨大市場,需要支付資料儲存費用。

啟動區塊鏈的問題

區塊鏈的開放性使得任何國家的電腦都可以自由參與網絡,並且可以根據 GitHub 上的說明輕鬆地將任何腳本小子連接到網絡,但這並不總是一個優勢。 對新代幣的追求往往迫使驗證者“一開始就開採新代幣”,希望價格會上升,並有機會迅速擺脫收入。 另外,這意味著你的驗證者可以是任何人,甚至是匿名者,你可以像投票給其他驗證者一樣投票給他(但是,匿名者很難為自己收集利益相關者的選票,所以我們'將把有關匿名加密貨幣的可怕故事留給政治家)。 儘管如此

專案團隊有一個任務——以某種方式進入其網絡,那些未來能夠確保節點穩定運行、了解安全性、知道如何快速解決問題、與其他驗證者合作並共同行動的人——這個品質一切都完全取決於這些品質——網路參與者將在其中投入時間和資源的代幣。 足夠的創辦人在評估風險的時候,很清楚,在推出這種規模的軟體時,肯定會遇到程式碼和節點配置的錯誤,而網路的穩定性取決於開發者和驗證者共同解決的問題。此類問題。

團隊已準備好在主網上對任何驗證者進行投票,只是為了知道哪些驗證者是好的? 最大的投資組合? 現在幾乎沒有人擁有它。 基於團隊的 LinkedIn 個人資料? 經驗豐富的開發人員或安全專家不會為您提供任何 Linkedin 個人資料。 根據聊天、貼文中的陳述以及在準備階段幫助他人的情況? 很好,但主觀且不準確。

在這種情況下,仍然存在一件事- 能夠很好地解決每個人的問題- 可以選擇最好的驗證者的遊戲,但主要的是測試區塊鏈的強度並對區塊鏈進行全面的實戰測試區塊鏈在積極使用的情況下,共識的變化,錯誤的出現和修正。 這個過程首先由 Cosmos 計畫的人員以遊戲的形式提出,這個想法無疑是為網路啟動可靠且容錯的主網做好準備的絕佳方式

驗證者遊戲

我將描述驗證者的遊戲,因為我們為基於EOS 分叉的DAO.Casino (DAOBet) 區塊鏈設計了它,它被稱為Haya 並具有類似的治理機制- 驗證者是通過從任何帳戶投票來選擇的,其中一部分用於投票給驗證者的餘額被凍結。 任何餘額中有主要 BET 代幣的帳戶都可以用其餘額的任何部分投票給選定的驗證者。 投票結果會被匯總,並根據結果建立頂級驗證者。 在不同的區塊鏈中,這個過程的組織方式不同,通常正是在這一部分,新的區塊鏈與父區塊鏈有所不同,我必須說,在我們的例子中,EOS 完全證明了其名稱中的“OS”,我們真正使用EOS作為為 DAOBET 任務部署區塊鏈修改版本的基礎作業系統。

我將描述個別問題以及如何在遊戲中解決這些問題。 讓我們想像一個您的伺服器可以被公開攻擊的網絡,為了維持驗證者的位置,您需要不斷地與網絡交互,推廣您的驗證者並確保他生成塊並按時將它們傳遞給其他驗證者,否則驗證器將會被從清單中剔除。

如何選出最佳獲獎者?

遊戲的主要技術要求是其結果可以公開驗證。 這意味著遊戲的結果:TOP獲勝者,必須嚴格根據任何參與者都可以驗證的數據來形成。 在中心化系統中,我們可以衡量每個驗證者的“正常運行時間”,並獎勵那些在線最多或通過最大網路流量的驗證者。 您可以收集有關處理器和記憶體負載的數據,並獎勵那些表現良好的人。 但任何這樣的指標收集都意味著收集中心的存在,並且節點都是獨立的,可以按照自己的意願行事並發送任何資料。

因此,自然的解決方案是根據區塊鏈中的數據來確定獲勝者,因為它可以用來查看哪個驗證器產生了哪個區塊以及其中包含哪些交易。 我們將這個數字稱為驗證者積分(VP),賺取驗證者積分是遊戲中驗證者的主要目標。 在我們的例子中,驗證者「有用性」的最簡單、易於公開驗證且有效的指標是 VP = 驗證者在給定時間段內產生的區塊數。

這個簡單的選擇是因為EOS 的治理已經解決了許多新出現的問題,因為EOS 是三代實際運行的區塊鏈的繼承者,在複雜的網路管理方面擁有豐富的經驗,並且幾乎解決了網路、處理器、網路等方面的任何驗證器問題。磁碟只會導致一個問題- 他簽署的區塊較少,收到的工作報酬也較少,這再次導致我們簡單地了解簽署的區塊的數量- 對於EOS 來說,這是一個極好的且簡單的選擇。

對於其他區塊鏈,驗證者積分的計算方式可能有所不同,例如,對於基於pBFT 的共識(Tendermint/Cosmos、Parity Substrate 的Aura 共識),每個區塊必須由多個驗證者簽名,因此計算單一驗證者是有意義的簽名而不是區塊。考慮不完整的共識輪次可能是有意義的,這會浪費其他驗證者的資源,一般來說,這很大程度上取決於共識的類型。

如何模擬真實操作條件

創辦人的任務是在接近現實的條件下測試驗證器,而無需任何集中控制。 這個問題可以使用水龍頭合約來解決,它將等量的主代幣分配給驗證者和其他人。 要在您的餘額上接收代幣,您需要創建交易並確保網路將其包含在區塊中。 因此,為了獲勝,驗證者必須不斷用新的代幣補充餘額並為自己投票,從而將自己提升到頂部。 此活動會在網路上建立恆定負載,並且可以選擇參數,以便請求流對於完整的網路測試來說足夠嚴重。 因此,提前規劃水龍頭合約作為啟動網路的重要工具,並提前開始選擇其參數。

從水龍頭請求令牌並驗證投票仍然不能完全模擬彈頭的操作,特別是在極端負載的模式下。 因此,區塊鏈團隊仍然需要以一種或另一種方式編寫額外的基準來載入網路。 專門創建的智能合約在其中扮演著特殊的角色,它允許測試單獨的子系統。 為了測試存儲,合約在區塊鏈中存儲隨機數據,為了測試網路資源,測試合約需要大量的輸入數據,從而誇大交易量——透過在任意時間點啟動此類交易流,團隊同時測試程式碼的穩定性和驗證器的強度。

另一個問題是更新節點程式碼和進行硬分叉。 要求在出現錯誤、漏洞或惡意驗證者串通的情況下,驗證者應該有一個已經在驗證者遊戲中製定的行動計畫。 這裡你可以想出一些累積VP的方案來快速應用硬分叉,例如對所有尚未推出新版本節點程式碼的驗證者進行罰款,但這實現起來很困難,而且計算也很複雜。 您可以透過人為地「破壞」給定區塊上的區塊鏈來模擬緊急使用硬分叉的情況。 區塊生產停止,最終獲勝者將是那些最先加入並開始簽署區塊的人,因此基於簽名區塊數量的 VP 在這裡很合適。

如何通知參與者網路狀態並修復錯誤

儘管驗證者之間存在不信任,但及時接收有關網路狀態的最新資訊對每個人都有利,以便更快地做出決策,因此專案團隊正在推出一項服務,用於從驗證者伺服器收集和視覺化許多指標,它可以讓您同時看到整個網路的情況,讓您快速確定發生了什麼。 此外,專案團隊快速修正發現的錯誤對驗證者和專案都有好處,因此除了收集指標之外,立即開始從可存取區塊鏈的機器上的驗證者機器收集日誌和錯誤資料也是有意義的開發商。 在這裡,歪曲資訊對任何人都沒有好處,因此這些服務是由專案團隊開發的,可以信任。 從驗證器收集系統指標是有意義的,當然,對於 DAOBET 來說,區塊鏈本身最重要的指標是最終確定時間和最後確定區塊的延遲。 因此,團隊發現執行基準測試時節點上的記憶體消耗增加,以及各個驗證器的問題

進行驗證者遊戲的要點

事實證明,如果你想正式允許驗證者攻擊彼此的機器(非正式地他們無論如何都可以這樣做),你需要單獨將其合法地制定為安全測試,因為根據某些國家的法律,DDoS 或網絡攻擊可能是受到懲罰。 另一個重要問題是如何獎勵驗證者。 自然的獎勵是項目代幣,這些代幣將被轉移到主網,但向任何能夠啟動節點的人大量分發代幣並不是最好的選擇。 您很可能必須在兩個極端選擇之間進行平衡:

根據獲得的 VP 分配整個獎金池
它非常民主,讓每個在驗證器遊戲中投入時間和資源的人都可以賺錢
但在沒有準備好基礎設施的情況下吸引了隨機的人加入遊戲

根據遊戲結果將top-N獎金池分配給驗證人
獲勝者很可能是在遊戲中堅持得最穩定並且非常堅定獲勝決心的驗證者
有些驗證者不想參與,低估他們獲勝的機會,特別是如果參與者包括受人尊敬的驗證者

選擇哪個選項取決於您

還有一點 - 數十個驗證者會在你的召喚下急於參與遊戲,這根本不是事實,而在那些決定嘗試的人中,並不是所有人都會安裝和啟動節點 - 通常,在這個階段,項目的文檔相當稀疏,會遇到錯誤,並且在時間壓力下工作的開發人員不能很快回答問題。 因此,在啟動遊戲之前,還需要規定如果未達到所需驗證者數量時的操作。 在這種情況下,在遊戲開始時,缺少的驗證者由專案組啟動,參與共識,但不能成為獲勝者。

結論

總之,我嘗試根據上面的內容編制了一份清單,列出了有效進行驗證者遊戲需要思考、製作和啟動的內容

運行真正的驗證器遊戲需要做什麼:
開發自己的區塊鏈:)

  • 製作並提出一個 Web 介面,並提供一個 CLI 用於為驗證者投票
  • 確保來自正在運行的驗證器節點的指標可以傳送到集中式服務(例如 Prometheus)
  • 為驗證器遊戲建立一個指標收集伺服器(Prometheus + Grafana)
  • 弄清楚驗證者積分 (VP) 的計算方式
  • 開發一個公共腳本,根據區塊鏈數據計算驗證器 VP
  • 開發一個Web介面來顯示排名靠前的驗證者,以及驗證者的遊戲狀態(距離結束還剩多少時間,誰有多少VP等)
  • 開發並自動啟動任意數量的您自己的節點,設計將驗證器連接到遊戲的過程(何時以及如何斷開節點的連接,提交和刪除它們的投票)
  • 計算需要發行多少代幣並開發水龍頭合約
  • 製作基準腳本(令牌傳輸、大量儲存使用、大量網路使用)
  • 將所有參與者集中在一次聊天中以便快速溝通
  • 比遊戲開始早一點啟動區塊鏈
  • 等待起跑器,開始遊戲
  • 使用多種類型的交易測試網絡
  • 推出硬分叉
  • 更改驗證者列表
  • 以不同順序重複步驟13,14,15、XNUMX、XNUMX,維持網路穩定性
  • 等待最後一個區塊,結束遊戲,計算VP

必須指出的是,驗證者遊戲是一個新故事,只進行過幾次,因此您不應該將本文視為現成的指南。 現代 IT 產業中沒有類似的情況 - 想像一下,銀行在推出支付系統之前,會相互競爭,看看誰最擅長進行客戶交易。 傳統方法不太可能幫助您創建大型去中心化網絡,因此請掌握新的業務模型,運行您的遊戲,識別有價值的遊戲,獎勵他們並保持您的分散式系統快速穩定地運行。

來源: www.habr.com

添加評論