Aptos是資本推動的又一個Solana嗎?

語言: CN / TW / HK

作者:0xFinley、0xDragon888

目錄

前言

一、新公鏈新在哪裏?

  • Aptos有哪些技術創新?

  • 面向開發者:Diem的最大遺產-Move語言

  • 面向用户:Aptos的祕鑰管理和賬户恢復系統

二、Aptos是資本推動的又一個Solana嗎?

  • 樹立開發者陣營

  • 遷移Solana舊將

  • 公鏈敍事永不眠

三、總結

前言

7月末,新公鏈Aptos宣佈再次完成1.5億美元融資,由FTX Ventures和Jump Crypto領投,其於今年3月份,剛完成由A16Z領投、Multicoin Capital、FTX Ventures 、Coinbase Ventures參與的2億美元融資。

公鏈的可擴展性是加密世界永恆的話題,自2020年Defi Summer以來,Defi、Gamefi、NFT等鏈上活動的指數級增長,對各個公鏈帶來了巨大的壓力,開發者和用户對於公鏈性能的需求愈發強烈,為了應對未來大規模商業化的應用的誕生,Web3應用需要一個低交易費用的高性能底層作為發展土壤。

Solana通過塔式節點架構、異步架構以及並行消息處理等設計成為高性能單片鏈的代表,以太坊上的各類Rollup、專注於DA層的Celestia、ETH2.0的分片採用模塊化的方式構建底層網絡。

新公鏈Aptos則採用模塊化的理念在高性能單片鏈方向上又走出了一條另類的擴容之路。本文我們主要對比Aptos與Solana的一些關鍵設計,探討:

  • Aptos是否從本質上建設了新一代的高性能公鏈?

  • Aptos是否解決了單片鏈的兩個核心問題?

  • Aptos是資本推動的又一個Solana嗎?

新公鏈新在哪裏?

Aptos有哪些技術創新?

一、並行化

Aptos的網絡設計中將交易劃分為了不同的階段,每個階段都是獨立且可以單獨並行的,這實現了多指令流和多數據流,在可以 顯著提升網絡性能的同時,使得驗證節點可以在存儲、運算等方面進行額外的擴展,也使得整個網絡的開發更加的靈活,迭代更新可以只針對其中一個模塊。

  • 批量處理:在交易傳播過程中,交易被每個驗證者分組為批次,而在共識過程中,批次被合併為區塊。

  • 連續的交易廣播:交易的傳播和共識脱鈎,驗證節點不斷的將分組後的批次發送給其他驗證節點。

  • 交易排序和交易執行:這一步實際是通過DiemBFTV4實現共識的過程,領導驗證者會提議對區塊進行狀態更新,將狀態增量和包含已被認證區塊狀態發送給其他驗證節點,其他驗證節點決定是否投票,如果投票,則可以直接進行計算和執行,不再需要等待共識完成。Aptos通過Block-STM並行執行引擎來管理事務的執行,這是一個樂觀的併發控制,其性能測試如下:

可以看到在10k個賬户競爭的情況下,32線程情況下可以達到16w的TPS,並行執行的優勢在大量賬户的競爭交易空間時得到體現。

單片鏈歷來存在兩個核心問題:

1、資源定價。所有交易競爭同一個區塊空間,消耗相同的資源,在交易擁擠的時候,所有人的花費會被動上漲,結果是某一類交易的大量需求影響到了全局的用户,這樣就無法針對不同的應用提供獨立的交易執行和結算。

2、鏈式交易對性能的限制,單片鏈中,所有交易都需要排隊等待打包、計算、驗證最後形成共識,之後完成驗證後才開始向其他節點進行打包傳遞,這種串行的步驟無疑對交易性能形成了巨大的限制。

並行化機制可以很好的解決鏈式交易的問題,但資源定價的問題仍然存在。

二、狀態同步

狀態同步簡單來講就是協調所有的節點使其保持同一個狀態。

為什麼説狀態同步對性能有着重要的影響:

1、通常我們通過TPS來衡量一個公鏈的交易性能,但另外一個指標TTF(Time To Finality)更加重要,因為TPS指的是鏈每秒處理多少交易,而對於用户而言, 用户感知到的交易所花費的時間應當=交易在鏈上被處理的時間+被同步到對等節點和客户端的時間 ,我們會發現狀態同步對TTF的影響是很大的,如果一個公鏈TPS很高,但其實現同步需要較長時間,用户感知到的仍然是整條鏈性能低下。

