隨著全新的互聯網基礎設施區塊鏈的崛起,開發者正以飛快的速度部署著數以萬計的去中心化應用程序。遺憾的是,由于穩定性差、成本高、低吞吐量及一些安全問題,區塊鏈尚未被廣泛應用。為了能夠在Web3時代被廣泛使用,區塊鏈基礎設施應該效仿云基礎設施的特點,即為眾多的去中心化應用提供可信、可擴展、經濟高效且持續優化的平臺。
為應對這些挑戰,我們以可擴展、安全、可靠和可升級為核心設計原則推出Aptos區塊鏈。Aptos區塊鏈在過去三年中由全球350多名開發人員共同開發。它在共識、智能合約設計、系統安全、性能和去中心化方面提供了新的創新。這些技術的結合將為把Web3帶向更廣泛的人群提供一個堅實的基礎:
1、Aptos區塊鏈原生集成并使用Move語言來實現快速安全的交易執行。Moveprover,一個用Move語言開發的智能合約形式化驗證工具,為合約常量和運行提供額外保障。這種注重安全的做法,可以讓開發人員能夠更好地保護軟件,以免受惡意實體的攻擊。
2、Aptos數據模型允許靈活的密鑰管理和混合托管選項。這與簽名前的交易透明性和實用的輕客戶端協議一起,共同提供了更安全、更值得信賴的用戶體驗。
3、為了實現高吞吐量和低延遲,Aptos區塊鏈在交易處理的關鍵階段使用了流水線和模塊化方法。具體而言,事務分發、區塊元數據排序、并行事務執行、批量存儲和賬本認證等操作會同時運行。這種做法充分利用了所有可用的硬件資源,提升了硬件效率,并實現了高度并行處理。
4、與需要讀寫前獲取被讀寫數據而破壞交易原子性的并行執行引擎不同,Aptos區塊鏈沒有對開發者設置這種限制。它通過保證復雜的交易的原子性,為應用程序提供更高的吞吐量和更低的延遲,并簡化了開發。
5、Aptos模塊化架構保證了客戶端的靈活性,并針對頻繁的升級進行優化。此外,為了迅速部署新的技術創新和支持新的Web3使用案例,Aptos區塊鏈提供了嵌入式的鏈上變化管理協議。
6、Aptos區塊鏈正在試驗未來超越單個驗證器性能的舉措:其模塊化設計和并行執行引擎支持驗證者的內部分片,而同質狀態分片提供了水平吞吐量可擴展的潛力,而不會給節點運營商帶來額外的復雜性。
法律免責聲明:本白皮書及其內容不是出售任何代幣的要約,也不是誘導購買任何代幣的要約。我們發布這份白皮書只是為了接受公眾的反饋和意見。本文件中的任何內容都不應被理解為對Aptos區塊鏈或其代幣將如何發展、利用或累積價值的保證或承諾。Aptos僅概述了其目前的計劃,這些計劃可能會酌情改變,其成功與否將取決于其控制之外的許多因素。這種未來的陳述必然涉及已知和未知的風險,這可能導致未來時期的實際表現和結果與我們在本白皮書中描述或暗示的有重大差異。Aptos不承擔更新其計劃的義務。不能保證白皮書中的任何陳述將被證明是準確的,因為實際結果和未來事件可能有很大的不同。請不要過分依賴未來的聲明。
1.序言
在Web2時代,諸如通訊、社交媒體、金融、游戲、購物以及音視頻流媒體等服務,是由掌握了用戶數據權限的中心化公司來提供。針對目標用例,這些公司利用具備特定應用的軟件,來優化開發基礎設施,并利用云端基礎設施向用戶部署這些應用程序。云端基礎設施可提供虛擬或物理基礎設施服務的訪問,例如虛擬機租用和在世界各地數據中心內運行的裸機硬件。因此,建立能夠擴大到數十億用戶的Web2互聯網服務從來沒有像今天這樣容易。然而,Web2要求用戶明確信任中心化實體,這一要求愈發引起社會的擔憂。
為了消除這種擔憂,新的互聯網時代已經開始:Web3。在Web3版本的互聯網中,出現了區塊鏈來提供去中心化、不可篡改的賬本,讓用戶能夠安全可靠地相互交流,而不需要信任控制中間人或中心化實體。與Web2互聯網服務和應用程序依賴云基礎設施類似,去中心化的應用程序可以使用區塊鏈作為去中心化的基礎設施層,從而觸達全世界數十億用戶。
然而,盡管現已存在許多條區塊鏈,但是Web3尚未得到廣泛采納。雖然技術不斷地推動著行業發展,但現有的區塊鏈仍是不可靠的。昂貴的交易費用,低吞吐量,因安全問題資產經常遭受損失,并且無法支持實時響應。與云端基礎設施賦能Web2服務,成功觸達數十億人群相比,區塊鏈還并沒有使得Web3應用達到同樣的高度。
2.Aptos愿景
Aptos的愿景是提供一個能夠為Web3帶來主流應用的區塊鏈,并授權一個去中心化應用的生態系統來解決現實世界的用戶痛點。我們的使命是通過提供靈活和模塊化的區塊鏈架構,推動區塊鏈可靠性、安全性和性能方面的新高度。該架構應支持頻繁升級,快速采用最新的技術,并能對新興的用例提供一流支持。
我們設想建立社區管理運營的去中心化、安全和可擴展的網絡。當世界各地對基礎設施的需求增長時,區塊鏈的計算資源就會橫向和縱向擴展以滿足這些需求。隨著新的用例和技術進步的出現,網絡應該在不干擾用戶的情況下頻繁地、無縫地升級。讓用戶不再關注基礎設施相關問題。開發人員和用戶將可以訪問許多不同的密鑰恢復、數據建模、智能合約標準、資源使用權衡、隱私和可組合性選項。用戶確信他們的資產是安全,可用,并且幾乎可以成本費訪問。任何人都能夠安全、容易地與全世界不受信任的各方進行不可篡改的交易。區塊鏈將像云基礎設施一樣無所不在。
為了實現這一愿景,必須在技術方面取得重大進展。過去三年里,我們開發,升級和部署Diem區塊鏈的經驗已經證明,網絡可以在不中斷客戶端的情況下持續升級協議。2020年初,Diem主網被部署到擁有多個錢包供應商的十幾個節點上。在之后一年,我們團隊進行了共識協議和核心框架兩次重大的升級。兩次升級都在用戶不停機的情況下順利完成。在Aptos區塊鏈中,我們對技術棧進行了一系列徹底的改進,同時還受Diem區塊鏈啟發將安全、透明、以及可頻繁的升級作為核心功能。我們特別強調新的交易處理方法以及去中心化和網絡治理的新方法。
數據:合并后以太坊流通量已減少6.8萬枚:金色財經報道,據ultrasound.money數據顯示,以太坊自合并以來流通量減少量達到6.84萬枚,目前減少68,471.30枚左右。當前以太坊流通量約為120,452,669枚。[2023/3/26 13:26:43]
隨著Aptos區塊鏈的不斷改善和發展,,我們將不斷更新協議和設計,屆時發布最新版的白皮書。在下文中,我們描述了Aptos區塊鏈的現狀以及今后的計劃。
3.概述
如圖1所示,Aptos區塊鏈由1組驗證者組成,他們使用拜占庭容錯,權益證明的共識機制來接收與處理用戶的交易。代幣持有人在他們選定的驗證者中鎖定或者質押他們手上的代幣。每個驗證者的共識投票權重與所質押代幣量成正比。一個驗證者可以是活躍的狀態,并參與到共識決策中。同樣,一個驗證節點如果沒有足夠的質押代幣,或被從驗證者集合中輪換出來,亦或在同步區塊鏈狀態時離線,再或共識協議因歷史表現不佳而拒絕其參與共識,那么該驗證節點也可能處于不活躍的狀態。
客戶端是系統中需要提交交易或查詢區塊鏈狀態和歷史的任何部分。客戶端可以選擇下載并驗證那些被驗證節點簽署驗證過的數據。*全節點*是從驗證節點或網絡中其他全節點復制交易和區塊鏈狀態的客戶端。他們可能會根據需要裁剪掉一些交易歷史和區塊鏈狀態記錄,以重新獲得充足的存儲空間。輕客戶端只維護當前驗證節點的集合,并且可以從全節點中安全地查詢部分區塊鏈狀態。錢包是輕客戶端的常見例子。
為了滿足安全、快速、可靠和可升級的Web3基礎設施的需求,以便被廣泛采用,Aptos區塊鏈基于下列核心設計原則建立:
通過新的智能合約編程語言Move,快速且安全地執行鏈上邏輯,以及保證簡單的可審計性和程序上的可分析性。Aptos區塊鏈從Diem區塊鏈中繼承使用并不斷發展Move。
通過分批、流水線和并行化的交易處理方法實現了極高的吞吐量和低延遲。
與預先識別要讀取/寫入的數據且破壞交易原子性的現有并行執行引擎不同,Aptos區塊鏈創新性的使用Block-STM技術作為并行執行引擎,有效地支持了任意復雜交易的原子性。
通過快速的、權益質押驗證節點的輪換以及對驗證節點的信譽跟蹤,實現對性能和去中心化治理的優化。
可升級性和可配置性是最重要的設計原則,從而使基礎設施可以擁抱新的使用用例和最新的技術。
通過了諸如威脅建模在內的嚴格的組件級測試和無縫部署的模塊化設計,保證了操作的高度安全性和可靠性。
保證去中心化的水平吞吐量可擴展性。源自程序與數據模型的分片是水平擴展中的一個重要概念。
第4章解釋了開發者如何通過Move語言與Aptos區塊鏈進行交互。第5章描述了邏輯模型。第6章詳細介紹了Aptos區塊鏈如何通過強大的驗證方法實現安全的用戶體驗。第7章描述了圍繞流水線、批處理和并行化的關鍵性能創新。第8章詳細介紹了不同類型的客戶端與其他節點同步狀態的各種選擇。第9章描述了我們對社區所有權和治理的計劃。最后,第10章討論今后的業績方向,同時保持去中心化。
4.Move編程語言
Move是一種注重安全和靈活性的新型智能合約編程語言。Aptos區塊鏈使用Move的對象模型來表示其賬本狀態,并使用Move代碼來編碼狀態轉換的規則。用戶提交的交易中,可以包括發布新模塊、升級現有的模塊、執行模塊內定義的接口功能,以及可以直接與模塊的公共接口互動的腳本。
Move生態系統包含一個編譯器、一個虛擬機和許多其他的開發工具。Move受到Rust編程語言的啟發,該語言通過線性類型等概念來明確數據的所有權Move強調了資源的稀缺性、保存和訪問控制。Move模塊定義了每個資源的生命周期、存儲和訪問模式。這確保了像Coin這樣的資源不會在沒有適當憑證的情況下產生,且不能被重復消費,也不會消失。
即使存在不受信的代碼,Move仍然可以利用字節碼驗證工具來保證類型和內存安全。為有助于編寫更可信的代碼,Move包括了一個類型驗證器,MoveProver,能夠根據給定的規范,驗證Move程序的功能正確性,該類型驗證功能已經集成到了Move語言中。
除了用戶帳戶和相應的帳戶內容,分布式賬本的狀態還包含Aptos區塊鏈的鏈上配置。這個網絡配置包括當前活躍狀態的驗證節點的集合,質押的屬性,以及Aptos區塊鏈內各種服務的配置。Move對模塊可升級性和全面可編程性的支持實現了無縫的配置變化,并支持對Aptos區塊鏈本身的升級。
Aptos團隊已經進一步增加了Move的特性,支持更廣泛的Web3用例。如下文第5.5節所述,Aptos區塊鏈實現了細粒度的資源控制。這個特性不僅有效支持了并行執行,而且幾乎固定了訪問與更改數據的成本。此外,Aptos區塊鏈提供了建立在細粒度存儲之上的表支持,這使得大規模的數據集可以在一個賬戶中實現。同時,Aptos支持完全在鏈上體現的共享或自動化賬戶。這使得復雜的去中心化自治組織能夠共享賬戶,以及將這些賬戶作為異質資源集合的容器。
5.邏輯模型
Aptos區塊鏈的賬本狀態代表了鏈上所有帳戶的狀態。賬本狀態使用一個無符號的64位整數進行版本劃分,對應與當前系統所執行的交易數量。任何人都可以向Aptos區塊鏈提交交易以修改賬本狀態。交易執行后,會生成一個交易輸出。一個交易的輸出包含零個或多個操作來操縱賬本狀態,一個由此產生的事件集合,消耗的gas,以及已執行的交易狀態。
Ripple首席執行官對美國“加密貨幣監管清晰度”持樂觀態度:金色財經報道,Ripple的首席執行官布拉德·加林豪斯(Brad Garlinghouse)在1月3日的Twitter帖子中分享了他對美國在2023年獲得“突破性”的加密貨幣行業監管清晰度“謹慎樂觀”。(Cointelegraph)[2023/1/4 9:51:07]
5.1交易
一個經過簽名的交易包含以下信息:
交易身份驗證器:發送者使用包括一個或多個數字簽名的交易身份驗證器來驗證交易是否已被驗證。
發送方地址:發送方的帳戶地址。
Payload:Payload要么是指鏈上現有的接口函數,要么是指包含要作為內聯字節碼執行的函數。此外,一組輸入參數用字節數組編碼。對于點對點交易,輸入參數包含接收方的信息和轉入金額。
Gas價格:這是發送方愿意為執行交易而支付的每單位Gas的金額。Gas費指的是支付計算、聯網和存儲的費用。Gas是一種抽象的計算單位,沒有固有的實際價值。
最大Gas單位數:最大Gas是在交易中止前允許消耗的最大Gas單位數。帳戶內必須至少有Gas單價乘以最大Gas單位數的余額,否則交易將在驗證過程中被終止執行。
序列號:交易的序列號。交易中的序列號必須與交易執行時發送方帳戶中存儲的序列號相匹配。交易成功執行后,將遞增賬戶序列號,以防止重放攻擊。
到期時間:一個時間戳,過了這個時間戳,交易將不再有效。
區塊鏈ID:識別區塊鏈中的交易有效性,為用戶提供進一步的保護,防止簽署錯誤。
在每個版本i,狀態變化由元組表示,分別包含交易、交易輸出和交易結束后的賬本狀態。給定一個確定性的函數Apply,執行交易Ti,賬本狀態Si-1,產生交易輸出Oi和新賬本狀態Si。也就是說,Apply(Si-1*,Ti*)→?Oi,Si?。
5.1.1事件
事件是交易執行過程中發出的。每個Move模塊可以定義自己的事件,并選擇在執行時何時發出這些事件。例如,在轉賬期間,發送方和接收方的賬戶將分別發出SentEvent和ReceivedEvent。數據會存儲在賬本內,可以通過Aptos節點進行查詢。每個注冊事件都有一個唯一的索引,該索引可用于查詢事件詳細信息。
向同一事件索引發出的多個事件會產生事件流,這是一個事件列表,每個條目包含一個從0開始依次增加的數字、類型和數據。每個事件必須以某種類型定義。會存在多個不同事件由相同或類似的類型定義,特別是在使用泛型的時候。事件有關聯的數據。對于Move模塊的開發者來說,通用原則是要包括所有必要的數據,以便理解在交易執行前后引起的底層資源變化,這些變化改變了數據并發送了事件。
交易只能生成事件,不能讀取事件。這種設計使交易的執行只能以當前狀態和當前交易的輸入作為入參。
5.2賬戶
每個賬戶都由一個獨特的256位數值來識別,稱為賬戶地址。在賬本狀態中創建一個新賬戶,當現有賬戶發送交易會調用create_account(addr)Move函數就可以進行創建。這通常發生在一個交易試圖將Aptos代幣發送到一個尚未創建的賬戶地址。為了方便起見,Aptos還支持一個transfer(from,to,amount)函數,如果在轉移之前賬戶不存在,則會默認創建一個賬戶。
要創建一個新帳戶,用戶首先生成一個簽名密鑰對:(vk,sk)。接下來,將簽名方案標識符與公鑰vk拼接在一起,通過加密哈希H得出特定簽名方案的新賬戶地址:即addr=H(vk,ssid)。
在地址addr處創建新賬戶后,用戶可以簽署將從addr處的賬戶發送的交易,使用私鑰sk來簽署。用戶還可以輪換sk,可以是主動更改sk,也可以是應對可能出現的私鑰泄露。改變私鑰的操作不會改變帳戶地址,因為帳戶地址的創建只來自于公鑰。
Aptos區塊鏈并不將賬戶與現實世界的身份聯系起來。一個用戶可以通過生成多個密鑰對創建多個賬戶。由同一用戶控制的賬戶彼此之間沒有內在聯系。
然而,為了資產管理的簡便化,單個用戶仍然可以在一個錢包中管理多個賬戶這種靈活性為用戶提供了匿名性,同時我們在未來的版本中嘗試使用更多隱私保護原語。如第7.4節所述,由一個用戶或一組用戶擁有的多個賬戶也提供了增加執行并發性的渠道。
5.3Move模塊
一個Move模塊包含聲明數據類型和程序的Move字節碼。它是由聲明模塊的賬戶地址和模塊名稱一起標識的。例如,圖2中第一個貨幣模塊的標識符是0x1::coin。一個模塊可以依賴于其它鏈上模塊,如圖2中的錢包模塊所顯示,可以復用其他模塊的代碼。
一個模塊在一個賬戶內必須是唯一的,也就是說,每個帳戶下模塊名稱必須保持唯一性。例如,圖2中地址為0x1的賬戶無法聲明另一個名為coin的模塊。另一方面,地址為0x3的帳戶可以聲明一個名為coin的模塊,這個模塊的標識符將是0x3:coin。注意,0x1::coin::Coin和0x3::coin::Coin是不同的類型,不能互換使用,也不共享公共模塊代碼。相反,0x1::coin::Coin和0x1::coin::Coin>是同一通用類型的不同實例,不能互換使用,但可以共享公共模塊代碼。
相同地址下的模塊將會被歸并到同一個*軟件包*中此地址的所有者將軟件包作為一個整體進行鏈上發布,包括字節碼和軟件包元數據。軟件包的元數據決定一個軟件包是可以升級的還是不可改變的。對于可升級的軟件包,在允許升級之前會進行兼容性檢查:不能改變現有的接口函數,也不能在內存中儲存任何資源。但是,升級可以添加新的函數和資源。
Zksync 2.0已完成首次代碼安全審計,報告顯示并無重大安全問題:11月23日消息,據官方消息,Zksync 2.0網絡已完成由安全機構 Open Zeppelin 負責的首次代碼審計,并無重大安全問題。Zksync 表示,網絡安全是 ZKsync 2.0 的首要保證,安全審計是確保 zkSync 2.0 安全的重要組成部分,官方計劃在接下來的幾個月內采取額外的安全措施,包括漏洞賞金、競賽和編程馬拉松等。[2022/11/24 8:02:27]
Aptos框架由Aptos區塊鏈的核心庫和配置組成,被定義為一個可定期升級的模塊包。
圖3:鏈上數據示例
5.4資源
與模塊類似,賬戶地址也可以有與之相關的數據值。在每個賬戶地址中,數據值是由其類型決定的,每個賬戶下,每種類型的數據值都應保持唯一。以圖3為例,地址0x50持有一個單一值,其中0x3::coin::Coin是完全限定的類型。0x3是存儲Coin模塊的地址,Coin是模塊的名稱,Coin是數據類型的名稱。也可以使用泛型數據值,不同的泛型實例被視為不同的類型。這對可擴展性至關重要,允許不同的實例共享相同的功能代碼。
變更、刪除和發布一個值的規則被編碼在定義數據類型的模塊中。Move的安全和驗證規則防止其他代碼或實體直接創建、修改或刪除其他模塊中定義的數據類型的實例。
一個地址下的每種類型最多只有一個頂層值,這聽起來似乎很有局限性。然而,這在實踐中并不是一個問題,因為開發者可以通過定義不同的封裝類型,將相同類型數據作為成員變量,從而避免了任何限制。Wallet結構就是一個如何使用包裝器類型的例子。
還應該注意的是,并非所有數據類型都能在鏈上儲存。為了使數據實例有資格成為頂層值,數據類型必須具有Key的能力。同樣,對于嵌套的值來說,Store能力是必需的。具有兩種能力的數據類型也被稱為資源。
5.5賬本狀態
從Move虛擬機的角度來看,每個賬戶由一組值和key-value數據結構組成。這些數據結構被稱為表項,并以二進制規范化序列化格式存儲。這種數據結構設計可以使開發者編寫在少量數據復制到大量賬戶的場景下,可以高效執行的智能合約;也可以編寫大量數據集中在少量賬戶上場景下,可以高效執行的智能合約。Move模塊的存儲方式與賬戶數據類似,但在一個獨立的命名空間下。創世賬本狀態定義了區塊鏈初始化時的初始賬戶集及其相關狀態。
在啟動時,Aptos區塊鏈將由一個單一的賬本狀態表示。然而,隨著使用的普及和技術的發展,Aptos將擴大分片的數量,以提高吞吐量,并支持跨分片移動或訪問資產的交易。每個賬本狀態將維護特定分片的所有鏈上資產,并提供相同的賬戶模型,以及細粒度的key值數據存儲,為存儲訪問提供近乎固定的成本。
6.安全的用戶體驗
為了覆蓋數十億互聯網用戶,Web3的用戶體驗必須是安全便捷的。在該章節中,我們將描述Aptos區塊鏈為實現這一目標的幾項創新。
6.1交易可行性保護
簽署交易意味著簽名者授權區塊鏈提交和執行該交易。有時候,用戶會在不小心或者沒有意識到交易會被操控的情況下簽署交易。為了減少這種風險,Aptos區塊鏈對交易的可行性進行限制,并保護簽名者避免陷入無限確認的操作中。目前Aptos提供了三種不同的保護措施:發送者的序列號、交易過期時間和指定的鏈ID。
交易的序列號對于每個發送者的帳戶只能提交一次。因此,如果發送者發現當前賬戶序列號≥交易t的序列號,那么t已經被提交,或t永遠不會被提交。
區塊鏈時間以高精度和高頻率推進,詳情見第7.3.1節。如果區塊鏈的時間超過交易t的到期時間,那么同樣的,要么t已經被提交,要么t永遠不會被提交。
每筆交易都有一個指定的鏈ID,以防止惡意實體在不同區塊鏈環境之間進行重放攻擊。
6.2基于Move的密鑰管理
正如第5.2節所述,Aptos帳戶支持密鑰輪換,這是一個重要的特性,可以降低私鑰泄漏,遠程攻擊以及現有密碼算法未來被破解的風險。此外Aptos的賬戶也足夠靈活,可以支持新的混合托管模型,用戶可以將輪換帳戶私鑰的能力委托給一個或多個托管方以及其他可信實體。然后通過Move模塊定義一個策略,使這些受信實體能夠在特定情況下輪換密鑰。例如,實體可能是由許多受信任方持有的kout-of-n多簽密鑰,從而可提供密鑰恢復服務以防止用戶密鑰丟失。
此外,雖然許多錢包提供諸如云端備份私鑰,多方計算和社會恢復等多種密鑰恢復方案,但這些方案并非基于區塊鏈實現。因此,每個錢包都要實現自己的密鑰管理方案,對用戶而言,密鑰的管理變成了黑盒。相反,Aptos中的密鑰管理功能提供了完整透明的密鑰管理操作,同時極大地降低了了實現錢包密鑰管理方案的難度。
6.3預簽名交易透明度
如今,錢包對其所簽署的交易幾乎是不透明的。因此,經常有戶被惡意交易欺騙,導致資金損失以及一系列嚴重的后果。即使是可以查詢到每筆鏈上交易數據的區塊鏈也無法避免這種損失。目前幾乎沒有用戶保障措施,使得用戶暴露于各種各樣的攻擊之下。
為了解決這個問題,Aptos生態系統提供了交易預執行服務:可在用戶簽名之前向他們提供交易結果。Aptos將交易預執行服務與以往已知的攻擊和惡意智能合約相結合,將有助于減少欺詐。此外,Aptos還允許錢包在執行過程中規定對交易的限制。違反這些限制將導致交易被中止,以進一步保護用戶免遭惡意應用程序或社會工程攻擊。
跨鏈橋 deBridge 推出軟件開發工具包 deSDK:金色財經消息,跨鏈橋 deBridge 宣布推出軟件開發工具包 deSDK,允許任何人可以使用 deBridge 協議以編程方式發送、跟蹤和 claim 任何跨鏈消息,以及構建新跨鏈應用程序和原語。此外,deBridge 還為第三方 DApp 和開發人員提供了其自己的 deSwap API 和小部件。[2022/8/29 12:55:23]
6.4實用的輕客戶端協議
僅僅依靠API提供商的TLS/SSL證書在區塊鏈客戶端和服務器之間建立的信任并不能充分保護客戶端。即使存在有效證書,錢包和客戶端也無法保證所提供數據的真實性和完整性給他們。因此,API提供商可能會返回錯誤或惡意區塊鏈數據,欺騙第三方并進行雙花攻擊。
圖4:交易處理生命周期所有階段都是完全獨立的并且可以各自并行
為了防止這種情況發生,Aptos提供狀態證明和輕客戶端驗證協議,錢包和客戶端可以使用這些協議來驗證由不可信的第三方服務器提供的數據的有效性。此外,如第7.6.2節所述,使用基于時間戳的狀態證明,輕客戶端可以通過跟蹤網絡配置中的變化*或從當前受信任的節點*同步最新狀態,來保證賬戶狀態的實時性。通過高頻時間戳和低成本的狀態證明,Aptos為客戶提供了安全的服務。
此外,Aptos節點還提供了豐富的高性能存儲接口,未來進一步微調這些接口后,支持訂閱鏈上特定數據和帳戶的證明。這可以讓輕客戶端日后僅保留最小的可驗證數據,而無需運行一個完節點或處理大量的交易。
7.流水化、批量、并行的交易處理
為了最大限度提高吞吐量,增加并發性,并且降低工程復雜性,Aptos區塊鏈的交易處理過程被劃分為不同的階段。每個階段都是完全獨立的并且可以各自并行,類似于現代的超標量處理器架構。這不僅提供了顯著的性能優勢,而且讓Aptos區塊鏈能夠提供新的驗證者-客戶端交互模式。例如:
當指定交易被包含在一批留存交易中,客戶端會被通知。已留存且有效的交易一般會被立即提交。
當一批已留存交易被排序時,客戶端會被通知。因此,為了減少確定要執行的交易結果的延遲,客戶端可以在本地執行交易,而不是等待遠程驗證節點的完成執行。
客戶端可以選擇等待驗證者執行已認證的交易,然后同步已執行完成的交易狀態。
Aptos模塊設計有助于提高開發速度以及更短的發布周期,開發者可以對單個模塊而不是整個系統進行優化。類似地,模塊設計提供了一條擴展驗證器的結構化路徑,可以讓驗證器利用多臺機器的計算、網絡和存儲資源。圖4顯示了交易處理生命周期的各個處理階段。
7.1批量處理
批量處理是一個對Aptos每個處理階段都很重要的效率優化。在廣播交易時,驗證節點將交易分組為批;在共識階段將批合并成區塊。執行、存儲和賬本認證階段同樣批量操作,能為重排序、減少操作和并行執行提供機會。
將交易打包成批可能會產生少量延遲,例如在傳播交易前需等待200ms來湊滿一批交易。然而,成批的最長等待時間與最大成批數量是可配置的,使去中心化網絡可以自動優化延遲和效率。批量處理支持高效的費用市場對交易優先級排序,同時避免了惡意客戶端造成拒絕服務攻擊。
7.2持續的交易廣播
根據Narwhal&Tusk的主要觀點,Aptos中交易傳播與共識解耦。驗證者不斷地相互傳輸批量交易,同時利用所有可用的網絡資源。驗證者v分發的每個批次都被持久化,并且將批次摘要的簽名發送回v。根據第7.3節中定義的共識要求,任何在批次摘要上的2f+1個權益加權簽名形成可用性證明。這樣的證明保證至少有f+1個加權的誠實驗證者已經存儲了該批次,因此所有誠實驗證者都能夠在執行之前檢索到它。
無限的待留存交易可能會造成DoS攻擊,導致驗證者節點耗盡存儲并崩潰。為防止這種情況,每批交易都有一個相關的時間戳。批次上的時間戳可以讓驗證節點進行高效的垃圾回收。此外,還設計了一個針對單驗證節點的配額機制,確保即使在最極端的情況下,也不會耗盡空間。同時,批次有數據量限制,Aptos會在持久化存儲校驗數據大小。最后,通過一些對交易緩存和冗余交易數據清理的優化,不僅降低了存儲成本,也保證了并行執行引擎的高性能集成。
7.3區塊元數據排序
存在一種常見的誤解:緩慢的共識速度是區塊鏈高吞吐量和低延遲的主要瓶頸。Aptos區塊鏈的關鍵創新之一是將非協議相關的任務從共識階段解耦出來,例如交易傳播、交易執行/存儲和賬本認證。通過將交易傳播與共識階段解耦,可以在極低的帶寬下進行排序,從而實現交易高吞吐量和最小化延遲。
如今,Aptos區塊鏈采用DiemBFTv4的最新版本,這是一種樂觀響應性BFT共識協議。通常,共識只需要兩次網絡往返,并通過領導者信譽機制動態調整異常驗證者。鏈上領導者信譽機制將提升在“窗口期”中成功提交區塊的驗證器信譽,并對未參與的驗證器降級。這種新穎的機制顯著提高了去中心化系統的性能,為節點提供了適當的激勵,并將不活躍的驗證者對吞吐量和延遲的影響降至最低。
DiemBFTv4保證部分同步下的活躍性,并確保異步下的安全性,在總驗證者權益大于等于3f+1時,最多可以存在f個權益加權錯誤驗證者。自2019年以來,DiemBFTv4已經在多次迭代中經歷數十個節點運營商和多錢包生態系統的廣泛測試。我們還在試驗我們最近的研究和其他依賴區塊歷史和相關通信,以確定區塊元數據排序和最終性的協議。
Polygon上線Layer2 Rollup解決方案Nightfall主網Beta版:金色財經消息,Polygon宣布上線Layer2 Rollup解決方案Polygon Nightfall主網Beta版,并表示,將在主網正式啟動前消除網絡限制,之后還計劃將Nightfall轉換為Polygon DAO,以實現最大程度的去中心化。Polygon Nightfall結合了Optimistic Rollup和零知識(ZK)密碼學的概念,可為希望采用以太坊的公司提供可訪問性和隱私性。(polygon.technology)[2022/5/17 3:23:04]
共識區塊和提案時間戳由領導者提出并由其他驗證者同意,如圖5所示。需要注意的是,每個共識區塊僅包含批處理的元數據和證明。共識區塊中不需要實際交易,因為PoAV確保交易批次在區塊元數據排序后的執行階段可用。在證明被驗證并且滿足區塊元數據標準后,驗證者可以對領導者的提議進行投票。
7.3.1區塊鏈時間
Aptos區塊鏈為每個提案的區塊以及該區塊內相應的所有交易賦予一個近似的,約定的物理時間戳。此時間戳支持大量重要的使用案例。例如:
智能合約中與時間相關的邏輯。例如,開發人員希望編碼必須在周四中午12點之前收到一場拍賣的所有出價。
隨著預言機發布鏈上數據,需要準確且可信的鏈上時間戳來關聯事件,并處理來自現實世界數據的延遲。
客戶端可以辨別他們在區塊鏈方面的最新情況。出于安全原因,為避免過時數據和遠程攻擊,客戶端應該能夠訪問帳戶狀態更新時間的高精度時間戳。
使用可信時間戳審計區塊鏈可以提供與鏈下事件的強相關性,例如確保合法強制執行的支出是符合預期要求的。
交易到期是基于最近提交的時間戳。作為對客戶端交易的額外保護,客戶端可以選擇交易的到期時間,如第6.1節所述。
Aptos區塊鏈為區塊內所有交易的時間戳提供以下保證:
在區塊鏈中是時間戳單調遞增的。假設區塊B1
如果一個交易區塊的時間戳T被認定,那么至少有f+1個誠實的驗證者認為該時間點T已經過去了。誠實的驗證者只會在自己時鐘≥區塊時間戳T時,才能對區塊進行投票。參見第7.2節。
如果一個交易區塊一定數量對時間戳T的共識簽名,那么誠實的驗證者在自己時鐘
最近的時間戳在每個提交的區塊上更新并用作該區塊中所有交易的時間戳。當網絡同步時,每次網絡往返都會提交一個交易區塊,并提供快速更新和高度可靠的時間。如果需要,可以確定交易區塊內更細粒度的排序。
7.4并行交易執行
一旦對共識區塊元數據進行排序,任何驗證者節點、完整節點或客戶端都可以執行交易。至少有2f+1個加權驗證者對提案的批次進行了可核查的持續交易。由于交易傳播是連續的,其它的誠實驗證者將隨著時間的推移接收交易批次。如果誠實的驗證者節點在到達執行階段時,還沒有收到排序批次的交易,那么它可以從2f+1個權益加權驗證者處下載它們,已知至少有f+1個權益加權驗證者是誠實的。
區塊鏈的一個重要目標是實現盡可能多的并行處理。Aptos區塊鏈從數據模型和執行引擎兩方面著手。
7.4.1并行數據模型
Move語言數據模型本身支持數據和模塊的全局尋址。數據和賬戶不重疊沖突的交易可以并行執行。鑒于Aptos中使用了流水線設計,交易的重排序可以減少沖突,從而提高并發性。
即使交易修改了同一組鏈上值,大部分的交易仍可并行執行。Aptos區塊鏈引入了一個新概念,deltawrites,它描述了對賬戶狀態的修改,而不是修改后的賬戶狀態。所有交易處理都可以并行完成,然后以正確的順序對沖突值進行deltawrites操作,以確保確定性結果。
隨著時間的推移,Aptos區塊鏈將繼續通過提高并發性以及改善開發體驗的方式來增強數據模型,讓開發人員更自然地創建、修改和組合鏈上值。Move為語言級別和平臺特定功能上的改進提供了靈活性。
7.4.2并行執行引擎
Block-STM并行執行引擎檢測和管理有序交易的沖突,同時進行樂觀并發控制,以實現在特定順序下最大并行度。
批量交易采用樂觀鎖并行,并在執行后得到驗證。驗證失敗會導致重新執行。Block-STM使用多版本數據結構來避免寫-寫沖突。所有對同一位置的寫入都與它們的版本一起存儲,其中包含它們的ID和被樂觀重試的次數。當事務tx讀取內存數據時,它會按預設順序,從多版本數據結構中獲取出現在tx之前的區塊高度最高的交易,寫入該交易的值及其相關版本。
Block-STM已經集成到Aptos區塊鏈中為了解Block-STM的性能潛力,我們使用內存數據庫,將有意義的點對點Move交易作為獨立的,僅執行的基準進行測試。在圖6,我們展示了Block-STM的執行結果。每個區塊包含1萬筆交易,賬戶數量決定了沖突和爭議的程度。
在低競爭時,Block-STM的TPS是32線程線性執行的16倍,而高競爭時,Block-STM的TPS也增長了8倍。與其它區塊鏈并行執行引擎不同,Block-STM能夠動態且透明地捕獲任何工作負載內在并行性。與需要預先了解要讀取或寫入的數據位置的并行執行環境相比,BlockSTM可以同時支持更復雜的事務。這個屬性會導致更少但更高效的事務,降低成本,并為用戶提供更低的延遲。更重要的是,將事物拆分為多個小事務會破壞事務的原子性。在Block-STM中將富有表現力的事務語義與并行執行結合起來,使開發人員能夠兩全其美。
請注意,區塊元數據排序步驟不排除在并行執行階段對交易重排序。為了優化并行執行的并發性能,交易可以橫跨區塊進行重排序。唯一的要求是所有誠實驗證者的重新排序必須是不可逆的。優化并行執行以及在重新排序中添加隨機化可以提高性能,并有機率阻止礦工可提取價值技術被別有用心的驗證者交易重新排序。在這個流水線設計中,也可以加入”先排序再揭露”的抗MEV策略。
Block-STM和交易重排序是增加執行并發性的補充技術。它們可以與交易讀/寫訪問提示結合使用,以實現額外的并發性。
7.5批量存儲
并行執行階段的結果是組中所有交易的寫入集。這些寫入集可以存儲在內存中以獲得最大的執行速度,然后用作下一個區塊或要執行的塊集的緩存。任何重疊寫入只需要被穩定存儲地寫入一次。如果驗證者在存儲內存寫入集之前失敗,它可以簡單地從區塊元數據排序階段恢復并行執行。將寫入集的批量存儲與并行執行步驟分離,確保并行執行能夠高效運行。總之,批量處理寫入集減少了存儲操作的數量,并利用了更高效、更大的I/O操作。
為寫入集緩存保留的內存數量可以在每臺機器上進行手動配置,并且提供自然的反壓機制。如果需要針對特定I/O和內存環境進行調整,批量處理的粒度可以不同于并行執行區塊的粒度。
7.6賬本認證
此時,流水線上的每個單獨的驗證者為已提交的交易區塊都已經計算了新狀態。然而,為了有效地支持經過驗證的輕客戶端和狀態同步,Aptos區塊鏈對賬本歷史和賬本狀態實施了賬本認證。Aptos區塊鏈的一個關鍵區別是賬本認證不在交易處理的關鍵路徑上,如果需要,甚至可以完全帶外運行。
7.6.1賬本歷史認證
驗證者將交易連同它們的執行輸出一起附加到全局認證的賬本數據結構中。交易輸出的一部分是狀態寫入集,包括對Move可訪問的全局狀態所做的更改。該數據結構的短驗證器是對賬本歷史的綁定承諾,其中包括新執行的一批交易。與交易執行類似,這種數據結構的生成是確定性的。
每個驗證者將短認證器簽署到所產生的數據庫的新版本中。驗證者彼此共享他們最近一組簽名的短驗證器,集體匯總法定簽名短認證器,并且還彼此共享最近的法定簽名短認證器。
根據BFT協議的屬性,使用這種集體簽名,客戶端可以相信數據庫版本代表了完整、有效和不可逆的賬本歷史。客戶端可以查詢任何驗證者以讀取數據庫值,并使用認證器和所需數據的證明來驗證結果。
7.6.2定期狀態認證
Move語言可訪問的整個全局狀態可以在歷史的任何時間點匯總到一個簡短的驗證器,類似于帳本歷史的摘要。由于全局狀態的隨機訪問性質,維護此認證的成本很高。然而,在大批量更新數據結構時,我們可以并行計算更新,還可以利用每個單獨狀態值更改時必須更新的部分之間的任何重疊。Aptos區塊鏈有意識地使用定期驗證全局狀態以減少重復的共享更新。
在有確定性和配置的時間段內,網絡會發布狀態校對點交易,其結果部分包括全局狀態認證器。這種版本被稱作狀態校對點。兩個校對點之間的差距越大,每筆交易時更新狀態認證數據結構的攤銷費用就會越低。
有了狀態校對點,人們就可以通過無需信任的方式讀取任何狀態值,而無需存儲所有全局狀態。這種能力對增量狀態同步、跨驗證者節點的分片存儲、無狀態驗證者節點和存儲受限的輕客戶端等應用程序非常有效。
然而,由于狀態校對點是周期性的,因此要獲得特定版本的賬本狀態證明,要么需要為丟失的狀態交替執行額外的交易,要么從已驗證的賬本歷史中獲得包含它們的證明。
狀態校對點與賬本歷史中的特定交易版本相關聯,因此與第7節中提到的與交易批次相關的時間戳綁定。通過時間戳,輕型客戶端可以了解被證明的狀態值的時效性。在沒有時間戳的情況下,輕客戶端證明只能確保很久前的先前狀態的有效性,這幾乎不能保證關聯性。此外,狀態證明的時間戳對于跟蹤歷史訪問和審計是必要的。
狀態校對點可以基于先前的狀態校對點和之后的交易結果中的狀態變化產生。因此,將狀態校對點留存到穩定存儲并不需要處在交易處理的關鍵路徑上。此外,狀態校對點的留存也存在有益的批量處理效果。在內存中緩存最近的狀態校對點,并僅將周期性狀態校對點轉儲到穩定存儲,可以大大減少對存儲帶寬的消耗。對校對點留存方式的選擇不會影響已驗證的數據結構的計算。因此,這是每個節點的選擇:節點運營商可以在內存容量和存儲帶寬之間進行適當的權衡。
8.狀態同步
Aptos區塊鏈旨在為生態中的所有參與者提供一個高吞吐量,低延遲的系統。因此,區塊鏈必須提供一個高效的狀態同步協議,來傳播、校驗并持久化區塊鏈數據到輕客戶端、全節點和驗證節點。此外,考慮到用戶不同的硬件資源,同步協議還必須兼容網絡內存在的資源限制和差異性。例如,它必須允許存檔的全節點來驗證和存儲著整個區塊鏈狀態及歷史,同時也允許輕客戶端高效地只獲取一小部分區塊鏈狀態。
為實現這一特點,Aptos區塊鏈會利用由驗證節點、全節點和其他同步器提供的已認證的賬本歷史和狀態證明,來實現一個靈活可配置的同步協議。具體而言,網絡參與者可以選擇不同的同步策略,來優化自己的用例和需求。
例如,Aptos為全節點提供了多種同步策略,包括全量同步策略;和忽略歷史記錄,利用錨點只同步最新的區塊鏈狀態的策略。Aptos為輕客戶端提供了多種同步策略,包括可以同步特定賬戶或數據的部分同步策略;和可以獲取已驗證賬戶余額的獲取已驗證數據策略。在所有情況下,Aptos允許參與者通過配置配置獲取、處理和存儲特定數量和版本的數據。
通過這種靈活可配置的狀態同步協議,Aptos可以滿足各種客戶的需求,并在未來可以提供更先進高效的同步策略。
9.社區治理
Aptos區塊鏈將由一個廣泛而多樣化的社區擁有、運營和管理。原生Aptos代幣將用于交易和網絡費用、協議升級和鏈上/鏈下流程的治理投票,以及通過權益證明模型保護區塊鏈。關于Aptos代幣的具體經濟模型將在之后發布。
9.1交易和網絡費用
所有Aptos交易都有一個手續費單價,允許驗證者優先考慮網絡中最高價值的交易。此外,在流水線模型的每個階段,都有多種放棄低價值交易機會(盡可能保證區塊鏈在系統容量最大情況下仍能高效運行)。隨著時間的推移,手續費的部署將確保使用Aptos區塊鏈的成本與實際的硬件部署、維護和節點操作的實際成本成正比。此外,開發者設計的應用可以在計算、存儲和網絡之間根據成本不同進行權衡。
9.2網絡治理
Aptos區塊鏈上的每一項重大功能優化和迭代都將經過幾個階段,包括提案、實施、測試和部署。這種結構為讓有關人士以及利益相關者有機會提供反饋,共享關注的問題,并提出建議。作為最后的階段,部署通常分兩步完成。首先,具有新功能的軟件版本將被部署到每個節點,其次,該功能將被開啟,例如,通過特性標志或鏈上配置變量。
節點運營商的每次軟件部署都必須向后兼容,以確保新軟件與支持的版本可互操作。部署新軟件版本的過程可能會持續數天,以考慮到不同時區的運營商和任何外部問題。一旦升級了足夠數量的節點,新功能的啟用可以由同步點觸發,例如事先約定好的區塊高度或紀元切換。在緊急情況下,可以通過節點運營商的手動和強制更改來重新啟動,在最壞的情況下,可以通過網絡中的硬分叉來啟用。
與其他區塊鏈相比,Aptos區塊鏈在鏈上對其配置進行編碼。每個驗證者都能夠與區塊鏈的當前狀態同步,并根據當前的鏈上值自動選擇正確的配置。基于此功能,Aptos區塊鏈中的升級是無縫且即時的。
為了在啟用過程實現靈活性和可配置性,Aptos區塊鏈將支持鏈上治理,代幣持有者可以根據其質押代幣權重進行投票。鏈上投票協議是公開的、可驗證的并且可以是即時的。鏈上治理還支持在沒有軟件部署的情況下實現非二元結果。例如,鏈上領導人選舉協議參數可以通過鏈上治理進行修改,而預先知道的同步點無法處理動態修改,這是因為所有變化都必須要提前知曉。
隨著時間的推移,鏈上治理可以部署在整個升級管理過程中。例如:
1、代幣持有者在鏈上投票決定過渡到新的抗量子計算簽名方案
2、開發者實施并驗證新的簽名計劃并創建一個新的軟件版本。
3、驗證者升級他們的軟件到新的版本。
4、代幣持有人在鏈上就啟用一個新的簽名方案進行投票,鏈上配置被更新,更改已生效。
作為一個開源項目,Aptos區塊鏈的管理方式主要依賴于強大的社區反饋以及鏈上治理。在某些情況下,可能仍需要啟用鏈外升級,但這種情況會隨著時間的推移將盡量最小化。
9.3權益質押證明共識
要在Aptos區塊鏈參與交易驗證,驗證者必須擁有最低限度的Aptos代幣質押。在交易傳播,投票權重和區塊元數據排序中的領導者選舉過程中,質押金額成比例地影響2f+1質押權重PoAv。驗證者決定他們和他們各自的質押者之間的獎勵分配。質押者可以選擇任意數量的驗證者來質押他們的代幣,以獲得預先商定的獎勵分配。在每個epoch結束時,驗證者及其各自的質押者將通過相關的鏈上Move模塊來獲得獎勵。
任何有足夠抵押的驗證節點都可以自由加入Aptos區塊鏈。所有參數,包括所需的最低質押值,都可以由第9.2節中描述的鏈上啟用程序來設置。
10.性能表現
如第7節所述,Aptos區塊鏈能夠通過其并行、批量優化和模塊化的交易處理管道實現最佳吞吐量和硬件效率。額外的性能舉措,如共識升級、延遲寫入、交易提示和關鍵路徑緩存,將繼續增加吞吐量,并隨著時間的推移提高效率。
如今,區塊鏈的吞吐量通常以每秒交易量來衡量。然而,鑒于交易和基礎設施成本和復雜程度各異,這是一種不精確的系統比較方法。交易延遲也同樣有缺陷,因為在不同的實驗中,提交至最終性的起點和終點是不一樣的。
此外,一些系統要求事先了解交易的輸入和輸出,并迫使邏輯交易被拆分成較小的、不太復雜的交易。拆分交易會導致用戶體驗差,并人為地影響延遲和吞吐量,忽視了開發者想要實現的目標。相比之下,Aptos的方法讓開發者能夠不受限制地自由構建,并根據真實世界的使用案例而不是合成交易來衡量吞吐量和延遲情況。
Aptos區塊鏈將繼續優化單個驗證器的性能,以及試驗將更多驗證器添加到網絡的擴展技術。這兩個方向都有明顯的取舍。任何具有并行執行能力的區塊鏈都可以通過要求更強大的硬件或甚至將每個驗證器構造為一個單獨的機器集群,來支持更大的并發。然而,全局驗證器的數量是有實際限制的,它與驗證器操作者的成本和復雜性是相對應的。云服務中無服務器數據庫的興起和流行,說明很少有實體能夠有效地部署和維護這些類型的復雜分布式系統。
10.1同質化的狀態分片
最初,Aptos區塊鏈將以一個單一的賬本狀態推出。隨著時間的推移,Aptos網絡將采取一種獨特的方法來實現橫向可擴展性,同時仍然保持去中心化。這將通過多個分片賬本狀態來實現,每個分片賬本都提供同質化的API,并將分片作為一個主要的理念。Aptos代幣將用于所有分片的交易費、押金和治理。
數據可以通過同質橋在分片之間傳輸。用戶和開發者可以根據自己的需要,選擇自己的分片方案。例如,開發人員可以提出一個新的分片,或在現有分片內對用戶進行分組,以實現分片內的高連接。此外,分片可能有不同的系統特征。一個分片可以用SSD進行計算優化,另一個分片可以針對低性能大存儲進行優化。通過在不同的分片之間提供硬件靈活性,開發者可以為他們的應用程序最大化的利用系統資源。
總之,同質狀態分片提供了橫向吞吐量擴展的潛力,允許開發人員在分片中使用單一的通用狀態進行編程,并使錢包能夠為其用戶輕松納入分片數據。這提供了顯著的性能優勢,以及統一的Move智能合約平臺的簡單性。
來源:金色財經
比特幣和以太幣再次下跌 比特幣和以太幣連續第四天下跌,因為投資者繼續對最近經常對立的經濟指標和企業收益報告感到困惑.
1900/1/1 0:00:008月19號以太坊行情分析以太日線在經過四連陰之后昨日收了一根陽線,K柱收在下方支撐的軌道線內,趨勢有變空頭可能轉為多頭.
1900/1/1 0:00:00原文作者:?Ethereum 創作者:Xinyang 審核者:DAOctor 原文:?TheRisksofLSD 背景 自從ETH2提上日程后,人們就sharding討論了很長時間.
1900/1/1 0:00:00說下近期各個板塊看到的正在發生的,以及未來6-12個月可能出現的趨勢整體會分為公鏈,DeFi(Dex,借貸,Stablecoin,合成資產等),NFT,GameFi.
1900/1/1 0:00:00雖然TRMLabs提供了便捷的地址“過濾”服務,但這種做法卻在加密行業里引發了一些爭議。本文來自decrypt&cryptoslate原文作者:LiamJ.Kelly&Chris.
1900/1/1 0:00:00頭條 ▌TheDAO主要設計師之一在九年后離開了以太坊社區金色財經報道,TheDAO背后的主要設計師之一StephanTual在九年后離開了以太坊社區.
1900/1/1 0:00:00