01.10 Aeternity:命中註定的Bitcoin-NG


Aeternity:命中註定的Bitcoin-NG

AE

來源 | Medium

作者 | Aeternity

翻譯 | Tracey(First.vip)

轉發請保留來源信息。

Michal Zajda解釋了aeternity和Bitcoin-NG協議是如何融合的,從而交付一個實現用戶體驗和技術飛躍的區塊鏈。

本文由aeternity區塊鏈架構師Michal Zajda撰文。

Aeternity是一個新興的公鏈,Aeternity團隊親手設計了Bitcoin-NG協議並實現了全節點,打造了一座aepp生態系統。在下一代aeternity區塊鏈將會增加協議級預言機、狀態通道、一個強大且安全的虛擬機、域名服務以及快速共識協議。

本文描述的是aeternity團隊實現區塊鏈共識系統,實現目標的過程。

本系統基於中本聰共識和Bitcoin-NG協議,Aeternity大大縮短了交易確認延遲。

Aeternity:命中註定的Bitcoin-NG


最初的æternity

æternity的代碼是從零開始設計和編寫的。目前的代碼基於2017年夏末設計的原型版本,用Erlang/OTP實現了全節點。團隊成員來自世界各地,都擅長分佈式編程,在構建金融系統、大型聊天應用、在線市場、以及Erlang社區中流行的一系列框架等方面,經驗十足。

這些技術適合處理和服務於分佈式系統中的應用程序。

目前的aeternity

Aeternity的計劃是在原來區塊鏈的基礎上,在基礎協議植入第二層解決方案,為用戶和開發人員帶來流暢的體驗。由獨立的rest調用和合約調用提供的本地交易範圍包括:

· 任何人都可以註冊預言機、提出請求-響應格式、定價,併為鏈上的參與者(包括合約)提供數據

· 任何基於哈希的地址都可以註冊為人類可讀的字符串並用於組合交易。

· 為了提高可擴展性和隱私性,aeterntiy引入了完整的鏈下狀態通道,用強大的有限狀態機處理複雜的狀態通道交易。雙方簽訂協議打開狀態通道、交易、解決糾紛/結算,並確保網絡中斷或一方惡意攻擊等極端情況下,在鏈下狀態機那裡可以解決問題。

· 為了滿足普遍需要,aeternity實現了廣義賬戶,這是一種用於控制賬戶、限定自定義邏輯的方法,也是另一種對錢包花費的算法授權或限制方式。在最近一次(同時最後一次)代幣遷移硬分叉期間發揮了效用。我們可以將所有遺忘或凍結的代幣(以太坊初始合約中的ERC20代幣)轉移到aeternity上,分配給原代幣主人。這點要感謝我們實現了以太坊授權方案中的廣義賬戶。

以上幾點,都是由FATE虛擬機支持的交易類型,藉由Sophia語言合約訪問。虛擬機和Sophia都優化了區塊鏈設計,增加更多的功能,降低了運營成本。兩者吸收了早期區塊鏈平臺和語言遇到的問題,具備更高的安全性。作為一種高級虛擬機,FATE運算的是交易等區塊鏈原語。因此具備高性能,同時保證低成本。

更多文檔資料和示例請查看

文檔彙總

入門

首先,我們要先了解區塊鏈的基礎功能。

早期全節點是由比特幣協議實現的。因為Erlang是一種以組件導向的技術,可以逐個優化子系統,於是我們採用了Erlang。點對點網絡和節點不斷演變,於是,我們開始思考改變和提高性能的重要性。於是最後,我們開發了受協議保護的完整功能集。

當前所有新功能都在接受50個節點的公測。在已發佈的版本中,這些新功能還被部署到擁有1.6萬個平級節點的主網絡。每個版本都會經過多層測試:單元測試、集成測試、系統測試(使用docker容器模擬網絡),強大的快速測試框架(為組件API生成隨機提要)。

工作量證明

設計的一個關鍵點是,aeternity的去中心化。工作量證明是一種最適合保護開放、公開、無需許可的區塊鏈共識的方法,於是我們採用了布穀鳥(Cuckoo Cycle)算法來實現工作量證明。布穀鳥算法是一種新型的內存密集型PoW算法,它的工作證明成本低,證明只有42個整數。過去兩年,布穀鳥循環在PoW場景應用非常活躍。ASIC實現了超出預期的靈活性和生命週期,GPU匹配了更復雜的運算,同時提高了並行度。我們會在另一篇文章中,討論工作量證明是支持去中心化區塊鏈的最佳方式。

Aeternity:命中註定的Bitcoin-NG


共識:Bitcoin-NG遇到Aeternity-NG

