原文標題:《定義 web3 堆棧》
原文作者:Nader Dabit
原文編譯:The Graph 社區成員
想在 web3 上進行構建?Nader Dabit 在一份介紹性指南中指出了 web3 技術堆棧的構建模塊
在「web3 上構建」的下一章節中,Edge & Node 開發者關系工程師 Nader Dabit 闡述了 web3 堆棧,以及開發者如何將在 web3 上構建的各個層面概念化。
我在 2021 年 4 月過渡到 web3,此前我做了大約 10 年的傳統全棧開發者。在潛心研究所有這些新技術和想法時,我想知道的第一件事是 "什么是 web3 堆棧?"。
當構建一個傳統的網絡或移動應用程序時,我經常依賴某幾個構建模塊來完成工作:
API/應用服務器(REST 或 GraphQL)
驗證層(托管或手動)
數據庫
客戶端框架、平臺和庫
文件存儲
使用這些核心組件,我可以建立我想要的大多數類型的應用程序,或者至少可以達到大部分的目的。那么,這在 web3 中是什么樣子的呢?
事實證明,這個問題的答案并不那么直截了當,因為:
此范式在很多方面都完全不同
web3 的工具、技術和生態系統都沒有 web2 那么成熟
對我來說,也更難理解如何啟動、運行和建立 web3 應用程序,因為我是以與 web2 世界相同的方式來處理問題的。
在過去 8 個月左右的時間里,經過工作、研究、實驗和建設,我想和大家分享一下我的心得。
什么是 web3?
在我們定義 web3 堆棧之前,讓我們試著定義一下 web3:
Web3 是實現完全去中心化的應用的協議棧。
香港立法會議員吳杰莊:已經和Coinbase取得聯系,將共同了解在香港發展的機會:6月14日消息,全國政協委員、香港特區立法會議員在其社交媒體表示,我已經和 Coinbase 取得聯系,將會具體共同了解在香港發展的機會。有進一步消息會在這里通知大家!
此前,吳莊杰表示,歡迎全球虛擬資產交易平臺(包括 Coinbase)來香港申請合規交易平臺以及洽談上市計劃,自己愿意提供協助。[2023/6/14 21:35:27]
有了這個去中心化的技術棧,我們就可以開始構建去中心化的應用,這些應用有其自身的意義和特點。
web3 的一些特點是:
去中心化的網絡基礎設施
所有權(數據、內容和平臺)
本地數字支付
自主的身份
分布式的、無需信任的、強大的基礎設施
開放、公共、可組合的后端
雖然一些建立在去中心化技術堆棧上的應用程序將取代它們的前輩,但區塊鏈啟用的新源語也使新的應用程序范式成為可能。
原生的數字支付和公共后端基礎設施--如機器學習、移動設備、虛擬現實和其他技術源語、平臺和構建模塊--使全新類型的應用程序得以建立,有些是尚未想象到的。
這是否意味著一切都將被 web3 取代?不一定。雖然我認為對于某些類型的應用程序來說,建立在去中心化的技術堆棧上是一個更好的選擇--就像幾乎任何技術決定一樣,這取決于你要建立什么。
現在讓我們開始深入了解 web3 的堆棧,分成以下幾類:
區塊鏈
區塊鏈開發環境
P2P 數據庫
API(索引和查詢)
身份
客戶端 (框架和庫)
其他協議
有無數的區塊鏈,你可以選擇建立在其上。沒有一個是 "最好的",相反,你應該考慮它們之間的各種權衡。
火幣于佳寧:投資者作決定前應先全面了解區塊鏈知識:中國通信工業協會區塊鏈專委會輪值主席、火幣大學于佳寧表示,虛擬貨幣價格可暴漲,也很可能會暴跌,甚至類似空氣幣等在極端情況下價值可能歸零。另外,一些虛擬資產從本質上并沒有真正利用區塊鏈技術,只是打著區塊鏈的旗號,獲得了與實際價值完全不相符的估值。部分空氣幣項目本質上是欺詐、傳銷,同時市場操縱等行為屢見不鮮,實質上擾亂了金融秩序,增加了市場風險。投資者在作出任何投資決定前,應先全面了解區塊鏈知識,避免被市場情緒或者欺詐話術蒙蔽,造成不必要的損失。(中國證券報)[2021/5/20 22:23:05]
在學習新東西時,有一件事對我來說常常很重要,那就是將帕累托原則應用到我所學的東西上。也就是說,什么是最有效的方式來獲得該數量的時間和努力的結果。遵循這個想法,我可以在最短的時間內學習新東西的同時獲得最大的牽引力和動力。
在區塊鏈領域,學習 Solidity 和 EVM(或 Ethereum 虛擬機)可能是作為區塊鏈開發者入門時的最佳選擇。使用這種技能(和技術棧),你不僅可以為以太坊,而且可以為其他以太坊第二層、側鏈,甚至其他區塊鏈(如 Avalanche、Fantom 和 Celo)構建。
也就是說,Rust 在區塊鏈領域開始變得越來越流行,Solana、NEAR、Polkadot 等都有一流的 Rust 支持。你學習這兩種語言可能都不會出錯,但對于初學者來說,如果今天有人問我,我會說 Solidity 仍將是更好的選擇。
除了這些建議,這里有一個不全面的區塊鏈樣本,它在技術、實用性、社區、勢頭和未來可行性方面有一個堅實的組合:
以太坊--原創智能合約平臺
ZKrollups:ZKSync, Starknet, Hermez - 高吞吐量的以太坊第 2 層,但不與 EVM 原生兼容
Optimistic rollups: Arbitrum & Optimism - 以太坊第 2 層,與 EVM 兼容(在此了解更多關于 Optimistic rollups 和 ZKrollups 的區別)。
動態 | 比特幣協會與劍橋大學合作讓學生了解BSV:比特幣協會(Bitcoin Association)與劍橋大學元網絡協會(Cambridge University Meta Net Society)共同發起了一項新的學習計劃,讓學生學習了解BSV。該組織計劃舉辦有關BSV的活動、聚會和會議,以幫助學生更好地理解加密貨幣的屬性,并為他們在加密和區塊鏈領域的職業生涯做好準備。(Live Bitcoin News)[2019/10/10]
Polygon - 以太坊側鏈
Solana - 吞吐量高,交易成本低,區塊時間快,但比 EVM(Rust)更難學習
NEAR - 底層區塊鏈,可以用 Rust 或 Assemblyscript 編寫智能合約
Cosmos - 一個互操作的區塊鏈的生態系統
Polkadot - 基于區塊鏈的計算平臺,使建立在其上的區塊鏈能夠在它們之間執行交易,創建一個互連的區塊鏈互聯網
Fantom - EVM 兼容的底層區塊鏈
Avalanche - EVM 兼容的底層區塊鏈
Celo - EVM 兼容的底層區塊鏈,旨在使任何擁有智能手機的人都能輕松發送、接收和存儲加密貨幣
Tezos - 非 EVM 兼容的底層區塊鏈,很多 NFT 項目正在使用它
對于 EVM 開發,有幾個好的開發環境可以使用:
Hardhat(JavaScript)是一個較新的選擇,但它正在獲得越來越多的青睞。他們的文檔很好,工具和開發人員的體驗很好,我個人一直在用它來構建去中心化應用。
Truffle(JavaScript)是一套在 EVM 上構建和開發應用程序的工具。它很成熟,經過實戰考驗,并且有很好的文檔。它已經存在了一段時間,許多開發者都在使用它。
Foundry 是一個來自 Paradigm 的新的 Solidity 開發環境,顯示出很大的前景。它的主要特點是能夠在 Solidity 中編寫測試,支持模糊測試,以及速度(它是用 Rust 編寫的)。我在這里寫了一個關于它的單獨介紹。
聲音 | eToro CEO:投資比特幣的人首先需要了解其背后的技術:據AMBCrypto消息,eToro CEO Yoni Assia最近接受采訪時表示,IEO“很有趣”,但這并不是什么新鮮事。“我認為IEO是當前牛市的一部分,但我也認為恐懼已經被一點點沖走,所以人們覺得底部已經達到,不管這是對還是錯,我們將在未來看到。” Yoni Assia還被問及比特幣是否見底,對此他回應稱,目前他非常看好比特幣和加密貨幣。他表示,人們需要投資于他們愿意相信的資產。他補充,投資比特幣的人首先需要了解技術以及其區塊鏈方面。“人們需要對比特幣感到興奮,我認為越來越多的人實際上在積累和持有更多的比特幣,這基本上是推動價格集體上漲的原因。”[2019/5/28]
Brownie 是一個基于 Python 的智能合約開發和測試框架,用于 Solidity/EVM 開發。
對于 Solana 的開發,Anchor 正在迅速成為新的開發者的入門點。它提供了一個 CLI,用于構建和測試 Solana 程序的腳手架,以及你可以用來構建前端的客戶端庫。它還包括一個 DSL,可以抽象出開發人員在開始使用 Solana 和 Rust 開發時經常遇到的許多復雜問題。
我們在 web3 中把圖片、視頻和其他文件存儲在哪里?在鏈上存儲這么大的文件通常是非常昂貴的,所以我們可能不想把它們存儲在那里。
相反,我們可以使用少數幾個文件存儲協議中的一個:
IPFS--點對點文件系統協議
優點:它很可靠,有很好的文檔,有一個龐大的生態系統
缺點:如果數據沒有固定,就會丟失。
Arweave - 允許你永久地存儲數據,只需支付一筆交易費。我是 Arweave 的粉絲,在這里寫了一篇關于它的博文。
Filecoin - 來自 Protocol Labs,也是建立 IPFS 的團隊,它是一個協議,旨在提供一個持久的數據存儲系統。有一些方法可以讓開發者建立在 Filecoin 上,包括 web3.storage,這很不錯。
聲音 | 韓林:Gate的公有鏈GateChain主要是為了解決區塊鏈資產的安全問題:4月1日晚,Gate創始人韓林在活動中表示,Gate.io發布的公有鏈GateChain主要是為了解決區塊鏈資產的安全問題,長遠來說還可以解決Gate.io的安全問題,它是開源的,也會造福他人。 GateChain提出了一個獨創的解決方案來解決資產被盜問題以及私鑰損毀問題。不需要冷錢包,不需要存私鑰到瑞士銀行,也一樣能夠保障資產安全。他還透露,具體細節會在今年第三或第四季度發布測試網和主網的時候開源和公布。[2019/4/1]
Skynet - 我還沒有在生產中使用它,但已經試過了,它似乎工作得很好。這里的 API 看起來很棒。我有一些問題,比如數據的持久性有多長,以及 Skynet 與其他協議的互操作性。
除了文件存儲和鏈上存儲外,你可能還需要在鏈外存儲數據。你可以使用這些類型的解決方案,類似于你在傳統技術堆棧中使用數據庫的方式,但它們是在去中心化的網絡上的 N 個節點上復制的,因此更可靠(至少在理論上)。
幾個選擇是:
Ceramic Network - 一個去中心化的開源平臺,用于創建、托管和分享數據。Ceramic 也有一個很好的身份協議,我將在后面談及。可能是我目前最喜歡的鏈外存儲解決方案。這里有一個相當不錯的演示。
Textile ThreadDB - 一個建立在 IPFS 和 Libp2p 上的多方數據庫。如果我理解正確的話,它目前可能正在經歷一個大的 API 變化。我試過了,它顯示了一些前景,但文檔和 DX 需要一些改進。
GunDB - 一個去中心化的、點對點的數據庫。Gun 已經存在了相當長的時間,一些相當有趣的應用已經用它建立。
就成熟度而言,我的看法是,鏈外存儲解決方案的生態系統還沒有達到建立一些開發者可能想要的更高級的用例所需要的程度。這里的一些挑戰是實時數據、沖突檢測和沖突解決、寫入授權、文檔和一般開發者經驗。
將鏈外數據解決方案與區塊鏈協議相結合,是我們在擁有能夠支持任何類型應用的完全去中心化協議棧之前需要跨越的最后一個大障礙之一。
我們與區塊鏈互動和在區塊鏈之上構建的方式與傳統技術棧中的數據庫有很多不同。對于區塊鏈,數據不是以一種可以有效或容易地直接從其他應用程序或前端消費的格式存儲的。
區塊鏈是為寫操作而優化的。你經常聽到以每秒交易量、區塊時間和交易成本為中心的創新發生。區塊鏈數據在一段時間內以區塊形式寫入,使得除了基本的讀取操作外,其他的都不可能。
在大多數應用中,你需要像關系型數據、排序、過濾、全文搜索、分頁和許多其他類型的查詢功能。為了做到這一點,需要對數據進行索引和組織,以便有效地進行檢索。
傳統上,這是數據庫在集中式技術棧中所做的工作,但在 web3 棧中缺少索引層。
The Graph 是一個用于索引和查詢區塊鏈數據的協議,它使這一過程變得更加容易,并為這樣做提供了一個去中心化的解決方案。任何人都可以建立和發布開放的 GraphQL APIs,稱為子圖,使區塊鏈數據易于查詢。
要了解更多關于 The Graph 的信息,請查看這里(https://thegraph.com/docs/)的文檔或我在這里的教程(https://dev.to/dabit3/building-graphql-apis-on-ethereum-4poa)。
在 web3 中,身份認證是一個完全不同的范式。在 web2 中,認證幾乎總是基于用戶的個人信息。這些信息通常是通過一個表單或 OAuth 提供者收集的,要求用戶交出這些信息以換取對應用程序的訪問。
在 web3 中,身份識別完全圍繞著錢包和公鑰密碼學的概念。
雖然 "錢包 "這個名字有它的作用,但我發現剛接觸 web3 的人覺得這個術語很混亂,因為它與認證和身份有關。我希望將來我們能想出一些其他的方法來表達錢包是什么,因為它不僅結合了金融的各個方面,也結合了身份和信譽。
作為一個開發者,你將需要了解如何以各種方式訪問用戶的錢包和地址并與之互動。
在一個非常基本的層面上(也是一個非常常見的要求),你可能想請求訪問用戶的錢包。要做到這一點,你通常能夠在窗口環境(網絡瀏覽器)中訪問用戶的錢包,或者使用像 WalletConnect 或 Solana 的錢包適配器。
例如,如果他們有一個可用的 Ethereum 錢包,你將能夠訪問 window.ethereum。對于 Solana(window.solana)、Arweave(window.arweaveWallet)和其他少數的錢包也是如此。WalletConnect 很適合移動網絡和 React Native,因為它允許用戶直接從設備上使用他們的移動錢包進行授權。
如果你想自己處理認證,你可以讓用戶簽署交易,然后在某處解碼以認證用戶,但這通常需要一個服務器。這里是一個使用 EVM 錢包的例子,這里是一個使用 Solana / Phantom 的例子。
以去中心化的方式管理用戶資料呢?Ceramic Network 為管理去中心化的身份提供了最強大的協議和工具套件。他們最近發布了一篇博文,概述了他們最近的一些更新,并給出了一些關于所有工具如何協同工作的指南。我想從那里開始,然后探索他們的文檔,以獲得對如何開始構建的理解,并考慮查看我在這里使用 Ceramic self.id 的例子項目。
如果你想獲取一個用戶的 ENS 文本記錄,ensjs 庫提供了一個很好的 API 來獲取用戶數據:
1、const ens = new ENS({ provider, ensAddress: getEnsAddress('1') })2、const content = await ens.name('sha.eth').getText('avatar')SpruceID 也是一個看起來很有前途的東西,但我還沒有試過。
Ceramic 和 Spruce 都實現了 W3C 的 DID 規范,這本身也是我認為是 web3 的一個組成部分。既然如此,任何 DID 的集中實現都違背了該規范試圖實現的理念。
就 JavaScript 框架而言,你真的可以用任何你想要的東西來構建,因為客戶端的區塊鏈 SDK 大多是框架無關的。也就是說,絕大多數的項目和例子都是在 React 中構建的。還有一些像 Solana Wallet Adapter 這樣的庫,為 React 提供額外的工具,所以我說學習或熟悉 React 可能是一個明智之舉。
對于以太坊的客戶端 SDK,有 web3.js 和 ethers.js。對我來說,Ethers 更容易接近,并且有更好的文檔,盡管 web3.js 存在的時間更長。
在 Solana,你可能會使用 @solana/web3.js 和/或 Anchor。我發現 Anchor 客戶端庫是我構建 Solana 程序的首選,因為我反正也在使用 Anchor 框架,而且我發現它比 @solana/web3.js 更容易理解。
Radicle 是一個建立在 Git 上的去中心化的代碼協作協議。它可以被認為是 GitHub 的一個去中心化版本。
Livepeer 是一個去中心化的視頻流媒體網絡。它已經很成熟,并被廣泛使用,網絡上有超過 7 萬個 GPU 的直播。
Chainlink 是一個預言機,能夠訪問真實世界的數據和鏈外計算,同時保持區塊鏈技術固有的安全性和可靠性保證。
這篇文章將是我在學習、試驗和收集 web3 開發人員的反饋時跟上的動態文檔。
如果你有任何反饋意見或關于我在這里遺漏的想法,請與我分享你的想法。看到圍繞 web3 發生的所有活動,讓人興奮不已,因為開發者們正在躍躍欲試地參與進來。雖然基礎設施仍在不斷發展,但建立真正的去中心化協議和應用程序的愿景是非常重要的,它允許人們協調,而不必將權力和控制權交給大公司,我們正在接近實現這一愿景。
頭條 ▌Opensea以133億美元投后估值完成3億美元融資,Paradigm和Coatue領投金色財經報道,Opensea宣布以133億美元的投后估值完成3億美元的C輪融資.
1900/1/1 0:00:00全球連鎖商超沃爾瑪在去年多次被傳將接受加密貨幣支付,但每次傳聞出來都被沃爾瑪辟謠了。加密貨幣也許還無法走進這家商超企業,但沃爾瑪布局元宇宙虛擬世界的證據暴露了.
1900/1/1 0:00:00?Facebook和蘋果的元宇宙之爭還在繼續。蘋果不僅不提“元宇宙”概念,還挖來專門負責Meta AR領域的公關高管。如果說扎克伯格是“元宇宙第一人”,那庫克就是“反元宇宙第一人”.
1900/1/1 0:00:00在公鏈領域,Ronin Chain是一個特別的存在,它因以太坊性能和體驗不足、難以支撐Axie Infinity游戲而生.
1900/1/1 0:00:00有很多定義,但我們通常認為Web3是一個利用區塊鏈技術的無信任、無許可和去中心化的互聯網。Web3的定義特征是所有權.
1900/1/1 0:00:00原文標題:元宇宙101 盡管它最近聲名鵲起,但 Metaverse一詞于30 年前于 1992 年首次由科幻小說作家尼爾斯蒂芬森創造.
1900/1/1 0:00:00