Aptos:安全、可擴展和可升級的 Web3 基礎設施
摘要
隨着全新的互聯網基礎設施區塊鏈的崛起,开發者正以飛快的速度部署着數以萬計的去中心化應用程序。遺憾的是,由於穩定性差、成本高、低吞吐量及一些安全問題,區塊鏈尚未被廣泛應用。為了能夠在 Web3 時代被廣泛使用,區塊鏈基礎設施應該效仿雲基礎設施的特點,即為衆多的去中心化應用提供可信、可擴展、經濟高效且持續優化的平臺。
為應對這些挑战,我們以可擴展、安全、可靠和可升級為核心設計原則推出 Aptos 區塊鏈。Aptos 區塊鏈在過去三年中由全球 350 多名开發人員共同开發 [1]。它在共識、智能合約設計、系統安全、性能和去中心化方面提供了新的創新。這些技術的結合將為把 Web3 帶向更廣泛的人群提供一個堅實的基礎:
1、Aptos 區塊鏈原生集成並使用 Move 語言 來實現快速安全的交易執行 [2]。Move prover,一個用 Move 語言开發的智能合約形式化驗證工具,為合約常量和運行提供額外保障。這種注重安全的做法,可以讓开發人員能夠更好地保護軟件,以免受惡意實體的攻擊。
2、Aptos 數據模型允許靈活的密鑰管理和混合托管選項。這與籤名前的交易透明性和實用的輕客戶端協議一起,共同提供了更安全、更值得信賴的用戶體驗。
3、為了實現高吞吐量和低延遲,Aptos 區塊鏈在交易處理的關鍵階段使用了流水线和模塊化方法。具體而言,事務分發、區塊元數據排序、並行事務執行、批量存儲和账本認證等操作會同時運行。這種做法充分利用了所有可用的硬件資源,提升了硬件效率,並實現了高度並行處理。
4、與需要讀寫前獲取被讀寫數據而破壞交易原子性的並行執行引擎不同,Aptos 區塊鏈沒有對开發者設置這種限制。它通過保證復雜的交易的原子性,為應用程序提供更高的吞吐量和更低的延遲,並簡化了开發。
5、Aptos 模塊化架構保證了客戶端的靈活性,並針對頻繁的升級進行優化。此外,為了迅速部署新的技術創新和支持新的Web3使用案例,Aptos 區塊鏈提供了嵌入式的鏈上變化管理協議。
6、Aptos 區塊鏈正在試驗未來超越單個驗證器性能的舉措:其模塊化設計和並行執行引擎支持驗證者的內部分片,而同質狀態分片(homogeneous state sharding)提供了水平吞吐量可擴展的潛力,而不會給節點運營商帶來額外的復雜性。
[1] 法律免責聲明:本白皮書及其內容不是出售任何代幣的要約,也不是誘導購买任何代幣的要約。我們發布這份白皮書只是為了接受公衆的反饋和意見。 本文件中的任何內容都不應被理解為對 Aptos 區塊鏈或其代幣(若有)將如何發展、利用或累積價值的保證或承諾。Aptos 僅概述了其目前的計劃,這些計劃可能會酌情改變,其成功與否將取決於其控制之外的許多因素。這種未來的陳述必然涉及已知和未知的風險,這可能導致未來時期的實際表現和結果與我們在本白皮書中描述或暗示的有重大差異。Aptos 不承擔更新其計劃的義務。不能保證白皮書中的任何陳述將被證明是准確的,因為實際結果和未來事件可能有很大的不同。請不要過分依賴未來的聲明。
1. 序言
在 Web2 時代,諸如通訊、社交媒體、金融、遊戲、購物以及音視頻流媒體等服務, 是由掌握了用戶數據權限的中心化公司來提供(例如 Google、Amazon、Apple 和 Meta)。針對目標用例,這些公司利用具備特定應用的軟件,來優化开發基礎設施,並利用雲端基礎設施向用戶部署這些應用程序。雲端基礎設施可提供虛擬或物理基礎設施服務的訪問,例如虛擬機(VM)租用和在世界各地數據中心內運行的裸機硬件(例如 AWS,Azure,和 Google Cloud)。因此,建立能夠擴大到數十億用戶的 Web2 互聯網服務從來沒有像今天這樣容易。然而,Web2 要求用戶明確信任中心化實體,這一要求愈發引起社會的擔憂。
為了消除這種擔憂,新的互聯網時代已經开始:Web3。在 Web 3 版本的互聯網中, 出現了區塊鏈來提供去中心化、不可篡改的账本,讓用戶能夠安全可靠地相互交流,而不需要信任控制中間人或中心化實體。與 Web2 互聯網服務和應用程序依賴雲基礎設施類似,去中心化的應用程序可以使用區塊鏈作為去中心化的基礎設施層,從而觸達全世界數十億用戶。
然而,盡管現已存在許多條區塊鏈,但是 Web3 尚未得到廣泛採納[3]。雖然技術不斷地推動着行業發展,但現有的區塊鏈仍是不可靠的。昂貴的交易費用,低吞吐量,因安全問題資產經常遭受損失,並且無法支持實時響應。與雲端基礎設施賦能 Web2 服務,成功觸達數十億人群相比,區塊鏈還並沒有使得 Web3 應用達到同樣的高度。
2. Aptos 愿景
Aptos 的愿景是提供一個能夠為 Web3 帶來主流應用的區塊鏈,並授權一個去中心化應用的生態系統來解決現實世界的用戶痛點。我們的使命是通過提供靈活和模塊化的區塊鏈架構,推動區塊鏈可靠性、安全性和性能方面的新高度。該架構應支持頻繁升級,快速採用最新的技術,並能對新興的用例提供一流支持。
我們設想建立社區管理運營的去中心化、安全和可擴展的網絡。當世界各地對基礎設施的需求增長時,區塊鏈的計算資源就會橫向和縱向擴展以滿足這些需求。隨着新的用例和技術進步的出現,網絡應該在不幹擾用戶的情況下頻繁地、無縫地升級。讓用戶不再關注基礎設施相關問題。开發人員和用戶將可以訪問許多不同的密鑰恢復、數據建模、智能合約標准、資源使用權衡、隱私和可組合性選項。用戶確信他們的資產是安全,可用,並且幾乎可以成本費訪問。任何人都能夠安全、容易地與全世界不受信任的各方進行不可篡改的交易。區塊鏈將像雲基礎設施一樣無所不在。
為了實現這一愿景,必須在技術方面取得重大進展。過去三年裏,我們开發,升級和部署 Diem 區塊鏈(Aptos 區塊鏈的前身)的經驗已經證明,網絡可以在不中斷客戶端的情況下持續升級協議[4]。2020 年初,Diem 主網被部署到擁有多個錢包供應商的十幾個節點上。在之後一年,我們團隊進行了共識協議和核心框架兩次重大的升級。兩次升級都在用戶不停機的情況下順利完成。在 Aptos 區塊鏈中,我們對技術棧進行了一系列徹底的改進,同時還受 Diem 區塊鏈啓發將安全、透明、以及可頻繁的升級作為核心功能。我們特別強調新的交易處理方法(如第 7 節所述)以及去中心化和網絡治理的新方法。
隨着 Aptos 區塊鏈的不斷改善和發展,, 我們將不斷更新協議和設計,屆時發布最新版的白皮書。在下文中,我們描述了 Aptos 區塊鏈的現狀以及今後的計劃。
3. 概述
如圖 1 所示,Aptos 區塊鏈由 1 組驗證者(Validator)組成,他們使用拜佔庭容錯(BFT),權益證明(POS)的共識機制來接收與處理用戶的交易。代幣持有人在他們選定的驗證者(Validator)中鎖定或者質押他們手上的代幣。每個驗證者的共識投票權重與所質押代幣量成正比。一個驗證者可以是活躍的狀態,並參與到共識決策中。同樣,一個驗證節點如果沒有足夠的質押代幣,或被從驗證者集合中輪換出來,亦或在同步區塊鏈狀態時離线,再或共識協議因歷史表現不佳而拒絕其參與共識,那么該驗證節點也可能處於不活躍的狀態。
客戶端是系統中需要提交交易或查詢區塊鏈狀態和歷史的任何部分。客戶端可以選擇下載並驗證那些被驗證節點籤署驗證過的數據。*全節點(Full Node)*是從驗證節點或網絡中其他全節點復制交易和區塊鏈狀態的客戶端。他們可能會根據需要裁剪掉一些交易歷史和區塊鏈狀態記錄,以重新獲得充足的存儲空間。輕客戶端 只維護當前驗證節點的集合,並且可以從全節點中安全地查詢部分區塊鏈狀態。錢包是輕客戶端的常見例子。
為了滿足安全、快速、可靠和可升級的 Web3 基礎設施的需求,以便被廣泛採用,Aptos 區塊鏈基於下列核心設計原則建立:
通過新的智能合約編程語言 Move [5],快速且安全地執行鏈上邏輯,以及保證簡單的可審計性和程序上的可分析性。Aptos 區塊鏈從 Diem 區塊鏈中繼承使用並不斷發展 Move。
通過分批、流水线和並行化的交易處理方法實現了極高的吞吐量和低延遲。
與預先識別要讀取/寫入的數據且破壞交易原子性的現有並行執行引擎不同,Aptos 區塊鏈創新性的使用 Block-STM 技術作為並行執行引擎,有效地支持了任意復雜交易的原子性。
通過快速的、權益質押驗證節點的輪換以及對驗證節點的信譽跟蹤,實現對性能和去中心化治理的優化。
可升級性和可配置性是最重要的設計原則,從而使基礎設施可以擁抱新的使用用例和最新的技術。
通過了諸如威脅建模在內的嚴格的組件級測試和無縫部署的模塊化設計,保證了操作的高度安全性和可靠性。
保證去中心化的水平吞吐量可擴展性。源自程序與數據模型的分片(sharding)是水平擴展中的一個重要概念。
第 4 章解釋了开發者如何通過 Move 語言與 Aptos 區塊鏈進行交互。第 5 章描述了邏輯模型。第 6 章詳細介紹了 Aptos 區塊鏈如何通過強大的驗證方法實現安全的用戶體驗。第 7 章描述了圍繞流水线、批處理和並行化的關鍵性能創新。第 8 章詳細介紹了不同類型的客戶端與其他節點同步狀態的各種選擇。第 9 章描述了我們對社區所有權和治理的計劃。最後,第 10 章討論今後的業績方向,同時保持去中心化。
4. Move 編程語言
Move 是一種注重安全和靈活性的新型智能合約編程語言。Aptos 區塊鏈使用 Move 的對象模型來表示其账本狀態(見第 5.5 節),並使用 Move 代碼(模塊)來編碼狀態轉換的規則。用戶提交的交易中,可以包括發布新模塊、升級現有的模塊、執行模塊內定義的接口功能,以及可以直接與模塊的公共接口互動的腳本。
Move生態系統包含一個編譯器、一個虛擬機和許多其他的开發工具。Move 受到 Rust 編程語言的啓發,該語言通過线性類型等概念來明確數據的所有權 Move 強調了資源的稀缺性、保存和訪問控制。Move 模塊定義了每個資源的生命周期、存儲和訪問模式。這確保了像 Coin 這樣的資源不會在沒有適當憑證的情況下產生,且不能被重復消費,也不會消失。
即使存在不受信的代碼,Move 仍然可以利用字節碼驗證工具來保證類型和內存安全。為有助於編寫更可信的代碼,Move 包括了一個類型驗證器,Move Prover [6],能夠根據給定的規範,驗證 Move 程序的功能正確性,該類型驗證功能已經集成到了 Move 語言中。
除了用戶帳戶和相應的帳戶內容,分布式账本的狀態還包含 Aptos 區塊鏈的鏈上配置。這個網絡配置包括當前活躍狀態的驗證節點的集合,質押的屬性,以及 Aptos 區塊鏈內各種服務的配置。Move對模塊可升級性和全面可編程性的支持實現了無縫的配置變化,並支持對 Aptos 區塊鏈本身的升級(這兩類升級已經在非公开的主網上執行了多次,並且沒有宕機記錄)。
Aptos 團隊已經進一步增加了 Move 的特性,支持更廣泛的 Web3 用例。如下文第 5.5 節所述,Aptos 區塊鏈實現了細粒度的資源控制。這個特性不僅有效支持了並行執行,而且幾乎固定了訪問與更改數據的成本。此外,Aptos 區塊鏈提供了建立在細粒度存儲之上的表支持,這使得大規模的數據集(例如,大量的 NFT 集合)可以在一個账戶中實現。同時,Aptos 支持完全在鏈上體現的共享或自動化账戶。這使得復雜的去中心化自治組織(DAO)能夠共享账戶,以及將這些账戶作為異質資源集合的容器。
5. 邏輯模型
Aptos 區塊鏈的 账本狀態 代表了鏈上所有帳戶的狀態。账本狀態使用一個無符號的 64 位整數進行版本劃分,對應與當前系統所執行的交易數量。任何人都可以向 Aptos 區塊鏈提交交易以修改账本狀態。交易執行後,會生成一個交易輸出 。一個交易的輸出包含零個或多個操作來操縱账本狀態(稱為 write sets),一個由此產生的事件集合(見第 5.1.1 節),消耗的 gas,以及已執行的交易狀態。
5.1 交易
一個經過籤名的交易包含以下信息:
交易身份驗證器: 發送者使用包括一個或多個數字籤名的交易身份驗證器來驗證交易是否已被驗證。
發送方地址: 發送方的帳戶地址。
Payload:Payload 要么是指鏈上現有的接口函數,要么是指包含要作為內聯字節碼執行的函數(稱為腳本)。此外,一組輸入參數用字節數組編碼。對於點對點交易,輸入參數包含接收方的信息和轉入金額。
Gas 價格(以指定貨幣/Gas 單位):這是發送方愿意為執行交易而支付的每單位 Gas 的金額。Gas 費指的是支付計算、聯網和存儲的費用。Gas 是一種抽象的計算單位,沒有固有的實際價值。
最大 Gas 單位數(Maximum gas amount): 最大 Gas 是在交易中止前允許消耗的最大 Gas 單位數。帳戶內必須至少有 Gas 單價乘以最大 Gas 單位數的余額,否則交易將在驗證過程中被終止執行。
序列號: 交易的序列號。交易中的序列號必須與交易執行時發送方帳戶中存儲的序列號相匹配。交易成功執行後,將遞增账戶序列號,以防止重放攻擊。
到期時間: 一個時間戳,過了這個時間戳,交易將不再有效。
區塊鏈 ID: 識別區塊鏈中的交易有效性,為用戶提供進一步的保護,防止籤署錯誤。
在每個版本 i,狀態變化由元組(Ti, Oi, Si)表示,分別包含交易、交易輸出和交易結束後的账本狀態。給定一個確定性的函數 Apply,執行交易 Ti,账本狀態 Si-1,產生交易輸出 Oi 和新账本狀態 Si。也就是說,Apply(Si-1*,Ti*) → 〈Oi,Si〉。
5.1.1 事件
事件是交易執行過程中發出的。每個 Move 模塊可以定義自己的事件,並選擇在執行時何時發出這些事件。例如,在轉账期間,發送方和接收方的账戶將分別發出 SentEvent 和 ReceivedEvent。數據會存儲在账本內,可以通過 Aptos 節點進行查詢。每個注冊事件都有一個唯一的索引,該索引可用於查詢事件詳細信息。
向同一事件索引發出的多個事件會產生事件流,這是一個事件列表,每個條目包含一個從 0 开始依次增加的數字、類型和數據。每個事件必須以某種類型定義。會存在多個不同事件由相同或類似的類型定義,特別是在使用泛型的時候。事件有關聯的數據。對於 Move 模塊的开發者來說,通用原則是要包括所有必要的數據,以便理解在交易執行前後引起的底層資源變化,這些變化改變了數據並發送了事件。
交易只能生成事件,不能讀取事件。這種設計使交易的執行只能以當前狀態和當前交易的輸入作為入參(而不是歷史信息,例如,先前生成的事件)。
5.2 账戶
每個账戶都由一個獨特的 256 位數值來識別,稱為账戶地址。在账本狀態中創建一個新账戶(見第 5.5 節),當現有账戶發送交易會調用 create_account(addr) Move 函數就可以進行創建。這通常發生在一個交易試圖將 Aptos 代幣發送到一個尚未創建的账戶地址。為了方便起見,Aptos 還支持一個transfer(from, to, amount) 函數,如果在轉移之前账戶不存在,則會默認創建一個账戶。
要創建一個新帳戶,用戶首先生成一個籤名密鑰對:(vk,sk)。接下來,將籤名方案標識符(ssid)與公鑰 vk 拼接在一起,通過加密哈希H得出特定籤名方案的新账戶地址:即 addr=H(vk,ssid)。
在地址 addr 處創建新账戶後,用戶可以籤署將從 addr 處的账戶發送的交易,使用私鑰 sk 來籤署。用戶還可以輪換 sk,可以是主動更改 sk ,也可以是應對可能出現的私鑰泄露。改變私鑰的操作不會改變帳戶地址,因為帳戶地址的創建只來自於公鑰。
Aptos 區塊鏈並不將账戶與現實世界的身份聯系起來。一個用戶可以通過生成多個密鑰對創建多個账戶。由同一用戶控制的账戶彼此之間沒有內在聯系。
然而,為了資產管理的簡便化,單個用戶仍然可以在一個錢包中管理多個账戶 這種靈活性為用戶提供了匿名性,同時我們在未來的版本中嘗試使用更多隱私保護原語(privacy-preserving primitives)。如第 7.4 節所述,由一個用戶或一組用戶擁有的多個账戶也提供了增加執行並發性的渠道。
5.3 Move 模塊
一個 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> 是同一通用類型的不同實例,不能互換使用,但可以共享公共模塊代碼。
相同地址下的模塊將會被歸並到同一個*軟件包(package)*中 此地址的所有者將軟件包作為一個整體進行鏈上發布,包括字節碼和軟件包元數據。軟件包的元數據決定一個軟件包是可以升級的還是不可改變的。對於可升級的軟件包,在允許升級之前會進行兼容性檢查:不能改變現有的接口函數,也不能在內存中儲存任何資源。但是,升級可以添加新的函數和資源。
Aptos 框架由 Aptos 區塊鏈的核心庫和配置組成,被定義為一個可定期升級的模塊包(見第 9.2 節)。
圖3:鏈上數據示例
5.4 資源
與模塊類似,账戶地址也可以有與之相關的數據值。在每個账戶地址中,數據值是由其類型決定的,每個账戶下,每種類型的數據值都應保持唯一。以圖 3 為例, 地址 0x50 持有一個單一值,其中 0x3::coin::Coin 是完全限定的類型。0x3 是存儲 Coin 模塊的地址,Coin 是模塊的名稱, Coin 是數據類型的名稱。也可以使用泛型數據值,不同的泛型實例被視為不同的類型。這對可擴展性至關重要,允許不同的實例共享相同的功能代碼。
變更、刪除和發布一個值的規則被編碼在定義數據類型的模塊中。Move 的安全和驗證規則防止其他代碼或實體直接創建、修改或刪除其他模塊中定義的數據類型的實例。
一個地址下的每種類型最多只有一個頂層值,這聽起來似乎很有局限性。然而,這在實踐中並不是一個問題,因為开發者可以通過定義不同的封裝類型,將相同類型數據作為成員變量,從而避免了任何限制。Wallet 結構(位於圖 3 中)就是一個如何使用包裝器類型的例子。
還應該注意的是,並非所有數據類型都能在鏈上儲存。為了使數據實例有資格成為頂層值,數據類型必須具有 Key 的能力。同樣,對於嵌套的值來說,Store 能力是必需的。具有兩種能力的數據類型也被稱為資源。
5.5 账本狀態
從 Move 虛擬機(Move VM)的角度來看,每個账戶由一組值和 key-value 數據結構組成。這些數據結構被稱為表項,並以二進制規範化序列化格式(BCS)存儲。這種數據結構設計可以使开發者編寫在少量數據復制到大量账戶的場景下,可以高效執行的智能合約;也可以編寫大量數據集中在少量账戶上場景下,可以高效執行的智能合約。Move 模塊的存儲方式與账戶數據類似,但在一個獨立的命名空間下。創世账本狀態定義了區塊鏈初始化時的初始账戶集及其相關狀態。
在啓動時,Aptos 區塊鏈將由一個單一的账本狀態表示。然而,隨着使用的普及和技術的發展,Aptos 將擴大分片的數量,以提高吞吐量(即啓用多個账本狀態),並支持跨分片移動或訪問資產的交易。每個账本狀態將維護特定分片的所有鏈上資產,並提供相同的账戶模型,以及細粒度的 key 值數據存儲,為存儲訪問提供近乎固定的成本。
6. 安全的用戶體驗
為了覆蓋數十億互聯網用戶,Web3 的用戶體驗必須是安全便捷的。在該章節中,我們將描述 Aptos區塊鏈為實現這一目標的幾項創新。
6.1 交易可行性保護
籤署交易意味着籤名者授權區塊鏈提交和執行該交易。有時候,用戶會在不小心或者沒有意識到交易會被操控的情況下籤署交易。為了減少這種風險,Aptos 區塊鏈對交易的可行性進行限制,並保護籤名者避免陷入無限確認的操作中。目前 Aptos 提供了三種不同的保護措施:發送者的序列號、 交易過期時間和指定的鏈 ID。
交易的序列號對於每個發送者的帳戶只能提交一次。因此,如果發送者發現當前账戶序列號 ≥ 交易 t 的序列號,那么t已經被提交,或 t 永遠不會被提交(因為 t 使用的序列號已經被另一個交易佔用)。
區塊鏈時間以高精度和高頻率(通常為亞秒)推進,詳情見第 7.3.1 節。如果區塊鏈的時間超過交易t的到期時間,那么同樣的,要么 t 已經被提交,要么 t 永遠不會被提交。
每筆交易都有一個指定的鏈 ID,以防止惡意實體在不同區塊鏈環境之間進行重放攻擊(例如,跨測試網和主網)。
6.2 基於 Move 的密鑰管理
正如第 5.2 節所述,Aptos 帳戶支持密鑰輪換(key rotation),這是一個重要的特性,可以降低私鑰泄漏,遠程攻擊以及現有密碼算法未來被破解的風險。此外 Aptos 的账戶也足夠靈活,可以支持新的混合托管模型, 用戶可以將輪換帳戶私鑰的能力委托給一個或多個托管方以及其他可信實體。然後通過 Move 模塊定義一個策略,使這些受信實體能夠在特定情況下輪換密鑰。例如, 實體可能是由許多受信任方持有的 kout-of-n 多籤密鑰,從而可提供密鑰恢復服務以防止用戶密鑰丟失(例如,20% 的比特幣目前被鎖定密鑰丟失的帳戶中[7])。
此外,雖然許多錢包提供諸如雲端備份私鑰,多方計算和社會恢復等多種密鑰恢復方案,但這些方案並非基於區塊鏈實現(即鏈下的)。因此,每個錢包都要實現自己的密鑰管理方案,對用戶而言,密鑰的管理變成了黑盒。相反, Aptos 中的密鑰管理功能提供了完整透明的密鑰管理操作,同時極大地降低了了實現錢包密鑰管理方案的難度。
6.3 預籤名交易透明度
如今,錢包對其所籤署的交易幾乎是不透明的。因此,經常有戶被惡意交易欺騙,導致資金損失以及一系列嚴重的後果。即使是可以查詢到每筆鏈上交易數據的區塊鏈也無法避免這種損失。目前幾乎沒有用戶保障措施,使得用戶暴露於各種各樣的攻擊之下。
為了解決這個問題, Aptos 生態系統提供了 交易預執行服務:可在用戶籤名 之前 向他們提供交易結果(以人類可讀的形式)。Aptos 將交易預執行服務與以往已知的攻擊和惡意智能合約相結合,將有助於減少欺詐。此外,Aptos 還允許錢包在執行過程中規定對交易的限制。違反這些限制將導致交易被中止,以進一步保護用戶免遭惡意應用程序或社會工程攻擊。
6.4 實用的輕客戶端協議
僅僅依靠 API 提供商的 TLS/SSL 證書在區塊鏈客戶端和服務器之間建立的信任並不能充分保護客戶端。即使存在有效證書,錢包和客戶端也無法保證所提供數據的真實性和完整性給他們。因此,API 提供商可能會返回錯誤或惡意區塊鏈數據,欺騙第三方並進行雙花攻擊。
圖4:交易處理生命周期 所有階段都是完全獨立的並且可以各自並行
為了防止這種情況發生,Aptos 提供狀態證明和輕客戶端驗證協議,錢包和客戶端可以使用這些協議來驗證由不可信的第三方服務器提供的數據的有效性。此外,如第 7.6.2 節所述,使用基於時間戳的狀態證明,輕客戶端可以通過跟蹤網絡配置中的變化(*epoch變更)*或從當前受信任的節點(*錨點)*同步最新狀態[8],來保證账戶狀態的實時性(例如,在幾秒鐘內)。通過高頻時間戳和低成本的狀態證明,Aptos 為客戶提供了安全的服務。
此外,Aptos節點還提供了豐富的高性能存儲接口,未來進一步微調這些接口後,支持訂閱鏈上特定數據和帳戶的證明。這可以讓輕客戶端日後僅保留最小的可驗證數據,而無需運行一個完節點或處理大量的交易。
7. 流水化、批量、並行的交易處理
為了最大限度提高吞吐量,增加並發性,並且降低工程復雜性,Aptos 區塊鏈的交易處理過程被劃分為不同的階段。每個階段都是完全獨立的並且可以各自並行,類似於現代的超標量處理器架構。這不僅提供了顯著的性能優勢,而且讓 Aptos 區塊鏈能夠提供新的驗證者-客戶端交互模式。例如:
當指定交易被包含在一批留存交易中,客戶端會被通知。已留存且有效的交易一般會被立即提交。
當一批已留存交易被排序時,客戶端會被通知。因此,為了減少確定要執行的交易結果的延遲,客戶端可以在本地執行交易,而不是等待遠程驗證節點的完成執行。
客戶端可以選擇等待驗證者執行已認證的交易,然後同步已執行完成的交易狀態(見第8節)。
Aptos 模塊設計有助於提高开發速度以及更短的發布周期,开發者可以對單個模塊而不是整個系統進行優化。類似地,模塊設計提供了一條擴展驗證器的結構化路徑,可以讓驗證器利用多臺機器的計算、網絡和存儲資源。圖 4 顯示了交易處理生命周期的各個處理階段。
7.1 批量處理
批量處理是一個對 Aptos 每個處理階段都很重要的效率優化。在廣播交易時,驗證節點將交易分組為批;在共識階段將批合並成區塊。執行、存儲和账本認證階段同樣批量操作,能為重排序、減少操作(例如重復計算或籤字驗證)和並行執行提供機會。
將交易打包成批可能會產生少量延遲,例如在傳播交易前需等待 200ms 來湊滿一批交易。然而,成批的最長等待時間與最大成批數量是可配置的,使去中心化網絡可以自動優化延遲和效率。批量處理支持高效的費用市場對交易優先級排序,同時避免了惡意客戶端造成拒絕服務(DoS)攻擊。
7.2 持續的交易廣播
根據 Narwhal & Tusk [9] 的主要觀點,Aptos中交易傳播與共識解耦。驗證者不斷地相互傳輸批量交易,同時利用所有可用的網絡資源。驗證者 v 分發的每個批次都被持久化,並且將批次摘要的籤名發送回 v。根據第7.3節中定義的共識要求,任何在批次摘要上的 2f + 1 個權益加權籤名形成可用性證明(PoAv)。這樣的證明(PoAv )保證至少有 f+ 1 個加權的誠實驗證者已經存儲了該批次,因此所有誠實驗證者都能夠在執行之前檢索到它。
無限的待留存交易可能會造成 DoS 攻擊,導致驗證者節點耗盡存儲並崩潰。為防止這種情況,每批交易都有一個相關的時間戳。批次上的時間戳可以讓驗證節點進行高效的垃圾回收。此外,還設計了一個針對單驗證節點的配額機制,確保即使在最極端的情況下(例如潛在的拜佔庭攻擊), 也不會耗盡空間。同時,批次有數據量限制,Aptos 會在持久化存儲校驗數據大小。最後,通過一些對交易緩存和冗余交易數據清理的優化,不僅降低了存儲成本,也保證了並行執行引擎的高性能集成。
7.3 區塊元數據排序
存在一種常見的誤解:緩慢的共識速度是區塊鏈高吞吐量和低延遲的主要瓶頸。Aptos 區塊鏈的關鍵創新之一是將非協議相關的任務從共識階段解耦出來,例如交易傳播、交易執行/存儲和账本認證。通過將交易傳播與共識階段解耦,可以在極低的帶寬下進行排序(僅限區塊元數據和證明),從而實現交易高吞吐量和最小化延遲。
如今,Aptos 區塊鏈採用 DiemBFTv4 [10] 的最新版本,這是一種樂觀響應性 BFT 共識協議。通常,共識只需要兩次網絡往返 (全網往返時間通常小於 300 毫秒),並通過領導者信譽機制動態調整異常驗證者[11]。鏈上領導者信譽機制將提升在“窗口期”中成功提交區塊的驗證器信譽,並對未參與的驗證器降級。這種新穎的機制顯著提高了去中心化系統的性能,為節點提供了適當的激勵,並將不活躍的驗證者對吞吐量和延遲的影響降至最低。
DiemBFTv4 保證部分同步下的活躍性,並確保異步下的安全性,在總驗證者權益大於等於 3f + 1時, 最多可以存在 f 個權益加權錯誤驗證者。自 2019 年以來,DiemBFTv4 已經在多次迭代中經歷數十個節點運營商和多錢包生態系統的廣泛測試。我們還在試驗我們最近的研究(例如 Bullshark [12])和其他依賴區塊歷史和相關通信,以確定區塊元數據排序和最終性的協議。
共識區塊和提案時間戳由領導者提出並由其他驗證者同意,如圖 5 所示。需要注意的是,每個共識區塊僅包含批處理的元數據和證明。共識區塊中不需要實際交易,因為 PoAV 確保交易批次在區塊元數據排序後的執行階段可用(參見第 7.2 節)。在證明被驗證並且滿足區塊元數據標准(例如,提議時間戳不能超過塊過期時間)後,驗證者可以對領導者的提議進行投票。
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 個權益加權驗證者(不少於一半的權益加權 PoAV 籤名者)是誠實的。
區塊鏈的一個重要目標是實現盡可能多的並行處理。Aptos 區塊鏈從數據模型和執行引擎兩方面着手。
7.4.1 並行數據模型
Move 語言數據模型本身支持數據和模塊的全局尋址。數據和账戶不重疊衝突的交易可以並行執行。鑑於 Aptos 中使用了流水线設計,交易的重排序可以減少衝突,從而提高並發性。
即使交易修改了同一組鏈上值,大部分的交易仍可並行執行。Aptos 區塊鏈引入了一個新概念,delta writes,它描述了對账戶狀態的修改,而不是修改後的账戶狀態(例如,增加一個整數而不是簡單地確定最終值)。所有交易處理都可以並行完成,然後以正確的順序對衝突值進行delta writes操作,以確保確定性結果。
隨着時間的推移,Aptos 區塊鏈將繼續通過提高並發性(例如,利用讀/寫提示)以及改善开發體驗的方式來增強數據模型,讓开發人員更自然地創建、修改和組合鏈上值。Move 為語言級別和平臺特定功能上的改進提供了靈活性。
7.4.2 並行執行引擎
Block-STM 並行執行引擎檢測和管理有序交易的衝突,同時進行樂觀並發控制,以實現在特定順序下最大並行度[13]。
批量交易採用樂觀鎖並行,並在執行後得到驗證。驗證失敗會導致重新執行。Block-STM 使用多版本數據結構來避免寫-寫衝突。所有對同一位置的寫入都與它們的版本一起存儲,其中包含它們的 ID 和被樂觀重試的次數。當事務 tx 讀取內存數據時,它會按預設順序,從多版本數據結構中獲取出現在tx 之前的區塊高度最高的交易,寫入該交易的值及其相關版本。
Block-STM 已經集成到 Aptos 區塊鏈中 為了解 Block-STM 的性能潛力,我們使用內存數據庫,將有意義(non-trival)的點對點 Move 交易(例如:每個交易 8 次讀取和 5 次寫入)作為獨立的,僅執行 (非端到端)的基准進行測試。在圖 6,我們展示了 Block-STM 的執行結果。每個區塊包含 1 萬筆交易,账戶數量決定了衝突和爭議的程度。
在低競爭時,Block-STM 的TPS是32线程线性執行的16 倍,而高競爭時,Block-STM 的TPS也增長了8 倍。與其它區塊鏈並行執行引擎不同,Block-STM 能夠動態且透明地(無需用戶提示)捕獲任何工作負載內在並行性。與需要預先了解要讀取或寫入的數據位置的並行執行環境相比,BlockSTM 可以同時支持更復雜的事務。這個屬性會導致更少但更高效的事務,降低成本,並為用戶提供更低的延遲。更重要的是,將事物拆分為多個小事務會破壞事務的原子性(所有操作是不可分割的,要么所有操作全部執行成功,要么全部失敗)。在 Block-STM 中將富有表現力的事務語義與並行執行結合起來,使开發人員能夠兩全其美。
請注意,區塊元數據排序步驟不排除在並行執行階段對交易重排序。為了優化並行執行的並發性能,交易可以橫跨區塊進行重排序。唯一的要求是所有誠實驗證者的重新排序必須是不可逆的。優化並行執行以及在重新排序中添加隨機化可以提高性能,並有機率阻止礦工可提取價值(MEV)技術被別有用心的驗證者交易重新排序。在這個流水线設計中,也可以加入” 先排序再揭露” (Order-then-reveal)的抗 MEV 策略。
Block-STM 和交易重排序是增加執行並發性的補充技術。它們可以與交易讀/寫訪問提示結合使用,以實現額外的並發性。
7.5 批量存儲
並行執行階段的結果是組中所有交易的寫入集。這些寫入集可以存儲在內存中以獲得最大的執行速度,然後用作下一個區塊或要執行的塊集的緩存。任何重疊寫入只需要被穩定存儲地寫入一次。如果驗證者在存儲內存寫入集之前失敗,它可以簡單地從區塊元數據排序階段恢復並行執行。將寫入集的批量存儲與並行執行步驟分離,確保並行執行能夠高效運行。總之,批量處理寫入集減少了存儲操作的數量,並利用了更高效、更大的 I/O 操作。
為寫入集緩存保留的內存數量可以在每臺機器上進行手動配置,並且提供自然的反壓機制(back - pressure)。如果需要針對特定 I/O 和內存環境進行調整,批量處理的粒度可以不同於並行執行區塊的粒度。
7.6 账本認證
此時(批量存儲),流水线上的每個單獨的驗證者為已提交的交易區塊都已經計算了新狀態。然而,為了有效地支持經過驗證的輕客戶端和狀態同步,Aptos 區塊鏈對账本歷史和账本狀態實施了账本認證。Aptos 區塊鏈的一個關鍵區別是账本認證不在交易處理的關鍵路徑上,如果需要,甚至可以完全帶外(out-of-hand)運行。
7.6.1 账本歷史認證
驗證者將交易連同它們的執行輸出一起附加到全局認證的账本數據結構中。交易輸出的一部分是狀態寫入集,包括對 Move 可訪問的全局狀態所做的更改。該數據結構的短驗證器是對账本歷史的綁定承諾,其中包括新執行的一批交易。與交易執行類似,這種數據結構的生成是確定性的。
每個驗證者將短認證器籤署到所產生的數據庫的新版本中。驗證者彼此共享他們最近一組籤名的短驗證器,集體匯總法定籤名短認證器,並且還彼此共享最近的法定籤名短認證器。
根據BFT協議的屬性,使用這種集體籤名,客戶端可以相信數據庫版本代表了完整、有效和不可逆的账本歷史。客戶端可以查詢任何驗證者(或數據庫的任何第三方副本,例如全節點)以讀取數據庫值,並使用認證器和所需數據的證明來驗證結果。
7.6.2 定期狀態認證
Move 語言可訪問的整個全局狀態可以在歷史的任何時間點匯總到一個簡短的驗證器,類似於帳本歷史的摘要。由於全局狀態的隨機訪問性質(與僅限附錄的账本歷史不同),維護此認證的成本很高。然而,在大批量更新數據結構時,我們可以並行計算更新,還可以利用每個單獨狀態值更改時必須更新的部分之間的任何重疊。Aptos 區塊鏈有意識地使用定期驗證全局狀態以減少重復的共享更新。
在有確定性和配置的時間段內,網絡會發布狀態校對點交易,其結果部分包括全局狀態認證器。這種版本被稱作 狀態校對點。兩個校對點之間的差距越大,每筆交易時更新狀態認證數據結構的攤銷費用就會越低。
有了狀態校對點,人們就可以通過無需信任的方式讀取任何狀態值,而無需存儲所有全局狀態。這種能力對增量狀態同步、跨驗證者節點的分片存儲、無狀態驗證者節點和存儲受限的輕客戶端等應用程序非常有效。
然而,由於狀態校對點是周期性的,因此要獲得特定版本的账本狀態證明,要么需要為丟失的狀態交替執行額外的交易,要么從已驗證的账本歷史中獲得包含它們的證明。
狀態校對點與账本歷史中的特定交易版本相關聯,因此與第 7 節中提到的與交易批次相關的時間戳綁定。通過時間戳,輕型客戶端可以了解被證明的狀態值的時效性。在沒有時間戳的情況下,輕客戶端證明只能確保很久前的先前狀態的有效性,這幾乎不能保證關聯性。此外,狀態證明的時間戳對於跟蹤歷史訪問和審計(例如:計算代幣儲備中代幣每小時的平均余額)是必要的。
狀態校對點可以基於先前的狀態校對點和之後的交易結果中的狀態變化產生。因此,將狀態校對點留存到穩定存儲並不需要處在交易處理的關鍵路徑上。此外,狀態校對點的留存也存在有益的批量處理效果。在內存中緩存最近的狀態校對點(或者更確切地說是它們之間的增量),並僅將周期性狀態校對點轉儲到穩定存儲,可以大大減少對存儲帶寬的消耗。對校對點留存方式的選擇不會影響已驗證的數據結構的計算。因此,這是每個節點的選擇:節點運營商可以在內存容量和存儲帶寬之間進行適當的權衡。
8. 狀態同步
Aptos 區塊鏈旨在為生態中的所有參與者提供一個高吞吐量,低延遲的系統。因此,區塊鏈必須提供一個高效的狀態同步協議,來傳播、校驗並持久化區塊鏈數據到輕客戶端、全節點和驗證節點[14]。此外,考慮到用戶不同的硬件資源,同步協議還必須兼容網絡內存在的資源限制和差異性。例如,它必須允許存檔的全節點來驗證和存儲着整個區塊鏈狀態及歷史, 同時也允許輕客戶端高效地只獲取一小部分區塊鏈狀態。
為實現這一特點,Aptos 區塊鏈會利用由驗證節點、全節點和其他同步器提供的已認證的账本歷史和狀態證明(見第 7.6.1 節),來實現一個靈活可配置的同步協議。具體而言,網絡參與者可以選擇不同的同步策略,來優化自己的用例和需求。
例如,Aptos 為全節點提供了多種同步策略,包括全量同步策略;和忽略歷史記錄,利用錨點只同步最新的區塊鏈狀態的策略。Aptos 為輕客戶端提供了多種同步策略,包括可以同步特定账戶或數據的部分同步策略;和可以獲取已驗證账戶余額的獲取已驗證數據策略。在所有情況下,Aptos允許參與者通過配置配置獲取、處理和存儲特定數量和版本的數據。
通過這種靈活可配置的狀態同步協議, Aptos 可以滿足各種客戶的需求,並在未來可以提供更先進高效的同步策略。
9. 社區治理
Aptos 區塊鏈將由一個廣泛而多樣化的社區擁有、運營和管理。原生 Aptos 代幣將用於交易和網絡費用、協議升級和鏈上/鏈下流程的治理投票,以及通過權益證明(PoS)模型保護區塊鏈。關於 Aptos 代幣的具體經濟模型將在之後發布。
9.1 交易和網絡費用
所有 Aptos 交易都有一個手續費單價(在 Aptos 代幣中指定),允許驗證者優先考慮網絡中最高價值的交易。此外,在流水线模型的每個階段,都有多種放棄低價值交易機會(盡可能保證區塊鏈在系統容量最大情況下仍能高效運行)。隨着時間的推移,手續費的部署將確保使用 Aptos 區塊鏈的成本與實際的硬件部署、維護和節點操作的實際成本成正比。此外,开發者設計的應用可以在計算、存儲和網絡之間根據成本不同進行權衡。
9.2 網絡治理
Aptos 區塊鏈上的每一項重大功能優化和迭代都將經過幾個階段,包括提案、實施、測試和部署。這種結構為讓有關人士以及利益相關者有機會提供反饋,共享關注的問題,並提出建議。作為最後的階段,部署通常分兩步完成。首先,具有新功能的軟件版本將被部署到每個節點,其次,該功能將被开啓,例如,通過特性標志或鏈上配置變量。
節點運營商的每次軟件部署都必須向後兼容,以確保新軟件與支持的版本可互操作。部署新軟件版本的過程可能會持續數天,以考慮到不同時區的運營商和任何外部問題。一旦升級了足夠數量的節點,新功能的啓用可以由同步點觸發,例如事先約定好的區塊高度或紀元切換。在緊急情況下(例如,當宕機不可避免時),可以通過節點運營商的手動和強制更改來重新啓動,在最壞的情況下,可以通過網絡中的硬分叉來啓用。
與其他區塊鏈相比,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 智能合約平臺的簡單性。
參考資料
-
“Aptos-core”,2022年。
在线文檔。 可查詢於:https://github.com/aptos-labs/aptos-core
-
“Move”,2022年。
在线文檔。可查詢於:https://github.com/move-language/move
Matsuoka、C. Dixon、E. Lazzarin和R. Hackett。(2022) 2022年加密狀態報告介紹。在线文檔。可查詢於: https://a16z.com/tag/state-crypto-2022/
-
Amsden, R. Arora, S. Bano, M. Baudet, S. Blackshear, A. Bothra, G. Cabrera, C. Catalini, K. Chalkias, Cheng, A. Ching, A. Chursin, G. Danezis, G. D. Giacomo, D. L. Dill, H. Ding, N. Doudchenko,Gao, Z. Gao, F. Garillot, M. Gorven, P. Hayes, J. M. Hou, Y. Hu, K. Hurley, K. Lewi, C. Li, Z. Li,Malkhi, S. Margulis, B. Maurer, P. Mohassel, L. de Naurois, V. Nikolaenko, T. Nowacki, O. Orlov,Perelman, A. Pot, B. Proctor, S. Qadeer, Rain, D. Russi, B. Schwab, S. Sezer, A. Sonnino, H. Venter, L. Wei, N. Wernerfelt, B. Williams, Q. Wu, X. Yan, T. Zakian and R. Zhou, “libra 區塊鏈,” 2019。
在线文檔。可查詢於:https://developers.diem.com/papers/the-diem-blockchain/2020-05-26.pdf
-
Blackshear, E. Cheng, D. L. Dill, V. Gao, B. Maurer, T. Nowacki, A. Pott, S. Qadeer, D. R. Rain, S. Sezer, T. Zakian和R. Zhou, “Move: 一種具有可編程資源的語言,” 2019。
[Online].可查詢於:https://developers.diem.com/papers/diem-move-a-language-with-programmableresources/2019-06-18.pdf
Dill, W. Grieskamp, J. Park, S. Qadeer, M. Xu和E. Zhong, “用Move驗證器對智能合約進行快速、可靠的形式化驗證,“ 發表在 Tools and Algorithms for the Construction and Analysis of Systems, D. Fisman and G. Rosu, Eds. Cham: Springer International Publishing, 2022, pp. 183-200。
-
Popper. (2021) 丟失的密碼將百萬富翁們的比特幣財富鎖住了。
在线文檔。可查詢於:https://www.nytimes.com/2021/01/12/technology/bitcoin-passwords-wallets-fortunes.html
-
Diem小組,“重新配置的系統中狀態同步和承諾信息的驗證”,2020年。
在线文檔。可查詢於:https://github.com/aptos-labs/aptoscore/blob/main/documentation/tech-papers/lbft-verification/lbft-verification.pdf
-
Danezis, L. Kokoris-Kogias, A. Sonnino和A. Spiegelman, “獨角鯨和獠牙: 基於dag的mempool和高效bft共識,“ 發表於Proceedings of the Seventeenth European Conference on Computer Systems, ser. EuroSys ’22. New York, NY, USA: Association for Computing Machinery, 2022, p. 34-50.
在线文檔。可查詢於:https://doi.org/10.1145/3492321.3519594
-
Diem小組,“Diembft v4:diem區塊鏈中的狀態機復制”,2021年。
在线文檔。可查詢於:https://developers.diem.com/papers/diem-consensus-state-machine-replication-in-the-diemblockchain/2021-08-17.pdf
-
Cohen, R. Gelashvili, L. Kokoris-Kogias, Z. Li, D. Malkhi, A. Sonnino, and A. Spiegelman, “Be known of your leaders,” CoR, vol. abs/2110.00960, 2021。
在线文檔。可查詢於:https://arxiv.org/abs/2110.00960
Spiegelman, N. Giridharan, A. Sonnino, and L. Kokoris-Kogias, “Bullshark: Dag bft協議的實用化,” in Proceedings of the 20th Conference on Computer and Communications Security (CCS), ser. CCS [22]。Los Angeles, CA, USA: Association for Computing Machinery, 2022.
-
Gelashvili, A. Spiegelman, Z. Xiang, G. Danezis, Z. Li, Y. Xia, R. Zhou, and D. Malkhi, “Block-stm: 通過將排序的詛咒變成性能的祝福來擴展區塊鏈的執行,” 2022。
在线文檔。可查詢於:https://arxiv.org/abs/2203.06871
-
Lind, “狀態同步的演變: 在aptos實現每秒10萬次以上交易、亞秒級延遲的路徑,” 2022.
在线文檔。可查詢於:https://medium.com/aptoslabs/52e25a2c6f10
文章來源:Buidler DAO
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
觀點》Memecoin 是史上最瘋狂的賺錢機器嗎?
我 們要去邁阿密!我們要買藍寶堅尼!來自倫敦的 16 歲大學生 Oliver Szmul 聲音嘶啞...
鮑爾放鷹「不急降息」比特幣下殺 $86,600、美股全倒,10月PPI顯示通膨仍具黏性
美 國聯準會主席鮑爾在臺灣時間今(15)日清晨於達拉斯的一場活動上釋出鷹派言論,他表示近期美國經濟...
Upbit 加密貨幣交易量遠超韓國股市,市場過熱跡象再現?
自 川普在本月初強勢贏下美國總統大選後,美股和加密貨幣市場紛紛迎來慶祝行情,標普 500 指數一度...
Gary Gensler發表“離別演講”,特朗普2.0下的SEC將採取什么加密監管政策?
來源:WilmerHale 原標題:Trump Administration 2.0: How t...
吳說播客:ACT 喜與悲,有人意外爆賺 200 萬,有人爆發前一天割肉
編輯:吳說區塊鏈 本期播客從 AI Memecoin 投資熱點及近日 ACT 暴漲事件展开,def...
coincaso
文章數量
3481粉絲數
0