2、狀態同步負責在節點之間同步信息時驗證信息的正確性,狀態同步做的好壞會決定全節點或客户端會不會有較大可能性接收到惡意、欺騙性的數據。

Aptos以Block-STM的方法為核心構建狀態同步方案,具有樂觀併發控制、多版本數據結構、協作調度、動態依賴估計等特性。由於Aptos將交易劃分不同階段的並行方案對於節點之間的狀態同步有很高要求,目前的解決方案能否實現理論上的亞秒級確認還有待驗證。

Sola na通過POH機制實現併發控制和可靠的同步:

POH是一個高頻的VDF(可驗證延遲函數,即使在多線程,或者説可進行大量並行計算的機器上仍然需要規定的時間才能求解的函數)。通過POH,Solana相當於創建了一個全局的時間鏈,驗證節點持續在區塊內對哈希值連續哈希,每一段時間都生成一個證明,每一個都證明了有一些交易數據是存在於創建證明之前,同時上一個證明已經過去一段時間了。在POH機制下,領導節點通過VDF函數賦予區塊鏈一個時間戳證明,然後將區塊發送給驗證節點,驗證節點通過不斷生成和驗證VDF這個函數,就可以得到需要的時間間隔,從而驗證收到的領導節點的時間戳證明是否正確。

在這個過程中,領導節點會將區塊以任意順序發送給其他驗證節點,區塊會被分解為更小的批次。區塊共識確認之前,這些新批次會以實時的形式傳輸給驗證節點,驗證節點接受新的批次之後,可以立即投票, 其使用的樂觀併發控制 (Optimistic Concurrency Control)的技術,與Aptos的STM有異曲同工之妙。

相較於大多數通過將交易廣播至全網後才能完成確認的公鏈 (節點間也需要再溝通自己的 precommit 和 prevote, 之後節點集體投票代表某個區塊高度的全賬本, 交易確認),在 Solana 上,交易確認只需要驗證上個批次的 POH 哈希即可完成。POH機制下,攜帶有時間戳證明的交易批次已確認被排序完畢,驗證節點可以對時間戳進行本地驗證,那麼消息就可以持續不斷進行可靠的傳輸,實現共識和消息傳遞的脱鈎。

三、節點架構

Solana採用的領導節點為中心的金字塔式結構,Leader節點從驗證節點中競爭選出,負責收集交易,創建包含 PoH 的區塊,更新網絡狀態。而Aptos採用的是星狀結構,網絡中有一組驗證節點使用DiemBFTv4實現共識。

對於Solana而言,只有被選中的領導節點才能生產下一個區塊,這大大減少了網絡的宂餘程度,可以大幅度提高網絡的性能,但這種設計降低了整個網絡的去中心化程度,當Leader節點崩潰時,容易造成整個網絡會陷入癱瘓。

對於Aptos而言,沒有所謂的領導節點,驗證節點和全節點都需要保證一定數據備份來防止極端情況的發生,這樣雖然增加了整個網絡的宂餘程度,但在 去中心化和網絡彈性方面表現會更加良好 ,不會因為一個驗證節點的崩潰導致整個網絡宕機。

節點硬件要求

Aptos的並行化的架構採用CPU進行事務處理,Solana在執行層面的並行化架構採用CPU+GPU作為運算單元,Solana對於節點的硬件要求明顯高於Aptos不少。

小結

  • Solana和Aptos用以提高網絡性能的解決方案有着比較多的相似性,都通過解耦消息傳遞和共識提升處理速度,共同使用了樂觀併發控制的機制,但是 Solana則更多的注重在共識和消息廣播並行化層面,Aptos則在並行化方面做的更加徹底 ,實現共識、廣播、執行、存儲的全部並行化,再結合Aptos優秀的狀態同步解決方案,在UX和DX方面表現較為優秀。

  • Solana激進的節點架構可以極大的提升網絡性能,但隨之而來的是網絡彈性的不足,領導節點癱瘓則會引起網絡大規模宕機,除此之外Solana對於節點硬件的需求也會過高,會進一步導致網絡的中心化, Aptos採用的則是更加中庸的方案,在性能和去中心化之間進行了一定的平衡。

  • GPU適合處理數據密集的計算任務,一般用來處理高度線程化的並行計算,也就是説用來處理大量的交易是沒問題的,但是遇到業務邏輯較強的事件,其性能會大幅度下降,這就是為什麼Solana在處理大量Defi交易的時候會表現出良好的性能,而在處理類似於NFT Mint這種強邏輯的業務的時候性能會有所下降;CPU一般用來處理邏輯性強的事件處理和串行計算,在邏輯事務和數據密集型的事務執行上進行了平衡,這樣的設計可以 使得Aptos能更好的去承載強邏輯性的商業化應用。

面向開發者:Diem的最大遺產-Move語言

特性一:First Class Resources-第一序列資源

這對應我們現實生活中“錢/資產”這個概念,在加密世界中可以用來表達數字資產,所謂的第一序列即整個網絡中我們應該首先考慮或者説關注的對象。

在Move語言中,變量的類型分為Resources和unrestricted,變量的每次讀取都需要指定其用法,即進行移動還是複製,當變量被定義為Resources時,就只能被移動,而unrestricted則沒有這樣的限制,既可複製又可移動,我們會發現,Resources這種類型非常適合定義數字資產,unrestricted則可以用來定義地址。

總結就是Resources這種變量具有如下特性:

  1. 不能 被複制

  2. 不能被隱式的丟棄,程序在執行一個關於Resources的函數時,函數結束之前必須轉移Resources的所有權

  3. 只能在程序中存儲位置之間移動

特性二:Module與Scripts

Module和Scripts類似於以太坊的智能合約和 比特幣 的腳本,Move的這種設計相當於是對庫(Module)和執行邏輯(Scripts)進行了嚴格的劃分,Module可以通過形式化驗證進行安全檢查,可以避免大量的智能合約漏洞問題。

Module是一個定義結構類型和對這些類型進行操作的函數的庫,即Module會編碼好創建、銷燬和更新其聲明的Resources的規則,Module存儲在全局存儲中,對於Resources的關鍵操作只能在Module中進行,且其對外是不透明的,Module也可調用其他模塊聲明的程序並使用其聲明的類型。

Scripts則是一個可執行的入口,類似於傳統編程語言中的Main()函數,可以對全局存儲進行更新,通常是調用已經發布函數的Module。

拿現實中的事物來對比舉例就是:

Module是央行,Resources也就是”錢”這種資產必須在Module中被定義,Resources也只能由它所在的模塊(中聲明的方法)創建和銷燬

Scripts則是使用Resources(錢)的所有主體。

下面是白皮書中關於轉賬的一個示例代碼,可以幫助進一步理解:

public main(payee: address, amount: u64)

{

let coin:0x0.Currency.Coin=0x0.Currency.withdraw_from_sender(copy(amount));

0x0.Currency.[deposit](copy(payee), move(coin));

}

從上面的Scripts代碼可以看出,Currency 是存在於0x0 地址下的一個Module,Coin(“幣”)是Module中的 Resources。這個Scripts的意思是:

  • 從發送者(sender)那裏取出(withdraw)若干金額(amount)的幣(coin);

  • 將幣(coin)存入(deposit)收款人(payee)的地址。

這裏需要説明的是,Scripts在獲得資產(代碼中的 coin 變量)後,必須指定其用途,這一點是強制的,也就是説,如果刪除掉上述Scripts中存款(deposit)那行代碼的話,這是不合法的,Move 虛擬機會拒絕執行。

特性三:靜態類型

Move是一種純靜態類型的系統,這一點和Rust是一致的,可以實現類型安全,驗證程序代碼正確性會變成一個嚴格的數學證明的過程,編譯器可以按照設計好的邏輯去驗證。靜態類型具有很強大的抽象能力和工程能力,保證安全性前提下又不損失靈活性,更加適合大型系統的構建, 即需要軟件的可靠性越高,靜態類型的語言越好用,這對於像Aptos這樣致力於構建一個可以承載全球的大規模商業化應用的公鏈來説是必要的。

通過以上的設計我們可以發現,Move語言的使用將使得:

1、數字資產將具有更好的安全性

靜態類型保證過程和結果在編譯階段即可進行類型驗證,避免部署到鏈上後運行時產生問題,經過類型驗證後,智能合約中的很多的低級問題都可避免,同時類型驗證可使用形式化驗證工具,極大降低程序員檢查bug耗費的精力。

Resources類型與Module的不透明性的結合方案則保證數字資產不被複制、丟棄或重複轉移,以及其他Module和腳本只能通過數字資產所屬的Module公開的規則對數字資產進行調用。

2、數字資產的靈活性 ,數字資產在Module中是可編輯的,程序員可以編寫正確的業務邏輯來封裝資產和執行訪問控制的策略,這對於實現複雜的金融邏輯將非常友好。

3、可以真實模仿現實世界的資產 ,即當現實資產進入數字世界時執行創建,數字資產所有權轉移時執行修改,綁定數字資產的物理資產被出售時執行銷燬。

Move與Rust相比:

First class resources 其實借鑑了 Rust語言中的Move、Copy和Clone的語義,在Rust中的Move語義是把一個變量賦值給另一個變量時會把所有權轉移給受讓者,可以説Move語言中對於Resources類型的設計非常徹底,就是專門針對金融合約設計的。

Move與Solidity相比:

First class resources 是Move語言與Solidity最大的區別, Resource類型在以太坊中只適用於ETH本身,基於以太坊發行的其他Token則不具備這種“資產特性”,而僅僅是一個數字,在交易轉賬時,一個地址的數字增加,另外一個的數字減少,每一個地址的餘額是一個簡單的Unit,對於轉賬以及更加複雜的資產操作行為,開發者都需要根據自身經驗進行檢查,很容易出現重入攻擊、整數溢出、無限增發等安全漏洞。

小結:

Move語言基於Rust衍生而來,沒有跳出Rust的大框架,但Move的創新性設計都使得其更適合用來去構建一個承載大量數字資產活動區塊鏈網絡,對於Solana和 Polkadot 的開發者而言,遷移到Aptos這樣的新明星公鏈門檻也會更低一些,相對於Solidity而言, Move語言在安全性、靈活性和對數字資產的定義方面都有着很大優勢。

面向用户:Aptos的祕鑰管理和賬户恢復系統

我們先看Aptos的賬户創建的內部流程:

  1. 生成一個簽名公私鑰對(vk,sk)。

  1. 從用户處獲得選定的簽名方案:單籤還是多籤。

  1. 將公鑰vk與簽名方案標識符(ssid)關聯,通過哈希函數H得出既定簽名方案的驗證祕鑰:addr=H(vk,ssid),addr是一個32字節也就是256位的值,也是這個賬户的永久賬户地址。

  1. 將賬户序列號(指的是該賬户在鏈上提交和確認的交易數量,每次從該帳户發送的交易被執行或中止並存儲在鏈上時,這個值都會增加)初始化為0,addr和序號作為初始資源存儲在賬户中。

  1. 通過驗證祕鑰按原樣返回一個256位的賬户地址(注意:先有驗證祕鑰,再有賬户地址,儘管兩者是一致的)。

此時,賬户創建完成,用户可以使用私鑰sk對交易進行簽名。

Aptos做了什麼?

1、Aptos提供了可輪換的的sk, 可以主動更改sk,幫助降低私鑰泄露、遠程攻擊和現有密碼算法未來被破解的風險。用户可以將輪換帳户私鑰的能力委託給一個或多個託管方以及其他可信實體,然後通過 Move 模塊定義一個策略,使這些受信實體能夠在特定情況下輪換密鑰。例如,實體可能是由許多受信任方持有的 kout-of-n 多籤密鑰,從而可提供密鑰恢復服務以防止用户密鑰丟失。 相比其他一些諸如雲端備份、社會恢復等祕鑰恢復方案,Aptos的這種密鑰管理方案是鏈上的且更加公開透明。

2、通過賬户序列號用來對交易可行性提供保護 ,一個序列號對於每個發送者的賬户來説只能被提交一次,如果發送者發現自己賬户的序列號≥交易 t 的序列號,那麼 t 已經被提交,或 t 永遠不會被提交(因為 t 使用的序列號已經被另一個交易佔用)。

3、預簽名實現交易透明度 ,Aptos提供交易預執行服務,可在用户簽名之前向用户直觀的展示交易結果,這個交易預執行的服務是可以和已知的攻擊和惡意智能合約結合的,可以大大降低用户受到的欺詐風險。除此之外Aptos還允許錢包在執行過程中規定對交易的限制,違反限制的交易將被終止,可以進一步避免用户受到惡意程序的攻擊。

小結:

可以看到,Aptos除了通過第一節講的技術創新提升用户的交易體驗之外,在保障用户賬户安全性方面同樣做了諸多設計,從底層就支持了對於交易的保護, 對於用户來説,交易的安全便捷性得到了大幅提高;對於應用開發者來説,減少了很多本來需要在應用層面實現的安全保護機制,基於這些底層機制,應用也可以實現更加靈活的服務。

Aptos是資本推動的又一個Solana嗎?

樹立開發者陣營

我所接觸的開發人員,對使用Move與Rust或Solidity相比感到有點興奮—Pantera 合夥人 Paul Veradittakit

從區塊鏈開發者角度來看,智能合約是一組數字化的承諾,包括關於合約執行者履行這些承諾時達成的協議。區塊鏈技術給我們提供了一個去中心化的、不可篡改的、高度可靠的系統,而在這個系統中智能合約有着至關重要的作用。

前文我們對Solidity和Move語言的差異進行了分析,儘管Solidity 在直觀性和安全性方面存在缺陷,但它的靈活性使其廣泛的被社區採用;Move語言對於 FT 和 NFT 等常用場景,Move 將數據定義成資源,能夠從虛擬機層面保障了數據的安全,對開發者更加友好,讓合約開發者可以專注於業務邏輯。目前有4條公鏈已經使用Move語言分別是Aptos、Sui、Starcoin、0L Network。 更低 GAS、更高 TPS ,更安全的編程代碼環境,MOVE系語言正在重新樹立開發者陣營。

遷移Solana舊將

從建設者角度,建立一個新公鏈需要大量資源以及時間成本,自從 Bitcoin 誕生以來,十多年以來,數以百計的公鏈被開發出來,以太坊生態的強大之處在於,沉澱了足夠多的資產,通過合約與合約之間的交互,各種不同類型的 DeFi 產品可以像積木塊一樣搭在一起,從而激發以太坊生態的創新。

另一邊,從2020年初到2022年中,整個鏈上錢包用户數量翻了一番多,有1億多用户加入了這個生態系統,造就了過去2年區塊鏈發展的黃金盛世,但在其背後則是以太坊擁堵(高Gas)的核心矛盾,各路開發者們對於提高以太坊吞吐量的探索從未停歇。

Solana最高創造了400倍收益、Polkadot 100倍、Avalanche 100倍、還有Avalanche、Fantom、Near、Cosmos、Starkware等生態羣雄並起,再到ZK Rollup 和 Optimistic Rollup 成為最受關注的 Layer 2 雙雄,公鏈的擴容敍事還將繼續上演。

隨着全新的互聯網基礎設施區塊鏈的崛起,新公鏈將遷移原有公鏈的建設者,Solana 生態開發者遷移至Aptos(Saber 開發商Sabre Labs),Solana 前營銷主管投靠Aptos,前幾年支持Solana的資本依然出現在新公鏈的支持者名單中。當然各大Solana基礎設施項目方如Solend, Jupiter, Hubble, Crema,甚至Solana FM據悉也出現了轉投Aptos的熱潮。 遷移Solana舊將是一種新的人才積木,更容易激發Aptos生態的創新。

公鏈敍事永不眠

2009年1月3日中本聰的人創造了比特幣。13年後,比特幣激發了一個全新的行業和價值近1萬億美元的新資產類別,公鏈敍事也就此展開。

公鏈賽道一直都是加密領域最具挑戰性同時也是承載價值最好的地方,Solana、Terra、Avalanche 等公鏈崛起,投資機構收到豐厚的財務回報。鐵打的公鏈,流水的應用, 公鏈的敍事和競爭在每一個週期中也從未停止。

