偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Web3 堆棧開發(fā)人員指南

區(qū)塊鏈 開發(fā) 新聞
作為開發(fā)人員和構(gòu)建人員,我們?cè)诶斫馊ブ行幕瘯r(shí),通常會(huì)提起碎片化的技術(shù)堆棧概念。

在Alchemy,我們將Web3定義為基于區(qū)塊鏈技術(shù)的去中心化的互聯(lián)網(wǎng)生態(tài)系統(tǒng)。

首先,作為開發(fā)人員和構(gòu)建人員,我們?cè)诶斫馊ブ行幕瘯r(shí),通常會(huì)提起碎片化的技術(shù)堆棧概念。雖然Web3仍然處于新生階段并在迅速發(fā)展,但我們發(fā)現(xiàn)它的基礎(chǔ)構(gòu)件已經(jīng)開始成形。

為了更好地理解Web3和去中心化互聯(lián)網(wǎng)的內(nèi)部工作原理,讓我們直接進(jìn)入Web3開發(fā)堆棧。

Web3堆棧概述

在較高的層次上,構(gòu)建任何Web3應(yīng)用程序都需要深入理解區(qū)塊鏈網(wǎng)絡(luò)、Web3基礎(chǔ)設(shè)施和Web3開發(fā)環(huán)境。

Web3網(wǎng)絡(luò)層

Web3技術(shù)堆棧的基礎(chǔ)是區(qū)塊鏈網(wǎng)絡(luò)層。Web2應(yīng)用程序依賴于中心化數(shù)據(jù)庫(kù),而Web3應(yīng)用程序構(gòu)建在區(qū)塊鏈架構(gòu)之上,以實(shí)現(xiàn)無(wú)需信任和無(wú)需許可的訪問。

網(wǎng)絡(luò)層:基礎(chǔ)區(qū)塊鏈架構(gòu)

在選擇構(gòu)建去中心化應(yīng)用程序(dApp)的區(qū)塊鏈網(wǎng)絡(luò)時(shí),開發(fā)人員有兩個(gè)主要選擇:兼容EVM的區(qū)塊鏈和不兼容EVM的區(qū)塊鏈。

EVM 區(qū)塊鏈

以太坊一直是Web3開發(fā)的主要框架,其虛擬環(huán)境(即其以太坊虛擬機(jī)或EVM)存儲(chǔ)帳戶和余額等關(guān)鍵信息。以太坊的虛擬機(jī)還存儲(chǔ)了一個(gè)機(jī)器狀態(tài),它能夠根據(jù)EVM制定的一組預(yù)定義規(guī)則,隨著每個(gè)新區(qū)塊的變化而變化。對(duì)于開發(fā)人員來(lái)說(shuō),最重要的是,EVM為智能合約的存儲(chǔ)和執(zhí)行提供了一個(gè)框架,允許開發(fā)人員對(duì)鏈上邏輯進(jìn)行編程。

隨著以太坊區(qū)塊鏈和EVM的興起,許多旨在解決以太坊可擴(kuò)展性限制或昂貴交易成本的不同網(wǎng)絡(luò)都選擇開發(fā)與EVM完全兼容的框架。這意味著與 EVM 兼容的鏈都共享相同的軟件層——即 Solidity——運(yùn)行智能合約。

與EVM兼容的區(qū)塊鏈允許開發(fā)人員利用專門為EVM鏈構(gòu)建的所有相同的工具、文檔和社區(qū),以此節(jié)省時(shí)間和金錢。

EVM 區(qū)塊鏈?zhǔn)纠?/span>

  • 以太坊- 原始 EVM 智能合約平臺(tái)
  • Polygon- 以太坊側(cè)鏈
  • Arbitrum- 使用 Optimistic rollups和多輪欺詐證明的L2區(qū)塊鏈
  • Optimism- 使用 Optimistic rollups 和單輪欺詐證明的L2區(qū)塊鏈
  • Hermez- 由 Polygon 管理的 ZK-rollups以太坊L2網(wǎng)絡(luò)
  • ZKSync- 使用 SNARK 的 ZK-rollups以太坊L2網(wǎng)絡(luò)
  • Starknet- 使用 STARK 的 ZK-rollups以太坊L2網(wǎng)絡(luò)
  • Avalanche- 與 EVM 兼容的L1
  • Cronos- 與EVM 兼容的L1

