
Web2 的開發者,如何進入 Web3?
TechFlow Selected深潮精選

Web2 的開發者,如何進入 Web3?
瞭解區塊鏈基礎、區塊鏈使用探索、然後根據自己的興趣選擇一個方向精進。
撰文:Tiny 熊
AI 和 Web3 是當前為數不多認為有巨大潛力的兩個方向,Web3 薪資相對較高、有很多遠程崗位、可全球就業,因此很多 Web2 開發者想進入 Web3 。
學習 Web3 開發最難的估計是不知道從何處下手,Web3 經過 10 多年的發展,內容越來越廣,很多內容還相互依賴,給想進入 Web3 的開發同學帶來了困惑:從哪裡開始學、應該學什麼。
我自己 2017 年進入 Web3 ,從事合約開發、技術佈道、並一直跟蹤區塊鏈技術的發展,根據我對整個 Web3 的理解,整理下面這個學習路線圖,希望可以幫助大家在學習的時候有更清晰的路線。
本文算是對這個學習路線圖的解讀,路線圖是可交互式的[1],遇到不理解的術語,可以點擊術語右上角小箭頭查看右側說明。
在學習路線圖中,我將學習 Web3 分為幾個階段:瞭解區塊鏈基礎、區塊鏈使用探索、然後根據自己的興趣選擇一個方向精進。
剛進入 Web3 開發的同學,在選擇方向上不能貪多,而是應該做一些取捨,聚焦一個點往深處紮根,這樣不容易迷失方向,也更容易看到自己的成長。
瞭解區塊鏈基礎
區塊鏈背後的技術,依舊是傳統計算機技術的延伸,在 Web3 從事開發,掌握數據庫、數據結構、計算機網絡、編程語言依舊是必須的。
但區塊鏈的去中心化運行方式,剛開始的時候不好理解,是因為它不單單是技術問題,還包含了一個社會化的思想。
純從技術角度想,容易想不明白為什麼 BTC 的數量會限制在 2100 萬個?心想:程序不都是可以修改的麼?
如果能回答這個問題,區塊鏈基礎(什麼是區塊鏈、是如何工作的)其實理解的差不多了。
區塊鏈有什麼用,為什麼有用、什麼場景需要區塊鏈技術,是一個隨著時間推移不斷加深理解的過程。
當下區塊鏈技術依舊有不少的問題,但總體上來講,區塊鏈是一個強化個人主權、同時讓群體協作更透明的技術。
我遇到不少同學總是拿 Web2 的優點與 Web3 的不足比較,我們在學習一個新技術時,要儘量保持開放的心態、這樣才能吸收更多。
區塊鏈帶來的改變沒有 AI 那麼直接,因此我們容易低估他的價值。
區塊鏈使用探索
在對區塊鏈有了基礎的認識之後,可以上手體驗真實的區塊鏈應用,例如使用錢包[2]軟件創建自己的賬號,有條件的也可以持有一點加密貨幣(會有一點門檻,雖然也可以用測試幣體驗。但真金白銀的體驗會不太一樣)。
感受發起交易時的簽名,查看區塊鏈瀏覽器,交易打包出塊的過程。
在使用時,會感受到不同鏈的交易速度,可以藉此瞭解不同的共識機制、嘗試理解不同共識在去中心、安全及效率上的權衡。
如果覺得有趣,可以感受一下 DEX 資產兌換、 NFT 交易、DAO 治理。
對比 Web2 ,Web3 應用的關鍵不同是:你的資產只屬於你(任何信息都可以看作是一種資產),只有自己私鑰簽名後才能支配資產,任何人都無法剝奪你的資產。另一個不同是:Web3 應用通常都是開源的,所有人都是平等的參與一個透明的規則。
如果你認可 Web3 的價值和意義,可以嘗試加入 Web3 建設。
選擇方向
這個文章主要以技術的角度討論,大家可以選擇研究方向和開發方向(Web3 項目裡還有社區運營的事情也很有意思,這裡不討論)。
如果有比較好的理論或學術背景,或者更喜歡探索新事物,想走研究方向,比如研究密碼學、共識算法、擴容方案、代幣經濟學等,通常需要閱讀大量的英文論文。
開發方向分兩大類:鏈開發和應用開發
鏈開發
鏈開發對開發者的技能要求會高一些,薪資也會高一些,不過市場需求比應用開發會少。隨著時間推移,應用逐步拓圈,應用開發需求會越來越多,鏈開發會逐步穩定,新鏈的機會並不多,鏈開發比較適合喜歡鑽研底層的同學。
從事鏈開發,可以選擇開發新鏈、或者是做二層、三層擴容鏈:
開發新鏈,通常指 Layer1, 需要了解這些內容:
-
Geth:是 Go 語言實現的以太坊節點軟件,廣泛用於 EVM 兼容鏈的開發與定製。
-
Reth:Rust 語言的以太坊實現,提供了一種高性能的以太坊客戶端選擇。
-
Substrate:Rust 語言實現,用於構建定製區塊鏈的框架,由 Parity 開發,除在 Polkadot 生態大量採用外,也有很多獨立鏈基於 Substrate 進行定製。
-
Cosmos SDK:Go 語言開發的,模塊化區塊鏈開發框架,Cosmos 網絡兼容的新鏈基本都是基於 Cosmos SDK 開發。
-
另外還有部分使用 Move 虛擬機和 Solana VM 虛擬機開發的鏈。
Layer2 擴容或 layer3 應用鏈
由主鏈的交易容量有限,尤其是以太坊及比特幣,無法承載大規模的用戶使用,Layer2 的思路是,將部分交易轉移到主鏈外(Layer2)執行, Layer1 僅負責驗證 Layer2 的執行,三層則通常是針對特定應用場景進行定製的區塊鏈。鏈開發者需要了解的內容有:
-
OP Stack:Optimism 開發的 Layer2 框架,實在以太坊 Layer2 鏈中使用最多的框架。
-
Polygon CDK:是 Polygon 開發的鏈開發工具包,支持更靈活的擴展:如 Validium、zkRollup 等。
-
StarkEx:StarkWare 開發的利用 ZKStark 技術來實現二層擴展的方案。類似的 ZK 方案還有 Matter Labs( zkSync 背後的團隊) 的 ZK Stack。
-
Arbitrum Stylus(Arbitrum Nitro 的迭代) 和 Arbitrum Orbit:Arbitrum 團隊開發的 Layer2 及 Layer3 擴容方案,Stylus 提供支持多語言編程的執行層擴展。
想做鏈開發,模塊化區塊鏈也需要了解一下,模塊化的思想是將之前一個整體的區塊鏈分成多個層,不同的層解決不同的問題,甚至由不同的鏈來承擔, 4 個層分別是:
-
執行層:負責處理智能合約的執行,類似於以太坊的 EVM 模塊,Layer2 在一定程度上就是一個執行層。
-
結算層:用於結算交易,確保鏈上的資產安全和交易的有效性。
-
共識層:保證節點之間對交易達成共識的模塊。
-
數據可用性(DA):確保鏈上數據能夠被正確存儲和訪問的層,二層擴展方案中用來驗證二層交易的有效性。不同的 DA 方案有:EIP4844 用 Blob 作為 DA,AnyTrust、 EigenDA 、Avail DA、Celestia、NearDA 等。
還有一個趨勢是,區塊鏈上逐步集成 零知識證明(ZKP) 能力,例如使用 ZKP 來做交易執行的證明(zkRollup 也在 Layer2 層的應用,在 Layer1 層上也可以採用),用 ZKP 做存儲狀態的證明,實現輕客戶端、無狀態客戶端來實現更好的去中心化。還有鏈通過 ZKP 來實現隱私交易。
如果你選擇鏈開發,給初學者的建議是學習 Go ,探究 Geth 和 Op Stack,其他的框架根據需要和興趣研究。
上面 Layer2 擴容更多是以太坊的視角,最近比特幣上擴容方案也有不少團隊在做,關注度挺大,大體上有(狀態)通道類擴容和側鏈類擴容方式,前者繼承比特幣安全性較高,但在編程能力擴展上較差。典型的代表有閃電網絡、以及與 RGB、RGB++ 客戶端驗證方案的組合。後者繼承比特幣安全性較差,例如採用 MPC 的方式跨鏈,但可以做到更好的編程能力擴展。也有一些結合兩者的方案。
目前比特幣上擴容方案行業依舊處在探索階段,如果你是比特幣信仰者,可以多多關注。
應用開發
如果想做應用開發,鏈的底層實現並不需要很深的理解,但我們需要了解各鏈的特點,如區塊鏈性能、去中心化程度。
例如想開發社交或遊戲類應用,對底層鏈的性能較高,而開發高價值的 DEFI 類型應用,對去中心化可能有更多的要求。
另外,底層鏈支持的開發語言以及生態的活躍度及對應用扶持力度等,也要考量的,這些關係到應用實現的工作量以及獲取的用戶的成本。
對於找工作的朋友也是類似,生態活躍度越高,工作機會越多,競爭也會大一些。
選擇一個適合的底層鏈對應用的成功相當重要,多數通常是選擇基於一個或一類鏈開發,也有一些應用需要支持很多的鏈,尤其是基礎設施類應用, 例如,錢包、跨鏈橋、喂價預言機等,通常要支持很多個鏈。
選擇適合自己的生態
簡單對比一下各個生態,供大家參考:
比特幣 :有最大的共識與資金體量,但是腳本能力有限,基於比特幣鏈上能做的應用較少,很多應用需要結合索引器或者客戶端驗證方案來實現,生態還不夠成熟,不過從發展的角度看,可能有更多的機會。
EVM 生態:包含了以太坊、以及眾多的 EVM 兼容鏈(包括波場 Tron 也算 ),一部分 BTC Layer2 也是 EVM 兼容鏈,這些兼容鏈編程模型相同,都使用 Solidity 開發智能合約(及鏈上運行的程序),應用生態豐富,開發工具完善、開發資源比較豐富。
Solana:過去一年發展很強勁,生態體量上是老二,比 EVM 生態差距依舊比較大,Solana 的優勢是吞吐量大,交易塊,Solana 合約使用 Rust 開發,入門門檻較高。
TON:背靠有大量用戶的 Telegram ,近期熱度很不錯, TON 同樣具備高性能特點,智能合約主要使用 Func,但 TON 生態發展時間較短、工具庫不完善,開發資源較少。
還有一些其他的區塊鏈生態,如:Move 生態(包括 Sui / Aptos)、Starknet 生態、ICP 生態、AO/AR 生態等,都有各自的優點,但目前關注度更小。
這裡描述的是當前的生態情況,各個生態的發展都是動態的,不同的生態也有不同的文化特點,大家可以根據自己的偏好選擇。
給初學者的建議是從 EVM 生態入手,資料豐富、生態也比較穩。
合約開發
Web3 應用開發和互聯網應用開發相比,很大的變化是大量後端邏輯轉為智能合約在鏈上運行(也有一部分後端邏輯轉移到前端,參考下一小節),以此來去除對中心化服務端的依賴。
也有很多 Web3 應用不涉及合約開發,例如:錢包、交易所、鏈上數據服務等,開發這些應用時,需要了解如何與合約交互。參考下一小節。
EVM 生態開發合約最常見的以太坊智能合約語言是 Solidity,一定要學習,Yul 是開發合約的彙編語言,如學有餘力,可以研究一下。
Solana、TON、Move 等生態鏈,有各自的開發語言,我們以後有機會單獨介紹。
Solidity 開發 IDE,入門推薦使用在線 Remix IDE, 一般在項目開發中是使用 VS Code + 開發框架, 開發框架幫助我們編譯、部署及測試智能合約,開發框架首選 Foundry ,測試更方便,其次是 Hardhat 。
開發智能合約時,需要理解常見的 Token / NFT 標準並會使用,如 ERC20 、ERC2612、ERC721、ERC1155 , 使用輪子也是一個很好的習慣,OpenZeppelin 是一個智能合約庫,實現了各種標準,使用庫可以減少自己的工作量,提升程序安全性。
開發合約程序時,要儘量遵循標準。這一點與 Web2 開發也是不同, Web2 程序通常是自己在調用,智能合約通常是公開給任何人調用,而且他人調用越多,程序價值越大。遵循標準可以讓他人更方便的調用自己的程序。
合約開發進階
Solidity 的入門簡單,但要成為一名優秀的合約工程師有很多東西要學(練)習,例如掌握優化合約技巧來降低 Gas 費用、使用 Create2 創建及預測合約地址、理解底層 Call 調用和委託調用的機制、理解如何對合約進行升級、如何靈活應用離線簽名減少用戶費用、使用 Merkel 樹降低鏈上存儲成本、熟悉常見的安全漏洞、理解 DAO 治理方式及實現、理解賬戶抽象、瞭解如何利用預言機來獲取鏈外數據等等。
另外,DEFI 去中心化金融是目前 Web3 最重要的一個應用場景,瞭解常見金融概念、熟悉常用 DEFI 的運行、理解閃電貸的運行,會讓我們有更多的機會。
Web3 應用的前後端
合約扮演的是後端程序的, 一個體驗好的 Web3 應用同樣需要少不了前端、 Web3 應用是由用戶自己託管資產的,因此前端需要和錢包鏈接一起完成交互。
Web3 應用後端更多的是當做一個緩存層,因為鏈上的數據不是類似數據庫的結構化數據,對查詢不夠友好,加一個後端作為數據緩存層,可以優化用戶體驗。
現在也有很多專門的鏈上數據服務商,鏈上有大量開放的數據,是一個數據寶庫, 如果你對大數據感興趣,這也是一個很好的方向。
開發 Web3 前端時,需要了解常用的錢包接入方法,如會接入 MetaMask 、 WalletConnect 、Web3 Model 等前端錢包組件,前端與鏈交互通常是通過 Vim.sh 、 Ethers.js、Web3.js 等交互庫來完成,這些交互庫其實是鏈節點提供 RPC 服務的包裝。在調用時,前端通過 RPC 節點的 URL 來確定和哪一個鏈交互,通過 ABI 及合約地址來確定和哪個具體的函數交互。
Web3 後端主要處理數據,例如掃碼區塊,獲取指定合約的指定事件的的數據,和鏈交互使用的方法與前端類似, 但根據後端語言不同,會使用不同的包裝庫與 Web3 RPC 節點通信,使用比較多的是 Go 後端使用 go-ethereum 庫、Node.js 後端使用 Vim.sh 、 Ethers.js 等庫,這幾個庫可以多熟悉一下。
歡迎加入深潮 TechFlow 官方社群
Telegram 訂閱群:https://t.me/TechFlowDaily
Twitter 官方帳號:https://x.com/TechFlowPost
Twitter 英文帳號:https://x.com/BlockFlow_News












