Web3 常用前端庫介紹

一、Web3 前端開發:連接用戶與區塊鏈的橋梁

隨著 Web3 生態的蓬勃發展,前端開發從傳統的頁面渲染進化為區塊鏈交互的核心樞紐。Web3 前端庫作為連接用戶與區塊鏈的橋梁,承擔著錢包集成、合約交互、數據可視化等關鍵功能。本文將系統解析主流 Web3 前端庫的特性、應用場景及最佳實踐,幫助開發者高效構建去中心化應用(DApp)。

  • 獲取連接到以太坊網絡的節點地址
    使用 Infura 的節點服務無需復雜部署,只需簡單注冊即可獲取專屬的節點地址(API 端點),具體步驟如下:
    • 注冊 Infura 賬號
      訪問 Infura 官網https://www.infura.io/zh,點擊右上角「Sign Up」,通過郵箱或 GitHub 賬號注冊。注冊后會進入控制臺(Dashboard),這里是管理項目和節點的核心界面。
    • 創建項目
      在控制臺點擊「Create New Project」,輸入項目名稱(如「MyDApp-Test」),選擇項目類型(默認「Ethereum」即可)。創建后會生成一個唯一的「Project ID」,這是后續調用 API 的關鍵標識。
    • 獲取節點地址
      進入項目詳情頁,在「Endpoints」欄目中可看到不同網絡的節點地址。格式通常為:
      https://<網絡名稱>.infura.io/v3/<你的Project ID>

例如:

以太坊主網節點:https://mainnet.infura.io/v3/abc123...
Sepolia 測試網節點:https://sepolia.infura.io/v3/abc123...

此外,Infura 還提供 WebSocket 端點(適合實時監聽區塊或事件),格式為:
wss://<網絡名稱>.infura.io/ws/v3/<你的Project ID>

二、主流 Web3 前端庫全景

2.1 基礎交互庫:打通鏈上鏈下通道

2.1.1 Web3.js:以太坊生態的老牌連接器
  • 核心特性
    作為以太坊最早的 JavaScript 交互庫,支持 HTTP、WebSocket、IPC 多種連接方式,提供合約調用、錢包管理、交易發送等全流程 API。

    • github地址https://github.com/web3/web3.js
    • web3.js開發文檔https://web3js.readthedocs.io/en/v1.10.0/
    • web3.js 中文文檔 : https://learnblockchain.cn/docs/web3.js/
  • 適用場景
    兼容舊版以太坊項目,適合需要全面功能覆蓋的 DApp(如去中心化交易所、借貸平臺)。
    代碼示例:

// 連接以太坊節點
const Web3 = require('web3');
const web3 = new Web3('https://mainnet.infura.io/v3/your-project-id');// 調用合約方法
const contract = new web3.eth.Contract(abi, contractAddress);
const balance = await contract.methods.balanceOf(userAddress).call();
2.1.2 Ethers.js:現代化輕量交互首選
  • 核心特性:
    模塊化設計、TypeScript 優先支持,提供更簡潔的 API 和更好的安全性(如避免簽名漏洞),支持 EIP-1193 錢包標準。
  • 適用場景:
    新項目開發、需要高頻交互的場景(如鏈游、DeFi 聚合器)。
2.1.3 Viem.is TypeScript-first 的設計理念,重新定義了 EVM 兼容鏈的交互

Viem.is以 TypeScript-first 的設計理念橫空出世,重新定義了 EVM 兼容鏈的交互體驗。這個誕生于 Wireshape 生態的輕量庫,通過極簡 API 和模塊化設計,讓智能合約交互、交易管理和事件監聽等核心操作變得優雅高效,成為現代 DApp 開發的 “瑞士軍刀”。

官網: https://viem.sh/
GitHub 倉庫:https://github.com/wevm/viem
中文文檔:https://learnblockchain.cn/docs/viem/

  • 輕量高效的交易管理體系
    Viem.is 構建了從交易創建到廣播的全流程解決方案,支持 EIP-1559 動態手續費計算和多鏈 gas 費估算:
import { createTransaction, sendTransaction } from 'viem';// 構建ERC20轉賬交易
const tx = createTransaction({to: '0x123...', value: 1n * 10n ** 18n, // 1 ETHgasPrice: 20n * 10n ** 9n, // 20 Gweidata: erc20Abi.encodeFunctionData('transfer', [recipient, amount])
});// 簽名并發送
const hash = await sendTransaction(tx, privateKey);

相比傳統庫,Viem 的交易對象內置類型校驗,自動識別合約 ABI 錯誤,顯著減少鏈上交易失敗率。

  • 智能合約交互的 “一鍵式” 解決方案
    針對開發者高頻使用的合約調用場景,Viem 提供開箱即用的合約實例化工具:
import { getContract } from 'viem';// 初始化合約實例(自動綁定ABI)
const erc20 = getContract(erc20Abi, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48');// 組合調用:獲取余額并解析單位
const balance = await erc20.read.balanceOf(address);
const formatted = erc20.formatUnits(balance, 6); // USDC精度處理

通過鏈式調用語法,開發者無需手動處理 ABI 編碼 / 解碼,合約方法自動映射為 TypeScript 接口,智能提示覆蓋參數校驗、返回值解析全流程。

  • 實時事件監聽的革新設計
    針對 DeFi 協議常用的事件監控場景,Viem 實現了基于 WebSocket 的事件流管理:
import { createEventStream } from 'viem';// 監聽Uniswap V3交易事件
const stream = createEventStream({address: '0x1f98431c8ad98523631ae4a59f267346ea31f984',abi: uniswapV3Abi,event: 'Swap',onData: (event) => {console.log(`Swap: ${event.args.token0} <-> ${event.args.token1}`);}
});// 支持歷史事件回溯與重放
await stream.replayFromBlock(15_000_000); // 從特定區塊開始回溯

相比傳統輪詢方式,事件流機制降低 50% 以上的節點請求壓力,同時支持斷點續傳和異常恢復

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89446.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89446.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89446.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cnpm命令報internal/modules/cjs/loader.js:797 throw err; ^ Error: Cannot find

在運行一個項目的時候&#xff0c;需要升級電腦各組件的版本&#xff0c;結果導致cnpm命令無法正常使用&#xff0c;cnpm任何命令都會報如下這個錯&#xff1a;找了半天&#xff0c;發現是由于cnpm與npm的版本不一致導致的&#xff0c;所以需要卸載并重新安裝cnpm&#xff0c;重…

15、鴻蒙Harmony Next開發:創建自定義組件

目錄 自定義組件的基本用法 自定義組件的基本結構 struct Component freezeWhenInactive build()函數 Entry EntryOptions Reusable 成員函數/變量 自定義組件的參數規定 build()函數 自定義組件生命周期 自定義組件的創建和渲染流程 自定義組件重新渲染 自定義…

深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()

文章目錄深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()1. 方法定義comparingByKey()comparingByValue()2. 基本用法2.1 使用comparingByKey()2.2 使用comparingByValue()3. 方法重載版本comparingByKey(Comparator)comparingByValue(Comparator)4. 高級用…

Mac下載mysql

安裝 brew list --versions | grep mysql查看已安裝的mysql版本brew search mysql查看支持的mysql版本brew info mysql查看mysql版本信息brew install mysql進行安裝/opt/homebrew/opt/mysql/bin/mysqld --initialize-insecure --user$(whoami) --basedir$(brew --prefix mysql…

PageHelper使用說明文檔

文章目錄一、簡介二、集成步驟三、使用方法四、注意事項五、高級用法一、簡介 PageHelper 是一個開源的 MyBatis 分頁插件&#xff0c;它可以幫助我們在使用 MyBatis 進行數據庫操作時方便地實現分頁功能。通過簡單的配置和少量的代碼修改&#xff0c;就可以在查詢數據時實現分…

grpo nl2sql qwen3 模型強化學習訓練有效果的成立條件有哪些

在使用GRPO&#xff08;強化學習算法&#xff09;對Qwen3模型在NL2SQL&#xff08;自然語言到SQL轉換&#xff09;任務上進行強化學習&#xff08;RL&#xff09;訓練時&#xff0c;其效果成立的核心條件可歸納為以下幾個關鍵維度&#xff0c;這些條件相互關聯&#xff0c;共同…

面向向量檢索的教育QA建模:九段日本文化研究所日本語學院的Prompt策略分析(6 / 500)

面向向量檢索的教育QA建模&#xff1a;九段日本文化研究所日本語學院的Prompt策略分析&#xff08;6 / 500&#xff09; 系列說明 500 所日本語言學校結構化建模實戰&#xff0c;第 6 篇。每篇拆解 1 所學校在 Prompt-QA 系統中的建模策略&#xff0c;分享工程經驗&#xff0c;…

墨刀原型圖的原理、與UI設計圖的區別及轉換方法詳解-卓伊凡|貝貝

墨刀原型圖的原理、與UI設計圖的區別及轉換方法詳解-卓伊凡|貝貝最近有個設計由于時間比較倉促直接用 原型做的&#xff0c;但是原型做的大家都知道是沒法用的&#xff0c;以下講解原型和ui的區別&#xff0c;其次我們下面有三種方法把墨刀的原型變成UI圖。一、墨刀原型圖的原理…

前端 nodejs vue2 開發環境和微信開發環境 故障終極處理

現象某個vue2舊項目 引入vue-ls 組件等組件&#xff0c;沖突失敗后刪除,導致開發環境 vxe-table加載失敗&#xff0c;還原后還是不行。前段項目崩潰。報警sass 某個方法 Deprecated &#xff0c;之前不會處理方式_失敗回退代碼項目代碼 刪除 node_modules&#xff0c; 刪除 …

【后端】.NET Core API框架搭建(9) --配置使用Log4Net日志

目錄 1.添加包 2.新建公用類 3.新建配置 4.注冊 4.1.類庫項目設置 5.使用 在 .NET Core 項目中使用 Log4Net 做日志記錄&#xff0c;具有很多優勢。盡管 .NET Core 自帶了 ILogger 接口&#xff08;如使用內置的 ConsoleLogger、DebugLogger 等&#xff09;&#xff0c;但…

Agent交互細節

本文參考了https://www.bilibili.com/video/BV1v9V5zSEHA/視頻及原作者代碼實踐 本文主要實踐在第3節1、MCP MCP官方地址&#xff1a;https://modelcontextprotocol.io/introduction MCP 是一個開放協議&#xff0c;它規范了應用程序向 LLM 提供上下文的方式。 架構&#xff1a…

AI+醫療!VR和MR解剖學和針灸平臺,智能時代如何重塑健康未來

在智能時代&#xff0c;“AI醫療”正從精準診斷入手&#xff0c;推動醫療系統變革&#xff0c;通過個性化健康管理、智能診療輔助等方式重塑健康未來&#xff01;將人工智能&#xff08;AI&#xff09;與虛擬實境&#xff08;VR&#xff09;應用到中醫教學&#xff0c;透過該系…

Sersync和Rsync部署

學習參考連接 以下是我在學習過程中借鑒的經驗和下載資源鏈接&#xff0c;感謝幾位大佬的幫助&#xff0c;也供各位參考。 Rsync踩坑&#xff1a; https://blog.csdn.net/XiaoXiaoYunXing/article/details/120160395 Sersync下載源 http://down.whsir.com/downloads/sersy…

Django基礎(四)———模板常用過濾器

前言上篇文章給大家介紹了DTL模板的部分知識點這篇文章繼續帶大家深入理解Django框架中的模板過濾器一、模板常用過濾器1.add將傳進來的參數添加到原來的值上面。這個過濾器會嘗試將值和 參數轉換成整形然后進行相加。如果轉換成整形過程中失敗了&#xff0c;那么會將值和參數進…

國內MCP服務器搜索引擎有哪些?MCP導航站平臺推薦

在人工智能技術蓬勃發展的今天&#xff0c;AI模型與外部工具和服務的交互能力正成為推動技術進步的關鍵。AIbase&#xff08;<https://mcp.aibase.cn/>&#xff09;作為一個專注于MCP(Model Context Protocol&#xff0c;模型上下文協議)服務器的集合平臺&#xff0c;為全…

Python中with的作用和用法

在這里我們來詳細解釋一下Python中非常重要的 with 語句。 我會從 “為什么需要它” 開始&#xff0c;然后講解 “它是什么以及如何使用”&#xff0c;最后深入到 “它的工作原理” 和 “如何自定義”。1. 為什么需要 with 語句&#xff1f;(The Problem) 在編程中&#xff0c;…

緩存雪崩、緩存穿透,緩存擊穿

Redis是一個完全開源免費的高性能非關系型&#xff08;NOSQL&#xff09;的key-value數據庫。 Redis不可能把所有的數據都緩存起來(內存昂貴且有限)&#xff0c;所以Redis需要對數據 設置過期時間&#xff0c;并采用的是惰性刪除定期刪除兩種策略對過期鍵刪除。Redis對過期鍵的…

springmvc跨域解決方案

在Spring MVC中處理跨域請求&#xff08;CORS&#xff0c;Cross-Origin Resource Sharing&#xff09;通常涉及到配置HTTP響應頭&#xff0c;以允許來自不同源的請求。Spring MVC提供了多種方式來配置CORS&#xff0c;包括全局配置和局部配置。 使用CrossOrigin注解 在控制器的…

btstack移植之安全配對(二)

3.13.3 Legacy配對首先&#xff0c;我們回復的paring response中&#xff0c;可以看到我們不支持secure connection&#xff0c;所以我們走的是legacy配對模式。圖3-74 secure連接不支持然后&#xff0c;master在pairing confirm包中回復了confirm value。圖3-75 master發送con…

FRP配置( CentOS 7 上安裝 FRP教程 )

** 如果你們公司沒有公網IP&#xff0c;但是又想實現內網穿透&#xff0c;遠程調用接口&#xff0c;在家也能調用公司服務器&#xff0c;但是nkg ssl有問題&#xff0c;花生殼坑壁&#xff0c;那么FRP是你最佳的選擇&#xff01;&#xff01;&#xff01;** 不過有個前提&#…