區塊鏈社區經常會把共識算法搞混。共識以及保護共識的方法不僅在技術上面臨挑戰,同時也是我們供應給終端用戶的產品的核心。共識能確定交易是否可信,能確定協議更改是否由部分群體控制。在aeternity中,所有的需求變化都圍繞用戶的獨立性、去中心化和自由交易而生。

過去幾年,在中本聰系列共識設計和拜占庭算法適應性不斷突破。從單一區塊鏈,到DAG、網格、信任分層架構以及實用拜占庭容錯,提供了多種解決方案。當增加PoW、PoS、時空、時間證明等,解決方案更多了。通過反覆檢查和審視自己的目標,以及衡量這些解決方案的成熟度,我們逐漸明朗:要達成目標,就要採用中PoW來驗證一個不可信環境。

如何在一個移動、中心化、實時的世界,解決延遲10分鐘確認的困局?

康奈爾大學的學者和Bitcoin-ng論文為打破困局帶來了一絲希望。【Bitcoin-NG:一個可伸縮的區塊鏈協議,來自Eyal、Gencer、Sirer、Renesse 2016年的研究】。

Bitcoin-NG是一種新型的支持中本聰共識的方式,基於PoW篩選臨時領導人,然後由這位領導人打包區塊。在一個區塊的時間裡確認這些交易,只需幾秒即可!

PoW的區塊鏈結構有兩個運算階段。一是用關鍵區塊來選舉領導人,二是用微塊保存交易。

Bitcoin-ng論文中描述了新鏈結構和加密經濟激勵策略,涵蓋審查、礦權和公平等問題——所有這些都是區塊鏈平臺所必需具備的要素。最具挑戰性的是,分叉和微分叉的推理和執行。需要好幾個低級區塊實現迭代,以及與諸如mempool或區塊候選生成器之類的交易處理組件通信方可實現。我們還調整了欺詐證明機制(Proof-of-Fraud)。經過嚴格的測試之後,耗時6個月才發佈到主網,為我們帶來了真實世界的數據和驚喜……

學術碰撞現實

2018年11月27日晚上12點,Roma版本激活,創世區塊中的ERC20代幣集分叉aeternity原生代幣。

我們調整了工作量證明,每3分鐘挖出關鍵區塊,領導人發行微區塊的速度低於3秒。每個微區塊可以容納600萬燃料(由於虛擬機的初始實現是基於改進版的EVM(以太坊虛擬機),每15秒確認以太坊區塊中的800萬燃料,相比之下,FATE虛擬機具有更大的優勢,它能處理更多的燃料)。

也就是說,在5-10秒的網絡直徑中,每個關鍵區塊會產生一個微塊分叉(分為3個微塊)。這屬於一種預期的、健康的行為。

我們的同步和gossip協議有兩種模式:正常模式和輕模式。輕模式下,gossip協議只傳播交易哈希,讓微塊更輕更快。一個未經確認的交易被平級節點看到的可能性很高,驗證的失敗率非常低。

論文中預計的網絡吞吐量理論極限是100tx/s(根據微塊大小和容量計算而來),aeternity協議的吞吐量極限在理論上會稍微高於100xt/s,畢竟每3秒釋放一個微塊,每個微塊能容納300-400筆交易。同時,准許用戶獨立交易和合約調用,兩者共用一個燃料分母。

最初的實現吞吐量低於50 tx/s,而且沒有任何備份。現在通過優化mempool或gossip等組件,進一步提高了速度。

網絡行為也離不開加密貨幣的經濟激勵。我們設計了一條在最初24個月內回報非常高的通脹曲線(第一年20%,第二年10%,第三年下降到5%,第四年下降到3%)。

最初我們假設的是網絡和算力穩步增長,結果出乎意料,算力在短短几天內大幅上升,導致個人電腦和小型挖礦設備淘汰出局(最優卡是1080Ti和2080Ti)。用戶對於沒有機會參與挖礦感到失望,同時我們接收到了關於未確認交易和分叉的報告。

問題1

出現出乎意料之多的分叉,經過檢查,發現網絡成員較多,但連接數異常稀少。阻礙了關鍵區塊的廣播。我們不得不改善(簡化)文檔,並鼓勵用戶使用公共IP。

問題2

分叉較少,但微分叉時間變長。微分叉是鏈的一種特殊狀態,是由於關鍵區塊的礦工追隨了由當前領導人釋放的舊微塊,如果間隔很短,沒什麼大礙,但我們觀察到微塊中包含10個區塊。於是我們投資了即插即用技術,改善網絡。

主網發佈後不久,社區和核心團隊實現了對多種GPU礦機的支持。難度進一步提升,用戶可以重新控制大量算力來挖礦,目標調整也會導致礦池的誕生。

問題3

礦池帶來了全新的活力,它們基於自定義的層協議和閉源挖礦客戶端。我們發現再次出現了微分叉時間變長的情況。但不影響確認時間,因為即使交易被隔離在一個分叉中,也會被新領導人快速重新確認。但在一定條件下會危及節點的穩定性,這無疑是一種不健康的行為。

層的暗角

我們發現,礦池幾乎每1分鐘刷新一次關鍵候選區塊,也就是說會造成20個區塊的微分叉間隔。1分鐘佔比3分鐘關鍵區塊生成時間較大比例,關鍵區塊生成時間差異很大,說明礦池會將交易踢給下一代驗證。

Aeternity的計劃是培養兩個礦池,使礦池形態多樣化。這個工作正在部署當中,目前主要是三大礦池挖礦,其中兩個佔用95%的算力。

另一個方案是aeternity的層服務器參考實現,以一個Bitcoin-NG友好的方式更新。代碼比語言更簡潔,它不僅可以編程,還可以激勵礦池調整配置。同時,它還可能是去中心化框架的地基,由全節點組成礦池,取代現在的挖礦數據庫。Bitcoin-ng將為普通用戶提供生成微塊的能力,而礦池將提供流動性。

為了更簡潔,用數據來表示

Aeternity:命中註定的Bitcoin-NG


鏈上數據的線下分析

截至2019年4月1日,挖出了約6萬個關鍵區塊,下面是對大約10萬筆交易的分析。

確認交易需要多少區塊?如果這個數字大於0,意味著在大多數情況下,交易最終在一個微分叉中結束,並由下一代重寫這筆交易。如果數字大於1,則表明有額外的延遲。

Aeternity:命中註定的Bitcoin-NG


問題是,第1代延遲與礦池行為有何相關性。1分鐘的刷新時間是一個後代長度的33%(後代長度設定為3分鐘)。一半以上的交易立即得到了確認。最高的確認延遲發生在網絡不穩定影響了領導人交付交易的情況下,有些交易可能會等待錯過的前領導人。

相當於百分比:

Aeternity:命中註定的Bitcoin-NG


另一個實驗是分析微分叉的平均長度。這個很難計算,需要用一個“探針”監測選定的微分叉

一代,這就是分析的後代數量可能不同的原因。

Aeternity:命中註定的Bitcoin-NG


以上信息與以前的測量結果一致。大約33%的交易被重寫到下一代(延遲時長為1)。現在,是29%的微塊被重寫到下一代。考慮到p2p網絡的性質和監控方法的誤差,33%和29%比較接近,足以證實我們的觀察結果。

下圖是一個微分叉長度分類(現在幾乎是7個微塊一代)。

Aeternity:命中註定的Bitcoin-NG


由於沒有規定廣播區塊的最小數,導致很大一部分微塊長度低於每代長度。在aeternity系統當中,沉默的領導人等同於比特幣或以太坊中挖空塊的礦工。

第二是因為幣基獎勵與交易費之間的巨大不平衡。比較年輕的區塊鏈由於沒有市場驅動,交易費過低。在最初的3個月裡,最低交易費幾乎為0。

綜上,費用配置不均衡導致微塊的鏈獎勵極低,進而打擊了最新微塊的積極性。隨著時間推移,微塊的鏈會自我完善。

Aeternity:命中註定的Bitcoin-NG


其他數據

· 最大難度接近500萬(備註:Nvidia 1080Ti卡上的布穀鳥循環需要0.3秒)。

· 迄今已確認的交易為470萬筆。

· 最高交易率記錄115tx/秒。

· 測試域名中的域名註冊量達到50萬筆。Lima硬分叉後的第一個域名和最後一個域名參與拍賣!

· mempool中交易的平均隊列(等待確認數或垃圾收集數)2-3 筆。

總體而言,aeternity網絡的穩定性較好,微分叉問題也將得到大力改進。由於Bitcoin-NG協議既簡單又強大的設計,在實現解決方案時顯著降低了技術風險,而且我們在配置中啟用了內置的鏈監控模式。

在解決減少鏈上交易摩擦的同時,這些問題尚未影響用戶的體驗。領導人選舉和領導人重新簽署的複雜性完全隱藏在終端用戶面前,完全不影響實時體驗。

未來

未來主要是主存儲庫中正在開發的功能:https://github.com/aeternity/aAeternity:

· 支持零知識證明

· 改善廣義帳戶,支持委託支付

· 對域名服務中的任何數據類型提供支持



分享到:


相關文章: