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左右,可以更多關注其生態專案的發展,作為早期參與者可能會有更好的回報。

參考

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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