3個(gè)最佳的Web3開發(fā)環(huán)境

在選擇構(gòu)建 dApp 的區(qū)塊鏈網(wǎng)絡(luò)時(shí),Web3開發(fā)人員應(yīng)該考慮可用的開發(fā)人員工具的深度和廣度。幸運(yùn)的是,EVM兼容鏈?zhǔn)芤嬗诙嗄甑囊蕴婚_發(fā),在開發(fā)環(huán)境方面有許多久經(jīng)考驗(yàn)的選擇。

Hardhat

Hardhat是一個(gè)javascript軟件開發(fā)環(huán)境,允許開發(fā)人員編譯、測(cè)試、部署和調(diào)試以太坊軟件,Hardhat可以通過(guò)靈活的插件進(jìn)行擴(kuò)充,使開發(fā)人員能夠輕松自定義本地區(qū)塊鏈開發(fā)環(huán)境,并附帶一套強(qiáng)大的故障排除和調(diào)試文檔集。

Truffle

一個(gè)由三種不同的,基于javascript的開發(fā)工具組成的套件——Truffle、Ganache和Drizzle——Truffle幫助構(gòu)建者編譯、測(cè)試和部署EVM代碼,同時(shí)也為前端dApp開發(fā)提供工具。

  • Truffle——主要的開發(fā)環(huán)境、測(cè)試框架和部署管道
  • Ganache——允許開發(fā)人員快速創(chuàng)建本地區(qū)塊鏈
  • Drizzle——各種前端庫(kù),用來(lái)連接前端組件和智能合約

Brownie

作為基于python框架的,用于EVM開發(fā)的替代品,Brownie提供了一套完整的Web3開發(fā)工具,主要基于Web3 .py包構(gòu)建,用于編譯、測(cè)試和部署dApp。

非 EVM 區(qū)塊鏈

最近,開發(fā)人員開始在區(qū)塊鏈上構(gòu)建更多不遵循以太坊框架的dapp,因此不兼容EVM。

非EVM網(wǎng)絡(luò)工程師認(rèn)為,EVM鏈太受以太坊框架的限制,而選擇通過(guò)設(shè)計(jì)新的結(jié)構(gòu)進(jìn)行創(chuàng)新。一般來(lái)說(shuō),非EVM區(qū)塊鏈從一開始就具有數(shù)據(jù)和交易可擴(kuò)展性,并允許較高的TPS。

非 EVM 區(qū)塊鏈的示例

  • Flow- L1,使用 Cadence,F(xiàn)low 的原生的面向資源的編程語(yǔ)言
  • NEAR- L1,其智能合約使用 Rust 或 Assemblyscript 
  • Solana- 使用 Rust C、C++ 的L1智能合約
  • Terra- 將 Rust 用于智能合約的L1

非 EVM 區(qū)塊鏈開發(fā)環(huán)境

雖然對(duì)于非EVM鏈有一些開發(fā)環(huán)境還不太成熟,但一些網(wǎng)絡(luò)已經(jīng)開始為各自的鏈提供開發(fā)工具。

Flow讓開發(fā)者能夠使用原生的Visual Studio Code Extension測(cè)試Cadence智能合約的漏洞。

另一個(gè)非EVM開發(fā)環(huán)境的例子是Anchor,它允許構(gòu)建和測(cè)試 Solana 合約,具有與 Solidity 和 Truffle 類似的感覺??偟膩?lái)說(shuō),Anchor 的環(huán)境降低了 Rust 和 Solana 開發(fā)的障礙。

我應(yīng)該使用什么區(qū)塊鏈網(wǎng)絡(luò)?

由于單個(gè)區(qū)塊鏈通常具有獨(dú)特的架構(gòu)和共識(shí)機(jī)制,它們不可避免地會(huì)針對(duì)特定的用例進(jìn)行更好的優(yōu)化。因此,我們堅(jiān)定地相信一個(gè)多鏈Web3的未來(lái)。

