Chuyển đến nội dung chính
Change page

Các thư viện API JavaScript

Để một ứng dụng web tương tác với chuỗi khối Ethereum (tức là đọc dữ liệu chuỗi khối và/hoặc gửi giao dịch đến mạng lưới), nó phải kết nối với một nút Ethereum.

Vì mục đích này, mọi máy khách Ethereum đều triển khai đặc tả JSON-RPC, do đó có một tập hợp các phương thức đồng nhất mà các ứng dụng có thể dựa vào.

Nếu bạn muốn sử dụng JavaScript để kết nối với một nút Ethereum, bạn có thể sử dụng JavaScript thuần túy nhưng có một số thư viện tiện lợi tồn tại trong hệ sinh thái giúp việc này dễ dàng hơn nhiều. Với các thư viện này, các nhà phát triển có thể viết các phương thức một dòng, trực quan để khởi tạo các yêu cầu JSON-RPC (ở bên trong) tương tác với Ethereum.

Xin lưu ý rằng kể từ The Merge, cần có hai phần mềm Ethereum được kết nối - một máy khách thực thi và một ứng dụng khách đồng thuận - để chạy một nút. Vui lòng đảm bảo nút của bạn bao gồm cả máy khách thực thi và ứng dụng khách đồng thuận. Nếu nút của bạn không nằm trên máy cục bộ (ví dụ: nút của bạn đang chạy trên một phiên bản AWS), hãy cập nhật địa chỉ IP trong hướng dẫn cho phù hợp. Để biết thêm thông tin, vui lòng xem trang của chúng tôi về chạy một nút.

Điều kiện tiên quyết

Cùng với việc hiểu JavaScript, có thể sẽ hữu ích nếu bạn hiểu ngăn xếp Ethereumcác máy khách Ethereum.

Tại sao nên sử dụng thư viện?

Các thư viện này trừu tượng hóa phần lớn sự phức tạp của việc tương tác trực tiếp với một nút Ethereum. Chúng cũng cung cấp các hàm tiện ích (ví dụ: chuyển đổi ETH sang Gwei) để với tư cách là một nhà phát triển, bạn có thể dành ít thời gian hơn để giải quyết những rắc rối của các máy khách Ethereum và dành nhiều thời gian hơn để tập trung vào chức năng độc đáo của ứng dụng của bạn.

Các tính năng của thư viện

Kết nối với các nút Ethereum

Sử dụng các nhà cung cấp (providers), các thư viện này cho phép bạn kết nối với Ethereum và đọc dữ liệu của nó, cho dù đó là qua JSON-RPC, Infura, Etherscan, Alchemy hay MetaMask.

Cảnh báo: Web3.js đã được lưu trữ vào ngày 4 tháng 3 năm 2025. Đọc thông báo (opens in a new tab). Cân nhắc sử dụng các thư viện thay thế như ethers.js (opens in a new tab) hoặc viem (opens in a new tab) cho các dự án mới.

Ví dụ về Ethers

// Một BrowserProvider bao bọc một nhà cung cấp Web3 tiêu chuẩn, đó là
// những gì MetaMask tiêm vào dưới dạng window.ethereum trong mỗi trang
const provider = new ethers.BrowserProvider(window.ethereum)

// Plugin MetaMask cũng cho phép ký các giao dịch để
// gửi ether và trả tiền để thay đổi trạng thái trong Chuỗi khối.
// Đối với điều này, chúng ta cần người ký tài khoản...
const signer = provider.getSigner()

Ví dụ về Web3js

Sau khi thiết lập, bạn sẽ có thể truy vấn chuỗi khối cho:

  • số khối
  • ước tính Gas
  • các sự kiện của hợp đồng thông minh
  • id mạng lưới
  • và hơn thế nữa...

Chức năng ví

Các thư viện này cung cấp cho bạn chức năng để tạo ví, quản lý khóa và ký các giao dịch.

Dưới đây là một ví dụ từ Ethers

Đọc toàn bộ tài liệu (opens in a new tab)

Sau khi thiết lập, bạn sẽ có thể:

  • tạo tài khoản
  • gửi giao dịch
  • ký giao dịch
  • và hơn thế nữa...

Tương tác với các hàm của hợp đồng thông minh

Các thư viện máy khách JavaScript cho phép ứng dụng của bạn gọi các hàm của hợp đồng thông minh bằng cách đọc Giao diện nhị phân ứng dụng (ABI) của một hợp đồng đã được biên dịch.

ABI về cơ bản giải thích các hàm của hợp đồng ở định dạng JSON và cho phép bạn sử dụng nó giống như một đối tượng JavaScript bình thường.

Vì vậy, hợp đồng Solidity sau:

Sẽ tạo ra JSON sau:

Điều này có nghĩa là bạn có thể:

  • Gửi một giao dịch đến hợp đồng thông minh và thực thi phương thức của nó
  • Gọi để ước tính Gas mà việc thực thi một phương thức sẽ tiêu tốn khi được thực thi trong EVM
  • Triển khai một hợp đồng
  • Và hơn thế nữa...

Các hàm tiện ích

Các hàm tiện ích cung cấp cho bạn các phím tắt tiện lợi giúp việc xây dựng với Ethereum dễ dàng hơn một chút.

Các giá trị ETH mặc định tính bằng Wei. 1 ETH = 1.000.000.000.000.000.000 WEI – điều này có nghĩa là bạn đang phải xử lý rất nhiều con số! web3.utils.toWei sẽ chuyển đổi ether sang Wei cho bạn.

Và trong ethers, nó trông như thế này:

// Lấy số dư của một tài khoản (theo địa chỉ hoặc tên ENS)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Thường thì bạn sẽ cần định dạng đầu ra cho người dùng
// những người thích xem các giá trị bằng ether (thay vì Wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

Các thư viện có sẵn

Web3.js - API JavaScript của Ethereum.

Ethers.js - Triển khai ví Ethereum hoàn chỉnh và các tiện ích bằng JavaScript và TypeScript.

The Graph - Một giao thức để lập chỉ mục dữ liệu Ethereum và IPFS và truy vấn nó bằng GraphQL.

Alchemy SDK - Trình bao bọc xung quanh Ethers.js với các API được nâng cao.

viem - Giao diện TypeScript cho Ethereum.

Codex - API dữ liệu chuỗi khối được làm phong phú, theo thời gian thực trên hàng chục chuỗi.

Drift - Siêu thư viện TypeScript với bộ nhớ đệm, hook và test mock được tích hợp sẵn.

Đọc thêm

Bạn biết một tài nguyên cộng đồng nào đó đã giúp ích cho bạn? Hãy chỉnh sửa trang này và thêm nó vào!

Hướng dẫn: API JavaScript & WebSocket trên Ethereum

  • Sử dụng WebSocket – Cách sử dụng WebSocket với Alchemy để đăng ký các sự kiện Ethereum và thực hiện các yêu cầu JSON-RPC theo thời gian thực.