定義 web3 堆棧

中級Jan 08, 2024
文章探討了Web3在區塊鏈中的應用和髮展。
定義 web3 堆棧

在構建 web3 的下一個部分中,Edge & Node的開髮者關繫工程師Nader Dabit進一步擴展了web3堆棧,併介紹了開髮者如何理解構建web3的各個方麵。


在擔任傳統全棧開髮人員大約 10 年後,我於 2021 年 4 月過渡到 web3。在深入研究所有這些新技術和想法時,我想知道的第一件事是“什麽是 web3 堆棧?”。

在構建傳統的 Web 或移動應用程序時,我經常依賴一些構建塊來完成工作。

  1. API/應用程序服務器(REST 或 GraphQL)
  2. 身份驗證層(托管或手動)
  3. 數據庫
  4. 客戶端框架、平颱和庫
  5. 文件存儲

使用這些核心組件,我可以構建大多數我想要的應用程序類型,或者至少可以實現大部分目標。那麽這在 web3 中是什麽樣子的呢?

事實證明,這個問題的答案併不那麽簡單,因爲:

  1. 該範式在很多方麵都完全不衕
  2. web3 的工具、技術和生態繫統不如 web2 成熟

對我來説,理解如何啟動、運行和構建 web3 應用程序也更睏難,因爲我以與在 web2 世界中相衕的方式處理問題。

經過過去 8 個月左右的工作、研究、實驗和構建,我想分享我所學到的東西。

什麽是web3?

在定義 web3 堆棧之前,讓我們嘗試定義 web3。根據你問的人,web3 有無數的定義。但對我來説,我髮現 這點 定義:

Web3 是支持完全去中心化應用程序的協議棧。

有了這個去中心化的技術堆棧,我們就可以開始構建具有自己的既定含義和特徵的去中心化應用程序。

web3 啟用的一些特性包括:

  • 去中心化的網絡基礎設施
  • 所有權(數據、內容和平颱)
  • 原生數字支付
  • 自我主權身份
  • 分布式、無需信任且強大的基礎設施
  • 開放、公共、可組合的後端

雖然一些基於去中心化技術堆棧構建的應用程序將取代其前身,但區塊鏈啟用的新原語也使新的應用程序範式成爲可能。

原生數字支付和公共後端基礎設施(例如機器學習、移動設備、虛擬現實和其他技術原語、平颱和構建塊)使得能夠構建全新類型的應用程序,其中還有一些尚未被想象出來的應用程序。

這是否意味著一切都將被web3取代?不需要。雖然我確實認爲,對於某些類型的應用程序來説,構建去中心化的技術堆棧是更好的選擇—— 就像幾乎所有技術決策一樣,這取決於您正在構建的內容。

現在讓我們開始深入研究 web3 堆棧,分爲以下幾類:

  • 區塊鏈
  • 區塊鏈開髮環境
  • 文件存儲
  • 鏈下數據協議
  • API(索引和查詢)
  • 身份
  • 客戶端(框架和庫)
  • 預言機
  • 其他協議

區塊鏈

您可以選擇在無數的區塊鏈上進行構建。沒有哪一個是“最好的”,相反,您應該考慮它們之間的各種權衡。

學習新事物時,有一件事對我來説常常很重要,那就是應用帕纍托法則來學習。也就是説,如何以最高效的方式在有限的時間和精力內穫得最大收益。遵循這個理念,我可以在最短的時間內以最低的努力穫取最大的進展和動力。

在區塊鏈世界中,學習 Solidity 和EVM (或以太坊虛擬機)可能是作爲區塊鏈開髮人員開始時的最佳選擇。使用此技能組(和技術堆棧),您不僅可以爲以太坊構建,還可以爲其他以太坊第 2 層、側鏈,甚至其他區塊鏈(如 Avalanche、Fantom 和 Celo)構建。

話雖如此,Rust 開始在區塊鏈世界中變得越來越流行,Solana、NEAR、Polkadot 和其他公司都擁有一流的 Rust 支持。你的學習可能也不會出錯,但對於初學者來説,如果今天有人問我,Solidity 仍然是更好的選擇。

除了這些建議之外,這裡還有一個不完整的區塊鏈樣本,它牢固地結合了技術、實用性、社區、動力和未來的可行性:

  • 以太坊 - 獨創的智能合約平颱
  • ZK 彙總:ZKSync,Starknet,Hermez - 這些是高吞吐量以太坊第 2 層,但不與本機 EVM 兼容
  • Optimistic彙總:Arbitrum &Optimism - 以太坊第 2 層,EVM 兼容(了解有關 optimistic 和 ZK rollups 之間差異的更多信息這裡
  • Polygon - 以太坊側鏈
  • 索拉納(Solana) - 高吞吐量、低成本交易、快速出塊時間,但比 EVM (Rust) 更難學習
  • Near - Layer 1 區塊鏈,可以用 Rust 或 Assemblyscript 編寫智能合約
  • Cosmos - 互操作區塊鏈的生態繫統
  • 波卡(Polkadot) - 基於區塊鏈的計算平颱,使建立在其之上的區塊鏈能夠在它們之間執行交易,創建一個互連的區塊鏈互聯網
  • Aurora - 在 NEAR 協議上運行的 EVM 兼容鏈。
  • Fantom - EVM 兼容第 1 層
  • Avalanche - EVM 兼容第 1 層
  • Celo - EVM 兼容第 1 層,旨在讓任何擁有智能手機的人都能輕鬆髮送、接收和存儲加密貨幣
  • Tezos - 不兼容EVM的第1層,很多NFT項目都在使用它

與網絡交互時,您需要使用 RPC 端點。

有幾種方法可以做到這一點:

  1. 訪問公共 RPC 端點
  2. 運行您自己的節點
  3. 作爲服務訪問節點提供者
  4. 作爲服務訪問去中心化節點提供商

公共 RPC 端點通常由網絡提供,但對於大多數生産 dapp,您需要利用自己的端點,因爲它們不穩定或不建議用於生産。

那裡有一些 RPC 服務提供商,以下是一些:

還有一個web3/去中心化的解決方案,Pocket Network(袖珍網絡) 這似乎正在穫得關註。

這些選項中的任何一個都可能是直接與網絡交互的不錯選擇。

區塊鏈開髮環境

對於 EVM 開髮,有一些很好的開髮環境可用:

  • Hardha (JavaScript) 是一種較新的選項,但越來越受歡迎。他們的文檔非常棒,工具和開髮人員體驗也很完善,這也是我個人用來構建 dapp 的方法。
  • Truffle (JavaScript) 是一套用於在 EVM 上構建和開髮應用程序的工具。它已經成熟,經過了實戰考驗,併且有充分的記録。它已經存在了一段時間,許多開髮人員都在使用它。
  • Foundry 是來自 Paradigm 的新 Solidity 開髮環境,顯示出很大的前景。關鍵的亮點是能夠用 Solidity 編寫測試、支持模糊測試和速度(用 Rust 編寫)。我單獨寫了一篇介紹在這裡
  • Brownie是一個基於Python的智能合約開髮和測試框架,用於Solidity / EVM開髮。

對於 Solana 開髮,Anchor 正在迅速成爲新開髮人員的切入點。它提供了一個用於搭建、構建和測試 Solana 程序的 CLI,以及可用於構建前端的客戶端庫。它還包括一個 DSL,它可以消除開髮人員在開始使用 Solana 和 Rust 開髮時經常遇到的許多覆雜性。

文件存儲

我們在 web3 中的哪裡存儲圖像、視頻和其他文件?在鏈上存儲如此大的東西通常會非常昂貴,所以我們可能不想將它們存儲在那裡。

相反,我們可以使用少數文件存儲協議之一:

  • IPFS - 點對點文件繫統協議
    • 優點:它可靠,有良好的記録,有一個龐大的生態繫統
    • 缺點:如果數據未固定,則可能會丟失
  • Arweave - 允許您永久存儲數據,支付單次交易費用。我是 Arweave 的粉絲,併寫了一篇關於它的博文在這裡
  • Filecoin - 來自協議實驗室(構建 IPFS 的衕一團隊),它是一種旨在提供持久數據存儲繫統的協議。有幾種方法 供開髮人員在 Filecoin 上進行構建,包括web3.存儲 這非常好。
  • Skynet - 我還沒有在生産中使用它,但已經嘗試過,它似乎工作得很好。應用程序編程接口在這裡 ,看起來很棒。我有一些問題,比如數據可以保存多久,以及天網與其他協議的互操作性。

鏈下數據協議

除了文件存儲和鏈上存儲之外,您可能還需要鏈下存儲數據。您可以像在傳統技術堆棧中使用數據庫一樣使用這些類型的解決方案,但它們是在去中心化網絡上的 n 個節點上覆製的,因此更可靠(至少在理論上)。

一些選項是:

  • Ceramic Network- 用於創建、托管和共享數據的去中心化開源平颱。 Ceramic 還有一個很好的身份協議,我稍後會討論。可能是我目前最喜歡的鏈下存儲解決方案。這是 一個相當不錯的演示。
  • Textile 的 ThreadDB - 基於 IPFS 和 Libp2p 構建的多方數據庫。如果我理解正確的話,目前 API 可能正在經歷重大變化。我已經嘗試過了,它顯示出了一些希望,但文檔和 DX 需要一些改進。
  • GunDB - 去中心化的點對點數據庫。槍已經存在很長一段時間了一些非常有趣的應用程序 已經用它建造了。

就成熟度而言,我的看法是,鏈下存儲解決方案的生態繫統尚未達到構建某些開髮人員可能想要的一些更高級用例所需的程度。這裡的一些挑戰是實時數據、衝突檢測和衝突解決、寫入授權、文檔和一般開髮人員經驗。

在擁有能夠支持任何類型應用程序的完全去中心化協議棧之前,將鏈下數據解決方案與區塊鏈協議集成是我們需要跨越的最後一個大障礙之一。

API(索引和查詢)

我們與區塊鏈交互和構建區塊鏈的方式與傳統技術堆棧中的數據庫存在很多差異。使用區塊鏈,數據不會以可以有效或輕鬆地直接從其他應用程序或前端使用的格式存儲。

區塊鏈針對寫入操作進行了優化。您經常聽到圍繞每秒交易數、區塊時間和交易成本進行的創新。區塊鏈數據隨著時間的推移被寫入塊中,使得除了基本讀取操作之外的任何操作都是不可能的。

在大多數應用程序中,您需要關繫數據、排序、過濾、全文搜索、分頁和許多其他類型的查詢功能等功能。爲此,需要對數據進行索引和組織以實現高效檢索。

傳統上,這是數據庫在集中式技術堆棧中所做的工作,但 web3 堆棧中缺少索引層。

The Graph 是一種用於索引和查詢區塊鏈數據的協議,它使這個過程變得更加容易,併爲此提供了一個去中心化的解決方案。任何人都可以構建和髮布開放的 GraphQL API(稱爲子圖),使區塊鏈數據易於查詢。

要了解有關圖錶的更多信息,請查看文檔這裡 或者我的教程這裡

身份

身份是 web3 中完全不衕的範例。在 web2 中,身份驗證幾乎總是基於用戶的個人信息。此信息通常通過錶單或 OAuth 提供商收集,要求用戶移交以換取對應用程序的訪問權限。

在 web3 中,身份完全圍繞錢包和公鑰密碼學

雖然“錢包”這個名字達到了它的目的,但我髮現剛接觸 web3 的人髮現這個術語令人睏惑,因爲它與身份驗證和身份相關。我希望將來我們能夠找到其他方式來錶達錢包是什麽,因爲它結合了金融方麵,還結合了身份和聲譽。

作爲開髮人員,您需要了解如何以各種方式訪問​​用戶的錢包和地址併與之交互。

在非常基本的級別(也是一個非常常見的要求),您可能希望請求訪問用戶的錢包。爲此,您通常可以在窗口上下文(網絡瀏覽器)中訪問用戶的錢包或使用類似的東西錢包連接 或者Solana 的錢包適配器

例如,如果他們有可用的以太坊錢包,您將能夠訪問 window.ethereum。 Solana (window.solana)、Arweave (window.arweaveWallet) 和其他一些也是如此。 WalletConnect 非常適合移動網絡和 React Native,因爲它允許用戶直接從設備授權使用他們的移動錢包。

如果您想自己處理身份驗證,您可以允許用戶簽署交易,然後在某處對其進行解碼以對用戶進行身份驗證,但這通常需要服務器。這裡 是使用 EVM 錢包的示例,以及這裡 是如何使用 Solana / Phantom 執行此操作的示例。

以去中心化的方式管理用戶個人資料怎麽樣? Ceramic Network 提供最強大的協議和工具套件來管理去中心化身份。他們最近髮布了一篇博文 概述了他們的一些最新更新,併就所有工具如何協衕工作提供了一些指導。我會從那裡開始然後探索他們的文檔 了解如何開始構建,併考慮查看我的示例項目這裡 使用陶瓷的自我編號

如果你想穫取用戶的ENS 文本記録,@ensdomains/ensjs">ENSJS提供了一個很好的 API 來穫取用戶數據:

const ens = new ENS({ 提供商, ensAddress: getEnsAddress(‘1’) })

const content = wait ens.name(‘sha.eth’).getText(‘avatar’)

SpruceID 這也是看起來很有希望但我還沒有嘗試過的東西。

Ceramic和Spruce 兩者都實現了W3C 確實 (W3C DID) 規範,我認爲它本身也是 web3 的構建塊。話雖如此,DID 的任何集中式實施都違背了規範試圖實現的目標。

客戶

就 JavaScript 框架而言,您實際上可以使用任何您想要的東西進行構建,因爲客戶端區塊鏈 SDK 大多與框架無關。話雖如此,大量的項目和示例都是在 React 中構建的。還有一些圖書館,例如Solana 錢包適配器 爲 React 提供了額外的實用程序,所以我想説學習或熟悉 React 可能是一個明智之舉。

對於以太坊中的客戶端 SDK,有web3.js以太坊.js。對我來説,盡管 web3.js 存在的時間更長,但 Ethers 更平易近人,併且有更好的文檔。

在 Solana,您可能會與@solana/web3.js 和/或。我髮現 Anchor 客戶端庫是我構建 Solana 程序的首選,因爲無論如何我都在使用 Anchor 框架,而且我髮現它更容易理解@solana/web3.js。

預言機

預言機允許開髮人員從智能合約中讀取真實世界的數據和外部繫統。

例如,大多數金融應用程序都需要了解鏈下髮生的真實數據和事件,因此預言機在 DeFi 中尤其重要。

Chainlink 是一個預言機,可以訪問現實世界的數據和鏈下計算,衕時保持區塊鏈技術固有的安全性和可靠性保證。

Flux 是一個跨鏈預言機,爲智能合約提供經濟安全的數據源訪問權限。

其他協議

Radicle 是一個基於 Git 的去中心化代碼協作協議。它可以被認爲是 GitHub 的去中心化版本。

Livepeer 是一個去中心化的視頻流網絡。它已經成熟併被廣泛使用,網絡上有超過 70,000 個 GPU。

總的來説

這篇文章將成爲我在學習、實驗和收集 web3 開髮人員反饋時不斷關註的動態文檔。

如果您對我在這裡缺少的內容有任何反饋或想法,請與我聯繫併分享您的想法。看到開髮人員紛紛加入併參與其中,圍繞 web3 髮生的所有活動令人興奮。雖然基礎設施仍在不斷髮展,但構建真正去中心化的協議和應用程序的願景非常重要,這些協議和應用程序允許人們進行協調,而無需將權力和控製權交給大公司,我們即將使這一願景成爲現實。

聲明:

  1. 本文轉載自[edgeandnode],著作權歸屬原作者[Nader Dabit],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

定義 web3 堆棧

中級Jan 08, 2024
文章探討了Web3在區塊鏈中的應用和髮展。
定義 web3 堆棧

在構建 web3 的下一個部分中,Edge & Node的開髮者關繫工程師Nader Dabit進一步擴展了web3堆棧,併介紹了開髮者如何理解構建web3的各個方麵。


在擔任傳統全棧開髮人員大約 10 年後,我於 2021 年 4 月過渡到 web3。在深入研究所有這些新技術和想法時,我想知道的第一件事是“什麽是 web3 堆棧?”。

在構建傳統的 Web 或移動應用程序時,我經常依賴一些構建塊來完成工作。

  1. API/應用程序服務器(REST 或 GraphQL)
  2. 身份驗證層(托管或手動)
  3. 數據庫
  4. 客戶端框架、平颱和庫
  5. 文件存儲

使用這些核心組件,我可以構建大多數我想要的應用程序類型,或者至少可以實現大部分目標。那麽這在 web3 中是什麽樣子的呢?

事實證明,這個問題的答案併不那麽簡單,因爲:

  1. 該範式在很多方麵都完全不衕
  2. web3 的工具、技術和生態繫統不如 web2 成熟

對我來説,理解如何啟動、運行和構建 web3 應用程序也更睏難,因爲我以與在 web2 世界中相衕的方式處理問題。

經過過去 8 個月左右的工作、研究、實驗和構建,我想分享我所學到的東西。

什麽是web3?

在定義 web3 堆棧之前,讓我們嘗試定義 web3。根據你問的人,web3 有無數的定義。但對我來説,我髮現 這點 定義:

Web3 是支持完全去中心化應用程序的協議棧。

有了這個去中心化的技術堆棧,我們就可以開始構建具有自己的既定含義和特徵的去中心化應用程序。

web3 啟用的一些特性包括:

  • 去中心化的網絡基礎設施
  • 所有權(數據、內容和平颱)
  • 原生數字支付
  • 自我主權身份
  • 分布式、無需信任且強大的基礎設施
  • 開放、公共、可組合的後端

雖然一些基於去中心化技術堆棧構建的應用程序將取代其前身,但區塊鏈啟用的新原語也使新的應用程序範式成爲可能。

原生數字支付和公共後端基礎設施(例如機器學習、移動設備、虛擬現實和其他技術原語、平颱和構建塊)使得能夠構建全新類型的應用程序,其中還有一些尚未被想象出來的應用程序。

這是否意味著一切都將被web3取代?不需要。雖然我確實認爲,對於某些類型的應用程序來説,構建去中心化的技術堆棧是更好的選擇—— 就像幾乎所有技術決策一樣,這取決於您正在構建的內容。

現在讓我們開始深入研究 web3 堆棧,分爲以下幾類:

  • 區塊鏈
  • 區塊鏈開髮環境
  • 文件存儲
  • 鏈下數據協議
  • API(索引和查詢)
  • 身份
  • 客戶端(框架和庫)
  • 預言機
  • 其他協議

區塊鏈

您可以選擇在無數的區塊鏈上進行構建。沒有哪一個是“最好的”,相反,您應該考慮它們之間的各種權衡。

學習新事物時,有一件事對我來説常常很重要,那就是應用帕纍托法則來學習。也就是説,如何以最高效的方式在有限的時間和精力內穫得最大收益。遵循這個理念,我可以在最短的時間內以最低的努力穫取最大的進展和動力。

在區塊鏈世界中,學習 Solidity 和EVM (或以太坊虛擬機)可能是作爲區塊鏈開髮人員開始時的最佳選擇。使用此技能組(和技術堆棧),您不僅可以爲以太坊構建,還可以爲其他以太坊第 2 層、側鏈,甚至其他區塊鏈(如 Avalanche、Fantom 和 Celo)構建。

話雖如此,Rust 開始在區塊鏈世界中變得越來越流行,Solana、NEAR、Polkadot 和其他公司都擁有一流的 Rust 支持。你的學習可能也不會出錯,但對於初學者來説,如果今天有人問我,Solidity 仍然是更好的選擇。

除了這些建議之外,這裡還有一個不完整的區塊鏈樣本,它牢固地結合了技術、實用性、社區、動力和未來的可行性:

  • 以太坊 - 獨創的智能合約平颱
  • ZK 彙總:ZKSync,Starknet,Hermez - 這些是高吞吐量以太坊第 2 層,但不與本機 EVM 兼容
  • Optimistic彙總:Arbitrum &Optimism - 以太坊第 2 層,EVM 兼容(了解有關 optimistic 和 ZK rollups 之間差異的更多信息這裡
  • Polygon - 以太坊側鏈
  • 索拉納(Solana) - 高吞吐量、低成本交易、快速出塊時間,但比 EVM (Rust) 更難學習
  • Near - Layer 1 區塊鏈,可以用 Rust 或 Assemblyscript 編寫智能合約
  • Cosmos - 互操作區塊鏈的生態繫統
  • 波卡(Polkadot) - 基於區塊鏈的計算平颱,使建立在其之上的區塊鏈能夠在它們之間執行交易,創建一個互連的區塊鏈互聯網
  • Aurora - 在 NEAR 協議上運行的 EVM 兼容鏈。
  • Fantom - EVM 兼容第 1 層
  • Avalanche - EVM 兼容第 1 層
  • Celo - EVM 兼容第 1 層,旨在讓任何擁有智能手機的人都能輕鬆髮送、接收和存儲加密貨幣
  • Tezos - 不兼容EVM的第1層,很多NFT項目都在使用它

與網絡交互時,您需要使用 RPC 端點。

有幾種方法可以做到這一點:

  1. 訪問公共 RPC 端點
  2. 運行您自己的節點
  3. 作爲服務訪問節點提供者
  4. 作爲服務訪問去中心化節點提供商

公共 RPC 端點通常由網絡提供,但對於大多數生産 dapp,您需要利用自己的端點,因爲它們不穩定或不建議用於生産。

那裡有一些 RPC 服務提供商,以下是一些:

還有一個web3/去中心化的解決方案,Pocket Network(袖珍網絡) 這似乎正在穫得關註。

這些選項中的任何一個都可能是直接與網絡交互的不錯選擇。

區塊鏈開髮環境

對於 EVM 開髮,有一些很好的開髮環境可用:

  • Hardha (JavaScript) 是一種較新的選項,但越來越受歡迎。他們的文檔非常棒,工具和開髮人員體驗也很完善,這也是我個人用來構建 dapp 的方法。
  • Truffle (JavaScript) 是一套用於在 EVM 上構建和開髮應用程序的工具。它已經成熟,經過了實戰考驗,併且有充分的記録。它已經存在了一段時間,許多開髮人員都在使用它。
  • Foundry 是來自 Paradigm 的新 Solidity 開髮環境,顯示出很大的前景。關鍵的亮點是能夠用 Solidity 編寫測試、支持模糊測試和速度(用 Rust 編寫)。我單獨寫了一篇介紹在這裡
  • Brownie是一個基於Python的智能合約開髮和測試框架,用於Solidity / EVM開髮。

對於 Solana 開髮,Anchor 正在迅速成爲新開髮人員的切入點。它提供了一個用於搭建、構建和測試 Solana 程序的 CLI,以及可用於構建前端的客戶端庫。它還包括一個 DSL,它可以消除開髮人員在開始使用 Solana 和 Rust 開髮時經常遇到的許多覆雜性。

文件存儲

我們在 web3 中的哪裡存儲圖像、視頻和其他文件?在鏈上存儲如此大的東西通常會非常昂貴,所以我們可能不想將它們存儲在那裡。

相反,我們可以使用少數文件存儲協議之一:

  • IPFS - 點對點文件繫統協議
    • 優點:它可靠,有良好的記録,有一個龐大的生態繫統
    • 缺點:如果數據未固定,則可能會丟失
  • Arweave - 允許您永久存儲數據,支付單次交易費用。我是 Arweave 的粉絲,併寫了一篇關於它的博文在這裡
  • Filecoin - 來自協議實驗室(構建 IPFS 的衕一團隊),它是一種旨在提供持久數據存儲繫統的協議。有幾種方法 供開髮人員在 Filecoin 上進行構建,包括web3.存儲 這非常好。
  • Skynet - 我還沒有在生産中使用它,但已經嘗試過,它似乎工作得很好。應用程序編程接口在這裡 ,看起來很棒。我有一些問題,比如數據可以保存多久,以及天網與其他協議的互操作性。

鏈下數據協議

除了文件存儲和鏈上存儲之外,您可能還需要鏈下存儲數據。您可以像在傳統技術堆棧中使用數據庫一樣使用這些類型的解決方案,但它們是在去中心化網絡上的 n 個節點上覆製的,因此更可靠(至少在理論上)。

一些選項是:

  • Ceramic Network- 用於創建、托管和共享數據的去中心化開源平颱。 Ceramic 還有一個很好的身份協議,我稍後會討論。可能是我目前最喜歡的鏈下存儲解決方案。這是 一個相當不錯的演示。
  • Textile 的 ThreadDB - 基於 IPFS 和 Libp2p 構建的多方數據庫。如果我理解正確的話,目前 API 可能正在經歷重大變化。我已經嘗試過了,它顯示出了一些希望,但文檔和 DX 需要一些改進。
  • GunDB - 去中心化的點對點數據庫。槍已經存在很長一段時間了一些非常有趣的應用程序 已經用它建造了。

就成熟度而言,我的看法是,鏈下存儲解決方案的生態繫統尚未達到構建某些開髮人員可能想要的一些更高級用例所需的程度。這裡的一些挑戰是實時數據、衝突檢測和衝突解決、寫入授權、文檔和一般開髮人員經驗。

在擁有能夠支持任何類型應用程序的完全去中心化協議棧之前,將鏈下數據解決方案與區塊鏈協議集成是我們需要跨越的最後一個大障礙之一。

API(索引和查詢)

我們與區塊鏈交互和構建區塊鏈的方式與傳統技術堆棧中的數據庫存在很多差異。使用區塊鏈,數據不會以可以有效或輕鬆地直接從其他應用程序或前端使用的格式存儲。

區塊鏈針對寫入操作進行了優化。您經常聽到圍繞每秒交易數、區塊時間和交易成本進行的創新。區塊鏈數據隨著時間的推移被寫入塊中,使得除了基本讀取操作之外的任何操作都是不可能的。

在大多數應用程序中,您需要關繫數據、排序、過濾、全文搜索、分頁和許多其他類型的查詢功能等功能。爲此,需要對數據進行索引和組織以實現高效檢索。

傳統上,這是數據庫在集中式技術堆棧中所做的工作,但 web3 堆棧中缺少索引層。

The Graph 是一種用於索引和查詢區塊鏈數據的協議,它使這個過程變得更加容易,併爲此提供了一個去中心化的解決方案。任何人都可以構建和髮布開放的 GraphQL API(稱爲子圖),使區塊鏈數據易於查詢。

要了解有關圖錶的更多信息,請查看文檔這裡 或者我的教程這裡

身份

身份是 web3 中完全不衕的範例。在 web2 中,身份驗證幾乎總是基於用戶的個人信息。此信息通常通過錶單或 OAuth 提供商收集,要求用戶移交以換取對應用程序的訪問權限。

在 web3 中,身份完全圍繞錢包和公鑰密碼學

雖然“錢包”這個名字達到了它的目的,但我髮現剛接觸 web3 的人髮現這個術語令人睏惑,因爲它與身份驗證和身份相關。我希望將來我們能夠找到其他方式來錶達錢包是什麽,因爲它結合了金融方麵,還結合了身份和聲譽。

作爲開髮人員,您需要了解如何以各種方式訪問​​用戶的錢包和地址併與之交互。

在非常基本的級別(也是一個非常常見的要求),您可能希望請求訪問用戶的錢包。爲此,您通常可以在窗口上下文(網絡瀏覽器)中訪問用戶的錢包或使用類似的東西錢包連接 或者Solana 的錢包適配器

例如,如果他們有可用的以太坊錢包,您將能夠訪問 window.ethereum。 Solana (window.solana)、Arweave (window.arweaveWallet) 和其他一些也是如此。 WalletConnect 非常適合移動網絡和 React Native,因爲它允許用戶直接從設備授權使用他們的移動錢包。

如果您想自己處理身份驗證,您可以允許用戶簽署交易,然後在某處對其進行解碼以對用戶進行身份驗證,但這通常需要服務器。這裡 是使用 EVM 錢包的示例,以及這裡 是如何使用 Solana / Phantom 執行此操作的示例。

以去中心化的方式管理用戶個人資料怎麽樣? Ceramic Network 提供最強大的協議和工具套件來管理去中心化身份。他們最近髮布了一篇博文 概述了他們的一些最新更新,併就所有工具如何協衕工作提供了一些指導。我會從那裡開始然後探索他們的文檔 了解如何開始構建,併考慮查看我的示例項目這裡 使用陶瓷的自我編號

如果你想穫取用戶的ENS 文本記録,@ensdomains/ensjs">ENSJS提供了一個很好的 API 來穫取用戶數據:

const ens = new ENS({ 提供商, ensAddress: getEnsAddress(‘1’) })

const content = wait ens.name(‘sha.eth’).getText(‘avatar’)

SpruceID 這也是看起來很有希望但我還沒有嘗試過的東西。

Ceramic和Spruce 兩者都實現了W3C 確實 (W3C DID) 規範,我認爲它本身也是 web3 的構建塊。話雖如此,DID 的任何集中式實施都違背了規範試圖實現的目標。

客戶

就 JavaScript 框架而言,您實際上可以使用任何您想要的東西進行構建,因爲客戶端區塊鏈 SDK 大多與框架無關。話雖如此,大量的項目和示例都是在 React 中構建的。還有一些圖書館,例如Solana 錢包適配器 爲 React 提供了額外的實用程序,所以我想説學習或熟悉 React 可能是一個明智之舉。

對於以太坊中的客戶端 SDK,有web3.js以太坊.js。對我來説,盡管 web3.js 存在的時間更長,但 Ethers 更平易近人,併且有更好的文檔。

在 Solana,您可能會與@solana/web3.js 和/或。我髮現 Anchor 客戶端庫是我構建 Solana 程序的首選,因爲無論如何我都在使用 Anchor 框架,而且我髮現它更容易理解@solana/web3.js。

預言機

預言機允許開髮人員從智能合約中讀取真實世界的數據和外部繫統。

例如,大多數金融應用程序都需要了解鏈下髮生的真實數據和事件,因此預言機在 DeFi 中尤其重要。

Chainlink 是一個預言機,可以訪問現實世界的數據和鏈下計算,衕時保持區塊鏈技術固有的安全性和可靠性保證。

Flux 是一個跨鏈預言機,爲智能合約提供經濟安全的數據源訪問權限。

其他協議

Radicle 是一個基於 Git 的去中心化代碼協作協議。它可以被認爲是 GitHub 的去中心化版本。

Livepeer 是一個去中心化的視頻流網絡。它已經成熟併被廣泛使用,網絡上有超過 70,000 個 GPU。

總的來説

這篇文章將成爲我在學習、實驗和收集 web3 開髮人員反饋時不斷關註的動態文檔。

如果您對我在這裡缺少的內容有任何反饋或想法,請與我聯繫併分享您的想法。看到開髮人員紛紛加入併參與其中,圍繞 web3 髮生的所有活動令人興奮。雖然基礎設施仍在不斷髮展,但構建真正去中心化的協議和應用程序的願景非常重要,這些協議和應用程序允許人們進行協調,而無需將權力和控製權交給大公司,我們即將使這一願景成爲現實。

聲明:

  1. 本文轉載自[edgeandnode],著作權歸屬原作者[Nader Dabit],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!