考慮到可互操作工具的日益多樣化,EVM框架是一個(gè)極其豐富的環(huán)境。此外,EVM兼容性為用戶和開發(fā)人員提供了一個(gè)更流暢的過(guò)程,可以通過(guò)跨鏈dApp移動(dòng)流動(dòng)性,并提供了熟悉的用戶和開發(fā)人員體驗(yàn)。對(duì)于早期的開發(fā)人員和新協(xié)議,我們相信圍繞EVM兼容的區(qū)塊鏈進(jìn)行開發(fā),利用現(xiàn)有的工具、基礎(chǔ)設(shè)施和開發(fā)人員文檔,是一個(gè)令人信服的條件。

話雖如此,我們也認(rèn)識(shí)到非EVM區(qū)塊鏈對(duì)于更有經(jīng)驗(yàn)的開發(fā)人員的利基功能,他們不斷增長(zhǎng)的社區(qū)基礎(chǔ),以及對(duì)早期開發(fā)人員工具支持的增加。

區(qū)塊鏈交互層

在選擇了區(qū)塊鏈網(wǎng)絡(luò)之后,Web3堆棧中的下一步是區(qū)塊鏈交互層。這一層允許開發(fā)人員和用戶向區(qū)塊鏈讀取和寫入數(shù)據(jù)。

區(qū)塊鏈交互層:用于向區(qū)塊鏈網(wǎng)絡(luò)讀取/寫入數(shù)據(jù)的開發(fā)人員構(gòu)建塊。

如果我們不熟悉區(qū)塊鏈?zhǔn)侨绾喂ぷ鞯?,這里有一個(gè)快速的回顧。

  • 區(qū)塊鏈由數(shù)據(jù)區(qū)塊組成。
  • 區(qū)塊存儲(chǔ)在分布式節(jié)點(diǎn)上。
  • 區(qū)塊鏈中的每個(gè)節(jié)點(diǎn)都充當(dāng)一個(gè)“迷你服務(wù)器”,它允許操作者讀寫數(shù)據(jù)區(qū)塊。
  • 添加到區(qū)塊鏈的任何區(qū)塊都必須在網(wǎng)絡(luò)上的所有節(jié)點(diǎn)之間傳播,以實(shí)現(xiàn)同步。

在考慮Web3框架中的數(shù)據(jù)訪問層時(shí),鏈上存儲(chǔ)是標(biāo)準(zhǔn),因?yàn)樗举|(zhì)上是不可變的,并允許任何公眾個(gè)人查看/驗(yàn)證它。

與區(qū)塊瀏覽器一樣,數(shù)據(jù)提供者是區(qū)塊鏈交互層的關(guān)鍵部分。對(duì)于初學(xué)者來(lái)說(shuō),它們提供了一個(gè)進(jìn)入較低網(wǎng)絡(luò)層的窗口,并作為一個(gè)在線資源,用于檢索有關(guān)交易、地址余額、gas 費(fèi)用等的實(shí)時(shí)和歷史數(shù)據(jù)。區(qū)塊瀏覽器通常用于查找支付的關(guān)鍵細(xì)節(jié)、確定不同交易的狀態(tài)或簡(jiǎn)單地了解區(qū)塊鏈?zhǔn)褂玫目傮w趨勢(shì)。數(shù)據(jù)提供者為公眾提供了閱讀和解釋區(qū)塊鏈的能力。

Web3基礎(chǔ)設(shè)施挑戰(zhàn)

但是,如果沒有適當(dāng)?shù)幕A(chǔ)設(shè)施需求,訪問和與區(qū)塊鏈數(shù)據(jù)交互可能會(huì)非常困難。

由于直接在鏈上寫入數(shù)據(jù)不具有成本效益,Web3開發(fā)人員使用EVM鏈的內(nèi)置日志功能,這樣智能合約就可以通過(guò)solidity事件以一種可搜索、成本效益高的方式在鏈上“打印”信息。雖然日志記錄可以降低存儲(chǔ)成本,并且是對(duì)區(qū)塊鏈進(jìn)行讀寫的最流行方式,但它需要一個(gè)強(qiáng)大的區(qū)塊鏈交互層,以確保開發(fā)人員能夠在事件發(fā)出時(shí)捕獲它們。

運(yùn)行節(jié)點(diǎn) 與 使用節(jié)點(diǎn)服務(wù)提供者

從歷史上看,使用區(qū)塊鏈交互層需要運(yùn)行一個(gè)自托管、自維護(hù)的節(jié)點(diǎn)。這是一個(gè)昂貴且耗時(shí)的過(guò)程,僅運(yùn)行一個(gè)以太坊節(jié)點(diǎn)的平均成本為8.6萬(wàn)美元/年。開發(fā)人員沒有構(gòu)建協(xié)議和dapp,而是發(fā)現(xiàn)自己將工程資源花費(fèi)在管理節(jié)點(diǎn)的bug、回歸、磁盤問題、CPU流量峰值等方面。

運(yùn)行我們自己的節(jié)點(diǎn)的成本導(dǎo)致了Alchemy的創(chuàng)建。在其核心,Alchemy公開了一套API,供開發(fā)人員在無(wú)需管理節(jié)點(diǎn)的情況下與區(qū)塊鏈進(jìn)行交互。

作為一個(gè)多鏈Web3的堅(jiān)定支持者,Alchemy 的 API 套件在單一熟悉的 API 框架內(nèi)提供跨L1(包括以太坊網(wǎng)絡(luò))、L2(包括 Arbitrum 和 Optimism)、側(cè)鏈(包括 Polygon)和非 EVM 兼容的 L1(如 Flow)的多鏈支持。

最終,Alchemy允許區(qū)塊鏈開發(fā)人員對(duì)整個(gè)Web3網(wǎng)絡(luò)層進(jìn)行可靠和可擴(kuò)展的訪問,從而使他們能夠?qū)W⒂跇?gòu)建Web3堆棧。

Web3表示層

表示層:更高級(jí)別的軟件抽象和前端庫(kù)

在許多方面,Web3表示層緊密地反映了Web2開發(fā)的許多方面。

為了創(chuàng)建和開發(fā)前端組件,許多開發(fā)人員轉(zhuǎn)向歷經(jīng)過(guò)檢驗(yàn)的React.js庫(kù)。有了大量的開發(fā)人員和Web3社區(qū)的追隨者,它已經(jīng)成為事實(shí)上的Web3前端的標(biāo)準(zhǔn)。

Web2和Web3前端棧的一個(gè)不同之處是用于與區(qū)塊鏈數(shù)據(jù)交互的特定庫(kù)。

當(dāng)與數(shù)據(jù)訪問層交互時(shí),Web3的dApp 傾向于使用Ether.js 或 Web3.js,而不是更典型的 HTTP 請(qǐng)求庫(kù),如 Axios 和 Fetch。特別是,Ethers.js 和 Web3.js 都自然支持對(duì)托管在區(qū)塊鏈交互層上的區(qū)塊鏈節(jié)點(diǎn)的遠(yuǎn)程過(guò)程調(diào)用 (RPC),從而能夠更無(wú)縫地集成到開發(fā)人員的Web3技術(shù)堆棧中,并在區(qū)塊鏈讀寫數(shù)據(jù)。

如何在 Ether.js 和 Web3.js 之間進(jìn)行選擇

在決定是選擇Ether.js 還是 Web3.js時(shí),有幾點(diǎn)需要考慮。

Ether.js 是一個(gè)更輕量級(jí)的、對(duì)開發(fā)人員友好的庫(kù),具有強(qiáng)大的文檔。雖然許多早期開發(fā)人員和資深開發(fā)人員都是通過(guò)Ether.js 開發(fā)dApp的,但它由少數(shù)人維護(hù),限制了庫(kù)的開發(fā)。

Web3.js擁有最多的分叉/提交,也是被使用最多次的以太坊javascript庫(kù)。雖然它也被廣泛使用,但它缺乏ether文檔的廣度和深度,可能不是早期Web3開發(fā)人員的最佳選擇。