2014年到2015年熊市,當時整個加密貨幣市場的市值暴跌了75%,但是也誕生了今後的公鏈王者-以太坊。自2015年推出以來以太坊目前是護城河最高的公鏈,網絡去中心化程度和安全性較高,用户量大、開發者數量多。基礎設施完善,應用種類豐富,已形成網絡效應,具備創新土壤,一直以來引領了區塊鏈應用潮流:每個人都喜歡抱怨以太坊,但是沒有人願意離開他。

2019到2020年的熊市,誕生了Solana,雪崩協議等新公鏈,新公鏈憑藉性能和費用優勢承接了這些以太坊外溢的需求,自2020年以來新公鏈生態相繼爆發,從 BNB Chain 到 Polygon ,再到 Solana,同時 Avalanche、Fantom、Terra 生態也有大幅增長。

2022年我們看到Aptos、Sui、Linera、Aleo等新公鏈在冉冉升起,加密行業將繼續建設和創新,突破想象邊界,熊市對於有些公鏈來是日活下降, 對於新公鏈則是序章,加密週期更迭,公鏈敍事永不眠。

總結

無論從技術特性還是開發語言角度,Aptos似乎並沒有做到像Solana之於以太坊的創新性, Aptos更像是一個性能更好、網絡彈性更強的Solana ,Aptos與Solana之間並不是內燃機與馬車的區別。針對單片鏈歷來存在的資源定價與鏈式交易問題,Aptos並未完全解決前者,而是像Solana一樣,通過大幅提升可擴展性平抑交易對區塊空間的競爭,其比較完美的解決了鏈式交易問題。

Aptos在數字資產的定義、保護以及對於用户使用體驗方面做了很多精妙的設計, Aptos是在以Web2產品的思維實現一個面向數十億互聯網的用户的可以承載大規模商業化應用的高性能、高安全性公鏈,這是前所未有的,具體落地如何,還要拭目以待。

目前Aptos生態在快速擴張,主網還未上線,其生態項目已多達130+,新技術的出現,使得開發者們希望能成為生態的第一波參與者,一方面熊市中頂級團隊和頂級資本加持的新公鏈敍事的確有着強大的吸引力,但另一方面 開發者們也許應該警惕這種繁榮,一個在技術、資本、生態開發者等各個方面都與Solana有着較高重合度的新公鏈能否再度復刻乃至超越Solana的爆紅歷程,這是值得懷疑的,開發者應從自身產品的實際需求出發,權衡採用新公鏈的利弊。

對於投資者而言,Aptos在新生代公鏈中具有較大的先發優勢,預計在9月底主網上線,但其私募融資估值已超20億美金,市值已達到目前Solana市值的1/5左右,可以更多關注其生態項目的發展,作為早期參與者可能會有更好的回報。

參考

https://developers.libra-china.org/docs/reference/glossary/index.html#move-virtual-machine-mvm

https://github.com/aptos-labs/aptos-core/blob/main/developer-docs-site/static/papers/whitepaper.pdf

https://web3caff.com/zh/archives/25976

https://medium.com/aptoslabs/the-evolution-of-state-sync-the-path-to-100k-transactions-per-second-with-sub-second-latency-at-52e25a2c6f10

https://pontem.network/posts/which-blockchain-is-the-fastest

https://blog.priewienv.me/post/verifiable-delay-function-1/

https://docs.solana.com/cluster/synchronization

https://medium.com/aptoslabs/the-aptos-vision-1028ac56676e

https://yaozhiguo2016.github.io/2018/11/22/cpu-and-gpu/

https://aptos.dev/nodes/ait/node-requirements

https://mirror.xyz/0xcherry778.eth/HOsL3XptIsmCMmLoBiWBCA945kg2TIjf6E9wQo6jGqc

https://research.thetie.io/aptos-network-deep-dive/

https://medium.com/aptoslabs/block-stm-how-we-execute-over-160k-transactions-per-second-on-the-aptos-blockchain-3b003657e4ba

https://mp.weixin.qq.com/s/07MlRKpL6IqACRRI26KHzg

https://move-language.github.io/move/structs-and-resources.html

https://www.youtube.com/watch?v=rywOYfGu4EA&ab_channel=Solana

https://medium.com/solana-labs/proof-of-history-a-clock-for-blockchain-cf47a61a9274