Move 公鏈爆紅背後
20 多位中美風投機構、項目方及開發者,帶你一探背後的故事。 「這個 Aptos Builder 社區直到 200 人,都幾乎沒有人說話。因為都是 Solana 生態的熟人,大家都心照不宣保持沉默,直到新人逐漸多起來群內才開始活躍。」 Solana 生態 TVL 排名前五的某項目方負責人 Tom 提到。 Tom 說的這個 Aptos builder 社區,是今年 6 月 Solana 穩定資產交易協議 Saber Labs 的 Co-founder、Solana 早期開發者 Ian Macalinao 發起的 。他和 Solana 另一位開發人員 Dylan 在今年 7 月宣布共同推出了一支規模達一億美元的 Protagonist 基金,專注投資 Aptos 生態。 Ian Macalinao 用挨個私聊的方式邀請了上百個 Solana 生態的成熟項目和開發者進入 Aptos Builder 社區,如今已超過 800 人。不過這個以 Solana 項目方和開發者為主的 Aptos 社區,前期並未引起太多轟動。 直到今年 7 月,Aptos 宣布今年累計完成 3.5 億美元融資;另一 Move 雙子星公鏈 Sui  後也宣布 B 輪融資 3 億美元。這時大家開始發現,Aptos 與 Sui 不僅資方矩陣基本是 Solana 的投資方,甚至連帶着項目方、開發者、甚至部分員工也高度重合 。 相比支持 Rust 語言的 Solana 「成建制」的遷移,另一個支持 Rust 語言的頭部公鏈 Polkadot 則也在相對低調的也在進行部署遷移。和 Solana 一樣,不少原有的 Polkadot 項目方,也是同時在開發部署多個 Aptos 與 Sui 生態項目。 關於大火的 Move 公鏈 Sui 與 Aptos, 20 餘位中美風投機構、項目方及開發者帶你一探背後的故事。   離開 Solana 意味着甚麼? 「執行層比共識困難得多,共識‘相對簡單’,我們不把 Avalanche 或 BNB Chain 視為 Solana 的主要競爭對手,而是 Aptos & Mysten。」 7月,在一次 Dragonfly 合夥人 Haseeb 主持的線上會議中,Solana 聯合創辦人Aeyakovenko 如此說道。 事實似乎的確如此,Aptos 挑戰 Solana 的第一步就是搶人、搶項目。 除了上文提到的 Ian Macalinao 攜一億美元生態基金大規模遷移 Solana 項目到 Aptos,一個Aptos 開發者也曾發起投票,詢問「在 Aptos 上開發之前,你的背景/經驗是甚麼?」50%的人投票者曾經是 Solana 生態的開發者。 在和眾多 Solana 項目方接觸過後,我們發現,選擇遷移或多鏈部署到 Move 公鏈,幾乎成了成為 Solana 生態項目的共識。  在項目方看來,其實無論 Move 公鏈會不會成為 Rust 及 EVM&Solidity 公鏈的殺手,選擇遷移或多鏈部署到 Move 公鏈是一種「做多自己」的下注。 作為熊市少有的熱點風口,如果 Move 公鏈起來了,遷移部署過去的項目方就能直接在一級和二級市場繼續叙事和融資,即使 Move 公鏈生態沒有預期成果或者進展緩慢,項目方最多損失幾個月的學習開發成本,這點成本在熊市是非常值得付出的,可一旦成功,便收獲新的一波財富機會。 Ian Macalinao 同樣表示,「離開」是一個強烈的詞,大多數強大的開發人員,花時間在 Move 生態上不會有任何損失,因為現在市場對於沒有 PMF(產品和市場契合度) 的項目來說非常困難。  比如基於 Solana 的 Web3 智能消息平台 Dialect,在今年 3 月宣布完成 由 Multicoin Capital 和 Jump 領投的 410 萬美元融資。 盡管 Dialect 其資方和 Aptos 是高度重合的,不排除有背後資本的推動此次部署的可能性, Dialect 官方給出選擇 Aptos 的闡述理由是: Solana 的獨特架構可以實現極快的速度和超低的成本,但未來是多鏈的,如果 Dialect 設置任意孤島,就無法為客戶提供最好的服務。  對於 Solana 開發人員,Dialect 將繼續提供的工具支持;對於 Aptos 開發人員,Dialect 迫不及待地想與之合作,看看Aptos 開發人員們構建了哪些令人難以置信的東西。 另一方面,市場關於 Aptos 生態的爭議也開始凸顯,投資方與 Solana 核心資方高度重合,項目方也來自於Solana生態,讓人難免產生疑問:在Solana上賺得盆滿缽滿的 VC 又在做局複制下一個Solana? 或許出於生態項目流失的壓力,根據 Solana 基金會 GitHub 頁面信息顯示,團隊已將 Move 語言納入開發戰略。 值得注意的是,經過深潮與 AptosWorld 初步統計,Aptos 生態的 DeFi 所有賽道幾乎被 Solana 生態的 DeFi 項目給包場了,例如 DEX、NFT、借貸、衍生品、跨鏈橋等每個 DeFi 細分賽道,都至少有兩到三個以上的 Solana 上運行較成熟的項目方在開發 Move 版本,這意味着僅在 Solana 遷移和多鏈部署過來的數百個生態項目中,未上線先卷起來了。 但在不少行業從業者看來,這類「泡沫現象」在絕大多數大型公鏈早期,都不可避免地會發生。 初期大量良莠不齊或者追熱度的項目湧入公鏈生態,再經過市場的檢驗篩選出優秀項目,幾乎是每條公鏈生態發展繁榮的必經之路,而各大公鏈開源社區的開發者們互相流動參與開發項目,更是正常不過的現象了。 Nothing Research Partner Allen Ding 表示,其它生態開發者的到來可以迅速充盈 Move 生態,初期以 Fork 和遷移類項目為主並沒甚麼問題。畢竟公鏈的基礎應用目前已經範式固定了,比如 DeFi 中的 DEX、借貸、穩定幣都是很成熟的賽道。對於新公鏈來說,快速補足生態的意義大過追求應用層的範式創新。現階段的 DeFi2.0 時代,基於底層應用來構建上層應用,即應用的可組合性是大家更看重的。   Polkadot 項目方遷移的經驗有哪些? 除了 Solana 生態項目觊觎 Move 公鏈的紅利蛋糕 ,還有一方勢力也在虎視眈眈──Polkadot 。 在 Aptos 官方為數不多的公開合作項目裏面,就包括了在 2020 年底拿到 Polkadot Web3 基金會第八次 Grant 的 Pontem Network,其在今年 4 月與 Aptos 官宣合作後也表示,測試激勵代幣未來將在 Aptos 上發行。 除了 Pontem, 我們了解到不少 Polkadot 項目方,如今也同時在開發多個 Aptos 與 Sui 生態項目。 九月初,某波卡生態項目在杭州舉辦了 Move 開發者大會,並邀請了 Move 語言之父、Sui 的 CTO & 聯合創辦人 Sam Blackshear 進行視頻演講。 大會現場,多個波卡項目都介紹了其即將在 Aptos 與 Sui 生態上部署的多款產品和項目計劃,甚至有團隊在Move生態已部署超過5個產品。 和 Solana 一樣,作為上一輪牛市新公鏈叙事最大的價值捕獲者之一,Polkadot 生態的項目方的許多經驗值得借鑒。尤其是面對公鏈初期早期、基礎設施還不完善的時候,項目方應該如何做才能收益最大化。 關於應用如何最大化地捕捉和兌現公鏈價值。DeFi 概念的提出者, Dharma Protocol 創辦人 Max 曾在 2019 年提出過一個有趣的問題:項目方公司是靠着融資每天在燒錢開發和運營,如果以太坊一直這麼卡、這麼貴、新人門檻這麼高,難道真的等個三年五年在上面做生態項目? 幾年後的今天來看,這個問題似乎已經有了很多種答案。以太坊 2.0 雖然還沒完全實現,但 Solana、Polygon、BSC 等公鏈已經繁榮過了一個大周期,各大 Layer2 也有不小的生態市場。 而波卡生態項目方給出的近乎標準答案則是:在公鏈初期,積極拿官方 Grant 增加關鍵背書並融資;在公鏈基礎設施還不完善的時候,在其它成熟的公鏈先映射,在行情較好的情況下先Launch Token提前兌現被資本捧起來的公鏈生態價值;在公鏈基礎設施開始完善的時候,通過先行網/先行幣/眾貸拍賣等來延長叙事周期。 比如官方 Grant ,Polkadot Web3 基金會的 Grant 對於大多數波卡生態項目方至關重要,尤其是品牌背書、項目融資與生態合作方面;如今大多選擇遷移或多鏈部署到 Move 公鏈項目也在積極申請 Aptos 與 Sui 的 Grant,火爆的申請甚至讓 Aptos 官方不得不暫停了申請入口。 一個提供 DID 解決方案與 Elixir 語言 SDK 的項目方表示他們此前已在多個公鏈贊助的黑客松比賽中獲得過名次,最近他們的項目進入了 Aptos 官方第二批 Grant 的名單(筆者注:Aptos 第二批 Grant 仍在考察中,還未正式公布),正在做最後的確認。 因此,即使現在 Aptos 項目眾多,但是如果拿不到官方 Grant 或者被大 VC 投資,只會淪為Move生態的 「土狗」罷了。 針對如今項目喜歡「腳踏兩條船」的行徑,一些公鏈基金會也開始有所應對措施。 一位要求匿名的 DeFi 項目方表示,他們今年也獲得了 Web3 基金會的 Grant,但是基金會並沒有立馬公布通過名單和把贊助金一次性給項目方,而是根據項目方的提交的開發進度進行考察,分批的釋放贊助金,防止項目方拿到了「Grant 背書」轉頭就跑到別的鏈去開發繼續拿 Grant。目前他們白天在 Rust 上開發,晚上學習 Move 去 Aptos 測試開發。 無論怎樣,項目方都會用代碼投票,向 Move 前進已然成為當下不可阻擋的趨勢。 「Move 生態甚至會給一些在波卡等其它公鏈上沒有火的項目一個重新崛起的機會。」 Allen Ding 對於當下其它公鏈生態項目部署 Move 生態也表示,在熊市大環境下,市場的資金都是有抱團傾向的,Aptos 和 Sui 是目前的最佳選擇。開發者肯定會優先去有用戶、資本的地方。不僅僅是 Solana 和波卡的生態項目,其他公鏈的開發者也會關注 Move 生態的發展,甚至是加入進來。   Move 生態中的中國身影 回顧整個 Layer1 的歷史發展,華人資本往往佔據了重要的角色。 無論是早期的以太坊、BTS、EOS 還是後來的 Polkadot 、Cosmos、NEAR、Filecoin、Flow、Dfinity(Internet Computer)、Solana 等一眾明星公鏈,背後都有華人背景加密VC的深度參與,這些華人VC也有意願去投資與建設生態,比如 DFG 支持波卡生態、分布式資本支持 Filecoin 和 Flow 生態、SNZ 支持 ICP 生態,即使投資公鏈生態本身財務回報沒有太高,但是其在 L1 本身上已經賺得盆滿缽滿。 但是,在 Aptos 和 Sui 的投資上,華人 VC 相對缺位,導致其投資 Move 生態的熱情欠缺,反而是華人開發者更加積極。 從資方陣容來看,Aptos 和 SUI 主要由a16z\FTX Ventures\Jump Crypto等美國頭部加密VC抱團參與;其次估值太高也讓眾多投資者望之卻步,比如 Aptos 最早期估值已高達 10 億美元,最新股權估值為28億美元,Token FDV 高達42億美元。 盡管,仍有諸多國內個人和機構投資者通過 SPV 參與到兩大 Move 公鏈的投資行列中,但大多仍屬於重在參與型投資,目前華人背景VC中公開表示參與 MOVE 生態投資建設的主要是 Bixin Ventures 和 A&T 。 Bixin Ventures 同時投資了Aptos 和 Sui,其合夥人 Wangxi 告訴 深潮 TechFlow,Bixin 非常早期就開展了對 Move 語言的研究,並從 2019 年就開始通過支持 Starcoin 來理解和扶持 Move 語言的發展,這是 Bixin 與 Aptos 和 SUI 發生聯系的一個很關鍵的因素。 「由於熟悉 Move 生態、Libra 體系(後更名為 Diem),我們相信 Aptos 和 Sui 的團隊一定會成為現行區塊鏈系統的挑戰者。」 Wangxi 表示,Aptos 和 SUI 的創新絕不僅止於技術,作為被整個市場抱以重大期待的項目,頂級資本紛紛加持的項目,它們的創新是全方位的,這也是 Bixin 參與的重要原因,Bixin 也願意為向 Aptos 和 SUI 上遷移的優秀項目提供支持。 Starcoin 核心開發者 Jolestar 表示,早在2019年 6月 Libra 出來後他們就開始了 Move 上的實驗,包括曾在 Move 上嘗試了一個分層的狀態通道方案,在狀態通道中執行合約,驗證了 Move 作為分層智能合約的可行性,然後在2020年初開始設計基於 Move 開發公鏈 Starcoin,2021年6月 Starcoin 主網正式上線,作為第一個 Move 公鏈,還沒有人有基於 Move 構建 DeFi 應用的經驗,團隊協助生態項目一起探索了 Move 在 Swap/StableCoin/NFT Market/CrossChain Bridge 等領域的應用,同時 Move 的開發工具,文檔都不完備,經過一年的努力,現在文檔,開發測試工具,開發者體驗都有很大的提升。 作為國內最早的 Move 開發者之一,Jolestar 認為 Move 是最有潛力構建出 Solidity 這樣的生態系統,甚至完成超越: 由於Move 合約之間的依賴和調用方式可以讓它最大化的複用模塊,適合一層一層構建智能合約的基礎設施,而Move 的「自由狀態」模型,可以讓數字資產在不同的合約之間流動,提供基於類型的組合性。基於以上兩個特性,Move 可以在分層擴容方案中發揮更大的價值,比如實現跨層的合約複用以及組合,任意狀態的跨層遷移。Move 也由一個為 Libra 設計的智能合約語言演變成一個開源社區項目,成為多鏈設計,讓它可能被更多的公鏈等基礎設施項目採用,從而構造更大的生態。 可以這樣說,Starcoin 幫助培養和教育了中國最早的 Move 開發者,亞太地區依然是 Move 開發最活躍的地區之一,當SUI 的開發商 Mysten Labs 完成新一輪3億美元融資後,表示這筆資金將投資於 Sui 生態系統並繼續向亞太地區擴張。   Move 公鏈會成為其他公鏈的殺手嗎?   從 Move 公鏈發布融資動態的第一天開始,爭議便從未消失。 有人認為這屬於再明白不過的「資本局」:玩過一次再玩第二次,都不帶遮掩,而且起始估值如此之高,連投機機會也很小。 但是也有行業從業者對此表示興奮,特別是 Move 這樣一個新語言,能給行業帶來一些改變。 「Aptos 和 Sui 幾乎集齊了行業裏面 Top 項目的所有要素:皇家血脈,明星團隊,公鏈賽道,對區塊鏈更友好的 Move 語言,有技術亮點,開發者紮堆,T0 級別的投資陣容等。」 Allen Ding 認為,Aptos 和 Sui 的崛起代表了新公鏈時代的到來。上一輪崛起的 Layer1主要是捕獲以太的溢出價值,自身的垂直場景和技術上沒有太大的亮點。而 Aptos 和 SUI 正在講一個脫離以太坊的新場景叙事。這可會是未來新公鏈的叙事方向,即有明確的場景,又脫離 EVM&Solidity  的架構設計。 關於新公鏈,我們仍然經常被問到的幾個問題是,「為甚麼要搞一個新的 Layer 1?」 市場上已經有太多各種各樣的 Layer 1 公鏈,這是不是資本為了利益在重複造輪子?區塊鏈的生態需要的是更多的聚合,而非價值的割裂和破碎。如果僅僅是因為 Move 有可能比 Solidity 或其它開發語言更優秀,就要樂此不疲地從頭開始搭建生態嗎? 另一個問題是,從 Aptos 與 Sui 含着金鑰匙出場的那一刻起,開發人員就喜歡把 Move 語言與 Rust 做比較,Aptos 與 Solana 做比較,甚至認為 Aptos/Sui 會是 Solana 殺手,正如 Solana 當初說他是以太坊殺手一樣。 關於這些問題的答案,可以借用 Binance 創辦人 CZ 在回應 BSC 和以太坊的關系時的答案:用以太坊跟用 BSC 的人群不太一樣。BSC 起來後,以太坊的交易量並沒有變少,但也不再增長,這是因為它碰到了技術瓶頸,網絡最高承載量就是每秒 15 到 20 筆。而在東南亞、印度和非洲更多看不見的地方,BSC 供一個更便宜的網絡,可以使更多人使用和進入區塊鏈。 Bixin Ventures Wangxi 則表示,關於 Web3 最多的一個質疑是,為甚麼 Web3 沒有殺手級應用?區塊鏈的性能瓶頸應該佔絕大部分因素,而 Aptos 和 SUI 有望在這個問題上作出突破性的創新。未來,Aptos 每秒可處理 16 萬筆交易,SUI 在 12 萬筆上下,兩者的最終確定性都是亞秒級的。 Aptos 和 SUI 突破了以往區塊鏈擴容的基本思想,提出了新的實現路徑,比如模塊化、並行處理等等。盡管兩者在技術路線上略有不同,但它們都專注於為 Web3 構建安全、可擴展、可升級的區塊鏈系統,使開發者能夠非常方便地搭建能夠滿足消費者需求的應用程序,打造可以面向數十億人的基礎設施網絡,提供兼具去中心化、速度和可負擔性的用戶體驗。 因此,在 Aptos World 看來,這並不只是重複造輪子打造一個新的 Layer 1,就像我們認為,Solana 不是下一個以太坊,也不是以太坊殺手,它創造了一個全新的市場。對於今天的任何公鏈殺手──Aptos與Sui來說也是如此,他們不會殺死任何公鏈,但他們會服務於其它公鏈沒有的市場。 當然,對於大多數人來說,他們或許不太關心 Aptos 和 Sui 是否能真的成功,讓WEB3實現大規模應用。在他們眼中,Move 公鏈只是一個新的叙事,會帶來新的投資和投機機會,不能錯過。 「Aptos 和 Sui 是不是泡沫,是否一直火下去不重要,他只要火一段時間,不要涼得太快就行了」,一個正在孵化 Move 項目的投資人如此說道。   轉載連結:https://www.chaincatcher.com/article/2080046  本文章挑選自鏈捕手 公鏈挑戰者   本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵   延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
Allen -
智能合約發展:Move 與 Rust 對比研究
深度研究新興智能合約編程語言Move,與現有Solana上以Rust為基礎的模式進行比較。 1. 介紹 最近,關於 Aptos 和 Sui 的討論如火如荼,兩者是新興的高性能 L1 公鏈,Move 智能合約編程語言是這些新鏈必不可缺的組成部分。一些開發人員正在積極轉向Move,宣稱它是智能合約發展的未來。其他人更加謹慎,認為 Move 與現有編程語言相比,不能提供更多太新的東西。 加密投資者也在好奇這些 L1 公鏈的獨特之處,如何能與 Solana 抗衡,後者是目前高性能 L1 的主要玩家,以使用 Rust 作為智能合約編程而著稱。 但目前我們看到的討論並沒有達到一定深度,能夠真正參透這些新科技對我們的影響。這在討論的兩極都適用──Move 的質疑者將 Move 貶低得一無是處,無法欣賞到它更細微(但十分重要)的一面,但 Move 的支持者,過度鼓吹 Move,也沒有能看透究竟是甚麼使其偉大。這就帶來巨大的中間地帶與模糊不清,致使外界看客、加密開發人員、投資人員,關注此話題,但又無法對自己的觀點確信。 在這篇文章中,我將對 Move、其新穎的編程模型、Sui 區塊鏈和它如何利用 Move 的功能,以及它與 Solana 及其編程模型的比較進行深入的技術挖掘。為了突出 Move 的特點,我將把 Solana/Rust 與 Sui/Move 進行比較。因為當你把一個東西與另一個你已熟悉的東西進行比較時,理解就會更容易。 Move 還有其他變種,如 Aptos Move,它們在某些方面略有不同。本文的重點不是討論 Move 不同變體之間的細微差別,而是展示 Move 的普遍優勢,以及它與 Solana 編程模型的比較。因此為了簡單起見,我在本文中只使用一個變體(Sui Move)。因此,我在本文中介紹的某些Move概念(即對象和相關功能)只適用於 Move 的 Sui 變體,而不適用於其他變體。雖然 Move 的其他變體不一定有這些概念,但它們使用不同的機制(例如全局存儲)能夠實現同樣功能。但即便如此,本文所討論的所有Move的主要優點都適用於所有Move集成(原生設定上支持Move字節碼 Move bytecode),包括Aptos。我選擇Sui,只是因為我對它更熟悉,且我覺得它更直觀一些,更容易以文章的形式呈現。 2. Solana編程模型 在Solana上,程序(智能合約)是無狀態的,它們自己不能訪問(讀或寫)任何在整個交易中持續存在的狀態。為了訪問或保持狀態,程序需要使用賬戶。每個賬戶都有一個唯一的地址(Ed25519密鑰對的公鑰),可以存儲任意的數據。 我們可以把Solana的賬戶空間看作是一個全球鍵值存儲,其中鍵是賬戶地址(pubkey),值是賬戶數據。程序通過讀取和修改其值在該鍵值存儲上進行操作。 賬戶有一個所有權的概念。每個賬戶由一個(且只有一個)程序擁有。當一個賬戶被一個程序擁有時,該程序被允許修改其數據。程序不能修改所不擁有的賬戶(但允許讀取這些賬戶)。運行期間,比較程序執行前後的賬戶狀態,就能夠進行這種動態檢查,若有非法改動,則交易失敗。 每個賬戶也有一個與之相關的私鑰(相應的公鑰是它的地址),能夠訪問這個私鑰的用戶可以用它來簽署交易。利用這種機制,我們在Solana智能合約中實現了權限和所有權的功能--例如,為了獲取某些資金,智能合約可以要求用戶提供必要的簽名。 在其他做程序調用時,客戶需要指定這個程序在調用時將訪問哪些賬戶。這樣一來,交易處理運行時間就可以安排不重叠的交易並行執行,同時保證數據一致性。這是Solana的設計特點之一,使其具有高吞吐量。 程序可以通過CPI調用來調用其他程序。這些調用的工作原理與來自客戶端的調用基本相同──調用者程序需要指定被調用者程序將訪問的賬戶,被調用者程序將進行輸入檢查,就和從客戶端調用是一樣的(因為它不信任調用者程序)。 PDA賬戶是一種特殊賬戶,使程序能在不擁有或儲存私鑰的情況下提供賬戶簽名。PDA保證只有為其生成PDA的程序可以為其創建一個簽名(而其他用戶和程序不行)。當一個程序需要通過CPI調用與另一個程序進行交互並提供授權時,這是很有用的(例如,實施一個金庫)。PDA保證除了程序之外沒有人可以直接訪問程序資源。PDA也可用於在確定地址創建賬戶。 這些是Solana上安全智能合約編程的基本構件。在某種程度上,你可以把Solana程序看作是操作系統中的程序,而賬戶則是文件,任何人都可以自由執行任何程序,甚至部署自己的程序。當程序(智能合約)運行時,它們將讀取和寫入文件(賬戶)。所有文件都可被所有程序讀取,但只有對文件有所有權權限的程序才可以對其進行改寫。程序也可以執行其他程序,但它們彼此之間沒有任何信任──無論誰執行程序,它都需要假設輸入是潛在惡意的。由於該操作系統是任何人在全球範圍內都訪問的,所以在程序中加入了原生簽名驗證支持,以便為用戶實現權限和所有權功能......這不是一個完美的比喻,但還是挺有趣的。 3. Move的編程模型 在Move中,智能合約是以模塊形式發布的。模塊由函數和自定義類型(結構/struct)組成。結構由字段組成,可以是原始類型(u8,u64,bool...)或其他結構。函數可以調用其他函數──可以是同一模塊,也可以是其他公開的模塊。 在Solana中,這就相當於所有智能合約都作為模塊發布在一個程序中。這意味着所有的智能合約(模塊)都包含在同一類系統中,可以直接相互調用,而不需要通過中間的API或接口。這一點非常重要,其影響將在本文中徹底討論。 3.1. 對象 要注意的是,下面的對象概念針對於Move的Sui變體。而在Move的其他集成中(例如Aptos或Diem/core Move),情況可能略有不同。不過,在其他Move變體中也有類似的解決方案,可以實現同樣的事情(狀態的持久性),這些解決方案並沒有太大區別。 這裏介紹Sui變體的主要原因是,文章後面的代碼樣本都基於Move的Sui變體,同時其對象比如core Move中的全局存儲機制更直觀易懂一點。重要的是,本文所討論的Move的所有主要優點都適用於所有Move集成(原生支持Move字節碼),包括Aptos。 對象是由運行時存儲的結構實例(struct instance),並在事務中持續保持狀態。 有三種不同類型的對象(在Sui中): 自有對象(owned objects) 共享對象(shared objects) 不可變對象(immutable objects) 自有對象是屬於用戶的對象。只有擁有該對象的用戶才能在交易中使用它。所有權元數據是完全透明的,由運行處理。它使用公鑰加密技術實現──每個自有對象都與一個公鑰關聯(運行時存儲在對象元數據中),任何時候你想在交易中使用對象,你都需要提供相應簽名(現在支持Ed25519,即將支持ECDSA和K-of-N多簽名)。 共享對象類似於自有對象,但它們沒有一個與之相關的所有者。因此,你不需要擁有任何私鑰就可以在交易中使用它們(任何人都可以使用它們)。任何自有對象都可以被共享(由其所有者),一旦一個對象被共享,它將永遠保持共享──永遠不能被轉移或再次成為自有對象。 不可變對象是不能被改動的對象。一旦一個對象被標記為不可變,它的字段就不能再被修改。與共享對象類似,這些對象沒有所有者,可以被任何人使用。 Move編程模型非常直觀和簡單。每個智能合約是一個模塊,由函數和結構定義組成。結構在函數中被實例化,並可以通過函數調用傳遞到其他模塊。為了使一個結構能夠在跨交易中保持持久,我們把它變成一個可以被擁有、共享或不可改變的對象(僅限於Sui,在其他Move變體中略有不同)。 4. Move的安全性 我們已經看到,在Move: 你可以將你擁有(或共享)的任何對象傳遞給任何模塊中的任何函數 任何人都可以發布一個(潛在的敵對)模塊 不存在模塊擁有結構的概念,這將使所有者模塊擁有改變結構的唯一權力,就像Solana賬戶的情況一樣──結構可以流入其他模塊,也可以嵌入其他結構中。 問題是,這種做法為甚麼是安全的?是甚麼阻止了人們發布惡意模塊,獲取共享對象(如AMM池),並將其發送到惡意模塊中,然後繼續耗盡其資金? 在Solana中,有一個賬戶所有權的概念,也就是說只有擁有賬戶的程序才被允許對其進行改動。但是在Move中,沒有模塊擁有對象的概念,你可以將對象發送到任意的模塊中──不僅可以引用對象、整個對象,也可以引用其本身價值。而且,運行時也沒有具體檢查,以確保這個對象在通過不受信模塊時沒有被非法修改。那麼,是甚麼在保護這個對象的安全?如何保證這個對象不被不可信的代碼濫用? 這就是Move的新穎之處......讓我們來談談資源。 4.1. 結構 定義一個結構(struct)類型和你所期望的差不多: 到目前為止還不錯──這也是你在Rust中定義一個結構的方式。但在Move中,結構有其獨特之處與傳統編程語言相比,Move模塊在如何使用類型上擁有更多空間。在上面的代碼片斷中定義的結構將受以下限制: 它只能在定義該結構的模塊中被實例化(「打包」)和銷毀(「解包」)──也就是說,你不能從任何其他模塊的任何函數中實例化或銷毀一個結構實例。 結構實例的字段只能在其模塊中被訪問(因此也可以被改動)。 不能在其模塊之外克隆或複制結構實例 不能將一個結構實例存儲在其他結構實例的字段中 這意味着,如果在其他模塊的函數中處理這個結構的實例,我們將無法改動其字段、克隆它、將其存儲在其他結構的字段中,或將其丢棄(必須通過函數調用將其傳遞到其他地方)。情況是這樣的:該結構的模塊實施了能從我們模塊中調用的函數,來完成這些事情。但除此之外,我們無法直接為外部類型做這些事情。這使模塊可以完全控制如何使用和不使用其類型。 由於這些限制,我們似乎失去很多靈活性。這也是事實──在傳統編程中,處理這樣的結構會非常麻煩,但事實上,這正是我們在智能合約中想要的。智能合約開發畢竟是關於數字資產(資源)的編程。如果你看一下上面描述的結構,這正是它的本質──它是一種資源。它不能隨意被憑空創造,不能被複制,也不能被意外地銷毀。因此,我們確實在這裏失去了一些靈活性,但我們失去的靈活性正是我們所希望的,因為這使對資源的操作變得直觀而安全。 此外,Move允許我們通過向結構添加能力(capability)來放寬其中一些限制。有四種能力:鍵、存儲、複制和删除。你可以將這些能力的任何組合添加到一個結構中。 下面是它們的作用: 鍵 - 允許一個結構成為一個對象(專屬Sui,core Move情況略有不同)。如前所述,對象是持久化的,如果是自有對象,需要用戶簽名才能在智能合約調用中使用。當使用鍵能力時,結構的第一個字段必須是具有UID類型的對象ID。這將給它一個全球唯一的ID,能夠用它進行引用。 存儲 - 允許將該結構作為一個字段嵌入另一個結構中 複制 - 允許從任何地方任意複制/克隆該結構 删除 - 允許從任何地方任意銷毀該結構 從本質上講,Move中的每個結構都是默認的資源。能力給了我們權力,可以精細地放寬這些限制,使其表現得更像傳統結構。 4.2. 幣(Coin) 幣在Sui中實現了類似ERC20/SPL代幣的功能,是Sui Move Library的一部分。它的定義是這樣的: 你可以在Sui代碼庫中找到完整的模塊實現(鏈接)。 幣類型具有鍵和存儲的功能。鍵意味着它可以作為一個對象使用。這允許用戶直接擁有幣(作為一個頂層對象)。當你擁有一個幣時,除你之外,其他人甚至不能在交易中引用它(更不用說使用它)。存儲意味着,幣可以作為一個字段嵌入到另一個結構中,這對於可組合性很有用。 由於沒有丢棄功能,幣不能在函數中被意外丢棄(銷毀)。這是一個非常好的特性──它意味着你不會意外地丢失一個幣。如果你正在實現以接收硬幣為參數的函數,在函數結束時,你需要明確地對它做一些事情──把它轉移給用戶,把它嵌入另一個對象,或者通過調用把它送入另一個函數(同樣需要對它做一些事情)。當然,通過調用幣模塊中的coin::burn函數來銷毀一個幣是可能的,但你需要有目的地這樣做(你不會這樣意外操作的)。 沒有克隆能力意味着沒有人可以複制幣,從而憑空創造新的供應。創造新的供應可以通過coin::mint函數來完成,而且只能由該幣的國庫能力對象(treasury capability)的所有者調用。 另外,由於泛型(generics)的存在,每個不同的硬幣都是獨特類型。由於兩個幣只能通過coin::join函數加在一起(而不是直接訪問它們的字段),這意味着不可能把不同類型的幣值加在一起(幣A+幣B)──因為沒有這種簽名的函數。類型系統能夠保護我們免受壞賬影響。 在Move中,資源的安全性由其類型定義。考慮到Move有全局類型系統,這使編程模型更自然和更安全,資源可以直接傳入和傳出不受信任的代碼。 4.3. 字節碼驗證 如前所述,移動智能合約是作為模塊發布的。任何人都被允許創建並上傳任何任意模塊到區塊鏈上,由任何人執行。我們也已經看到,Move對結構體的使用方式有一定規則。 那麼,是甚麼保證了這些規則被任意模塊所遵守?是甚麼阻止了人們上傳具有特殊制作字節碼的模塊,例如接收一個幣對象,然後直接改變其內部字段來繞過這些規則?通過這樣做,可以非法地增加所有幣的數量。光是字節碼的語法就肯定允許這樣做。 字節碼驗證可有防止這種類型的濫用。Move驗證器是一個靜態分析工具,它分析Move字節碼並確定它是否遵守所需的類型、內存和資源安全規則。所有上傳到鏈上的代碼都需要通過驗證器。當你試圖上傳一個Move模塊到鏈上時,節點和驗證器將首先通過驗證器運行,然後才允許提交。如果任何模塊試圖繞過Move的安全規則,它將被驗證器拒絕,並且不會被發布。 Move字節碼和驗證器是Move的核心創新之處。它實現了一個以資源為中心的直觀編程模型,在其他處是無法實現的。最關鍵的是,它允許結構化類型跨越信任邊界而不失去其完整性。 在Solana上,智能合約是程序,而在Move中,它們是模塊。這似乎只是一個語義上的差異,但事實並非如此,具有重大意義。區別在於,在Solana上,跨程序邊界是沒有類型安全的──每個程序通過手動從原始賬戶數據解碼來加載實例,這需要手動進行關鍵的安全檢查,也沒有本地資源安全。相反,資源安全必須由每個智能合約單獨實現。這確實能夠實現足夠的可編程性,但與Move的模式相比,它在很大程度上阻礙了可組合性和人機工程學,因為Move的模式對資源有原生支持,它們可以安全地流入和流出不信的代碼。 在Move中,類型確實存在於各個模塊中──類型系統是全局的。這意味着不需要CPI調用,賬戶編碼/解碼,賬戶所有權檢查等──你只需直接調用另一個模塊中的函數與參數。整個智能合約的類型和資源安全由編譯/發布時的字節碼驗證來保證,不需要像Solana那樣在智能合約層面上實現,然後在運行時檢查。 5. Solana與Move 現在我們已經看到了Move編程如何工作,根本安全的原因。那麼讓我們從可組合性、人機工程學和安全性的角度深入了解一下這對智能合約編程有甚麼樣的影響。在這裏,我將把Move/Sui的開發與EVM和Rust/Solana/Anchor進行比較,以幫助理解Move的編程模型所帶來的好處。 5.1. 閃電貸 閃電貸是DeFi中的一種貸款類型,貸款金額必須在借入的同一交易中償還。這樣做的主要好處是,由於交易是原子性的,貸款可以完全沒有抵押。這可以用來在資產之間進行套利,而不需要有本金。 實現這一目標的主要困難是──你如何從閃電貸智能合約中,保證貸款金額將在同一交易中得到償還?為了使貸款無需抵押,交易需要是原子性的──也就是說,如果貸款金額沒有在同一交易中被償還,整個交易需要失敗。 EVM有動態調度,所以可以使用重入性(reentrancy)來實現這一點,如下所示: 閃電貸用戶創建並上傳自定義智能合約,當調用該合約時,將通過調用將控制權傳遞給閃電貸智能合約 然後,閃電貸智能合約將向自定義智能合約發送請求的貸款金額,並調用自定義智能合約中的executeOperation()回調函數。 然後,自定義智能合約將使用收到的貸款金額來執行它所需要的操作(如套利)。 在自定義智能合約完成其操作後,它需要將借出的金額返回給閃電貸智能合約。 這樣,自定義智能合約的executionOperation()就完成了,控制權將返回給閃電貸智能合約,它將檢查貸款金額是否已經正確返回。 如果自定義智能合約沒有正確返回貸款金額,整個交易將失敗。 這很好地實現了所需的功能,但問題是,它依賴於可重入性,我們非常希望它不要出現在在智能合約編程中。因為可重入性本質上非常危險,是許多漏洞的根本原因,包括臭名昭著的DAO黑客襲擊。 Solana在這方面做得更好,因為它不允許重入。但是,如果沒有可重入性,如果閃電貸款智能合約無法回調到自定義智能合約,如該何在Solana上實現閃電貸款?多虧了指令自省( instruction introspection)。在Solana上,每個交易由多個指令(智能合約調用)組成,從任何指令中你都可以檢查同一交易中存在的其他指令(它們的程序ID、指令數據和賬戶)。這使得實現閃存貸款成為可能,具體如下: 閃電貸款智能合約實現借款(borrow)和還款(repay)指令 用戶通過在同一交易中把借款和還款指令的調用堆叠在一起,創建一個閃電貸交易。借款指令在執行時,將使用指令自省檢查償還指令是否安排在同一交易的後期。如果償還指令的調用不存在或無效,交易將在這個階段失敗。 在借款和還款的調用之間,借來的資金可以被任何其他處於兩者之間的指令任意使用。 在交易結束時,還款指令調用將把資金返還給閃電放款人智能合約 (該指令的存在將在借款指令的反思中進行檢查) 這個解決方案足夠好,但仍不理想。指令自省在某種程度上是一個特例,在Solana中並不常用,它的使用要求開發者掌握大量概念,其實現本身也有很大技術要求,因為有一些細微差別需要適當考慮。還有一個技術上的限──-償還指令需要靜態地存在於交易中,因此不可能在交易執行期間通過CPI調用動態地調用償還。這並不是甚麼大問題,但在與其他智能合約整合時,它在一定程度上限制了代碼的靈活性,也將更多複雜性推向客戶端。 Move也禁止動態調度和重入,但與Solana不同的是,它有一個非常簡單和自然的閃電貸解決方案。Move的線性類型系統允許創建結構,保證在交易執行過程中正好被消耗一次。這就是所謂的 「燙手山芋」(Hot Potato)模式──一個沒有鍵、存儲、删除或克隆功能的結構。實現這種模式的模塊通常會有一個實例化結構的函數和一個銷毀結構的函數。由於」燙手山芋」結構沒有丢棄、鍵或存儲功能,因此可以保證它的銷毀(destroy)函數能被調用,以此來消耗它。盡管我們可以將其傳遞給任何模塊中的任何其他函數,但最終它還是需要在銷毀函數結束。因為沒有其他方法來處理它,而且驗證器要求在交易結束時對它進行處理(它不能被任意丢棄,因為沒有丢棄功能)。 讓我們看看如何利用這一點來實現閃電貸。 閃電貸智能合約實現了一個「燙手山芋」的收據(Receipt)結構 當通過調用貸款函數進行貸款時,它將向調用者發送兩個對象──請求的資金(一個幣)和一個收據,是需要償還貸款金額的記錄。 然後,借款人可以將收到的資金用於其需要的操作(如套利)。 在借款人完成其預期的操作後,它需要調用還款函數,該函數將收到借款資金和收據作為參數。這個函數被保證在同一個交易中被調用,因為調用者沒有其他辦法擺脫收據實例(它不允許被丢棄或嵌入到另一個對象中,這是驗證器所要求的)。 還款函數通過讀取嵌入在收據中的貸款信息來檢查是否已返回正確的金額。 Move的資源安全特性使Move中的閃電貸成為可能,而無需使用重入或自省。它們保證了收據不能被不受信任的代碼所修改,並且它需要在交易結束時被返回給還款函數。這樣,我們可以保證在同一個交易中返回正確的資金數額。 該功能完全使用基本的語言原語實現,Move的實現不會像Solana的實現那樣受到集成問題的影響,因為後者需要交易是精心設置的。沒有任何複雜性被推到客戶端。 閃電貸很好展示Move的線性類型系統和資源安全保障如何使我們以其他編程語言無法實現的方式去表達功能。 5.2. 鑄幣權限鎖(Mint Authority Lock) 「鑄幣權限鎖」智能合約擴展了代幣鑄造的功能,允許多個白名單方(authority)鑄造代幣。該智能合約的所需功能如下(同時適用於Solana和Sui的實現): 原始的代幣鑄幣權限方創建一個「鑄幣鎖」,這將使我們的智能合約能夠監管鑄幣。調用者成為該鑄幣鎖的管理員。 管理員可以為該鎖創建額外的鑄幣授權,可以授權給其他各方,並允許他隨時使用該鎖來鑄造代幣。 每個鑄幣授權都有 每日可以鑄造的代幣數量限制。 管理員可以在任何時候禁止(和解除)任何鑄幣權限方。 管理員的能力可以轉讓給另一方。 這個智能合約可用於,例如將代幣的鑄幣能力交給其他用戶或智能合約,而原來的鑄幣權限方(管理員)仍然保留對鑄幣的控制權。不然,我們將不得不把鑄幣的全部控制權交給另一方,這並不理想,因為我們只得相信它不會濫用該權力。而且給多方提供許可也是不可能的。 這些智能合約的完整實現可以在這裏(Solana)和這裏(Sui)找到。 注意:請不要在生產中使用這段代碼! 這是示例代碼,僅用於教育目的。雖然我已經測試了它的功能,但我還沒有做徹底的審計或安全測試。 現在讓我們來看看這些代碼,看看實現方式有甚麼不同。下面是這個智能合約的完整Solana和Sui實現的並排代碼截圖。 可以注意到的是,對於相同的功能,Solana的實現的規模是Sui的兩倍多(230 LOC vs 104)。這是一個大問題,因為更少代碼通常意味着更少錯誤和更短開發時間。 那麼,Solana的這些額外行數是怎麼來的呢?如果我們仔細看Solana的代碼,我們可以把它分為兩個部分──指令實現(智能合約邏輯)和賬戶檢查。指令實現與我們在Sui上的情況比較接近-──Solana136行,Sui上104行。額外的行數源於兩個CPI調用的引用(每個大約10個LOC)。最重要的差異是在賬戶檢查(在上面的截圖中標為紅色的部分),這在Solana上是必須的(事實上是關鍵的),但在Move中不是。帳戶檢查佔這個智能合約的大約40%(91 LOC)。 Move不需要賬戶檢查。LOC的減少能夠帶來利處,但同時去除做賬戶檢查也十分必要。因為事實證明,正確實施這些檢查是非常棘手的,如果你在犯了哪怕一個錯誤,往往會導致重大漏洞和用戶資金的損失。事實上,一些最大的(就用戶資金損失而言)Solana智能合約漏洞就是由不當的賬戶檢查引起的賬戶替換攻擊。 -Wormhole(3.36億美元) - https://rekt.news/wormhole-rekt/-Cashio (4800萬美元) - https://rekt.news/cashio-rekt/-Crema Finance (880萬美元) - https://rekt.news/crema-finance-rekt/ 那麼,Move是如何做到沒有這些檢查又同樣安全的呢?讓我們仔細看看這些檢查的實際作用。這裏是mint_to指令所需的賬戶檢查(權限持有人通過調用這個指令來鑄造代幣): 有6個檢查(用紅色標出): 1. 檢查所提供的鎖賬戶是否為該智能合約所擁有,並且是MintLock類型的。需要傳入鎖,因為要用於CPI調用,到代幣程序進行鑄幣(它存儲了權限)。 2.檢查所提供的鑄幣權限賬戶是否屬於所提供的鎖。鑄幣權限賬戶持有權限狀態(它的公鑰,它是否被禁止,等等)。 3.檢查指令調用者是否擁有該權限的所需密鑰(所需權威簽署了該交易)。 4.需要傳入代幣目標賬戶,因為代幣程序將在CPI調用中更改它(增加餘額)。鑄幣檢查在此處並不是嚴格必要的,因為如果傳入了錯誤賬戶,CPI調用就會失敗,但這個檢查還是很好的做法。 5.與4類似。 6.檢查代幣程序賬戶是否被正確傳入。 我們可以看到,賬戶檢查(在這個例子中)分為這五類: 帳戶所有權檢查(1,2,4,5) 帳戶類型檢查(1、2、4、5) 帳戶實例檢查 (某一賬戶類型的正確實例是否被傳入)(2,5) 賬戶簽名檢查 (3) 程序賬戶地址檢查 (6) 但在Move中,沒有賬戶檢查或類似的東西,只有功能簽名: mint_balance函數只需要四個參數。在這四個參數中,只有lock和cap代表對象(有點類似於賬戶)。 在Solana中,我們需要聲明6個賬戶,並手動實現對它們的各種檢查,而在Move中,我們只需要傳入2個對象,而且不需要明確的檢查,這是如何實現的? 在Move中,這些檢查有些是由運行透明地完成的,有些是由驗證器在編譯時靜態地完成的,而有些則是在構造上根本不需要的。 賬戶所有權檢查──Move有類型系統,因此這種設計不必要。一個Move結構只能通過其模塊中定義的函數進行改動,而不能直接改動。字節碼驗證保證了結構實例可以自由地流入不受信任的代碼(其他模塊)而不被非法改動。 賬戶類型檢查──沒有必要,因為Move類型存在於整個智能合約中。類型定義被嵌入到模塊二進制文件中(在區塊鏈上發布並由虛擬機執行)。驗證器將檢查,編譯/發布期間,我們的函數被調用時,正確的類型是否被傳遞。 賬戶實例檢查──在Move中(有時在Solana上也是如此),你會在函數主體中做這件事。在這個特例中,這是沒有必要的,因為鎖和cap參數類型的通用類型參數T強制要求對cap(鑄幣能力/權限)對象的傳入要正確匹配其鎖(每個幣類型T只能有一個鎖)。 帳戶簽名檢查──我們在Sui中不直接處理簽名。對象可以由用戶擁有。造幣權限由造幣權限能力對象的所有權授予(由管理員創建)。在mint_balance函數中傳遞對該對象的引用將允許我們進行鑄幣。自有對象只能由其所有者在交易中使用。換句話說,對象的簽名檢查是由運行透明地完成的。 從本質上講,Move利用字節碼驗證,以使數字資產的編程模型更加自然。Solana的模型圍繞賬戶所有權、簽名、CPI調用、PDA等。但我們退一步想一想,就會發現,我們並不想處理這些問題。它們與數字資產本身沒有任何關系──相反,我們不得不使用它們,因為這使我們能夠在Solana的編程模型中實現所需功能。 在Solana上,沒有字節碼驗證來保證更細化的類型或資源安全,你不能允許任何程序改動任何賬戶,所以引入賬戶所有權的概念是必要的。由於類似原因(沒有跨程序調用的類型/資源安全),也沒有可以進出程序的用戶所有對象的概念,相反,我們用賬戶簽名來證明權限。由於有時程序也需要能夠提供賬戶簽名,所以我們有PDA...... 雖然你可以在Solana上擁有與Move相同的跨程序類型和資源安全,但你必須使用低級別的構建模塊(賬戶簽名、PDA...)手動實現它。歸根結底,我們正在用低級別的基元來構建可編程的資源(線性類型)。而這就是賬戶檢查的作用──它們是實現類型安全和手動建模資源需進行的開支。 Move對資源進行原生的抽象,允許我們直接處理資源,而不需要引入任何低級的構建塊,如PDA。跨越智能合約邊界的類型和資源安全保障是由驗證者確保的,不需要手動實現。 5.3 Solana可組合性的局限性 我想再舉一個例子,強調Solana上智能合約可合成性的一些痛點。 我們在鑄幣權限鎖的例子中看到,與Sui相比,我們需要在Solana上聲明更多的輸入(Solana上的6個賬戶 vs. Sui上的2個對象的mint_to調用)。顯然,處理6個賬戶比處理2個對象更麻煩,特別是如果考慮到還需要為賬戶實現賬戶檢查。理論上來說這部分是可控的,但當我們開始在單一的調用中把多個不同智能合約組合在一起時會發生甚麼? 假設我們想創建一個智能合約,能夠做以下事情: 它從鑄幣權限鎖程序中擁有某個代幣的鑄幣權,可以進行鑄幣 當它被調用時,它將使用其權限來鑄造用戶指定數量的代幣,使用AMM將其交換為不同的代幣,並在同一指令中將其發送給用戶 這個例子的重點是為說明鑄幣權限鎖智能合約和AMM智能合約將如何被組合在一起。指令調用的賬戶檢查可能看起來像這樣: 17個賬戶。每個CPI調用(鑄幣和交換)5-6程序,加上程序賬戶。 在Sui上,一個相當的函數的簽名是這樣的: 只有3個對象。 為甚麼我們在Sui上傳遞的對象與Solana上的賬戶相比要少得多(3比17)?從根本上說,是因為在Move中我們能夠嵌入(包裹)它們。類型系統的安全保障使我們能夠做到這一點。 下面是一個Solana賬戶和Sui對象之間的比較,它們持有一個AMM池的狀態。 我們可以看到,在Solana上我們存儲了其他賬戶的地址(Pubkeys),它們就像指針一樣,並不存儲實際的數據。為了訪問這些賬戶,它們需要被單獨傳入,我們還需手動檢查正確的賬戶是否被傳入。在Move中,我們能夠將結構相互嵌入並直接訪問其值。我們可以混合和匹配來自任何模塊的類型,同時它們保留其資源和類型的安全保證,這都得益於Move的全局類型系統和資源安全,它們都由字節碼驗證所驅動。 但是,在組成多個智能合約時,不得不傳遞(並因此檢查)許多賬戶,這造成了相當大的實施複雜性,並具有安全影響。這些賬戶之間的關系可能相當錯綜複雜,在某種程度上,難以跟蹤所有必要的賬戶檢查及其是否正確實施。 其實,這就是我認為在Cashio漏洞中發生的情況(4800萬美元)。下面是該(不充分)賬戶檢查的分解,也由此導致了該漏洞。如你所見,這些賬戶檢查變得有些複雜。開發者充滿好的意圖進行正確檢查,但在某某程度上,精神壓力變得太大,就會非常容易出錯。賬戶越多,越容易出現錯誤。 Move的全局類型系統和更自然的編程模型,意味着我們可以在達到心理承受壓力的極限之前,以更大的安全性推動智能合約的構成。 附帶說明一下,Move的TCB(可信計算基礎)要比Rust/Anchor小得多。較小的TCB意味着需要進入智能合約編譯執行、被信任的的組件較少。這就減少了可能影響智能合約的漏洞表面積──TCB之外的漏洞不會影響智能合約的安全。 Move的設計考慮到了減少TCB──為盡可能減少TCB,Move做了許多決定。字節碼驗證器將許多由Move編譯器執行的檢查從TCB中移除,而在Rust/Anchor中,有更多的組件需要被信任,因此致命安全錯誤的表面積要更大。 6. Solana上的Move 我們能否在Solana上擁有Move,以及如何擁有? 6.1. 有全局類型安全的Anchor? 在我們開始研究之前,讓我們簡單看看Anchor,並做個小的思想實驗。也許我們可以以某種方式升級Anchor,來提供我們從Move中得到的一些好處?也許我們可以獲得對跨程序調用的類型安全的本地支持?畢竟,Anchor指令已經類似於Move的入口函數: 也許我們可以延伸Anchor,使賬戶能直接被傳入指令參數。 我們可以避免賬戶檢查? 在這種情況下,我們希望類型檢查由運行而不是程序來完成──運行將讀取Anchor賬戶判別器(或其等價物),並能夠檢查賬戶傳入是否符合所需的判別器(Anchor賬戶的前8個字節)。 Solana不對同一程序的不同指令調用進行區分,這是由程序手動實現的(在這種情況下,繁重的工作由Anchor完成)。因此,為了做到這一點,運行必須以某種方式了解不同指令、它們的簽名、類型信息。 Solana程序編譯為SBF(Solana Bytecode Format,eBPF的一種變體),並以這種方式上傳到鏈上(和執行)。SBF本身並沒有嵌入任何可以幫助我們的類型或函數信息。但也許我們可以修改SBF,以允許指令和類型信息被嵌入二進制文件中?這樣所需的指令和簽名信息就可以由運行從二進制文件中讀取。我們確實可以這樣做。這將要求相當大的工程量,特別是考慮到我們需要保持與舊程序的向後兼容,但這是我們能獲得的好處: -賬戶所有權和類型檢查由運行而不是程序完成 -對於在編譯時已知地址的賬戶(例如程序賬戶),我們可以避免從客戶端傳入它們,現在可以由運行傳入。 -如果我們設法將賬戶約束嵌入到二進制文件中,我們可以進一步減少必須由客戶端傳入的賬戶數量,用運行對其進行動態遞歸在加載(基於嵌入的約束信息)。 我們仍然沒有得到: -嵌入的賬戶。我們仍然必須使用Pubkeys來引用其他賬戶,而不能夠直接嵌入它們。這意味着我們沒有擺脫第5.3節中描述的賬戶臃腫的問題。 -當進行跨程序調用時,賬戶類型檢查仍然需要在運行時動態進行,而不是像Move中那樣在編譯時靜態進行。 注意:這只是一個思想實驗。並不說明其可以安全完成,也不是代表其實現困難,更不標榜這些好處值得付出工程量般的努力。 這些好處確實不錯,但從智能合約開發的角度來看,它們並沒有從根本上改變甚麼。在運行時而不是程序中做類型檢查可能能帶來一些性能上的好處,而且不必在編譯時從客戶端手動傳遞地址賬戶,在一定程度上提升工效(這也可以通過工具化來緩解)。但我們最終仍然在處理Solana的編程模型,它本身在處理數字資產上提供更多幫助──我們仍然沒有原生的資源安全,我們不能嵌入賬戶,所以仍然有賬戶膨脹問題,我們仍然在處理賬戶簽名和PDA...... 理想情況下,我們希望所有的智能合約都生活在一個單一的類型系統中,並且能夠像Move那樣自由地將對象傳入傳出。但由於其他智能合約不能被信任,我們不能直接這樣做。為了繞過這一點,Solana設有程序分離和賬戶所有權──每個程序管理自己的賬戶,它們通過CPI調用進行互動。這很安全,並允許足夠的可編程性,但由此產生的編程模型並不理想──沒有全局類型系統,也就沒有有實質意義的資源安全。 我們希望有一個自然的編程模型,但與此同時,我們也在處理不受信任的代碼。雖然在Solana上我們可以安全地處理不受信代碼,但在編程模型上上做出妥協。字節碼驗證使我們有可能同時擁有兩者。沒有它,我們似乎真的無法改善編程模型。 6.2 Solana字節碼格式 如前所述,SBF(Solana字節碼格式),即Solana智能合約的編譯和鏈上存儲格式,是基於eBPF的。在Solana上使用eBPF而不是任何其他字節碼格式(如WASM),主要是因為Solana對安全和高性能智能合約執行的要求,與eBPF設計的內核沙盒程序執行要求一致(它也需要安全和高性能) 從表面上看,eBPF確實是一個可靠的選擇。高性能、圍繞安全設計,程序的大小和指令的數量是有限的,有一個字節碼驗證器......看起來很有不錯。 但讓我們看看這在實踐中意味着甚麼。也許我們可以以某種方式利用eBPF驗證器來提高我們智能合約的安全性?以下是eBPF驗證器所做的一些事情: -不允許無限循環 -檢查程序是否是一個DAG(有向無環圖) -不允許越界跳轉(out-of-bounds jump) -在進行各種輔助(helper)函數調用時檢查參數類型(輔助函數在內核中進行定義,例如用於修改網絡數據包)。 好吧,禁止越界跳轉似乎很有用,但其他作用有限。事實上,強制要求程序必須是一個DAG並且沒有無限循環是有問題的,因為它大大限制了程序的可操作性(我們沒有圖靈完備性)。在eBPF程序中需要這樣做的原因是,驗證器需要確定程序在一定數量的指令內終止(這樣程序就不會使內核終止;這就是著名的停機問題),而氣體計量(gas metering)不是一個選項,因為它將太過影響性能。 雖然這種取舍對實現高性能的防火牆來說是很好的,但對於智能合約的開發來說就不那麼好了。eBPF驗證器的絕大部分都不能被重用在Solana程序上。事實上,Solana根本就沒有使用原始的eBPF驗證器,它使用的是一個(更基本的)自定義驗證器,主要是檢查指令是否正確和是否有越界跳轉。 同時,eBPF在設計上最多允許5個參數被傳遞給一個函數進行調用。這意味着Rust標準庫不能直接編譯到eBPF。或棧的大小被限制在512字節,這減少了我們可以傳遞給一個函數的參數的大小而不需要堆分配(heap allocation)。 因此,即使Rust編譯到LLVM,有LLVM的eBPF後端,甚至支持Rust編譯器針對eBPF使用,你仍然無法使Solana智能合約以其本來的樣子編譯到eBPF上。這就是為甚麼Solana團隊不得不對Rust代碼庫和eBPF LLVM後端(例如,通過棧傳遞參數)進行多次修改。 由於其中一些修改本身是支持上遊(無論是Rust還是LLVM),所以Solana團隊目前在維護Rust和LLVM的分叉時都做了這些修改。當你執行cargo build-bpf(構建Solana智能合約的典型命令)時,Cargo會拉出這個Solana特定版本的rustc(Rust編程語言的編譯器)來進行智能合約的編譯(原來的rustc不起作用)。 這就是SBF的誕生過程──Solana需要的一些要求與eBPF不兼容。Solana團隊目前正在努力將SBF作為一個獨立的LLVM後端上流,並將其作為一個Rust目標加入,以避免維護單獨分叉。 因此,雖然eBPF可以作為智能合約的一種格式,但它並不像表上看起來那麼理想。它需要進行一些修改,而且原來的驗證器也沒有很大的用處。 在關於Move和Solana/SBF的討論中,一個誤解就是,一些人認為Move的主要思想應該適用於SBF,因為它是基於eBPF的,也許可以利用其驗證器做靜態的賬戶改動檢查,而不是在運行時做動態檢查。 在我看來,這是一個令人懷疑的說法。即使有可能證明,程序不會在eBPF中改動他們不擁有的賬戶,這也確實是Move在做的事情,但這肯定不是Move的主要想法。 Move的主要思想是創造一個以資源為中心的編程模型,能夠自然地與不可信代碼互動。 在實踐中,這意味着: 全局類型安全 資源安全(鍵、克隆、存儲、丢棄) 可嵌入的資源 資源安全地流入和流出不受信任的代碼 ... 將主要的Move思想引入eBPF/SBF非常難。如果不對eBPF進行重大修改,強制執行一些特性比如「這個不受信任的代碼不能丢棄一個T」是不可能的。這需要大量修改,以至於你最終會得到一個新的字節碼,它看起來更像Move而不是eBPF。 事實上,類似的思路是導致Move誕生的首要原因。Move團隊(當時在Diem)最初考慮從其他格式出發,如WASM、JVM或CLR,但事後添加這個實在是太難了──線性/能力是非常規的。所以Move是從頭開始設計的,其想法是通過輕量級的驗證器通道來有效執行這些檢查。 如果你仔細想想,這其實並不令人驚訝。畢竟最終,智能合約編程不是系統編程,後端編程,或任何一種其他傳統編程,它是一種完全不同的編程類型。所以現有字節碼和指令格式的功能不能被利用也就不足為奇了,因為它們在設計時考慮的是完全不同的使用情況。 我不是在批評Solana使用eBPF。事實上,我認為這是一個非常可靠的選擇,也是團隊考慮到背景的良好判斷。事後來看,團隊可能會選擇WASM而不是eBPF,這樣就可以避免前面提到的將智能合約編譯成eBPF的問題,因為WASM在Rust中有一流的支持(不過WASM可能會有其他問題),但可以看到,考慮到對性能的強調,團隊可能覺得eBPF是一個更安全的選擇。另外,在做出這些設計選擇的時候,Move甚至還沒有進行宣布,對於一個初創公司來說,從頭開始創建一種新語言肯定不是一個合理的選擇。最終,Solana設法提供了一個成功的高性能L1,這才是最重要的。 有三種方法可以在Solana上獲得Move: 將Move虛擬機作為一個本地加載器添加(與SBF虛擬機一起) 將Move虛擬機作為一個程序運行(如Neon) 將Move編譯為SBF(像Solang) 讓我們先來討論(3)。這裏的想法是為Move建立一個LLVM前端,以便將其編譯為SBF。編譯成SBF的Move智能合約被透明地執行,就像用Rust(或其他任何可以編譯成SBF的語言)構建的智能合約一樣,而且運行時不需要對Move有任何區分或了解。從運行角度來看,這將是一個非常優雅的解決方案,因為它不需要改變它或它的安全假設。 但我認為以這種方式開發智能合約會比直接使用Anchor更糟。你通過(3)得到的是Solana編程模型中的Move語法。這意味着第五章中討論的Move的所有重要優勢(全局類型安全、全局資源安全、可嵌入對象......)將不複存在。相反,我們仍將不得不處理賬戶檢查、CPI調用、PDA等問題,就像在Rust中一樣。而且,由於Move不支持宏(macro),因此使用eDSL實現一個像Anchor這樣的框架,來簡化其中的一些工作是不可能的,所以代碼將與原始Rust相似(但可能更糟糕)。Rust標準庫和生態系統也是不可用的,所以像賬戶序列化和反序列化這樣的事情必須在Move中重新實現。 Move不是很適合與其他編程模型一起使用。這是因為它被特別設計為能夠編譯成Move字節碼,並通過驗證器。考慮到圍繞能力和借貸檢查器的自定義規則,這是必要的。其字節碼驗證十分特殊具體,以至於其他語言幾乎沒有機會編譯成Move字節碼並通過驗證器。因為Move圍繞這種非常特殊的字節碼驗證而設,所以它不像Rust等語言那樣靈活。 剝離字節碼就放棄了Move的所有主要優勢。雖然Move的類型、資源和內存安全特性會在程序級別上被保留,但它們不會被全局保留。而程序級的安全並沒有帶來多少新的結果──通過Rust我們已經實現了這些結果。 Move的智能合約生態系統也不能在Solana上使用──編程模型不同,以至於智能合約的重要部分必須被重寫。考慮到所有這些,我預計用(3)實現Move的做法不會被接受。 至於(1),這裏的想法是(與SBF加載器一起)在運行時添加對Move加載器的支持。Move智能合約將被存儲為鏈上的Move字節碼,並由Move VM執行(就像在Sui中一樣)。這意味着我們將有一個SBF智能合約的生態系統和一個Move智能合約的生態系統,前者將在當前的Solana編程模型上運行,而後者則在一個(可以說是更高級的)Move模型上運行。 有了這種方法,就有可能保持Move智能合約之間相互作用的所有好處,但這裏的一個挑戰是讓Move智能合約能夠與SBF智能合約進行互動,反之亦然──你需要一個對Move和Solana有深刻理解的人,驗證器也必須進行調整。 還有一個缺點是需要在運行時維護兩個不同的加載器。這會對安全有影響,因為它意味着攻擊面會翻倍──任何一個加載器的錯誤都可能意味着整個鏈被利用。實際上早在2019年,Solana就加入了對MoveVM的早期支持(#5150),但後來由於安全問題而被移除(#11184)。 至於(2),想法是將整個Move VM作為一個Solana程序(智能合約)運行。Move VM是用Rust實現的,所以可能會把它編譯成SBF(除非它使用線程或其他不支持的API)。雖然這聽起來很瘋狂,但Neon已經實現了類似的方法,將EVM作為一個Solana程序來運行。這種方法的好處是,不需要對運行進行修改,而且可以保持相同的安全假設。 我不熟悉Move VM的技術細節,所以我不能對這種做法的可行性以及它的局限性做太多評論。我的第一個反應是,驗證器也必須作為一個程序運行,這意味着在計算預算內。這種方法也會像(1)一樣,受到SBF和Move智能合約之間互操作性問題的影響。 沒有直接的方法可以將Move的主要功能帶到Solana。雖然有可能建立一個LLVM前端,並將Move編譯為SBF,但這不會起太多作用,因為編程模型將保持不變。正如第6.1節中的思想實驗所說明的那樣,如果沒有某種字節碼驗證,就無法改善編程模型。改變eBPF/SBF以支持字節碼驗證將是非常困難的。似乎唯一合理的選擇就是以某種方式讓MoveVM運行。但這意味着將有兩個生態系統在不同的編程模型上運行,而讓它們正確地互操作是極具挑戰性。 6.4. Move的性能 Move的字節碼不是一種通用的字節碼語言。它有一個非常有「主見」的類型系統,為允許所有必要驗證,它是相當高級的。這意味着與其他字節碼格式(如eBPF/SBF)相比,其性能較低,因為後者更接近於本地代碼,人們可能會認為這對於其在高性能L1中的使用是一個問題。 但是,到目前為止,智能合約的執行在Solana(在寫這篇文章的時候,平均有3k TPS)和Sui(基於團隊所做的最初e2e基準)上都還未成為瓶頸。提高交易處理性能的主要方式就是並行執行。Solana和Sui都實現了這一點,它們要求事先聲明依賴關系,並對依賴不同對象/賬戶集的事務執行進行並行調度。 此外,一旦TX執行出現在關鍵路徑上,沒有任何東西可以阻止Move被AOT編譯或JIT化以提高性能。這就是為Move構建一個LLVM前端的好處所在。另外,由於Move本身對靜態分析的適應性,Move也可能取得特有的進一步優化。 考慮到所有這些,我希望Move的性能在可預見的未來不會成為一個重要的障礙。 7. Move其他功能 7.1. 驗證器 Move有一個用於智能合約的形式化驗證工具,叫做Move Prover。通過這個工具,你能夠判斷不同的不變量對你的智能合約是否成立。在幕後,驗證條件被翻譯成SMT公式,然後使用SMT求解器進行檢查。這與模糊測試有很大不同,例如,模糊測試是通過走查輸入空間來試錯。例如,如果模糊測試和單元/集成測試未能測試出特定的輸入或輸入組合,顯示程序有誤,那麼它們仍然可以提供一個假陽性。另一方面,驗證器本質上提供了形式上的證明,即指定的不變量對所提供的程序成立。這就像針對所有可能的輸入檢查程序一樣,但不需要這樣做。 移動驗證器的速度非常快,使它可以像類型檢查器或linter那樣被整合到常規開發工作流程中。 下面是一個驗證器的例子(摘自《用Move Prover對智能合約進行快速可靠的形式驗證白皮書》)。 7.2. 錢包安全 由於Sui要求所有交易將訪問的對象都在函數參數中傳遞(不從全局狀態中動態加載),並且移動函數簽名連同類型信息都存儲在字節碼本身中,我們可以讓錢包在用戶簽名之前向用戶提供更有意義的信息,說明交易的內容。 例如,如果我們有一個具有以下簽名的函數: 我們可以從函數的簽名中看出,這個交易將訪問用戶的3個資產(資產類型)。不僅如此,根據&和&mut關鍵字(或沒有關鍵字),我們還可以知道資產1可以被讀取,資產2可以被改動(但不能轉移或銷毀),而資產3有可能被改動、轉移或銷毀。 錢包可以向用戶顯示這些信息,然後用戶可以更加了解交易可能對資產做出甚麼動作。如果有甚麼異樣,例如,來自Web3應用程序的交易調用正在接觸一些不應接觸的資產或幣,用戶可以觀察到這一點,決定不繼續進行交易。 錢包也可以另外模擬交易,這將給用戶提供更多關於其結果的信息。Sui編程模型以對象為中心,類型信息對運行原生,這意味無需對智能合約有任何具體的應用級知識,就能解釋對象的變化。 這在Solana上是不可能的,因為從運行的角度來看,賬戶包含任意數據。你需要賬戶的外部描述(特定於應用程序)才能對其進行解釋,而智能合約發布者未必提供這些信息。另外,Solana運行時中不存在資產所有權的概念,每個智能合約都需要手動實現這一語義(通常使用賬戶簽名和PDA),這意味着沒有通用方法來對此進行追蹤。 7.3 簡單交易和複雜交易 具體到Sui,在共識層面上有一個有趣的優化,允許某些類型的交易放棄完全的共識,轉而使用基於拜佔庭一致廣播(Byzantine Consistent Broadcast)的更簡單算法。這樣的好處是,這些交易可以在共識層面上並行,消除隊頭阻塞(head-of-line blocking),達成幾近即時的最終性──基本上實現了web2的可擴展性。 這是由於Sui對自有和共享對象的區分(見3.1節)。只涉及自有對象的交易(被稱為簡單交易)不需要在Sui上達成完全共識。由於自有對象除了發送者外不能在交易中使用,且發送者一次只能發送一個交易,這本身就意味着這些交易不需參照其他交易進行排序(總排序與因果排序)──我們知道交易中引用的對象不能被其他交易影響,且該交易也不能影響其他對象。因此,我們並不關心該事務相對於鏈上平行發生的其他事務的排序──這實際上是不相關的。Sui能夠利用這一事實,大大優化簡單事務的處理,在幾百毫秒內實現最終性。但缺點是,發送者一次只能發送一個交易。另一方面,涉及任何數量共享對象的交易(被稱為複雜交易),總是需要完全共識。 考慮到自有對象的創建、轉移和修改可以完全通過簡單事務完成,某些類型的應用可以很好地利用簡單事務。很好的例子是NFT(包括大規模造幣)和web3遊戲。這些用例從低延遲的最終性和消除對頭阻塞中獲益良多,實現了更好的用戶體驗和可擴展性。 但其他類型的應用程序必須依賴複雜交易。這包括大多數DeFi應用程序。例如,AMM流動性池需要成為一個共享對象,因為任何種類的交易所訂單執行都需完全共識和總排序。因為從根本上說,如果多個訂單同時來自不同用戶,我們需要就先執行誰的訂單達成一致,這就決定了每個用戶會得到甚麼樣的執行價格。 還有一些應用程序可以混合使用簡單和複雜交易。這些應用需要複雜交易才能實現它們所需功能,但在某些操作上可以利用簡單交易來獲得更好效率。例如,一個價格預言機就可以如此設計。我們可以讓多個發布者使用簡單交易,為市場提交價格數據,然後由一個權威機構使用複雜交易對價格進行彙總(例如,股權加權中值)。在某些時候不依靠複雜交易是不可能實現價格預言機的(根本原因是在其他交易中使用發布價格需要就排序達成一致,從而達成完全共識),但至少我們可以用簡單交易優化發布者的寫入。 Sui文檔有關於簡單和複雜交易的更多細節。 https://docs.sui.io/devnet/learn/sui-compared https://docs.sui.io/devnet/learn/how-sui-works#system-overview 8. 結束語 本文深入探討並比較Solana和Sui的編程模型,也對Move編程語言進行探討, 第二章是對Solana編程模型的總結,而第三章則介紹了Sui Move及其編程模型。第4章接着解釋了Move中的類型和資源安全如何運作。Move功能對智能合約開發的意義無法立竿見影,所以在第5章中,我利用現實生活中的例子對Solana和SuiMove進行了更徹底的比較。第6章討論了eBPF/SBF,表明讓Move功能或Move本身在Solana上工作並不容易。第7章討論了Sui的一些Move相關功能。 智能合約編程是關於數字資產的編程。可以說這是一種新的編程類型,與我們目前看到的其他類型編程(如系統、後台......)截然不同。正因如此,現有編程語言和編程模型自然不能很好適應這種用例。 問題的關鍵在於,我們希望有一個編程模型,能夠自然地與資源打交道,但同時又與不受信的代碼互動。Solana在這裏做了妥協,它使智能合約在一個不信任環境中具備了必要的可編程性,但其編程模型對於用資源編程來說並不自然。字節碼驗證使其有可能同時擁有這兩種特性。在某種程度上,它把不受信代碼變成了受信代碼。 Move是一種用於智能合約開發的新型編程語言。它的核心創新之處在於它的字節碼,被特意設計為可被驗證。雖然字節碼驗證本身並不是一個新概念,但Move所做的驗證確實是一種創新。通過其字節碼和驗證,Move實現了一個智能合約編程模型,對資源能夠有一流支持,並能保證在一個不受信任的環境中安全編程。 我認為Move對智能合約開發的作用就像React對前端開發的作用一樣。說「用Move做的事能用Rust做」就像說「用React做的事能用jQuery做」一樣。當然有可能實現基於jQuery的應用,能夠與React應用相當,但這並不實際。React引入了虛擬DOM的概念,這對開發者來說是完全易懂的的,但使前台的開發速度更快、可擴展、更簡單。同樣,Move的字節碼驗證是一種底層技術,對開發者來說也易於理解,但它提供了一個更符合人體工效學、可組合、更安全的智能合約開發。由於其安全性和更直觀的編程模型,Move也大大降低了智能合約開發者的準入門檻。 如果Move能設法獲得影響(有早期蹟象表明它會的),它可能對Solana構成極大威脅。有兩點原因。 首先Move智能合約的開發時間要快得多。在Move中從頭開始開發一個智能合約可能比在Rust中快2-5倍。因此,Move生態系統的發展可以超過Solana。由於區塊鏈的開放性和無許可性,不存在嚴重的鎖定效應,流動性可以輕松移動。Solana的開發者可能純粹因為經濟考量而被迫採用Move──要麼轉到Move,要麼被Move的開發者超越,因為他們能更快開發出更安全的智能合約。如果你要雇傭一個智能合約開發者,你可以雇傭一個Rust開發者,能建立一個智能合約,或者雇傭一個Move開發者,能在同樣時間內建立兩個更安全的智能合約。這類似於React對前端開發的影響。 第二,Move的入門門檻比Rust或Solidity低得多。因為Move語法更簡單,編程模型更直觀。一些開發人員無法用Rust或Solidity進行智能合約開發,但在Move中可能能夠進行。由於需要學習的概念較少,非智能合約開發者進入Move,要比進入Rust(Rust本身就是一種複雜的語言,再加上Solana的概念,如PDA,會給初學者帶來很多困惑)或Solidity(你需要熟悉語言中非常精細的細節,如重入,以便能夠開發安全的智能合約)容易得多。即使現有Solana和Solidity開發者不轉向Move,尚未進入該領域的開發者市場也比該領域現有的開發者數量多出好幾個量級。由於Move的準入門檻較低,且開發速度更快,它比Rust或Solidity有更好的產品市場適應性,可以從這塊蛋糕中分得更大一杯羹。如果新的開發者開始大量湧入,我希望他們從Move開始,而不是Rust或Solidity。這也類似於React在網絡行業的情況。 正因如此,我完全可以預料,在中長期內,Solana會加入對Move進行一流支持。但這並容易。為了獲得Move的主要好處,Move字節碼需要得到本地支持,這意味着簡單地將Move編譯成eBPF/SBF是不可能的(見第6.3節)。為了保持現有生態系統,兩種運行都需要得到支持。主要的技術挑戰是如何在運行之間實現適當的互操。這需要對Move和Solana的深入了解,所以我希望Solana團隊能在Move團隊的支持下對此進行直接推動。 Move起源於Meta(née Facebook)的Diem項目。Move團隊由Sam Blackshear領導,其任務是弄清楚如何處理智能合約。在仔細研究了這個問題後,他們發現智能合約的編程都是關於數字資產(資源),但現有語言都不支持該用例,於是決定從頭開始建立一種新的編程語言。 我想強調的是,創建一門新語言並不是突然做出的決定,它需要多年的努力才能落地,因為在大多數情況下,使用現有解決方案會更好。Move團隊正確預見到,一種安全、對資源有一流支持、同時又足夠靈活的智能合約語言是可以建立的,僅此一點就顯示出他們高度的專業性。這是團隊和支持該項目的Novi/Meta領導層的一個大膽舉動(會有一些董事和副總裁參與)。Meta後來停止了他們在Diem上的努力,並最終沒能夠收獲其在Move上的投資成果。但它為更廣泛加密貨幣社區做出了偉大貢獻。 總而言之,Move是一項了不起的技術,我相信它會對我們如何開發智能合約產生巨大影響。 轉載文章連結:https://www.chaincatcher.com/article/2079280本文章挑選自鏈捕手公鏈挑戰者原文標題:《Smart Contract Development—Move vs.Rust》作者:Krešimir Klas、Move 語言創辦人編譯:郭倩雯、鏈捕手 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
Allen -
詳解 Layer1 並行執行:Aptos、Sui、Linera 和 Fuel 如何實現?
在下輪市場中,一些採用並行執行理念的著名項目即將出現,這些項目的名單是 Aptos、Sui、Linera 和 Fuel。 當我們重新審視區塊鏈技術的演變時,可以看到一個強勁的趨勢正在顯現,即新的 L1 注重並行執行。 這並不是甚麼新鮮技術,目前 Solana 就在 Sealevel 的執行環境中使用。 然而,在過去的牛市中,DeFi 和 NFT 令人印象深刻的表現也讓人們意識到,技術迫切需要改進。 在下輪市場中,一些採用並行執行理念的著名項目即將出現,這些項目的名單是 Aptos、Sui、Linera 和 Fuel。 本文將會討論這些項目的異同,以及它們所面臨的挑戰。 問題 智能合約平台可以創建廣泛的去中心化應用程序。為了執行這些應用,需要一個共享的計算引擎。網絡中的每個節點都運行這個計算引擎,以及執行應用程序和用戶與應用程序的互動。當節點從執行中得到相同的結果時,他們就會達成共識,並推動鏈的運轉。 以太坊虛擬機是最主要的智能合約(SC)執行引擎,有大約 20 種不同的實現方式。 自 EVM 發明以來,它已經建立了開發人員採用的臨界質量。 除了以太坊和以太坊的 L2,其他幾個鏈包括 Polygon、BNB 智能鏈和 Avalanche C 鏈都採用 EVM 作為執行引擎,並專注於改變共識機制以提高網絡吞吐量。 EVM 的一個主要限制性特征是交易的順序執行。EVM 基本上是一次執行一個交易,將所有其他交易擱置,直到交易執行完畢,區塊鏈狀態被更新。即使兩個交易是獨立的,例如,從 Alice 到 Bob 的付款和從 Carol 到 Dave 的另一個付款,EVM 不能並行執行這些交易。雖然這種執行模式允許有趣的用例,如閃電借貸,但它既沒有效率,也沒有可擴展性。 這種順序執行交易是網絡吞吐量的主要瓶頸之一: 首先,它導緻區塊中的交易執行時間更長,限制了區塊時間; 此外,它限制了可以添加到區塊中的交易數量,以使節點能夠執行交易並確認區塊。 以太坊的平均吞吐量約為 17 tx/秒。這種低吞吐量意味着在高活動期間,例如 NFT Mint,網絡礦工/驗證者不能處理所有的交易,隨之而來的是費用競標戰,以確保優先執行,推動交易費用上升。以太坊的平均費用在某些時候超過了 0.2 個 ETH(約 800 美元),許多用戶都因此不敢使用以太坊。 順序執行的第二個問題是網絡節點的低效率。順序指令執行不能從多個處理器核心中獲益,這導緻硬件利用率低,效率低下。這阻礙了可擴展性,並導緻不必要的能源消耗。 並行執行能解決這個問題嗎? EVM 結構的限制為並行執行(PE)的 L1 新領域創造了條件。並行允許在多個處理器內核之間劃分交易處理,提高硬件利用率,從而實現更好的可擴展性。在高吞吐量鏈中,增加硬件資源與可執行的交易數量直接相關。 在高頻活動期間,驗證者節點可以委托更多的核心來處理額外的交易負載。計算資源的動態擴展允許網絡在高需求時期實現更高的吞吐量,從而顯着改善用戶體驗。 這種方法的另一個優點是改善了交易確認的延遲,節點資源的動態擴展使得確認所有可能的網絡負載的低延遲交易成為可能。 交易不需要等待幾十或幾百個區塊,也不需要為優先確認而產生過多的費用。改進後的確認時間提高了交易的終結性,為低延遲區塊鏈打開了大門。保證執行交易的低延遲使幾個以前不可能實現的用例成為可能。 改變鏈式執行模式以允許 PE 並不是一個新的想法,一些項目已經對此進行了探索。一種方法是將 EVM 使用的會計模型從 Accounts 模型替換為 Unspent Transaction Output (UTXO) 模型。UTXO 執行模型在比特幣中使用,它允許並行處理交易,這使得它成為支付的理想選擇。 但由於 UXTO 的功能有限,需要進行擴展以實現智能合約所需的複雜互動。例如,Cardano 為此目的使用了擴展的 UTXO 模型,而 Findora 使用了混合 UTXO 模型,它實現了兩種會計模型並允許用戶在兩種模型之間更改資產類型。 PE 的另一種方法並不改變帳戶模型,而是專注於改善鏈狀態的架構和修改。例如 Solana 的 Sealevel 框架。 並行執行是如何工作的? 並行執行的工作方式是確定獨立的事務並同時執行它們。如果一個事務的執行會影響到另一個事務的執行,那麽兩個事務就是相關聯的。例如,同一池中的 AMM 事務是相關聯的,必須按順序執行。 雖然並行處理的概念聽起來很簡單,但困難就在細節中,主要的挑戰是如何有效地識別 "獨立 "交易。獨立交易的分類需要了解每筆交易如何改變區塊鏈內存或鏈狀態,與同一智能合約(如 AMM 池)互動的交易可以同時改變合約狀態,因此,不能同時執行。 以目前應用程序之間的可組合程度,識別是否相互關聯是一項具有挑戰性的任務。想象一下,一個將 UNI 換成 USDC 的 AMM 交易,AMM 發現執行它的最有效路線是 UNI -> ETH -> DAI -> AAVE -> USDC。所有參與該交易的池子不能處理任何其他交易,直到該交易完全執行,然後所有參與的池子的狀態才能被更新。 識別獨立交易 在本節中,對不同的並行執行引擎所使用的方法進行了比較。重點討論的是控制狀態(內存)訪問的方法。區塊鏈狀態可以被認為是一個 RAM 存儲器,每個鏈上的帳戶,或智能合約,都擁有一系列可以修改的內存位置。關聯交易是那些試圖改變同一區塊中相同內存位置的交易,不同的鏈利用不同的內存架構和不同的機制來識別這些交易。 這一類的幾條鏈都是建立在 Facebook 已消亡的區塊鏈項目 Diem 所開發的技術之上。Diem 團隊創建了智能合約語言 Move,專門改善 SC 的執行。Aptos、Sui 和 Linera 是屬於這一組的三個高知名度的項目。除了這個小組,Fuel 是另一個專注於 PE 的知名項目,使用自己的 SC 語言。 Aptos Aptos 建立在 Diem 的 Move 語言和 MoveVM 的基礎上,創建了一個高吞吐量的鏈,實現了並行執行。 Aptos 的方法是檢測關聯關系,同時對用戶/開發者透明,也就是說,不要求交易明確聲明它們使用哪一部分狀態(內存位置)。 Aptos 使用的是Software Transactional Memory(STM)的修改版,稱為 Block-STM。 在 Block-STM 中,交易在塊內被預先排序,並在處理器線程之間進行劃分,以便被執行。 在過程中,交易的執行都是假定沒有關聯關系。被交易修改的內存位置被記錄下來,執行後,所有交易的結果都被驗證。在驗證過程中,如果一個交易被發現訪問了被前面的交易修改過的內存位置,這個交易就會被廢止。該交易的結果被刷新,然後重新執行。 這個過程不斷重複,直到塊中的所有事務都被執行。 當使用多個處理器核心時,Block-STM 會加快執行速度,加速的多少來自於交易的相互關聯程度。 Aptos 團隊的結果表明,使用 32 個內核可以將高相互關聯性能提高 8 倍,將低相互關聯性能提高 16 倍。如果一個區塊中的所有交易都是相互依賴的,那麽與順序執行相比,Block-STM 會導緻性能上的輕微損失。Aptos 聲稱,這種方法可以實現 160,000 TPS 的吞吐量。 Sui 另一種 PE 方法是要求交易明確聲明他們所修改的鏈狀態部分,這種方法目前被 Solana 和 Sui 使用。 Solana 將內存單元稱為帳戶,而交易必須說明它修改了哪些帳戶。Sui 也使用了類似的方法。 Sui 也通過使用 MoveVM 建立在 Diem 的技術之上。然而,Sui 使用不同版本的 Move 語言。 Sui Move 的實現改變了 Diem 的核心存儲模型和資產權限,這代表了與使用核心 Diem Move 的 Aptos 的重大區別。 Sui Move 定義了一個狀態存儲模型,允許更容易識別獨立交易。 在 Sui 中,狀態存儲被定義為 Objects。Objects 通常代表資產,並且可以共享,這意味着多個用戶可以修改該對象。每個 Objects 在 Sui 執行環境中都有一個唯一的 ID,並有指向所有者地址的內部指針。通過使用這些概念,很容易通過檢查交易是否使用相同的 Objects 來識別關聯。 通過將聲明關聯關系的工作轉移給開發者,使執行引擎的實施變得更容易,這意味着理論上它可以有更好的性能和可擴展性。然而,這是以不太理想的開發者體驗為代價的。 Sui 還沒有啓動,最近剛剛推出了測試網。 Sui 的創始人聲稱,並行執行的實施以及使用 Narwhal 和 Tusk 共識機制導緻吞吐量超過 100,000 tx/秒。這個吞吐量,如果是真的,那麽它可能比 Solana 當前的約 2400 tx/秒的吞吐量有很大的提升,並且將超過 Visa 和 Mastercard 的吞吐量。 Linera Linera 是並行處理領域的最新成員,最近宣布了他們的第一輪融資,由 a16z 領投。關於項目實施的細節不多。然而,根據他們的融資公告帖子,我們知道它是基於同樣在 Facebook 開發的 FastPay 協議。 Fastpay 是基於一種叫做 Byzantine Consistent Broadcast 的技術,這項技術專注於加速獨立的支付,例如發生在銷售點網絡中的支付。它允許一組驗證者確保付款的完整性,隻要超過三分之二的驗證者是誠實的。快速支付是實時毛額結算(RTGS)系統的一個變種,用於銀行和金融機構之間的網絡。 在 FastPay 的基礎上,Linera 正計劃建立一個區塊鏈,通過並行執行支付交易,專注於快速結算和低延遲。值得注意的是,Sui 也使用 Byzantine Consistent Broadcast 的方式進行簡單的支付。對於其他交易,Sui 自己的共識機制 Narwhal 和 Tusk 被用於高效處理 DeFi 交易等更複雜的和有關系性的交易。 Fuel Fuel 專注於成為模塊化區塊鏈中的執行層,這意味着 Fuel 不實施共識或將區塊鏈的數據存儲在 Fuel 鏈上。對於功能性區塊鏈,Fuel 與其他鏈交互以達成共識和數據可用性,例如 Ethereum 或 Celestia。 Fuel 使用 UTXO 來創建嚴格的訪問列表,即用一個列表來控制對同一片狀態的訪問。這個模型建立在規範交易排序的概念之上。在這個方案中,區塊中的交易排序導緻了檢測交易之間的關聯關系的顯著簡化。為了實現這個架構,Fuel 公司建立了一個新的虛擬機,稱為 FuelVM 和一種新的語言,稱為 Sway。 FuelVM 是對 EVM 的一種兼容和簡化的表現,可以有效地讓開發者加入到 Fuel 的生態系統中。 此外,由於 Fuel 專注於模塊化區塊鏈,Fuel SC 的執行可以在以太坊主網上解決。這種方法與合併後以太坊的願景一緻,即作為以 Rollup 為中心的結算和數據可用性層。在這種架構中,Fuel 可以實現在以太坊上批量和結算的高吞吐量執行。 為了驗證該概念,Fuel 團隊已經創建了一個名為 SwaySwap 的 AMM,類似於 Uniswap,並在測試網上運行。目的是證明 FuelVM 與 EVM 相比性能更高。 並行執行方法的挑戰 並行執行的方法似乎是合乎邏輯和直接的,然而,目前我們仍然面臨着幾個挑戰。首先是估計使用這種並行執行方式可以加速的交易的實際比例。第二個挑戰是網絡的去中心化,也就是說,如果驗證者可以很容易地擴展計算能力以提高吞吐量,那麽完整節點如何跟上以確保鏈的正確性? 可並行交易的百分比 準確估計在任何鏈上可並行執行的鏈上交易的百分比是具有挑戰性的。此外,根據網絡活動的類型,這個百分比在區塊之間會有很大的變化。 例如,一個 NFT Mint 可能會導緻一個具有高百分比的關聯性交易的爆發。也就是說,我們可以使用一些假設來獲得可並行交易的平均百分比的粗略估計。 例如,我們可以假設大多數 ETH 和 ERC20 的轉移是獨立的,即從不同的地址發起並接收到不同的地址。所以我們可以假設約 25%的 ETH 和 ERC20 轉帳是相互關聯的,即向 SC 存款以及將交易所熱錢包的資產聚合到冷錢包。 另一方面,同一池中的所有 AMM 交易都是有關聯性的。鑒於大多數 AMM 通常由少數池子主導,而且 AMM 交易具有高度的可組合性,並與多個池子互動,我們可以安全地假設至少 50%的 AMM 交易都是相互關聯的。 通過對以太坊的交易類別進行分析,我們可以發現,在以太坊每天約 120 萬的交易中,20-30%是 ETH 轉帳,10-20%是穩定幣轉帳,10-15%是 DEX 轉帳,4-6%是 NFT 交易,8-10%是 ERC20 批準,12-15%是其他 ERC20 轉帳。 使用這些數字和假設,我們可以估計,PE 可以加速 SC 平台中大約 70-80%的交易。 這意味着關聯交易的順序執行佔所有交易的 20-30%。換句話說,如果使用相同的 Gas 限制,就有可能通過 PE 實現 3 倍-5 倍的吞吐量增長。 一些關於構建並行執行 EVM 的實驗顯示了類似的估計,其中可以持續實現 3-5 倍的吞吐量提高。 在實踐中,高吞吐量鏈使用更高的 Gas 限制和更短的塊時間來實現比至少 100 倍以太坊的吞吐量提高。增加的吞吐量需要強大的驗證節點來處理這些區塊,這一要求導緻了第二個挑戰,即網絡的中心化。 網絡的中心化 在高吞吐量的網絡中,網絡每秒可以處理數以萬計的交易。 驗證節點受到費用和網絡獎勵的激勵來處理這些交易,並投資於專用服務器或可擴展的雲架構來處理這些交易。而對於使用鏈並需要運行完整節點與鏈交互的公司或個人,情況並非如此。這些實體無法負擔複雜的服務器來處理這種大規模的交易負載。這將推動鏈上用戶依賴專門的 RPC 節點供應商,例如 Infura,從而導緻更多的中心化。 如果不選擇使用消費級硬件來運行完整節點,高吞吐量的鏈可能會變成一個封閉的系統,一小部分實體擁有對網絡的絕對權力。在這種情況下,這些實體可以協調審查交易、實體甚至應用程序,例如 Tornado Cash,它們可以將這些鏈轉變為與 Web 2 沒有甚麼不同的許可系統。 目前,在 Sui 測試網上運營一個完整節點的要求低於 Aptos 測試網節點的要求。然而,我們預計當主網啓動和應用程序開始在鏈上出現時,這些需求將發生重大變化。 去中心化的倡導者們一直在提出解決方案來解決這些預期的問題。這些解決方案包括使用輕型節點,通過使用 ZK 有效性證明或欺詐證明來驗證區塊的正確性。 Fuel 團隊在這方面很積極,與以太坊社區關於去中心化重要性的精神相一緻。並不清楚 Aptos 和 Sui 團隊是否優先實施這些方法或其他促進去中心化。Linera 團隊在他們的介紹帖子中簡要地討論了這些問題,但協議實施尚未確認這一承諾。 總結 並行執行引擎是提高智能合約平台吞吐量的有前途的解決方案。 結合共識機制的創新,交易的並行執行可以使鏈的吞吐量接近或超過 10 萬 TPS,這樣的性能可以與 Visa 和 Mastercard 相媲美,可以實現當今最具挑戰性的幾個用例,例如完全的鏈上遊戲和去中心化小額支付。 這些令人印象深刻的吞吐量改進並不是沒有挑戰,即關於如何確保去中心化,我們期待緻力於解決這些問題的創始人。 轉載文章連結:https://www.chaincatcher.com/article/2079204本文章挑選自鏈捕手公鏈挑戰者原文標題:《The Case for Parallel Processing Chains》原文作者:Mohamed Fouda原文編譯:深潮 TechFlow 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
BlockPulse -
每日精選 | Solana 將 Meta 編程語言 Move 納入開發戰略 | Coinbase 因涉嫌證券欺詐遭遇集體訴訟
中國人民銀行數字貨幣研究所所長穆長春表示,鼓勵全社會參與數字人民幣智能合約模板開發和應用創新。 精選新聞 1. 穆長春:鼓勵全社會參與數字人民幣智能合約模板開發和應用創新 中國人民銀行數字貨幣研究所所長穆長春 9 月 2 日在 2022 中國國際金融年度論壇上圍繞數字人民幣與智能合約進行主題演講。穆長春表示,在數字人民幣的頂層設計中,通過加載不影響貨幣功能的智能合約,實現了數字人民幣的可編程性,使數字人民幣在確保安全與合規的前提下,可以根據交易各方商定的條件、規則進行自動支付交易。 穆長春還表示,數字人民幣智能合約生態建設要堅持開放和開源的原則,鼓勵全社會共同參與合約模闆的開發和應用的創新,建立豐富、高效、便利的智能合約供給體系。數字人民幣智能合約生態服務平台可以成為手機應用市場一樣的開放平台,各類機構都能在這個平台上提供智能合約服務,並且可以像搭積木一樣,根據用戶意願組合使用,實現開放、開源、共建、共享。 據穆長春介紹,目前數字人民幣智能合約應用場景比較廣泛,已經在政府補貼、零售營銷、預付資金管理等領域成功應用。「數字人民幣智能合約可以降低經濟活動的履約成本,優化營商環境,推動數字經濟深化發展。隨着底層平台和相關制度安排的逐步完善,將在更大範圍內加速落地。」(原文連結) 2. Solana 已將 Meta 編程語言 Move 納入開發戰略 根據 Solana 基金會 GitHub 頁面信息顯示,團隊已將 Move 語言納入開發戰略,旨在提高開發人員興趣,推動社區開發活動。 據悉,Move 是由 Meta(原 Facebook)創建的一種編程語言,目前已成為 Web3 開發人員首選的編程語言之一。(原文連結) 3. 風投機構 1confirmation 創辦人 Nick Tomaino 推特改名為「1492.eth」 風投機構 1confirmation 創始合夥人 Nick Tomaino 將推特昵稱改為「1492.eth」,並表示「」1492 年哥倫布開始第一次航海。同時他稱 ENS 是完美的 NFT 系列,「有些人不認為 ENS 是 NFT,但事實是它是最廣泛持有的 NFT」。 據悉,6 月份 1confirmation 推出 1 億美元 NFT 基金,該基金將直接投資 NFT 並擁有 10 年生命周期,主要專注於投資其所支持的公司的新項目,如遊戲、藝術、攝影和音樂等類別的項目。(原文連結) 4. Coinbase 因涉嫌證券欺詐遭遇集體訴訟 Kessler Topaz Meltzer & Check, LLP 律師事務所稱 Coinbase Global, Inc. ( 「Coinbase」,納斯達克股票代碼:COIN)違反了聯邦證券法,包括與公司業務、運營和前景有關的遺漏和欺詐性虛假陳述。 具體而言, 該事務所認為 Coinbase 向 SEC 提交的與2021 年 4 月公司公開發售有關的註冊聲明和其他文件作出虛假或誤導性陳述或未能披露 Coinbase 內部人士突然增持 Coinbase Class A 類普通股,在 2021 年 4 月 14 日 Coinbase 股票公開交易的第一天,多名 Coinbase 內部人士出售了超過 700 萬股 Coinbase A 類普通股,其中包括當天開盤時的 130 萬多股,總共獲得超過 27 億美元來自此類銷售的收益。 據悉,Kessler Topaz Meltzer & Check, LLP 呼籲 Coinbase 投資者在不遲於2022 年 10 月 3 日之前,通過該律師事務所或其他律師尋求被任命為該類別的首席原告代表。(prnewswire) 5. 去中心化域名協議 SPACE ID 將於 9 月 14 日開始將競標收入分配給域名持有者 去中心化域名協議 SPACE ID 宣布將於 9 月 14 日開始將競標收入(1019 枚 BNB)分配給域名持有者。.bnb 域名預註冊活動共吸引 8984 名參與者註冊總計 23518 個域名。 近日,SPACE ID 宣布完成種子輪融資,Binance Labs 領投。(原文連結) 「過去24小時有哪些值得閱讀的精彩文章」 1.《詳解 NFT 借貸資金池清算機制:如何避免 BendDAO 式流動性危機?》 雖然BendDAO流動性危機已經暫時度過。但我們必須追問的是,躲過這一次小風浪,NFT 借貸池模式是否就萬事大吉了?其他NFT借貸池的清算機制是否還存在潛在風險,能不能經得起極端市場環境的考驗? 本文,我們將系統梳理NFT借貸池模式的幾個主要協議包括BendDAO、JPEG’d、Pine Loan和Drops DAO的清算機制,以及從用戶的角度如何該如何判斷從而控制風險。 2.《對話 Injective Labs 創辦人 Eric Chen:優質應用對底層公鏈的依附性正在變弱》 在加密市場持續走熊、DeFi 遇冷的周期之下,專注於 DeFi 建設的 Layer1 協議 Injective 近日完成了由 Jump Crypto 領投的 4000 萬美元融資。在Injective 上構建的 DeFi 衍生品平台是 DeFi 最具前景的市場之一,但其規模仍然處於非常早期的階段,大部分市場都由幣安、FTX 等中心化交易所佔據。在這樣的背景下,以 Injective 為代表的 Layer1 將如何破局?又有哪些彎道超車的機會? 近期,鏈捕手專訪了Injective Labs 的聯合創辦人兼CEO Eric Chen,並針對 DeFi 市場現存問題、未來發展格局展開深入討論。 3.《Babylon Finance 創辦人:選擇關閉的原因和得到的教訓》 8月31日,Babylon 創辦人 Ramon Recuero 發文表示協議將於今年11月中旬正式停止運營,主要原因是今年4月份 Rari/FEI 借貸礦池遭受的黑客攻擊為團隊帶來了無法挽回的損失。本文為 Ramon Recuero 的通告,創辦人在本文中詳述了為甚麼選擇關停協議,以及在運營 Babylon 項目時的經驗與教訓。 原文連結:https://www.chaincatcher.com/article/2079095本文章挑選自鏈捕手鏈捕手精選編輯:潤升、鏈捕手 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
Allen -
Move:Web3 的 JavaScript
Sui 和 Aptos 在並行執行事務方面與 Solana 相似,因此具有更高的吞吐量。然而,在運行完整的驗證節點時更接近以太坊,這將有助於社區驗證網絡的更大去中心化。 前言: 環顧 Twitter 帖子和加密出版物,Sui 和 Aptos 的名字總是出現。這些新的高吞吐量 L1 區塊鏈是怎麼回事?為甚麼它們會吸引 a16z、FTX、Multicoin 等公司的投資?我們發現這兩個區塊鏈都與 Diem 有着深厚的歷史淵源,並且都使用一種新的編程語言──Move。 在本文中,我們將深入探討 Move 的特性,並簡要介紹採用 Move 的 Sui、Aptos 等區塊鏈,然後回顧 Solidity/EVM 的誕生,最後對比 Move 和 MoveVM 是否可以打造屬於自己的充滿活力的生態系統。 簡易目錄: 一、Move的起源二、Move的優勢三、Move的開發生態四、Solidity/EVM:它如何成為最具活力的開發者生態系統五、Move語言的未來 一、Move 的起源 Move 是一種基於 Rust 的編程語言,它是為 Meta 的 Diem 區塊鏈項目而開發的。該團隊當時正在研究其他智能合約語言,但沒有一種語言具有稀缺性、確定性和可驗證性的特性,所以他們構建了 Move。 現有的 Move github源碼庫目前由 Mysten Labs 管理,Aptos 和 Sui 的團隊組成了 Move 的核心開發團隊。 Move 語言的願景就是成為 Web3 中的 Javascript,幫助開發人員安全、輕松、快速地構建區塊鏈應用程序的框架。 二、Move 的優勢 Move 與平台無關,支持跨區塊鏈的共享庫、工具和開發人員社區。Move 語言的設計強調安全性,旨在避免許多 Web3.0 用戶受害的情形,包括但不限於重入漏洞(re-entrancy vulnerabilities)、毒令牌(poison tokens)和欺騙性令牌批準(spoofed token approvals)等問題。數字資產也應該被視為資源,這意味着數字資產不能被隨意複制或意外破壞。 為了提供額外的保護,Move 可以用Move Prover 驗證工具輔助開發,該工具允許開發人員為其應用程序的關鍵特征編寫正式規範,並使用驗證器在 30 秒內檢查代碼的執行正確性。 三、Move 的開發生態 1、Mysten Labs 開發的 Sui (1)甚麼是 Sui,團隊背景是怎樣的? Mysten Labs 的 Sui 是一個分散的權益證明區塊鏈,具有水平可擴展的吞吐量和存儲的特性。 Mysten Labs 背後的團隊來自 Novi Research,這是 Meta 內部的高級區塊鏈研發部門,致力於 Diem 區塊鏈和 Move 編程語言的運行和加密。創始團隊包括 CEO Evan Cheng、CPO Adeniyi Abiodun、CTO Sam Blackshear(Move 的創始人)、首席科學家 George Danezis 和首席密碼學家 Kostas Chalkais。 (2)融資事件 Mysten Labs 正在洽談以 20 億美元的估值籌集 2 億美元的 B 輪融資,FTX Ventures 將領投。 Mysten Labs 2021年底在由 Andressen Horowitz 領投的 A 輪融資中籌集了 3600 萬美元。 (3)性能表現 Sui 處理速度預計會超過 120,000 TPS,能以亞秒級的速度處理獨立事務,針對更加複雜的事務(共享對象)能以3秒的速度處理。事務的依賴關系在被執行之前被映射出來,允許通過拜佔庭一致廣播處理獨立事務,而涉及共享對象的事務由另一個稱為 Narwhal & Tusk 的共識協議處理。 (4) Sui上的Move語言 Sui 在使用 Move 時,它對 Move 的核心功能進行了某些更改,尤其是在全局存儲運算符和關鍵能​​力方面。這些更改保留了 Move 的安全性和靈活性,但優化了存儲和地址機制,從而提高了網絡性能並減少了交易確認時間。 (5) 發展路線圖 Sui DevNet 自 5 月以來已公開發布,而團隊已宣布於 2022 年 8 月啓動激勵測試網。Sui Hackathon 註冊也自 6 月底開始開放。 (6) 生態項目 關於在 Sui 上開發的項目的信息一直很少。迄今為止,Chrome 擴展自托管錢包 Sui Wallet 已經推出,而第三方 Ethos Wallet 已在 DevNet 上使用。 2、Apots (1)Aptos 是甚麼,背後的人是誰? Aptos 是第 1 層區塊鏈,其使命是為數十億人創建對去中心化資產的普遍和公平的訪問。Aptos 由 CEO Mo Shaik 和前 Meta 內部區塊鏈解決方案首席軟件工程師 CTO Avery Ching 共同創立。在加入 Meta 之前,Mo 曾在 Conesnsys、BlackRock 和波士頓咨詢集團工作,而 Avery 則在雅虎工作。 Aptos 團隊的其他成員由博士、研究人員、工程師、設計師和戰略家組成,他們在 Meta、Novi、Amazon、VMware 等領域擁有工作經驗。 (2 )融資事件 Aptos 於 3 月完成了由 a16z 領投的 2 億美元投資,參與方包括 Tiger Global、Katie Haun、Multicoin Capital、3 Arrows Capital、FTX Ventures 和 Coinbase Ventures,隨後又在7月25日,獲得了由 FTX Ventures 領投 1.5 億美元融資。 (3)性能表現 Aptos 現在最高可以達到 10,000 TPS,理論最大吞吐量為 160,000 TPS。大多數交易在兩次網絡廣播後得到驗證,最終確定時間為 250 毫秒。 Aptos 高吞吐量的關鍵是能夠將事務執行層與共識協議分離,通過 Block-STM 實現並行執行能力,並通過狀態同步實現亞秒級延遲。共識引擎改編自 Diem 的 HotStuff及其團隊 的第4次叠代。 (4)Aptos 上的 Move 語言 Aptos 通過適配器層擴展了核心 MoveVM 的附加功能,其中包括通過 Block-STM 實現的並行性,無需用戶輸入即可並發執行事務,用於在帳戶中大規模存儲、存儲密鑰的表,以及解耦的細粒度存儲(fine grained storage)在帳戶中的數據量會影響與帳戶相關的交易的Gas Fee。 (5)發展路線圖 Aptos DevNet 自 3 月以來已公開發布,而該團隊已經完成了 4 個計劃中的激勵測試網中的第 1 階段,目前正在進行第 2 階段。 Aptos 還在 6 月宣布了一項贈款計劃,以進一步加速 Aptos 生態系統的快速發展,應用程序現已經開放且能後使用了。 (6)生態進展 Aptos 核心存儲庫上有 1,500 多個 Fork,現在有超過 100 個跨 DeFi、NFT、遊戲等項目有望在主網上部署。 Pontem Network、Macalinao brothers、Nutrios、PayMagic、MartianDAO、Solrise 等團隊已經在為預計 9 月底左右推出的 Aptos 主網做準備。 3、其他採用Move語言的區塊鏈 (1)0L── 一個從 Diem 創建的開源代碼庫中 Fork 得到的 L1 區塊鏈協議。該開源項目始於 2019 年,是一項社區驅動的倡議,沒有企業贊助商、風險投資或基金會。 (2)Starcoin── 一個智能合約平台,使用增強的工作證明共識和 Move 語言。它通過分層和靈活的互操作性來優化 DeFi、NFT、遊戲等不同生態系統的構建。 4、Sui/Aptos 與其他區塊鏈的比較 多維度對比四個公鏈 來源: Aptos, Solana Explorer, Etherscan, Sui Node, Aptos Node, Solana Node, ETH Node 從上面的比較來看,Sui 和 Aptos 在並行執行事務方面與 Solana 相似,因此具有更高的吞吐量。 然而,在運行完整的驗證節點時,Sui 和 Aptos 都更接近以太坊,因為進入的門檻較低,這將有助於社區驗證網絡的更大去中心化。 有趣的是,Sui 和 Aptos 的存儲需求遠低於 Solana 和 Ethereum。一旦兩個新生的區塊鏈上出現更多的相似的歷史狀態,那我們就需要看看是否更大的存儲空間是否有價值。 五、Solidity/EVM:它如何成為最具活力的開發者生態系統 為了充分了解 Move/MoveVM 構建自己的編程語言和虛擬機所採取的發展路徑,我們需要回顧 Solidity/EVM 以及它們如何成為當今事實上的智能合約編程語言。 在早期,有兩種方法可以在新的區塊鏈上編寫智能合約。 a) 使用現有的編程語言並通過通用虛擬機 WebAssembly (WASM) 運行它 b)從頭開始​​構建新的編程語言和新的虛擬機。 雖然 Solidity 和 EVM 走的是少有人走的路,但它似乎在 2020 年的 DeFi 繁榮之後取得了成果。那麼 Solidity/EVM 是如何超越通用 WASM VM 的呢? Starcoin 的核心開發人員@jolestar認為有以下三個原因: a)通用語言更適合操作系統而不是區塊鏈。如果把操作系統調用、文件 I/O、硬件、網絡和並發庫等功能剝離掉,那麼智能合約和編程語言之間共享的庫是最少的。這違背了使用通用編程語言的目的,因為編程語言主要優勢是利用開發者生態系統中現有的共享庫。 b)雖然理論上 WASM 可以支持不同的編程語言,但現實情況是,具有運行時系統的編程語言(例如 Go、Java)並不適合區塊鏈,因為一旦編譯就會有大量的二進制文件。這有效地將編程語言限制為 C、C++ 和 Rust,從新開發人員的角度來看,在學習難度方面與 Solidity 沒有太大區別。此外,各種編程語言可能導致開發者生態系統出現意外的碎片化。 c)鑒於每條鏈的狀態處理機制不同,即使它們運行在同一個 WASM VM 上,互操作性仍然是一個問題。由於每條鏈上的智能合約無法直接遷移到不同的鏈上,因此也存在開發者生態碎片化的問題。 此外,鑒於其可複制的開源庫,Solidity 已被證明具有用戶粘性。能使用經過審計的代碼對應用程序開發人員來說是一個巨大的便利;要知道安全的智能合約都需要進行安全審計,其中每一行代碼都會產生額外的成本。 來自 EVM 社區的更大的開發者生態系統為大量經過審計的代碼做出了貢獻,這將會鼓勵更多的開發者來構建 EVM。 六、Move語言的未來 Move/MoveVM 現在沿着 Solidity/EVM 相同的道路前進,並且有一些數據顯示確實如此。 來源: a16z State of Crypto Solana 也做出了類似的選擇,使用編程語言 Rust 構建自己的虛擬機,並且可以看到Move鏈上大規模的開發人員活動與 Solidity 早期的增長軌蹟相類似。用戶方面,Solana 也將自己確立為在每日、7D 和 30D 指標上擁有最多活躍賬戶數量的鏈。 鑒於 FTX Ventures 是 Sui 和 Aptos 的投資者,我們相信他們可以幫助開發 Move 生態系統,就像他們在 Solana 引導階段所做的那樣。綜上所述,Sui 和 Aptos 都在大力推動他們的 DevNets,包括孵化獎勵和黑客馬拉松,我們預計未來幾個月開發人員的活動將會增加。 此外,為了幫助克服新編程語言最初缺乏開發人員資源,並協助從其他語言的開發人員逐步遷移到新語言,Pontem 等項目已經開發了 Diem MoveVM 的一個分支,現在可以部署到其他現有鏈上,比如 Polkadot、Cosmos、Avalanche等,並且正在開發與 MoveVM 兼容的新 EVM。總體而言,我們相信 Move 是一種可以提供一種更安全、更快捷、更簡單的方式來編寫智能合約語言,它將成為一個強大而充滿活力的開發者生態系統的基礎層,相信會有人使用Move來構建下一代 Web3 應用程序以吸引更多的 Web3 用戶。 在接下來的幾周內,我們將在分享我們對 Sui 和 Aptos 區塊鏈更深入的發現與分析。 這篇文章的完成必須感謝 Jolestar,他提供了他的技術專長和觀點。 Jolestar 是 Move 的早期使用者,也是 Starcoin 的核心開發人員。 轉載文章連結:https://www.chaincatcher.com/article/2078609本文章挑選自鏈捕手公鏈挑戰者原文連結:《Move: The Javascript of Web3?》作者:Mustafa Yilham, Jermaine Wong, Henry Ang 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
BlockPulse -
對話 Mysten Labs 聯合創始人、Move 語言創造者:詳解 Sui 技術方案與路線
Sam Blackshear 在本次讨论中就 Move 语言的特点、Sui 区块链发展规划展开了详细介绍。 8月18日,Mynft 团队与 Mysten Labs 联合创始人、Move 语言创造者 Sam Blackshear 在Twitter Space 进行了一次深入访谈,就 Move 语言的特点、Mysten Labs 开发的 Sui 区块链发展规划展开讨论。以下是链捕手对该次对话的整理: Mynft Team:大家好我是 Mynft 的 Millet,我是今天对话的主持人,非常感谢你接受邀请,通过这个邀请加入我们的AMA。 Sam Blackshear:很高兴见到你,也谢谢你的邀请。 Mynft Team:首先祝贺你和 MystenLabs 取得的成功。那我们之前已经发给你一个问题清单,有什么需要调整的地方吗? Sam Blackshear:没有的,我认为这是个很好的问题清单,我很乐意回答所有问题。 Mynft Team:最近有很多关于Move项目的讨论。比如,Move和其他语言,比如Solidity有什么不同,Move的优势在哪里。别的程序员能如何学Move,因为据说Move的程序员工资很高,当然他们工作也很多。然后大家也很好奇Sui是如何在市场走熊的情况下,获得顶级风投的关注和支持的,并且现在Layer1的竞争也十分激烈。要知道这些问题的答案,当然就需要Sam来帮我们揭晓一下,他是MystenLabs的创始人之一,也是CTO。 今天我们主要有两部分,首先是Sam会回答之前的问题清单,这些问题来自我们的社群和媒体伙伴,然后是Q&A环节。那我们开始AMA。Sam,可以介绍下你自己和项目吗? Sam Blackshear:我是Sam,我是Mysten Labs的创始人和CTO,是 Move的创办者。我主要是在静态分析上工作,我在Diem和Libra项目上也工作过。我职业生涯初期是做编程语言研究,也读了博士,做了一些可以自动化找bug的审计工具。 那我来讲一下我是如何从语言研究转到了加密行业的。我之前是在科罗拉多大学读博士,做编程语言的研究,做静态分析,做一些自动化找bug的工具,那这个很有趣,很有数学性。你要做的就是找到问题所在,回答项目执行的问题,那这个过程就是你总能发现更多问题,更多替代方案(语义学上的方案),有时候会报错“假阳性”的行为,实际上这些行为也不会发生。 所以就是你总能不断改进,但是永远没有一个确切的答案。通过设计很聪明的模型,你可以预测程序行为,找到bug了解代码如何运作。我之前就是花了很多年做这些学术研究,我会做一些bug查找工具,让它跑起来,然后找到漏洞之后就会觉得还挺有成就感的。 在我读博快结束时,我有一个在Facebook实习的机会,应该是在2013或14年初,那时候Facebook正在从网页优先向移动端优先转型。那在移动端发行时,当时其实也有一些问题。当时他们一个bug出现在了移动端,那个问题存在了两周。同样的这个问题其实在网页端一天或者一小时就可以修复,所以他们当时是投入很多来解决移动端的bug。 那我实习的时候,做的就也是这种工作,找问题和修复问题。那当时我也是因此有机会很多的程序员进行沟通,他们给了我很多实时的反馈,告诉我如何能把事情做得更好、更不同。那时我就萌生想法,希望可以做研发和研究的交叉工作。所以我毕业后就加入Facebook,做了很多年的静态程序分析,就是做自动找bug的工具,然后看一些空参照,给过载找一些缓冲,看数据征用,看一些安全方面的事情,也会看除了找bug以外的静态程序分析的新应用,比如说如何更好保管代码,或者如何把代码移植到新框架中去,如何帮助安全工程师更有生产力等等。 这份工作很有趣,但是你会发现最终你会很了解如何设计语言、设计框架、如何保证安全等等,你会有点厌恶这些别人带来的问题,就会考虑是否能够做一些更多的事情,比如如何从一开始设计语言,让它更安全,更能防止bug,然后可以支持一些工作,比如验证等。你会考虑如何能够帮助程序员写更安全、更容易和其他软件组装的代码。 那我很幸运,在2018年的时候,在Facebook我有机会能够做这个事情,其实就是Libra项目,当时是一个高度机密的项目,然后也是找了很多专家来做,研究比如分布式系统、密码学、数据库啊等等。那我当时被要求做的就是看看语言,这也是为什么后来有了Move,因为那时候我开始对分布式系统、加密学感兴趣,就开始看看加密领域,那时候也是碰到了后来我的创始人朋友,我们当时也构建起了很融洽的工作关系。 当时我们就产生了很多有趣的想法,关于如何构建下一代区块链,这些事情可能是更宏大的,是之前用Libra无法做到的。然后后来我们就创立了Mysten Labs,然后我们也跟Libra跟了很久,但是后来发现无法上线,就决定说还是要去Web3刚广大的世界闯闯。 所以去年11月,我们相当于是跳了出来,从头开始研究Sui的设计,思考如何使它能和Move适配,它有什么优势,想到在它之上能够构建什么新东西,这些都令人激动。所以基本上这就是我的职业生涯,我是如何从研究的领域转到加密领域,成为了一个创业公司的CTO。 Mynft Team:你的这份经历太有趣的,因为你其实是从web2转到web3,有学术和产研的复合背景,而且你还深耕于漏洞查找、静态分析等等这些领域。那刚才你有提到可组合性,对下一代区块链是十分重要的,这个我们一会详谈。 你也讲了下一代区块链的构建,和你现在推崇的Sui。那其实我们想了解你为什么和合伙人创建了Mysten Labs?或者比如先谈谈是如何选名的? Sam Blackshear:关于Mysten Labs,其实它的名字没有那么多含义。当时我们也有其他的想法,不过考虑到最后是要用这个名字签署一些法律文件,我觉得它很合适,所以就选了这个。 Sui的话,其实当时想了很多,还咨询了一些专业人士。最后选了Sui,它是日语和其他语言中是代表水的意思。那我希望我们的平台上区块空间、交易、吞吐量等等都是自由流动、很充足的,就像水一样。同时,水无处不在,对我们有好处,所以就觉得这个品牌名字不错。从技术角度,因为我们的创始人都在Libra项目上研究了好几年,花费了很多心力,学到很多,也有很多好的灵感。 同时,Libra当时也是雄心壮志,在2018年,大家都说希望它成为“以太坊杀手”,就是从以太坊汲取一些设计,但是做得更好。Libra设计之初其实是一个通用的智能合约平台,但是考虑到监管的要求,以及想要把它快速推到市场,所以最后我们觉得它应该是一个支付结算系统,我们也不用考虑会处理大量的订单,因为出于隐私考虑大部分订单都会在链下的虚拟资产服务商之间进行。我们也不需要考虑扩容的问题,因为支付和账户基本上不会占太多空间。我们也不打算做那些比较花哨的东西,比如NFT等等,会比较占地方。 那关于程序的话,其实我们更关心如何能让它运行合规政策,如何防止资产消失或者发到错误的地方。所以我们早期做了很多这样的工作,然后我们思考的一点是如何能够减少Libra项目的缺陷,构建下一代区块链。比如我的同事George他就是资深的系统专家,在Libra的时候他就参与了快速支付等项目。 所以我们基本有两大项目,一个是Narwhal与Tusk(共识协议),一个是快速支付。然后我们也开始和尤其是游戏领域的客户接触,了解他们的需求,基本上他们对TPS会有需求。 其实把一个东西从一个系统拿出来,再把它进行适应性修改,使它能够处理各类吞吐、交易,这件事是很难的,当然并不是说不可能。但就是说,你是从头做起,所以是会有很多困难与不同。所以基本上这就是我们做的事情,最开始是做快速支付,然后后来又考虑除支付以外还能做什么,是不是可以做其他可以快速支付的交易。比如如果他们不需要下订单,他们就可以直接快速支付,如果他们需要下订单,那就走一个正常流程。 所以基本上我们从Facebook中汲取一些资源,然后建立了这样一个系统和Move,我们是有信心它是可以扩容,适配于任何吞吐量或存储要求的。然后你可以用Web2的方式进行操作,验证者可以是一个机器,也可以是一群机器。(如果你有更多需求,可以把他们分布在机器上)。你知道用户和公司是会有更大需求的,所以为了满足这种需求,我们创建了Mysten Labs,想构建新一层的区块链。我们希望这个系统可以扩容,可以满足任何需求,而不会面临在费用、存储、吞吐上的瓶颈。 Mynft Team:是的,其实Sui在中文就是代表水。你也谈了Libra的缺陷,以及为了能够在Libra快速支付系统上进行构建你们增加了TPS,以及你们希望解决支付或者说区块链的一些局限。你谈到的这些,比如支付,其实目前还是在一些中心化组织管理的。这就说到了我们的另一个问题,这个问题其实也困扰区块链领域多年,那就是不可能三角,如何平衡可拓展性、安全性和去中心化。你如何理解这一问题?是否有解决方案? Sam Blackshear:这是一个很有趣的问题,要考虑各种权衡等等。我觉得其实有“第四个支点”可以考虑,那就是它的效用性(utility)。因为不管你要选择哪个,它都必须是有效的,要对协议、对开发者有效。如果最终你的解决办法是“没有效用的”,那么也许你解决了技术问题,但你没有解决商业问题。 我觉得首先,如果你需要效用,它必须考虑它的扩容性,当然也必须考虑安全性。当然也要考虑去中心化,但是不同的人对去中心化的定义不同。相比之下,如果你问别人安全性或可扩展性是什么样的,我认为这些问题会更绝对,或者说正确答案会更少,那这其实隐含了一点,就是其实会有更大的设计空间。 那么,关于Sui的话,说起去中心化其实有不同方面要考虑,你可以考虑验证者的数量,你可以考虑验证者内部的状态分布。你可能会考虑完整节点的数量,你可能会考虑运行验证器在成本方面的门槛、或者所需硬件方面的门槛,所有这些因素都很重要。 有时我们会为这些东西挑选精确定义。所以对我来说,如果我要在三难问题上有一些不同做法,如果我们如果想要有更多吞吐和存储量,就会需要更多的硬件资源。这不是随随便便就能做到的,如果你如果需要做更多的工作,你就会需要更多硬件。 很多人现在在协议层面上分片来分割状态,那我是不认可的。我们认为,区块链或区块链愿景的有用之处,你拥有世界上所有资产,比如所有智能合约,它们都处于一起,能够互交谈。你可以发送一个交易,它会涉及到所有交易。所有的金融相关组件都在一起,然后你只需要一个调动的功能,就能完成所有的东西。 你可以在不同资产、不同的智能合约和不同的用例之间增加摩擦。然后你基本上把问题交给了程序员和用户,让他们去解决这个问题,并找出如何弥合这个间隙。我认为区块链就是应该去消除摩擦。 Sui所做的事情就是,如果验证者需要承接更多吞吐,我就要求他们使用更多硬件、更多存储。但我们不会做出妥协,不会说让验证器所做的工作变得非常昂贵。不然的话,那么我认为最终会出现寡头垄断,验证者是网络上的两个巨头,没有人能够负担得起检查他们正在做的工作。 因此,我们正在做的一件事,有助于解决这个问题,就是我们的数据模型允许有一个替代方案,也就是非投票验证器节点,称为Sparse节点。它的工作和做验证器一样,只是不投票。 Sparse节点开始于一组基础数据,比如一些你关心的对象,一些你关心的地址,它可以重新进行和检查验证器的工作,只针对这些特定的路线。例如,如果你是一个钱包,你可以成为一个Sparse节点,然后只追踪特定的钱币,比如NFT,或者是专属于你自己的游戏物件。你可以重放所有的交易并检查验证者是否诚实。 如果你是运营游戏,你可以运行游戏服务器,了解验证者对你的游戏状态和你的玩家游戏状态所做的工作,但只关心自己的,不关心别人的。所以这个比运行一个全节点更好、更便宜。 因为考虑到存储和交易,如果是运行全节点,就会比较昂贵。但如果你只考虑网络的一部分,只考虑你自己的那部分,其实会很便宜。这都得益于Sui的数据模型,能够明确交易和你关注的对象之间的联系。那我觉得这就是我们能如何解决三难问题,当然你需要有更强劲的验证器,但这不意味着你应该在对验证器检查的第三方上进行妥协。所以虽然会对验证者有更高要求,但是因为Sparse节点的存在,还是可以保证他们的诚信的。 Mynft Team:刚才真的是干货满满,大脑高速运转,所以你没有在区块链领域做分区或者分片这种时髦的东西,而是用Sui去按需做任务的分配,比如运行验证器节点等等,它是和你受到的奖励对等的,这样是能帮助我们解读抽象角度的。 你还谈到,你认为三难问题的方式就是一种权衡,而你认为要解决去中心化基本上是要进行权衡。这是你赞同的一种方式吗?因为在你的推特中,你谈到了区块链作为一种服务,可以供大公司使用。我可以理解,这是你认为的Sui进入Web2的方式吗?就是供大公司使用,但是不牺牲去中心化。 Sam Blackshear:是的,没错。我认为如果要挖掘当前加密货币领域以外的受众,你真的需要有超越当前区块链的可扩展性。所以这就是我们试图提供的东西。而且,Sui就是在去中心化和安全的重要路程上上扛起了火炬。 Sui十分关心用户用例,非常关心已经在区块链上存在的东西,比如DeFi是流动性引擎,驱动区块链上的很多价值,比如NFT对品牌和游戏搭建也很重要。比如现在也有很多加密货币的本地用例。所以我们真正关心的是新旧的混合,我们认为我们将能够用更好的程序来做旧的东西,比如说更安全的程序,更低的费用。 我认为我们将能够拥有开发者经验、可扩展性、必要的上层建筑等,以便很好地进入web2和吸引主流和企业用例。所以我们真的很关心这两件事。我们需要旧的部分,它们也是有趣的事情,然后我们也需要新的东西能够受益于此。我认为这不是真正的二者选一,我认为你真的需要两者结合来使这件事成功。 Mynft Team:有趣的一点是Sui宣称说成为下一代Layer1。那么和其他的L1公链比如以太坊、Avalanche相比,你觉得你们的独特之处或者说优势在哪? Sam Blackshear:我觉得这都是不同的项目。我们的一个不同就是我们有一个数据模型,能够反映交易的和最后结果。这使得交易和它所做的事情之间的关系非常明确,你甚至不用运行交易就可以看到它。这使得我们很容易分辨出事务之间的关系,也使得我们很容易分辨出,比如当你看一个对象的时候,谁是最后一个接触的交易。或者如果你看交易者,你想看相关的事务,它要操作的对象是什么,它要做的事情是什么。这是我们在可扩展性方面取得所有进展的基础,然后也体现在可用性方面。 如果你看一下传统的区块链架构,它有很多顺序性的模型,这使得扩展非常困难。首先,有一堆交易进来,你的计算机开始在这些交易上工作,当然是基于全局共识上。我们要把他们全部排序,然后执行交易,而且许多系统在是需要按顺序进行的,即使他们之间可能没有关系。你就是需要按顺序进行交易,因为这是最简单和最明显的正确做法。 还有一个瓶颈。这些交易最终会有一个结果,需要被写回数据库。这个数据库是以树状的形式存在的,在那里显示有你的账户、余额、用户账户和其他信息,存在于根部,然后你必须把这些变化一直更新到顶部,形成一个新的树,随着状态越来越大,这个树越来越大。当这个东西变得太大,无法装入内存时,就很难以更快、更有效的方式运行了。 所以基本上你有这些不同的、大的、连续性上的瓶颈,然后这就使得区块链的吞吐量和存储量很难扩展。我们正在试图尽可能地消除或减轻这些顺序性瓶颈。 因此,就共识部分而言,因为我们可以只看交易就知道是否需要共识,所以有时可以直接跳过共识,使用更快的支付方式来做交易,如代币转移或NFT铸造。 那如果需要下订单,我们就用Narwhal,它分离了顺序性的部分,比如实际计算、交易传播中的排序,确保验证者对交易达成共识。这给你一个很大的速度提升,因为你可以并行地做一些共识的部分。 在执行方面,当你知道这些关系时,当你知道哪些交易将被触及时,你就很容易能够想出最有效执行事务的时间表,所以你可以在工作负载上进行最大并行。最后,因为我们知道每个交易的情况,我们就不需要一个大的全局状态的概念,我们可以给交易进行认证的信用升级,而不需要对数据结构进行计算。 因此,我们在顺序性瓶颈上进行工作,这一瓶颈是导致很多使商业区块链难以扩展的原因。然后,我们要么尝试快速支付来绕过这些问题,或则完全摆脱它们,或者寻找方法找到平行操作的方案。我想这是我们现在可能的独特之处。 这并不是说没有其他系统在做类似的事情,比如现在很多区块链在探索并行执行类似的事情,使用类似的的技术,也用梅克尔树这样一个结构。 但我认为我们真的做到了结合。我们提供了一个完整的数据模型,能够让我们有我们更多的后期优化。我想说的另一件事是,我也比别人更早地接触到这些事情。 现在很多扩展策略,都是放弃智能合约和资产的组合性,把东西放到多个分片中。基本上要牺牲用户体验和开发者体验来实现扩展,所以我认为在这一点我们是不同的。 我们致力于维护开发者和用户体验,把所有资产和智能合约放在同一个地方。消除摩擦,这是区块链的价值所在。然后我们有一个可扩展的架构,而不需要进行一些取舍和妥协。 Mynft Team:能够甚至在执行前就看到交易,这一点是真的很重要,然后你也提了并行的想法,这是非常有趣和非常重要的。 但是我们已经谈了这么多关于技术问题,也许我们可以换个角度,谈一下生态系统以及应用的问题。因为我们知道谈到生态系统的发展,智能合约的智能语言与各种应用都非常重要,比如最近也是有Defi之夏和最近的NFT热潮。所以你能不能告诉我们,你认为什么类型的应用在总体上是最有前途的,特别是有希望建立在Sui上。你打算如何在未来对这些dapp进行投资? Sam Blackshear:我认为你提到的一些用例就很有趣。我们和从事游戏工作的人交谈,了解到他们有很多创造性的想法,比如如何使用区块链,如何使游戏更加吸引人,如何将部分游戏经济转移到链上。 还有就是与品牌进行合作,在游戏之间建立有趣的关系,这样人们的游戏体验就不会只局限于某一个游戏。这也是我们非常重视的事情。 我们也非常关心创作者的货币化,这可以通过NFT,可以通过小额支付,或者任何与金融有关的东西。 我们也非常关心传统金融,关心如何开展与Defi的联系。基本上我们认为我们是在建立基础层。我们会和那些对此感兴趣、有伟大的想法的加密货币和区块链使用者交谈,他们在使用其他系统时遇到了瓶颈,而我们帮他们搞清楚是否Sui能够帮他们解决这些问题。 我们以不同的方式进行投资。我们与伙伴合作、给予资助,帮助人们开发,与他们进行头脑风暴,讨论如何最好地使用区块链或如何使用像Sui这样的平台。希望最终可以获得答案,做一些普遍和实用的东西,帮助大家做一些非投机性和普遍有趣的事情。 Mynft Team:你谈到了是游戏和GameFi。游戏需要可组合性,因为他们希望游戏中的资产可以在不同的游戏中迁移,用户希望拥有资产,可以自主控制,能够在不同的平台上迁移。这一点也是Sui看重的一点,它也是架构设计的一部分。 刚才也谈了你们希望自己的定位是基础层,那么一个相关问题是,你们如何考虑与其他的链进行桥接?考虑到想要利用现有web3原生加密的一些东西,你如何通过一些“桥梁”把这些应用的用户带到你的生态系统上去呢? Sam Blackshear:是的,我们认为这很关键。现在有很多的流动性以及一些在其他区块链中表现有趣的代币、有趣的nft,所以我们希望人们能够把这些带过来。要做到这一点,我们需要建立一个更好的应用生态系统,来吸引人们。 比如说你可以添加新的功能或利用sui的功能,甚至是费用更低,更安全等等。我们之后将推出两个不同的桥梁。我们会用更多时间,来思考如何和现有的区块链和生态体系进行连接。 Mynft Team:谈到生态系统,生态系统是区块链中非常重要的一个点。所以可以告诉我们,你想建立什么样的生态系统?以及你将如何建立它?你们将如何支持生态系统的建设者?会有什么样具体的支持和拨款?对开发者,你会有什么样的支持?特别是来自亚洲的开发者,如果他们看到了这个方向的前景,想加入其中,该怎么做? Sam Blackshear:是的,所以我们想建立一个生态系统,来推动加密货币用例的界限,以及你能做的事情的界限。我们想留下原本的的东西,想让它变得更好,我们想有创造力,想出新的做事方法,做出让人大吃一惊的事情,这是我们的愿景。 因为我们自己不是专门的开发者,我们不是专业人士。所以我认为,像从哲学的角度来看,这就是我们想做的事情。 在支持方面,我认为最重要的支持是鼓励他们(开发人员),帮助他们看到更多可能性。当然,正如你所提到的,补助金是非常重要的支持形式。 我们希望能形成社群,这样,人们可以讨论、制定标准、分享代码和想法。这也是我们在特别支持亚洲华人开发者方面想要做的另一种事情。关于对亚洲开发者的支持,我们认为资助项目也是很好的一种支持。在区块链领域我们和韩国、中国都有很深的联系。 对于问题的最后一部分,大家参与的最佳方式是什么?他们应该参加各种对话、问问题、了解发生了什么事。学习文档,开始学习如何编程、移动和构建应用程序。在此基础上,也可以了解Sui的工作细节,并使之与众不同。然后也可以到Github上,看看发生了什么,看看能不能做出一些贡献。我认为这完全取决于你的兴趣点,你想如何做出贡献,以及我们能如何帮助你。但我认为这些都是作为开发者参与的一些最佳方式。 Mynft Team:作为开发人员,学习Move会不会很难?你也说到Move有从Rust进行借鉴,能不能说说两者的不同?过往的开发经验会不会给在Sui上进行构建带来一些帮助? Sam Blackshear:我认为学习写智能合约是很难的。但我觉得Move是使这件事情简单化了。我认为智能合约从根本上与传统的编程非常不同,基本上像它是一个非常狭窄的任务集,比如说是你有一些资产,你想转移它们,你想更新,你想做一些追踪等。你是不会用智能合约语言来写一个编译器、操作系统、一个网络或移动应用程序的, 所以这是非常狭窄的需求,同时,用稀缺性来编程,这不是传统语言做的事情,所以这将是一个有点困难的事情,尤其是对来自传统语言背景的人来说。所以,我们用Move就是希望它把事情简化,使人们能快速上手适用。 Solidity实际上是一个很好的背景。因为它设计的目的就是为了明确地解决很多表现和安全问题。所以我们发现,那些会使用这个语言的人,在使用Move时感觉上手很快,因为这就是为他们设计的,可以用来完成他们一直用Solidity做的事情,而且是以一种更直观、更安全、更有效的方式。我们从合作伙伴那里听到的一些反馈是。如果给他们一些指导,只需要四或五天,他们很快就能上手。所以我觉得这是一个理想背景。 其次,我觉得会Rust也是一个好的背景。Rust和Move最大的相似之处就是所谓的borrow checker,对安全进行分析。如果你已经会Rust,我觉得你进行过渡会比较容易。因为你必须选择一些东西作为你的语言语法,我们的语法和Rust也类似,所以如果你习惯于阅读Rust,这将对你非常熟悉。 但是和Russ相比,Move是更小、更简单的语言。比如Russ中有些东西是很难用的,比如引用的寿命,但是在Move 你就不必担心这个问题。 所以我们认为,有这些背景的人会更好上手。但我们也想让那些没有web背景、不知道Solidity、Rust的人也能使用。我认为最关键的是,找编译器来指导你做正确的事情,编写有效安全的代码。然后结合大量的例子和文件学习,不断地读这些跳出来的错误信息。 如果有人想学习Move,但是不知道怎么做。那就试着写代码,不断地阅读和编译,这是一个有效的语言教学方式,适用于大众。 Q& A 环节 Q:Move是一种比较难的语言,我们的开发人员在开发过程中也遇到了一些问题,那就是它的返回和搜索功能有点简单,目前在相应的内容信息比如如行号和功能上也比较简单,有些功能也不进行支持。Move在未来会有相关的更新吗? A:是的,未来肯定会有一些更新。比如如果你做了某个测试,你会得到一个完整的跟踪结果,以了解失败发生的地方,比如包括源信息等。然后你也说一些基础功能比较简单,当然我们也会做出改进。但总的来说,我们花了前三年的时间在基础语言的设计上进行努力,因为这是我们未来不能改变的部分。一旦有智能合约发布,这个地方就不能再改动了,错误也会永远留在那里。因此,我们真的很努力地要把它做好。 这都需要专注的时间,需要反馈,所以我觉得你可以期待更多改进,因为我们得到了反馈,就会看到最大的痛点是什么,并弄清楚我们应该优先考虑什么,想清楚如何改进工具和语言。 Q:因为我们知道不同生态系统的代币标准不同,会有不同的功能,所以想了解你的代币标准如何? A:因为我们知道有ERC20和ERC721这样的标准,会对同质化和非同质化代币进行一些规范。比如说会规定铸币的标准、供应量、如何转移、如何分割等。 对于NFT,它已经是存在标准的。从一个角度来看,NFT就像一个元数据,每一个NFT都可以被转移,如果你想要有限制性的转让政策,也是可以的。这些功能对Sui来说都是原生的,没有一个明确的标准。 那么我觉得问题就在于,除了我们已有的标准,还有什么东西是需要被标准化的? 我觉得答案就多了去了。比如说显示NFT,或者是显示像探索者这样东西的方式?而我们的方式就是,对某些名称和类型字段进行标准化。比如说一个命名的URL或图像,那给你展示我的URL的时候,我不仅给你展示文字,还可以给你渲染图像。 我们做了一些类似这样的标准化尝试。我们希望为NFT和其他类似的东西构建区块,使人们可以以任意方式进行混合和匹配。而不是只有唯一的标准会定义这些事情,或者说创作者必须迎合租赁公司和运营商的要求等等。 所以我们在努力弄清哪些标准化的区块构建是有意义的,以及如何结合。这是一个高层次的角度。当然大家也说我们可能也会创建一个类似NFT的标准。具体的例子比如说在Sui上,会有以太坊风格的说唱者,或者网飞风格的说唱者等等。 所有这些想法都会在未来实现。我认为我们会有各种各样的方式去做这件事,我们已经取得了很多进展,我认为未来的很多进展将由人们想要什么、想创造什么决定。 Q:我们是否有工具链(tool chain)?开发者有没有可能使用这种工具链,去实现Move,做编译,让它和智能合约集成,并且能够同时在Aptos或Sui上运行。现在有可能吗,来打算做到吗? A:目前没有工具链。它其实都和Move相关,所以迁移的负担是相当低的。比如说,如果你看一些其实网上有很多库,里面的很多项目都是建立在同时Aptos和Sui上的。 你去GitHub搜索Pentagon,可以看到相关资料,其实是有很多案例的。他们维护一套直接访问的目录,看起来非常相似。我认为他们之间的自动翻译在某些情况下也是可能的。尤其是如果你了解Move,并且你用的也是同一个编译器。当然而在其他情况下,我们是有很多的差异,比如扩容、运作等等,这些点可能是不兼容的。 Q:你觉得哪些叙事或者领域是你们会比较关注、给更多优先级的?因为目前整个生态其实挺丰富的,市场上也是各种东西都有,所以未来你们的关注点会如何?比如会关注哪些项目? A:刚才我讲的其实都比较感兴趣,比如游戏业、创作者的货币化、传统的web3金融等等。我是很期待看到这些东西的,但是更多的其实关注的不是技术,因为这些东西并不是只能存于区块链上,这个东西如何反映了创始人的理念等等,这个是我更关注的。 Q:关于“Sui”这个名字听起来读音好像怪怪的,有点难受,给人有点消极的感觉。有可能说我们之后改名或者说为什么要起这个名字呢? A:其实我刚才回答过了。因为Sui代表水,不断流动、充斥在生活中、无处不在。对你的生活很重要,所以这是为什么我们选了这个名字。我们也不太可能进行改动,因为这个名字背后有很多含义,然后我们的创始人其实对这个名字也比较热衷。你要知道找一个全球流行的名字其实不太容易,大家会有不同的解读,然后我们尽可能地找了一个这样的名字,代表水,当然这个名字可能在其他方面也会有不足。 Q:我注意到Move最近有一个收集活动,哪些方面是你会比较感兴趣的?比如哪些功能或者方面等等你是希望加入/收集的? A:我觉得这些东西之后会进入到Sui的库中,或者其他库、活动中。比如布隆过滤器这个数据结构就是一个很好的结构。或者谈到功能的话,比如你想在不处理大量数据的情况下检查会员身份,这个功能就很有用。我们也有一个内置的地图,我认为这是相当有用的。我觉得是有很多好的数据结构可以去看的,然后去看看人们的基础需求是什么,比如把链下数据放到链上,写代码、解码等等。 Q:Sui采用了非常新颖的方法,以优先考虑可扩展性。这样一来,简单的交易就可以实现近乎即时的最终性。我很好奇你会如何描述交易顺序,特别是考虑到能帮我们将重点缩小到金融市场。比如,交易订单是如何确定的?在传统的区块链上,是拍卖的形式,或者是先入先出的形式。我想知道你是如何在高层次上描述这一点的,如何确定交易排序,尤其是考虑到分片、可扩展性和并行的一些问题。 A:这其实就是考虑当交易之间需要排序时,你如何决定哪一个被下单?如何确定先处理哪些交易?我们试图在做的是一些非常有趣新颖的东西,我们为我们的客户提供基于对象的自由市场。 因为正常在平台上是有一个统一的价格的,比如说有一个火爆的NFT,这个价值很高,大家都去抢。那即使你很聪明,能够平行地进行操作,因为根本上这件事情是有顺序的,所以费用最终对每个人都会上升。 我们Sui想做的事情就是,当这样的事情发生时,该应用程序的费用将上升,但是其他不相关的应用费用不会上升。 这意味着我们在协议内部有一种方法来量化这样共享对象的难度,看它过去在区块中被碰过多少次,然后我们会将其纳入海量优先级机制,如果有很多人在碰这个东西,我们会要求相对较高的费用,这样我们就能确保所有的交易不会受到这个火爆交易的影响。如果你接触的是其他共享对象,比如只是做代币转移,你的这些费用将不受影响。 所以我们不会有一个全球统一的价格,这个费用基本上取决于你在系统中创造了多少竞争,以及你会在多大程度上减缓我们的交易。 我们实际上我们还没有公开这个想法。我们真的很兴奋,因为这种方式能够提供良好的用户体验,同时对交易进行优先排序,而且你不会在每个问题上都受到影响。如果你直接与一个对象互动,唯一需要担心的是一个接触这个对象的“邻居”。还有就是它对验证者来说将是非常好的,可以确保他们能够最有效地利用资源,尽可能地收集费用。 轉載文章連結:https://www.chaincatcher.com/article/2078369本文章挑選自鏈捕手链捕手的朋友们原文:Mynft Twitter Space編譯:链捕手 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是甚麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是甚麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
BlockPulse -
剖析 Move 語言的新公鏈及背後投資機會
使用 Move 語言的公鏈不僅要有新敘事,還要在價值捕獲、生態建設、用戶體驗等方面多做事。 Move語言具有將資產作為一等公民編程、安全性、靈活性、可組合性等特點; 採用Move語言的公鏈生態發展尚處初期,交互選擇不多; 多家知名投資機構已提早布局具有Meta背景的公鏈,傳統金融機構正在入局; 根據Aptos、Sui的生態擴張、測試網進展和估值,需持續關注兩者未來的走向和市場表現。 Move語言是Meta(原Facebook)開發的編程語言,是一款專為數字資產打造的編程語言。 其特點包括將資產作為一等公民編程、安全性、靈活性、可組合性等,為DeFi、NFT項目開發者提供了優質的選擇,為項目開發提供更多想象力。 在新一批新公鏈當中,Aptos、Sui等公鏈將採用Move編程語言作為賣點,Move編程語言的安全性、靈活性等特性成為新公鏈主打的優勢之一。 目前採用Move編程語言的公鏈中,熱度較高的是Aptos、Sui和Starcoin,三者開發進度和生態處在相對領先的地位。 不過總體來看,採用Move語言的公鏈目前還處在發展的早期階段,生態在快速擴張,但生態中比較成熟的項目數量還不多,用戶如要做交互,還需要再觀察一段時間。 具有Meta背景的Aptos和Sui獲得多家知名投資機構的投資。 a16z、Franklin Templeton、Tiger Global、FTX Ventures等均出現在投資陣容中。 雖然兩者發展尚處於早期,但機構已經看到了Move語言公鏈的潛在機會,搶先布局。 Move語言能夠獲得開發者的青睐,更多來源於其技術特點。而要獲得用戶,使用Move語言的公鏈不僅要有新叙事,還要在價值捕獲、生態建設、用戶體驗等方面多做事。 Move語言的特點 Move是Meta(原Facebook)為其穩定幣項目Diem(原Libra)開發的編程語言,Diem的願景是作為一款全球性的數字原生貨幣,集穩定性、低通脹、全球普遍接受和可互換性於一體。其願景決定了Move是為金融而生的編程語言。 Move的特點主要有以下五個方面: 1.將資產作為一等公民編程(First-class Resources) 2.通過靜態調用、虛拟機沙盒等確保其安全性 3.可驗證性 4.靈活性 5.合約可組合性 (一)將資產作為一等公民編程(First-class Resources) Move語言通過Resource為數字資產定義。Move語言中數字資產以被特殊定義的代碼/resource/表示和存儲。 Move語言抽象了資源(Resource)的四個屬性:可複制、可索引、可丢棄、可存儲,通過這四個屬性的不同組合,用戶可以方便的定義出任何類型的資源。 Move規定資源(Resource)會存儲在由所有者的帳戶控制的模塊裏,經過驗證的所有者以/簽名者/表示,這些資源的所有者具有最高決定權,只有所有者能夠決定資源(Resource)的存儲和轉移。 資源(Resource)的設計讓數字資產轉移不是賬戶間餘額數值的簡單加減,而是存儲位置間的移動,避免重入和雙花攻擊。 重入和雙花攻擊是黑客攻擊常見類型。重入指的是黑客抓住項目方轉賬模式的漏洞,制造惡意合約,在接受轉賬的同時再次調用項目方轉賬函數,在不改變賬戶餘額的情況下不斷提走資金。雙花攻擊則更好理解,用同一筆錢多次完成支付。 資源(Resource)確定數字資產僅在存儲位置之間轉移,避免了重入。不憑空產生或銷毀數字資產,避免了雙花攻擊。 (二)通過靜態調用、虛拟機沙盒等確保其安全性 Move語言採用靜態調用,靜態調用指程序A在調用程序B時,在運行之前就已經確定調用的對象,在運營過程中不改變調用對象。 靜態調用提升了運行的安全性。動態調用過程中,惡意用戶可以通過制造惡意合約,調用項目方函數,從而完成攻擊。靜態調用解決了動態調用存在的問題,增強網絡運行的穩定性。 Move VM是Move編程語言的虛拟機沙盒,虛拟沙盒讓採用Move語言的區塊鏈具備確定性,合約調用被放在同一個沙盒當中,在此過程中合約的狀態的安全性主要要通過編程語言内部的安全性進行隔離,而非依賴虛拟機進行隔離。 (三)可驗證性 Move編程語言採用形式化驗證。簡而言之,形式化驗證是用數字工具分析的手段證明程序的安全性。此前提到的靜態調用、虛拟機沙盒能夠提升驗證的安全性。 (四)靈活性 Move的靈活性體現在可以通過transaction腳本來自由組合各種transaction來實現不同的功能,一個腳本可以調用多個transaction。 Move通過面向泛型編程,保障了合約的擴展性,增加了代碼的複用能力。(注:泛型編程是一種專注於對算法及其數據結構進行設計的編程方式,它使得這些算法即數據結構能夠在不損失效率的前提下,運用到最為通用的環境中。) (五)合約可組合性 Move語言的合約可組合性源自於其Module(模塊)的設計,基於Module間的組合只需要對Module進行升級和優化,所有使用過這個Module的其他合約都會自動使用最新的版本,加速使用Move語言的智能合約升級優化的速度。 Module相當於給這些智能合約提供了統一的兼容空間,智能合約就像樂高玩具的各個部分,通過任意組合產生新的產品。 使用Move語言開發的公鏈 據 Sui 開發團隊 MystenLabs 撰寫的介紹 Move 語言的文檔,目前有4條公鏈已經使用Move語言,分别是Aptos、Sui、Starcoin、0L Network。 目前Starcoin和0L Network已經上線主網,而Aptos、Sui還處在測試網階段。 本章節將對Aptos、Sui、Starcoin、0L Network進行介紹。 Aptos 1. 簡介 Aptos是由前Meta工程師打造的高性能公鏈,採用Move編程語言,專注於安全性、可擴展性和可升級性。 Aptos旨在為數十億人創造普遍和公平的去中心化資產,這與穩定幣項目Diem的願景相似性很高。 Aptos創始人在今年 2 月 24 日發表的《The Genesis of Aptos》中提到,Aptos并不是從零開始,Aptos採用的Move語言是Diem開發過程的成果,Aptos的開發人員有Diem的創始團隊成員和核心開發者,團隊對於Aptos的構想與對Diem的構想有高度的相關性,開發 Aptos 一定程度上是對 Diem 開發的延續。 2. 團隊情況 Aptos核心團隊成員中,多人曾在Meta擔任要職。 Aptos創始人兼CEO Mo Shaikh於2020年5月至2021年12月在Meta負責戰略合作夥伴關系。 Aptos創始人兼CTO Avery Ching曾在Meta擔任首席軟件工程師超過10年,曾擔任Meta旗下加密平台Novi團隊的技術負責人。 Aptos軟件工程師David Wolinsky曾擔任Meta的Web3技術主管,加入Novi前擔任Meta技術主管/經理,負責Meta的廣告增長。 3. 開發進展 Aptos於今年3月上線開發者測試網,允許開發者在Aptos上搭建應用。随後Aptos分别在5月14日和7月1日啓動激勵測試網1(AIT1)和激勵測試網2(AIT2),吸引開發者和用戶。 根據Aptos最新的路線圖,Aptos將於8月30日至9月9日運行激勵測試網3(AIT3),AIT3的測試主題是治理和升級。AIT3是主網上線前的最後一個測試網,Aptos主網將於今年秋季上線。 Sui 1. 簡介 Sui是由前Meta工程師創立的Mysten Labs構建的Layer1區塊鏈,採用Move編程語言,專注於高TPS和低延遲。Sui旨在幫助開發者為未來數億Web3用戶提供良好的體驗。 Sui沒有設置TPS上限,具有良好的擴容能力,降低用戶的交易成本。在今年3月的測試當中,Sui的TPS達到12萬。 通過Move編程語言,Sui讓用戶的資產儲存在賬戶中,而不是某個智能合約上,資產的所有者通過簽名決定資產的存儲和轉移。 2. 團隊情況 Sui的開發公司是Mysten Labs,創始人包括Evan Cheng、Adeniyi Abiodun、Sam Blackshear等,都曾在Meta參與過Diem和Novi。 3. 開發進展 Mysten Labs於今年3月22日發文宣布推出Sui,并於5月上線Devnet,允許開發者使用Sui網絡,截至7月已有超5000個節點在Devnet上運行。 本月,Sui將啓動激勵測試網,目前已啓動激勵測試網注冊。按照測試網路線圖,測試網將分為多個wave,主題已確定三個:網絡、質押、升級。 4. 生態發展 目前公開信息的項目有8個,類别涵蓋錢包、NFT、鏈遊、元宇宙等。從目前項目布局、Sui對遊戲提供解決方案來看,NFT和鏈遊有望成為其生態比較有特色的版塊。 5. 融資情況 Sui的開發公司Mysten Labs正在以20億美元估值完成至少2億美元的B輪融資,本輪融資由FTX Ventures領投。此前,Mysten Labs在去年12月完成3600萬美元A輪融資,投資者包括a16z、Coinbase Ventures、Samsung NEXT等。 6. 代幣 Sui的總量為100億,將用於分配給創始團隊、投資者、公開銷售、Sui 基金會和未來的釋放。SU I有四個作用:質押/保護網絡、交易費、治理、賬戶單位/交易中介。 Starcoin 1. 簡介 Starcoin 是基於增強版 PoW 共識機制和 Move 編程語言的區塊鏈,通過分層靈活的互操作性,為DeFi、NFT、鏈遊提供解決方案。 Starcoin 使用 Move 語言,制定了包括 FT 和 NFT 在内的安全的數字資產協議,提供了成熟的形式化驗證工具代替傳統的合約審計,確保合約安全,保障用戶鏈上資產的安全性。 Starcoin 是具有 Layer2 擴容方案的區塊鏈,具有較好的可擴展性,狀態能夠安全無縫轉移,數據能夠輕松快速擴容,擁有較低的延遲和較好的操作性,將於今年9月提供測試網絡。 2. 開發進展 2018年底,Starcoin發布了首份白皮書,提出構建可擴展區塊鏈願景。2019年,Move語言正式推出,同年Starcoin Layer1決定採用Move作為智能合約語言及虛拟機。 2021年5月18日,Starcoin上線主網,是較早上線的採用Move語言的區塊鏈項目。Starcoin主網目前已穩定運行一年多時間。Starcoin Layer2將於今年9月提供測試網絡。 3. 生態發展 Starcoin生態包括錢包、CEX、DEX、礦池、穩定幣、NFT、鏈遊等七類。 Starcoin生態主要圍繞STC,通過錢包存儲和轉移STC,通過CEX和DEX交易STC,通過礦池進行節點挖礦直接獲得STC。 4. 代幣 Starcoin經濟白皮書提到,STC是Starcoin的原生代幣,發行總量為3,185,136,000 STC,總量恒定。 STC的主要用途有: 1.支付交易的gas費用。 2.支付狀態空間費用。 3.用於鏈上治理投票。 STC的代幣經濟模型顯示,國庫是經濟模型的中心,國庫將區塊獎勵分發給礦工,將國庫資金分給DAO,礦工和DAO將STC投入生態,鏈上生態收益最後回歸國庫,實現經濟模型自舉。 0L Network 0L Network是開放、無需許可的、由社區管理的Layer1區塊鏈。0L Network強調社區管理,由社區成員決定項目的發展路徑。 0L Network於2021年10月21日創世,其驗證節點數量限制在100個。0L Network表示,考慮到BFT(拜占庭容錯機制)的缺點,即100-120個節點之後網絡吞吐量明顯下降,因此將驗證節點數量限制在100個。 目前,0L Network暫未發行代幣,尚無融資信息。 公鏈生態發展狀況 (一)生態發展整體處於初期,生態内NFT、錢包居多 從搜集到的信息來看,目前Move語言公鏈的生態項目數量還比較少。 根據目前已經公開的項目信息,Aptos鏈上項目數在60-70個之間,Sui生態項目數量為8個,Starcoin生態項目數量(不含礦池和中心化交易所)為11個。 Aptos生態中目前上線可用的應用數量為27個,其中12個是原生應用。目前上線可用的應用以錢包、基礎設施、NFT居多。 目前Aptos的用戶可選擇交互的應用局限於錢包、Liquidswap和一些NFT交易平台。 Sui生態已上線的原生項目是域名項目Sui Names、錢包Sui Wallet、區塊鏈浏覽器Sui Explorer,以基礎設施為主,目前交互選擇不多。 Starcoin生態類别中NFT和鏈遊表現比較突出,在生態内運行時間相對更長。 (二)Aptos生態發展領先 Aptos的生態發展在Move公鏈競争中處於絕對領先地位,Aptos每周都會披露新項目,目前可以查詢到信息的應用數量在60-70個之間,數量遠超其他Move語言公鏈生態。 現在可用的27個項目涵蓋的類别包括DEX、錢包、DID、基礎設施、Launchpad、NFT、投資基金等。 在各個類别當中,DEX、錢包、NFT是目前發展相對成熟的版塊。 DEX類别中,Pontem Network上線了Aptos鏈上首個AMM Liquidswap,目前已經支持用戶交互。Solana鏈上DEX Solar Dex部署在Aptos上,是Solana鏈上應用向Aptos遷移的早期項目。 錢包在7月份Aptos公開信息的第一批項目中就引發了很高的讨論熱度,Aptos鏈上原生錢包項目Martian Wallet、Fewcha Wallet是用戶體驗Aptos必備的工具。 目前Aptos生態錢包項目增至6個,除了Martian Wallet、Fewcha Wallet,比較有名的是Blocto、ComingChat。 NFT方面,目前Aptos生態新的NFT項目較多,以PFP NFT為主。由於Move語言自身對NFT開發比較友好,Aptos鏈上NFT項目開發速度比較快。 目前,Aptos鏈上NFT交易平台主要是Topaz,用戶可以使用Aptos生態錢包Martian Wallet、Fewcha Wallet領取測試幣購買Topaz上的NFT完成交互。 Aptos、Sui測試網進展 (一)測試網進展 1. Aptos測試網進展 Aptos此前已經結束激勵測試網1和2(AIT1、AIT2)。 Aptos激勵測試網1(AIT1)從5月14日開始,參加人數100人。AIT1的主題是去中心化啓動,成功标準有兩點: ①成功啓動節點并在24小時内通過活動性檢查; ②可用性超過95%。 每位成功的參與者可得到500 Aptos代幣。 Aptos激勵測試網2(AIT2)從7月1日開始,到7月22日結束,主題是質押。共有超225個社區節點參與了AIT2,這些節點分布於全球44個國家和110個城市。 每位成功的參與者獲得500枚Aptos代幣。此外,前10%的投票節點獲得額外的200枚Aptos代幣。 Aptos激勵測試網3(AIT3)從8月30日到9月9日,主題是治理和升級。成功标準如下: ①在節點啓動時間後12小時内成功啓動節點并通過活動檢查; ②可用性超過97%成功參與标準網絡升級,2天響應時間; ③成功參與修補程序網絡升級,12小時響應時間; ④在前75%的共識參與者中(共識投票)。 每個成功參與者獲得500個Aptos代幣,前3名的投票節點分别獲得5000、2500和1000個Aptos代幣。 激勵測試網3(AIT3)是主網上線前最後一個測試網,主網將於今年秋季上線。主網上線後將進行主題為動態驗證器拓撲的AIT4。 2. Sui測試網進展 Sui將於本月啓動激勵測試網,目前已開放激勵測試網的注冊。 激勵措施:Sui基金會將為驗證者參與的每個測試網絡“wave”獎勵2000枚Sui代幣。按照路線圖,Sui測試網已經確定其中3個“wave”,分别是網絡、質押、升級。 除此之外,Sui承諾向繼續參與Sui主網的表現最佳驗證者提供至高達占總量10%的Sui。 (二)節點部署評估(難度評估、參與度、獎勵) Aptos和Sui的測試網參與方式都是啓動節點,為用戶參與設置了較高的門檻。用戶運行的節點需要滿足其成功标準,才能夠獲得獎勵。 以Aptos AIT2為例,AIT2的主題是質押,有資格參與質押的節點需要確保節點内質押數量持續上升。 成功的标準包括滿足由指标推送數據≥95%定義的節點活性、共識提案所定義的可用性每小時≥95%、至少有25%的投票結果是一緻的,對於節點運行有比較嚴苛的要求。 因此,如果是新手想要參與Aptos、Sui的測試網,盡量要找有這些網絡節點有成功運行經驗的人,通過他們的幫助或由他們代理節點運行。 Aptos和Sui的測試網進展不同,Aptos即將進行到第三階段,而Sui將於本月開啓測試網。因此,從測試網運行經驗和用戶參與度而言,Aptos更勝一籌。 從獎勵量上看,Aptos在每個階段給到符合成功标準的參與者500枚Aptos代幣,優秀的參與者會更多一些。 Sui在每個階段給到符合成功标準的參與者2000枚Sui代幣。目前兩個代幣都還無法查到價格,代幣數量上Sui占優。 Move語言背後的投資機會 (一)知名投行布局 在5條採用Move語言的公鏈當中,Aptos、Sui和Pontem Network公開了融資信息。 Aptos今年完成了兩輪融資,3月融資的投資者包括a16z、Tiger Global、Multicoin Capital,7月融資的投資者包括FTX Ventures、Jump Crypto、Griffin Gaming Partners、Franklin Templeton、Circle Ventures。 Aptos兩輪融資的投資機構陣容非常豪華,a16z、Tiger Global、Multicoin Capital、Jump Crypto是近兩年加密行業非常活躍的投資者,明星項目的投資陣容都能夠看到他們的身影。 投資陣容中出現Franklin Templeton令人眼前一亮,Franklin Templeton是最大的上市基金公司,截至今年5月,其資管規模近1.5萬億美元。Franklin Templeton去年推出2000萬美元區塊鏈風險基金,投資Aptos可以視為其在加密行業投資的一次探索。 Sui開發公司的兩輪融資的投資機構包括a16z、Coinbase Ventures、Samsung NEXT、FTX Ventures。 a16z和FTX Ventures參與了Aptos和Sui的融資,Samsung NEXT是三星電子早期創業加速器,近年來投資了FTX、Axie Infinity、Aleo等區塊鏈項目,屬於加密行業融資中比較活躍的傳統金融勢力。從Aptos和Sui投資機構可以看到傳統金融機構的布局。 (二)開發者:Move語言的特性與DeFi、NFT等產品的需求高度契合 3NJOY Lab創始人Flex在《為什麽我認為Move終將超越Solidity》中分享了對於Move語言的看法。3NJOY Lab旗下運營Aptos鏈上NFT項目Wav3和Souffl3。 Flex表示:資產安全、資源抽象、可組合這些都是Move在語言層面上的特性,綜合來說,我認為它是最适配鏈上應用開發的語言,它的特性與DeFi、NFT等產品的需求高度契合。 安比實驗室Secbit創始人郭宇提到喜歡Move的三點理由: 1.汲取PL(程序語言)領域研究成果,同時也吸收了EVM智能合約語言的經驗教訓; 2.從設計上無比重視智能合約安全性、正確性; 3.沒有墨守成規(既沒有用WASM,LLVM,也沒有在EVM上直接修改),而是積極創新,是設計構思真正适合金融應用的智能合約語言。 從Aptos、Sui、Starcoin的官方文檔中也可以看到選擇Move語言的考慮,選擇Move語言基於上文中提及的要素:安全性、可組合性、資源抽象、與DeFi和NFT的契合度、語言的表現力。 Move語言相較於Solidity語言的優勢,勢必將吸引更多開發者使用Move語言開發區塊鏈應用。 (三)項目及生態發展前景 Move語言與DeFi、NFT的契合度比較高,在採用Move語言的公鏈生態中,最先部署的是DeFi、NFT項目。 其中DeFi項目類型分布比較廣,包括流動性協議、DEX、借貸、穩定幣協議等。雖然生態項目數量還不多,但是多個DeFi類别已經有了應用。 NFT、鏈遊在Aptos、Sui和Starcoin生態均有項目,數量占比較大,在Aptos和Starcoin已經上線了NFT交易平台,而Sui生態也在建設NFT交易平台Sui Gallery。 從生態目前發展狀況來看,短期在Aptos、Sui生態部署的項目基本以DeFi和NFT項目為主,Starcoin生態項目集中於NFT、鏈遊、穩定幣和DEX版塊。 目前用戶與生態交互的建議是DeFi應用和NFT交易平台。 值得注意的是,根據Aptos鏈上非原生應用來源判斷,Solana鏈上應用目前正在往Aptos生態部署,Solana生態與Aptos生態關聯度增強,未來Solana開發者不排除在其他採用Move語言的公鏈部署智能合約。 (四)潛在的Alpha收益 目前Aptos、Sui都還沒有發幣,但市場對於兩者的估值已經比較高了,衆多知名投資機構參投了兩個項目。 機構積極布局Aptos和Sui,表明其看到新公鏈背後的Alpha收益。市場預期Aptos、Sui等新公鏈繼續此前的新公鏈叙事,達到甚至超越Solana、Avalanche等公鏈在牛市的收益水平。 從目前公布的文件,還無法獲悉Aptos、Sui網絡的價值捕獲能力,價值捕獲能力是這些公鏈後續需要思考的問題。 轉載文章連結:https://www.chaincatcher.com/article/2078052 本文章挑選自鏈捕手 公鏈挑戰者作者:小牛、哔哔 News 本網站所有非原創(轉載)文章版權歸原作者所有 特別說明:轉載文章會進行二次編輯以符合文章寫作需求,望作者包涵 延伸閱讀: 【新手懶人包】區塊鏈是什麼?一文看懂區塊鏈演化、應用、常見術語 【新手懶人包】元宇宙是甚麼?剖析元宇宙的構成、未來商機和應用 【新手懶人包】 NFT 是什麼?整合 NFT 科普、平台比較、製作方法 【新手懶人包】 GameFi 是甚麼?一文認識 GameFi 原理、運作方式、熱門NFT遊戲
Allen -
每日精選 | FTX 以 14.22 億美元出價成功競拍 Voyager | Cosmos Hub 發布 2.0 白皮書
每日精選 | FTX 以 14.22 億美元出價成功競拍 Voyager | Cosmos Hub 發布 2.0 白皮書
02
深度解析應用鏈的風險與機遇:應用鏈的下一個機會在哪裏?
03
談到 Web3 社交和遊戲的結合
04
向移動設備發展會是 Web3 的突破契機嗎?
05
BlockPulse 新用戶註冊優惠 獎品總計高達 $10,000 USDC
快訊