Web3堆棧:Web 2.0開發者需要知道的東西

將Web3堆棧分類如下.

本文由公號“老雅痞”授權轉載。

儘管Web3的開發者生態系統在更大的網絡開發者生態系統中只佔很小的比例,但它似乎在快速增長——因此,嘗試並確定Web3技術堆棧的組成部分很有意義。我們知道它包括用於去中心化的區塊鏈,以及作為身份形式的加密貨幣錢包。您可能還聽說過名稱華麗的分佈式存儲解決方案,如星際文件系統(IPFS)。但是開發者還需要學習什麼才能進入Web3的世界呢?另外,傳統的網絡技術如JavaScript,如何適應Web3環境呢?

到目前為止,我所遇到的關於Web3堆棧的最佳定義是由Nader Dabit寫的,他是一家名為Edge & Node的Web3公司的開發者關係工程師。我第一次採訪Dabit是在2020年8月,當時他在亞馬遜網絡服務公司擔任無服務器專家。那時,他剛剛在O ‘Reilly Media出版了一本名為《全棧無服務器:使用React、AWS和GraphQL的現代應用程序開發》的書。 2021年4月,他將這些技能帶入了新生的Web3世界。他在Edge & Node的部分工作是幫助構建The Graph,“一個用於用GraphQL索引和查詢區塊鏈數據的Web3協議。”

我聯繫了Dabit,問他做Web3開發人員與他以前在web2.0公司工作有什麼不同。但首先,讓我們仔細看看他的Web3參考文章。他將Web3堆棧分類如下:

  • 區塊鏈

  • 區塊鏈開發環境

  • 文件存儲

  • P2P數據庫

  • API(索引和查詢)

  • 身份

  • 客戶端(框架和庫)

  • 其他協議

正如他所指出的,這個堆棧與傳統的網絡架構“在許多方面完全不同”——區塊鍊和基於加密貨幣的身份是兩個最明顯的區別。 Dabit還提醒說,“Web3工具、技術和生態系統不如Web2成熟。”

“從網絡基礎設施的角度來看,”Dabit告訴我,“主要的區別實際上是圍繞著我們所認為的’後端’技術,但在Web3中,它們通常被稱為’協議’。”

前端

讓我們先從簡單的部分開始。根據Dabit的說法,Web3的客戶端技術(框架和庫)本質上與Web 2.0相同。在前端應用中大量使用JavaScript,而且就目前Web 2.0的狀態而言,React是一個領先的JavaScript框架。 Dabit指出:“絕大多數的Web3項目和例子都是由React構建的。”

Dabit向我解釋說:“除了實際的HTTP客戶端庫之外,前端技術並沒有太大區別。”因此,要通過HTTP協議與服務器通信,”你可以使用web3.js或ethers.js與rpc[远程过程调用],或者使用graphql客戶端與The Graph對話,而不是使用fetch或axios。 ” Web3.js和Ethers.js都是JavaScript庫,使開發者能夠與以太坊區塊鏈交互。

“此外,身份以及我們處理身份的方式在前端也是不同的,”Dabit說。 “要讀取數據,你不需要了解用戶的任何信息,因為幾乎所有的數據都是公開的。但要寫入數據,通常需要連接到用戶的錢包。有幾種方法可以做到這一點。在桌面應用程序中,用戶通常會為他們的錢包添加一個瀏覽器擴展,它會自動為網絡注入一個全局窗口對象(例如Solana、Ethereum、Arweave)。或者在移動端,它將允許你在錢包應用程序中進行認證,並在簽署交易後重定向。”

如果你嘗試過購買加密貨幣或NFT,或嘗試過dapp(去中心化應用程序),那麼你很有可能已經使用過MetaMask——它有一個瀏覽器擴展,可用於Chrome、Firefox和基於Chrome的瀏覽器,如Brave。 MetaMask由ConsenSys所有,該公司有理由稱自己為“領先的以太坊軟件公司”。

ConsenSys還在Web3中擁有領先的IDE(集成開發環境)之一。 Truffle是一個“使用以太坊虛擬機(EVM)的區塊鏈開發環境、測試框架和資產管道”。除此之外,它還提供了“智能合同生命週期管理”和“自動化合同測試”。

學習以太坊(和Rust)

