Chạy một dApp Ethereum sản xuất mà không có nhà cung cấp node đáng tin cậy sẽ khiến bạn thường xuyên phải xử lý sự cố. Node Geth tự host dễ bị trễ, bỏ lỡ reorg, và nghẽn khi ứng dụng tăng trưởng. Alchemy API giải quyết vấn đề này bằng cách cung cấp node được quản lý cùng các API nâng cao mà JSON-RPC thô không có, ví dụ: truy xuất toàn bộ NFT của ví chỉ với một lệnh gọi thay vì phải quét từng block.
Hướng dẫn này tập trung vào cách triển khai Alchemy API: tạo ứng dụng, xác thực, gọi phương thức JSON-RPC chuẩn, sử dụng các endpoint nâng cao, đăng ký sự kiện qua WebSocket, và triển khai account thông minh với gas sponsorship qua Account Kit. Các ví dụ curl và Node.js sẽ minh họa rõ ràng từng luồng chính, kèm phân tích CU để bạn kiểm tra chi phí trước khi triển khai thực tế.
Nếu bạn đang đánh giá giải pháp ví/web3 tổng thể, Apidog giúp test mọi endpoint ở một chỗ. Xem thêm hướng dẫn về API ví tiền điện tử tốt nhất để có cái nhìn tổng quan về thị trường.
Tóm tắt
- Alchemy hỗ trợ nhiều chain: Ethereum, Polygon, Arbitrum, Optimism, Base, Solana, zkSync, Starknet... từ một dashboard.
- Mỗi ứng dụng có endpoint HTTPS & WebSocket cho JSON-RPC chuẩn và các API nâng cao như
alchemy_getAssetTransfers,alchemy_getTokenBalances,getNFTs. - SDK JavaScript (
alchemy-sdk) mở rộng ethers.js, bổ sung typed helper cho mọi endpoint nâng cao. - Account Kit cung cấp ERC-4337 smart account với gas sponsorship, session keys, xác thực passkey qua Gas Manager.
- Billing theo compute unit (CU); free tier: 300 triệu CU/tháng, Growth: 400 triệu CU + phí vượt mức, Scale: tùy chỉnh.
- Rate limit theo ứng dụng/phương thức; hỗ trợ batch request và backoff tự động trong SDK giúp tránh throttle.
Alchemy API là gì?
Alchemy là nền tảng phát triển web3 cung cấp node blockchain được quản lý và công cụ index dữ liệu. Bạn nhận được:
- Node JSON-RPC highly available trên hơn 40 chain.
- API nâng cao với dữ liệu giao dịch, metadata NFT đã index sẵn.
- Account Kit giúp xây dựng trải nghiệm user không phí gas.
Infura chỉ cung cấp node truy cập cơ bản, còn Alchemy thêm lớp index. Lấy toàn bộ chuyển khoản ERC-20 bằng một lệnh gọi alchemy_getAssetTransfers thay vì phải quét toàn bộ block – lý do nhiều ví, dashboard DeFi, NFT marketplace dùng Alchemy cho các query nặng về đọc.
Xác thực và thiết lập
- Đăng ký tài khoản tại bảng điều khiển Alchemy.
- Nhấn Tạo ứng dụng mới → chọn chain (Ethereum Mainnet, Polygon, Base, v.v.) và network (mainnet/testnet).
- Lấy API key của ứng dụng, dùng để cấu thành endpoint URL.
Endpoint HTTPS:
https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
Endpoint WebSocket:
wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
Lưu ý bảo mật: Không đưa API key vào code frontend. Với dApp browser, dùng whitelist referer trong dashboard để tránh lộ key bị abuse.
Cài đặt SDK:
npm install alchemy-sdk
Khởi tạo client:
import { Alchemy, Network } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const block = await alchemy.core.getBlockNumber();
console.log("Khối mới nhất:", block);
Các endpoint cốt lõi
JSON-RPC chuẩn qua HTTPS
Mọi phương thức JSON-RPC Ethereum đều tương thích. Ví dụ lấy balance:
curl https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"method":"eth_getBalance",
"params":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"],
"id":1
}'
Response là số dư wei dạng hex string. Áp dụng cho eth_call, eth_sendRawTransaction, eth_getLogs,...
API nâng cao: getAssetTransfers
alchemy_getAssetTransfers trả về mọi giao dịch chuyển ETH/ERC-20/ERC-721/ERC-1155, internal/external transaction cho một address trong phạm vi block. Một call thay cho hàng ngàn truy vấn eth_getLogs.
import { Alchemy, Network, AssetTransfersCategory } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const transfers = await alchemy.core.getAssetTransfers({
fromBlock: "0x0",
toAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
category: [
AssetTransfersCategory.EXTERNAL,
AssetTransfersCategory.ERC20,
AssetTransfersCategory.ERC721,
],
maxCount: 100,
});
for (const t of transfers.transfers) {
console.log(`${t.asset} ${t.value} từ ${t.from} đến ${t.to}`);
}
API nâng cao: getTokenBalances và getNFTs
Lấy toàn bộ token mà một ví đang giữ, không cần biết contract address trước:
const balances = await alchemy.core.getTokenBalances(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
for (const token of balances.tokenBalances) {
const meta = await alchemy.core.getTokenMetadata(token.contractAddress);
console.log(`${meta.symbol}: ${token.tokenBalance}`);
}
Lấy toàn bộ NFT thuộc sở hữu ví:
const nfts = await alchemy.nft.getNftsForOwner(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
console.log(`Sở hữu ${nfts.totalCount} NFT`);
API đăng ký qua WebSocket
Nhận thông báo giao dịch hoặc sự kiện mới qua WebSocket, không cần poll liên tục:
import { Alchemy, Network, AlchemySubscription } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
alchemy.ws.on(
{
method: AlchemySubscription.PENDING_TRANSACTIONS,
toAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
},
(tx) => console.log("Giao dịch USDC đang chờ xử lý:", tx.hash)
);
Dùng cho bot mempool, tracker MEV, dashboard portfolio real-time... mà không tốn CU poll eth_blockNumber.
Account Kit và Gas Manager
Account Kit là stack smart account của Alchemy: có React SDK, triển khai smart contract account (Light Account, Modular Account), và Gas Manager để tài trợ phí gas cho user. Người dùng đăng ký bằng passkey/email, nhận ví smart account, không cần seed phrase hay token gas.
import { createLightAccountClient } from "@account-kit/smart-contracts";
import { alchemy, sepolia } from "@account-kit/infra";
const client = createLightAccountClient({
transport: alchemy({ apiKey: process.env.ALCHEMY_API_KEY }),
chain: sepolia,
signer: yourSigner,
});
const { hash } = await client.sendUserOperation({
uo: { target: "0x...", data: "0x", value: 0n },
});
Kết hợp với quy trình onboarding, bạn có thể tích hợp Privy API – xem hướng dẫn Privy API để tối ưu cho dApp end-user.
Lỗi thường gặp & giới hạn rate limit
- Alchemy tính phí theo compute unit (CU):
eth_call= 26 CU,eth_getLogs= 75,alchemy_getAssetTransfers= 150,eth_getBlockByNumber= 16. - Free tier: 300 triệu CU/tháng, rate limit theo giây.
Lỗi thường gặp:
- 429 Too many requests: Quá giới hạn CU/giây. Nên backoff rồi retry (SDK tự xử lý).
- 403 Forbidden: API key không đúng whitelist hoặc đã disable.
- -32600 Invalid request: JSON-RPC body sai format (kiểm tra method/params).
-
-32000 execution reverted: Smart contract call bị revert. Debug với
eth_call+ tool mô phỏng.
Batch request: Gửi tối đa 1000 JSON-RPC call trong một POST HTTP để tiết kiệm CU và băng thông. Xem cách test API không dùng Postman 2026 để quản lý batch JSON-RPC hiệu quả.
Giá Alchemy
- Free: 300 triệu CU/tháng, 1 app, support cộng đồng.
- Growth: $49/tháng, 400 triệu CU, phí vượt mức, analytics nâng cao.
- Scale: $289/tháng, 1.5 tỷ CU, throughput chuyên dụng, support ưu tiên.
- Enterprise: Giá tùy chỉnh, SLA, node riêng, có kỹ sư giải pháp.
CU reset mỗi tháng. Vượt quota ở Growth/Scale sẽ bị tính phí vượt mức; vượt Free thì bị 429 tới kỳ sau. Luôn kiểm tra usage trong dashboard để chọn gói phù hợp.
Kiểm tra API Alchemy bằng Apidog
Debug JSON-RPC thủ công rất tốn công: mọi request là POST với params lồng nhau, response ở dạng hex, WebSocket khó test trong terminal. Apidog cung cấp workspace hợp nhất cho REST, GraphQL, WebSocket – dễ dàng truy cập endpoint Alchemy, mở WebSocket tới wss://eth-mainnet.g.alchemy.com/v2/..., theo dõi pending tx realtime.
Lưu API key dưới dạng biến môi trường trong Apidog, tái sử dụng cho mọi collection (mainnet, Sepolia, Polygon, Base...). Viết script xác nhận field response để phát hiện hồi quy khi Alchemy update endpoint mới. Tải xuống Apidog và import OpenAPI spec của Alchemy để dựng bộ sưu tập chỉ trong 1 phút.
Câu hỏi thường gặp
Alchemy có miễn phí cho sản xuất không?
Có, tối đa 300 triệu CU/tháng. Nhiều dApp nhỏ sử dụng gói Free lâu dài. Cần nhiều hơn hoặc thông lượng cao, dùng Growth ($49/tháng).
Alchemy có hỗ trợ Solana không?
Có, hỗ trợ Solana mainnet/devnet với endpoint RPC chuẩn và API nâng cao cho token/NFT. Tạo ứng dụng Solana để nhận endpoint riêng.
Có thể dùng Alchemy API mà không cần SDK không?
Hoàn toàn được. Mọi endpoint gọi qua HTTPS bằng curl, fetch, HTTP client tùy ý. SDK chỉ là wrapper tiện lợi: typed helper, auto retry, reconnect WebSocket.
Khác biệt Alchemy vs MetaMask developer API?
MetaMask tập trung trải nghiệm ví và signing; Alchemy là hạ tầng node và dữ liệu. Xem hướng dẫn MetaMask API nếu bạn focus phía ví.
Quy trình rotate API key Alchemy?
Tạo app mới trong dashboard, cập nhật env, deploy, sau đó xóa app cũ. Không có rotate inline, nên cần overlap ngắn.
Account Kit dùng được trên chain EVM nào?
Account Kit hỗ trợ Ethereum, Optimism, Arbitrum, Base, Polygon, các testnet tương ứng. Gas Manager policy cần setup riêng cho từng chain.
Top comments (0)