Web3.js的另一個(gè)替代品是Alchemy Web3,它是一個(gè)帶有附加API方法、升級(jí)的websocket支持和自動(dòng)重試功能的分支,允許開發(fā)者更輕松地采用。

去中心化的存儲(chǔ)

雖然區(qū)塊鏈為去中心化狀態(tài)管理、智能合約存儲(chǔ)/執(zhí)行和交易價(jià)值提供了一個(gè)媒介,但更高級(jí)別的應(yīng)用程序需要額外的組件。對(duì)于圖像、視頻和gif等前端內(nèi)容,區(qū)塊鏈存儲(chǔ)非常昂貴,效率也非常低。去中心化存儲(chǔ)填補(bǔ)了這一空白。

一種解決方案是IPFS (Interplanetary File System),這是一個(gè)由節(jié)點(diǎn)組成的分布式網(wǎng)絡(luò),每個(gè)人在其中存儲(chǔ)和共享文件、網(wǎng)站、應(yīng)用程序和數(shù)據(jù)。隨著NFT的興起,IPFS的使用激增,經(jīng)常作為NFT媒體資產(chǎn)的底層存儲(chǔ)介質(zhì)。

另一個(gè)流行的去中心化存儲(chǔ)解決方案是Arweave,它旨在激勵(lì)個(gè)人永久存儲(chǔ)數(shù)據(jù)。通過(guò)Arweave網(wǎng)絡(luò),礦工提供存儲(chǔ)空間以換取代幣,協(xié)議本身確保存儲(chǔ)的數(shù)據(jù)在所有節(jié)點(diǎn)上保持正確和一致。

Web3應(yīng)用層

在Web3的背景下,應(yīng)用層涵蓋了DeFi、NFT、身份與認(rèn)證、數(shù)據(jù)與分析以及許多其他令人興奮的dApp類別。總之,這些去中心化的Web3應(yīng)用包括一些最大的Web3公司,如OpenSea、Uniswap和Aave。

作為開發(fā)人員,這通常是最有趣的構(gòu)建層。可以混合和匹配不同的去中心化應(yīng)用程序,將強(qiáng)大的原語(yǔ)組合成新的、復(fù)雜的產(chǎn)品。

應(yīng)用層主要允許公共消費(fèi)者(其中許多人可能不完全理解Web3開發(fā)的復(fù)雜性)輕松地與直觀的前端交互。最終,用戶友好型前端讓公眾能夠在日常生活中利用去中心化的互聯(lián)網(wǎng)。

總結(jié)

隨著Web3從目前的狀態(tài)發(fā)展到成熟,肯定會(huì)有范式的轉(zhuǎn)變,新的Web3基礎(chǔ)設(shè)施工具,以及很多需要學(xué)習(xí)的東西。

Source:https://www.web3.university/article/web3-stack

責(zé)任編輯:張燕妮 來(lái)源: 去中心化金融社區(qū)
相關(guān)推薦

2023-02-26 01:47:13

2020-07-24 08:12:03

開發(fā)工具Salesforce

2013-06-14 08:47:45

2009-08-27 12:00:40

ibmdwJava

2025-02-08 11:02:57

2023-02-06 18:27:00

開發(fā)人員語(yǔ)言

2012-07-20 10:46:44

Web

2022-04-20 10:56:06

JavaJVM參數(shù)

2021-10-27 10:43:24

開發(fā)技能代碼

2020-06-16 07:46:01

Web開發(fā)工具

2015-10-13 10:00:04

Web開發(fā)人員網(wǎng)站

2015-09-21 09:34:57

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業(yè)開發(fā)人員提供商

2020-05-11 09:54:33

JavaScript開發(fā)技術(shù)

2018-11-26 09:55:07

MySQL誤刪數(shù)據(jù)數(shù)據(jù)庫(kù)

2009-10-19 09:15:05

移動(dòng)Web開發(fā)

2015-06-04 14:41:37

WebPython框架

2022-06-06 10:30:23

容器鏡像

2011-03-28 13:43:05

WebjQueryHTML 5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)