現在我們來看看Web3堆棧更複雜的方面。到目前為止,大多數開發人員都熟悉區塊鏈的概念——基本上,它是一個分佈式的數據分類賬本。但有許多不同類型的區塊鏈。最重要的兩種是比特幣和以太坊(並非巧合的是,與這些區塊鏈相關的加密貨幣是兩個市場領導者)。但比特幣的可編程性就像計算器一樣——正如以太坊研究員Justin Drake在播客《Web3 Breakdowns》的一集中所說的那樣,以太坊是一個完全可編程的“圖靈完備”計算機。

以太坊的可編程特性導致了以區塊鍊為重點的網絡開發堆棧的新模式——也就是“Web3”。以太坊的原則之一是,理論上你可以在它上面構建任何東西。用web 2.0的說法,它是一個網絡平台。以太坊是最大的Web3平台,它也兼容其他一些區塊鏈。因此,成為Web3開發人員的主要途徑就是學習如何使用以太坊。

你可能聽說過Solidity,一種用於以太坊區塊鏈的編程語言,有點類似於JavaScript。雖然這是事實,但Solidity僅用於為區塊鏈編寫“智能合約”——將數據和數據的任何指令放在區塊鏈上。

“在區塊鏈世界中,學習Solidity和EVM(或以太坊虛擬機)可能是作為區塊鏈開發人員入門的最佳選擇,”Dabit在他的文章中解釋道。 “使用這個技能組合(和技術堆棧),你不僅可以為以太坊,還可以為其他以太坊二層、側鏈,甚至其他區塊鏈,如Avalanche、Fantom和Celo構建。”

然而,作為對Web 2.0世界的另一種認可,Rust也正在成為智能合約開發人員的必備技能。 Dabit 將Solana、NEAR 和Polkadot 列為具有“一流的Rust 支持”的三個區塊鏈示例。

Dabit告诉我:“我认为Solidity和Rust是智能合约开发中使用最多、需求量最大的语言。他补充说,由于经验丰富的智能合约程序员相对较少,他们可以轻松地获得“每年数十万美元左右的薪水,我甚至看到过一些经验最丰富的程序员年薪在100万美元左右。”

如何存儲和查詢數據

Web3開發中最棘手的部分之一是數據的存儲和使用。雖然區塊鏈擅長成為不可變數據的“去信任”鏈,但它們在存儲和處理大量數據方面也非常低效——尤其是對於dapps。這就是IPFS、Arweave 和Filecoin 等文件存儲協議的用武之地。

Arweave是一個開源項目,它將自己描述為“一個允許你永久、可持續地存儲數據的協議,只需要預付一筆費用。”它本質上是一個點對點(P2P)網絡,但有自己的一套加密術語——它的採礦機制被稱為“”隨機訪問的簡潔證明(SPoRAs)”,開發人員可以將應用程序部署到”permaweb”(”一個建立在Arweave之上的永久的去中心化網絡”)。

更複雜的是,dapp開發者可以選擇使用“鏈外”解決方案,即數據存儲在主區塊鏈之外的其他地方。兩種常見的形式是“側鏈”(二級區塊鏈)和所謂的“第二層”(L2)解決方案,如比特幣閃電網絡和以太坊Plasma。更多關於如何在Web3中進行數據管理的信息,請查看數據API公司Fauna的Shashank Golla最近在The New Stack上發表的文章。

至於如何在區塊鏈上索引和查詢數據,這是一個相對較新的開發領域。但如上所述,Dabit正在開發一種解決方案——由GraphQL驅動的The Graph。除此之外,它還允許開發人員在應用程序中使用GraphQL直接從L1或L2鏈進行查詢。

去中心化:Web3開發者的窘境

基於Dabit所描述的Web3堆棧,很明顯,傳統的網絡編程技能——從JavaScript到Rust——將在Web3開發中為你提供良好的幫助。但你還必須學會如何使用智能合約編程區塊鏈,並適應加密文件存儲和鏈下解決方案的陌生世界。

從開發者的角度來看,Web3目前似乎處於過渡時期,試圖找到擺脫對Coinbase、OpenSea和Alchemy等中心化服務依賴的方法。但這樣做是所有復雜性的來源,因為真正的去中心化對於dapps來說是很難實現的。

我很好奇Web3堆棧在2022年以後會如何發展,因為它正在尋找方法來實現自己的去中心化宣傳。與此同時,如果你想了解更多,請查看Nader Dabit的Web3開發者指南。去年10月,他在Next.js Conf上做了演講,他在其中解釋了堆棧。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts