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