我們將Web3 定義為基於區塊鏈技術的去中心化互聯網生態系統。
首先,作為開發人員和建設者,我們理解去中心化通常會喚起碎片化技術堆棧的概念。雖然Web3 確實仍處於萌芽狀態並迅速發展,但我們發現它的基礎構建塊已經開始形成。
為了更好地理解Web3 和去中心化互聯網的內部運作,讓我們直接深入Web3 開發堆棧。
Web3 堆棧概述
在高層次上,構建任何Web3 應用程序都需要深入了解區塊鍊網絡、Web3 基礎設施和Web3 開發環境。
Web3 網絡層
Web3 技術棧的基礎是區塊鍊網絡層。雖然Web2 應用程序依賴於集中式數據庫,但Web3 應用程序構建在區塊鏈架構之上,可實現無信任和無許可訪問。
WCoAVPqrLQ 在選擇區塊鍊網絡來構建去中心化應用程序(dApp) 時,開發人員有兩個主要選擇:兼容以太坊虛擬機(EVM) 的區塊鍊和不兼容EVM 的區塊鏈。
EVM 區塊鏈
從歷史上看,以太坊一直是Web3 開發的主要框架,其虛擬環境(即以太坊虛擬機或EVM)存儲關鍵信息,如賬戶和余額。以太坊的虛擬機還存儲了一個機器狀態,它能夠根據EVM 制定的一組預定義規則隨著每個新塊的變化而變化。對於開發人員而言,最重要的是,EVM 為智能合約的存儲和執行提供了一個框架,允許開發人員對鏈上邏輯進行編程。
隨著以太坊區塊鍊和EVM 的興起,許多旨在解決以太坊可擴展性限製或昂貴交易成本的不同網絡選擇開發與EVM 完全兼容的框架。這意味著與EVM 兼容的鏈都共享相同的軟件層——即Solidity——運行智能合約。
與EVM 兼容的區塊鏈允許開發人員利用專門為EVM 鏈構建的所有相同工具、文檔和社區,從而節省時間和金錢。
EVM 區塊鏈示例
以太坊
原創EVM 智能合約平台
Polygon
以太坊側鏈
Arbitrum
使用樂觀匯總和多輪欺詐證明的第2 層區塊鏈
Optimism
使用Optimistic rollups 和單輪欺詐證明的第2 層區塊鏈
Hermez
由Polygon 管理的ZK 匯總以太坊第2 層網絡
ZKSync
使用SNARK 的ZK 匯總以太坊第2 層網絡
Starknet
使用STARK 的ZK 匯總以太坊第2 層網絡
Avalanche
與EVM 兼容的第1 層
Chronos
與EVM 兼容的第1 層
3 個最佳Web3 開發環境
在選擇構建dApp 的區塊鍊網絡時,Web3 開發人員應考慮可用的開發人員工具的深度和廣度。幸運的是,與EVM 兼容的鏈受益於多年的以太坊開發,並且在開發環境方面有許多久經考驗的選擇。
1. Hardhat
一個允許開發人員編譯、測試、部署和調試以太坊軟件的JavaScript 軟件開發環境,Hardhat可以通過靈活的插件進行擴充,使開發人員能夠輕鬆地自定義本地區塊鏈開發環境,並附帶用於故障排除和調試的強大文檔集。
2. Truffle
Truffle 、Ganache 和Drizzle三種不同的基於javascript 的開發工具套件——Truffle 幫助構建者編譯、測試和部署EVM 代碼,同時還為前端dApp 開發提供工具。
-
Truffle – 主要的開發環境、測試框架和部署管道
-
Ganache – 允許開發人員快速創建本地區塊鏈
-
Drizzle – 各種前端庫,用於將前端組件與智能合約連接起來
3.Brownie
作為用於EVM 開發的基於Python 的框架的Hardhat 或Truffle 的替代方案,Brownie提供了一整套Web3 開發工具,主要由web3.py包構建,用於編譯、測試和部署dApp。
非EVM 區塊鏈
最近,開發人員開始在不遵循以太坊框架的區塊鏈上構建更多的dApp,因此不兼容EVM。
非EVM 網絡工程師認為,EVM 鏈過於受以太坊框架的限制,而是選擇通過設計新結構來進行創新。通常,非EVM 區塊鏈從一開始就設計為具有數據和交易可擴展性,並允許每秒高交易量(TPS)。
非EVM 區塊鏈示例
-
Flow – 第1 層使用Cadence,Flow 的原生面向資源的編程語言
-
NEAR – 第1 層使用Rust 或Assemblyscript 進行智能合約
-
Solana – 使用Rust C、C++ 的第1 層智能合約
-
Terra – 將Rust 用於智能合約的第1 層
非EVM 區塊鏈開發環境
雖然非EVM 鏈的開發環境不太成熟,但一些網絡已經開始為各自的鏈帶頭開發工具。
Flow 使開發人員能夠使用本地Visual Studio Code Extension測試Cadence 智能合約的錯誤,這是最流行的IDE(集成開發環境)之一。
另一個非EVM 開發環境的例子是Anchor,它允許構建和測試Solana 合約,具有與Solidity 和Truffle 類似的感覺。總的來說,Anchor 的環境降低了Rust 和Solana 開發的障礙。
我應該使用什麼區塊鍊網絡?
由於單個區塊鏈通常具有獨特的架構和共識機制,因此它們將不可避免地針對特定用例進行更好的優化。因此,我們堅信多鏈Web3 的未來。
EVM 框架是一個非常豐富的環境,因為它具有越來越多的可互操作工具。此外,EVM 兼容性為用戶和開發人員提供了一個更流暢的流程,用於通過跨鏈dApp 移動流動性,並提供熟悉的用戶和開發人員體驗。對於早期開發人員和新協議,我們認為圍繞與EVM 兼容的區塊鏈進行開發以利用現有工具、基礎設施和開發人員文檔是一個令人信服的論據。
話雖如此,我們也認識到非EVM 區塊鏈對於更有經驗的開發人員的利基功能、他們不斷增長的社區基礎以及對早期開發人員的工具支持的增加開發。
區塊鏈交互層
選擇區塊鍊網絡後,Web3 堆棧的下一步是區塊鏈交互層。該層允許開發人員和用戶在區塊鏈中讀取和寫入數據。
如果您不熟悉區塊鏈的工作原理,這裡有一個快速回顧。
-
區塊鏈由數據塊組成。
-
塊存儲在分佈式節點上。
-
區塊鏈中的每個節點都充當“迷你服務器”,允許其操作員讀取/寫入數據塊。
-
添加到區塊鏈的任何塊都必須在網絡上的所有節點上傳播以保持同步。
在考慮Web3 框架內的數據訪問層時,請記住,鏈上存儲是標準,因為它本質上是不可變的,並且允許任何公共個人查看/驗證它。
數據提供者,如區塊瀏覽器,是區塊鏈交互層的關鍵部分。對於初學者來說,它們提供了一個進入較低網絡層的窗口,並作為一個在線資源,用於檢索有關交易、地址餘額、gas 費用等的實時和歷史數據。區塊瀏覽器通常用於查找支付的關鍵細節、確定不同交易的狀態或簡單地了解區塊鏈使用的總體趨勢。數據提供者使公眾能夠閱讀和解釋區塊鏈。
Web3 基礎設施挑戰
但是,如果沒有適當的基礎設施要求,訪問區塊鏈數據並與之交互可能會非常困難。
由於直接在鏈上寫入數據不經濟,Web3 開發人員使用EVM 鏈的內置日誌記錄功能,以便智能合約可以通過Solidity 事件以可搜索、經濟高效的方式在鏈上“打印”信息。雖然日誌記錄以獲得更便宜的存儲並且是讀取和寫入區塊鏈的最流行方式,但它需要一個強大的區塊鏈交互層來確保開發人員能夠在事件發出時捕獲它們而不會失敗。
運行節點與使用節點服務提供者
從歷史上看,使用區塊鏈交互層需要運行一個自託管、自維護的節點。這是一個昂貴且耗時的過程,僅運行一個以太坊節點的平均成本為每年86,000 美元。開發人員沒有構建協議和dApp,而是發現自己花費工程資源來管理來自節點的錯誤、回歸、磁盤問題、CPU 流量峰值等。
運行您自己的節點的成本導致了Alchemy 的創建。在其核心,Alchemy 公開了一套API,供開發人員與區塊鏈交互,而無需管理節點。
作為多鏈Web3 的堅定支持者,Alchemy 的API 套件在單一熟悉的API 框架內提供跨第1 層(包括以太坊網絡)、第2 層(包括Arbitrum 和Optimism)、側鏈(包括Polygon)和非EVM 兼容的L1(如Flow)的多鏈支持.
最終,Alchemy 允許區塊鏈開發人員對整個Web3 網絡層進行可靠且可擴展的訪問,使他們能夠專注於構建Web3 堆棧。
Web3 表示層
在許多方面,Web3 表示層密切反映了Web2 開發的許多方面。
對於前端組件的創建和開發,許多開發人員轉向了久經考驗的React.js 庫。擁有大量開發人員和Web3 社區的追隨者,它是Web3 前端的事實標準。
Web2 和Web3 前端堆棧不同的一個領域是用於與區塊鏈數據交互的特定庫。
在與數據訪問層交互時,Web3 dApp 傾向於使用Ether.js 或Web3.js,而不是更典型的HTTP 請求庫,如Axios 和Fetch。特別是,Ethers.js 和Web3.js 都原生支持對託管在區塊鏈交互層上的區塊鏈節點的遠程過程調用(RPC),從而能夠更無縫地集成到開發人員的Web3 技術堆棧中,並將數據讀寫到區塊鏈中。
如何在Ether.js 和Web3.js 之間進行選擇
在選擇Ethers.js 和Web3.js 時,有幾點需要考慮。
Ethers.js 是一個更輕量級、對開發人員友好的庫,具有強大的文檔。雖然許多早期的開發人員和資深人士都通過Ether.js 開發了dApp,但它由少數人維護,限制了庫的開發。
Web3.js 擁有最多的分叉/提交,並且是最常用的以太坊JavaScript 庫。雖然它也被廣泛使用,但它缺乏Ethers 文檔的廣度和深度,可能不適合早期的Web3 開發人員。
Web3.js 的另一個替代方案是Alchemy Web3,它是一個帶有額外API 方法、升級的websocket 支持和已啟用的自動重試的分支,允許開發人員更輕鬆地採用。
去中心化存儲
雖然區塊鍊為去中心化狀態管理、智能合約存儲/執行和交易價值提供了媒介,但更高級別的應用程序需要額外的組件。對於圖像、視頻和GIF 等前端內容,區塊鏈存儲非常昂貴且效率低下。去中心化存儲填補了這一空白。
一種解決方案是星際文件系統(IPFS),這是一個分佈式網絡,由個人存儲和共享文件、網站、應用程序和數據的節點組成。隨著NFT 的興起,IPFS 的使用量激增,並經常作為NFT 媒體資產的底層存儲介質。
另一個流行的去中心化存儲解決方案是Arweave,旨在激勵個人永久存儲數據。通過Arweave 網絡,礦工提供存儲空間以換取代幣,協議本身確保存儲的數據在所有節點之間保持正確和一致。
Web3 應用層
在Web3 的上下文中,應用層涵蓋DeFi、NFT、身份和認證、數據和分析以及許多其他令人興奮的dApp 類別。總之,這些分散的Web3 應用程序包括一些最大的本地Web3 公司,如OpenSea、Uniswap 和Aave。
作為開發人員,這通常是最有趣的構建層。不同的去中心化應用程序可以混合搭配在一起,將強大的原語組合成新的、複雜的產品。
應用層主要允許公共消費者(其中許多人可能不完全理解Web3 開發的複雜性)輕鬆地與直觀的前端交互。最終,用戶友好的前端使公眾能夠在日常生活中利用去中心化的互聯網。
立即開始在Web3 堆棧上構建
隨著Web3 從當前狀態發展到成熟,肯定會有範式轉變、新的Web3 基礎設施工具和大量需要學習的東西。鑑於Web3 技術棧的不斷變化,開始使用它進行開發似乎令人生畏,但在Web3 技術棧中定義的層仍然存在。
加入越來越多的開發者運動——包括Web3 本地人和來自Web2 的同路人——我們可以一起建設未來!