Điều gì sẽ xảy ra nếu bạn có thể xây dựng các ứng dụng blockchain xử lý 65.000 giao dịch mỗi giây với thời gian hoàn tất 400 mili giây? API của Solana biến điều này thành hiện thực, cung cấp giao diện JSON-RPC cho phép bạn truy vấn tài khoản, gửi giao dịch và đăng ký cập nhật theo thời gian thực mà không cần tự mình quản lý cơ sở hạ tầng trình xác thực.
Phát triển blockchain truyền thống buộc bạn phải lựa chọn giữa tốc độ và tính phi tập trung. 15 TPS của Ethereum tạo ra tắc nghẽn trong thời gian mạng bị quá tải. Các giải pháp Layer 2 làm tăng độ phức tạp. Solana loại bỏ sự đánh đổi này thông qua cơ chế đồng thuận bằng chứng lịch sử (Proof-of-History) kết hợp với bằng chứng cổ phần (Proof-of-Stake, PoS), mang lại hiệu suất Web2 với các đảm bảo của Web3. Bạn xây dựng các ứng dụng có cảm giác tức thời trong khi vẫn duy trì khả năng chống kiểm duyệt.
Mục lục:
- Hiểu về Kiến trúc của Solana
- Thiết lập Môi trường Phát triển của bạn
- Các Phương thức API RPC cốt lõi
- Xây dựng Giao dịch với Web3.js
- Các Thực hành Bảo mật Tốt nhất
- Kết luận
Hiểu về Kiến trúc của Solana
Solana sử dụng một kiến trúc độc đáo tập trung vào Thư viện Chương trình Solana (Solana Program Library - SPL) và một môi trường chạy thời gian thực (runtime) có thông lượng cao. Hiểu những nguyên tắc cơ bản này giúp bạn viết các lệnh gọi API hiệu quả.
Bằng chứng Lịch sử (Proof of History - PoH)
PoH tạo một dấu thời gian mật mã cho mọi giao dịch trước khi đạt được sự đồng thuận. Điều này loại bỏ nhu cầu các nút phải đồng ý về thời gian, giảm đáng kể độ trễ. Khi bạn gửi một giao dịch qua API, nó sẽ được gắn dấu thời gian ngay lập tức và đi vào hàng đợi của người lãnh đạo để xử lý.
Tài khoản và Chương trình
Không giống như mô hình dựa trên tài khoản của Ethereum với lưu trữ mã, Solana tách mã (chương trình) khỏi dữ liệu (tài khoản). Các chương trình là không trạng thái (stateless)—chúng chỉ chứa logic có thể thực thi. Tài khoản lưu trữ dữ liệu và chỉ định chương trình nào sở hữu chúng. Kiến trúc này cho phép xử lý giao dịch song song vì các tài khoản không trùng lặp có thể thực thi đồng thời.
Mỗi tài khoản có một địa chỉ 32 byte duy nhất được lấy từ khóa công khai Ed25519. Các tài khoản trả tiền thuê bằng lamports (1 SOL = 10^9 lamports) để duy trì trên chuỗi. Các tài khoản miễn phí thuê—những tài khoản nắm giữ ít nhất 2 năm tiền thuê—sẽ tồn tại vô thời hạn mà không bị mất đi.
Mức độ Cam kết
Solana cung cấp ba mức độ xác nhận:
- Processed (Đã xử lý): Giao dịch đã được người lãnh đạo hiện tại xử lý nhưng chưa được xác nhận. Phản hồi nhanh nhất, độ chắc chắn thấp nhất.
- Confirmed (Đã xác nhận): Giao dịch đã được cụm (cluster) xác nhận. Trung bình khoảng 5-10 giây.
- Finalized (Đã hoàn tất): Giao dịch đã được ghi nhận và không thể hoàn tác. Khoảng 12-15 giây.
Chỉ định mức độ cam kết trong các lệnh gọi API để cân bằng tốc độ và đảm bảo hoàn tất.

Thiết lập Môi trường Phát triển của bạn
Bạn cần ba thành phần: Solana CLI để quản lý khóa và triển khai, một điểm cuối RPC để truy cập blockchain và SDK JavaScript để tích hợp ứng dụng.
Cài đặt Solana CLI
Cài đặt công cụ CLI chính thức:
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
Xác minh cài đặt:
solana --version
Cấu hình môi trường của bạn cho Devnet (kiểm thử) hoặc Mainnet (sản xuất):
# For development
solana config set --url https://api.devnet.solana.com
# For production
solana config set --url https://api.mainnet-beta.solana.com
Tạo một Ví
Tạo một cặp khóa mới để ký giao dịch:
solana-keygen new --outfile ~/.config/solana/id.json
CLI xuất ra địa chỉ công khai và một cụm từ hạt giống gồm 12 từ của bạn. Lưu trữ cụm từ hạt giống một cách an toàn—nó giúp khôi phục ví của bạn. Tệp JSON chứa khóa riêng tư của bạn; bảo vệ nó bằng quyền truy cập tệp (chmod 600).
Kiểm tra số dư của bạn:
solana balance
Nạp SOL miễn phí vào ví Devnet của bạn:
solana airdrop 2
Airdrop trên Devnet cung cấp 2 SOL cho mỗi yêu cầu, giới hạn một yêu cầu mỗi 10 giây. Mainnet yêu cầu mua SOL thông qua các sàn giao dịch.
Chọn Nhà cung cấp RPC
Mặc dù Solana cung cấp các điểm cuối RPC công cộng, các ứng dụng sản xuất cần cơ sở hạ tầng chuyên dụng. Các lựa chọn bao gồm:
- Helius:
https://mainnet.helius-rpc.com/?api-key=YOUR_KEY - QuickNode:
https://solana-mainnet.g.alchemy.com/v2/YOUR_KEY - Chainstack: Các nút chuyên dụng cấp doanh nghiệp
Các gói miễn phí thường cho phép 100.000 yêu cầu mỗi tháng. Các gói trả phí cung cấp giới hạn cao hơn, kết nối được stake để giao dịch được ghi nhận và API phí ưu tiên.
Cài đặt Web3.js
SDK JavaScript của Solana có hai phiên bản chính. Phiên bản 2.0 là bản viết lại hoàn toàn với các mẫu lập trình chức năng, khả năng tối ưu hóa kích thước mã (tree-shakability) và không có phụ thuộc.
Cài đặt phiên bản 2.0:
npm install @solana/web3.js@2 @solana-program/system @solana-program/compute-budget
Để tương thích với phiên bản 1.x:
npm install @solana/web3.js
MẹoApidogSolana
Các Phương thức API RPC cốt lõi của Solana
JSON-RPC của Solana cung cấp các điểm cuối HTTP cho các truy vấn và điểm cuối WebSocket cho các đăng ký. Tất cả các yêu cầu tuân theo đặc tả JSON-RPC 2.0.

Thao tác Tài khoản
Lấy thông tin tài khoản và số dư:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getAccountInfo",
"params": [
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
{"encoding": "base58"}
]
}'
Truy xuất nhiều tài khoản một cách hiệu quả:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getMultipleAccounts",
"params": [
[
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
"4fYNw3dojWGPgVMtUU7ziPwq1r2VMGrhCrKZC9EQTbkV"
],
{"encoding": "base64"}
]
}'
Truy vấn Khối và Giao dịch
Lấy blockhash mới nhất để xây dựng giao dịch:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash",
"params": [{"commitment": "confirmed"}]
}'
Truy vấn trạng thái giao dịch:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSignatureStatuses",
"params": [
[
"5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpEz7CmGVZxhEHppBrGK"
],
{"searchTransactionHistory": true}
]
}'
Đăng ký WebSocket
Giám sát các thay đổi tài khoản theo thời gian thực:
import { createSolanaRpcSubscriptions } from "@solana/web3.js";
const rpcSubscriptions = createSolanaRpcSubscriptions(
"wss://api.devnet.solana.com"
);
const abortController = new AbortController();
await rpcSubscriptions.accountNotifications(
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
{ commitment: "confirmed" },
(notification) => {
console.log("Account changed:", notification);
},
{ abortSignal: abortController.signal }
);
// Stop listening after 60 seconds
setTimeout(() => abortController.abort(), 60000);
Các kết nối WebSocket yêu cầu ping định kỳ mỗi 30-60 giây để duy trì hoạt động. Triển khai logic kết nối lại cho các ứng dụng sản xuất.
Mẹo chuyên nghiệpApidogSolana
Xây dựng Giao dịch với Web3.js
Các giao dịch Solana bao gồm một hoặc nhiều lệnh (instructions) nhắm mục tiêu các chương trình cụ thể. Mỗi lệnh chỉ định chương trình, các tài khoản nó tương tác và dữ liệu được tuần tự hóa.
Tạo một Giao dịch Chuyển khoản
Chuyển SOL giữa các tài khoản bằng SDK phiên bản 2.0:
import {
airdropFactory,
createKeyPairSignerFromBytes,
createSolanaRpc,
createSolanaRpcSubscriptions,
generateKeyPairSigner,
lamports,
sendAndConfirmTransactionFactory,
pipe,
createTransactionMessage,
setTransactionMessageFeePayer,
setTransactionMessageLifetimeUsingBlockhash,
appendTransactionMessageInstruction,
signTransactionMessageWithSigners,
getSignatureFromTransaction,
} from "@solana/web3.js";
import { getTransferSolInstruction } from "@solana-program/system";
const LAMPORTS_PER_SOL = BigInt(1_000_000_000);
// Setup RPC connections
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.devnet.solana.com");
const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions });
// Generate sender and recipient
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
// Fund sender with airdrop
await airdropFactory({ rpc, rpcSubscriptions })({
recipientAddress: sender.address,
lamports: lamports(2n * LAMPORTS_PER_SOL),
commitment: "confirmed",
});
// Get latest blockhash
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
// Build transaction using pipe
const transactionMessage = pipe(
createTransactionMessage({ version: 0 }),
(msg) => setTransactionMessageFeePayer(sender.address, msg),
(msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg),
(msg) => appendTransactionMessageInstruction(
getTransferSolInstruction({
amount: lamports(LAMPORTS_PER_SOL / BigInt(2)),
destination: recipient.address,
source: sender,
}),
msg
)
);
// Sign and send
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
console.log("Transaction signed");
await sendAndConfirmTransaction(signedTransaction, {
commitment: "confirmed",
maxRetries: 0n,
skipPreflight: true,
});
console.log("Confirmed:", getSignatureFromTransaction(signedTransaction));
Hàm pipe tạo ra một chuỗi chức năng mà mỗi bước biến đổi thông điệp giao dịch. Mẫu này loại bỏ trạng thái có thể thay đổi và làm cho việc xây dựng giao dịch trở nên khai báo.
Tối ưu hóa bằng Phí ưu tiên
Trong thời gian mạng bị tắc nghẽn, phí ưu tiên đảm bảo giao dịch được bao gồm. Lấy phí đề xuất từ API Helius:
import { getBase64EncodedWireTransaction } from "@solana/web3.js";
const base64Transaction = getBase64EncodedWireTransaction(signedTransaction);
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_KEY", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: "priority-fee-request",
method: "getPriorityFeeEstimate",
params: [{
transaction: base64Transaction,
options: { recommended: true }
}]
})
});
const { result } = await response.json();
const priorityFee = result.priorityFeeEstimate;
// Add priority fee instruction
import { getSetComputeUnitPriceInstruction } from "@solana-program/compute-budget";
const optimizedMessage = pipe(
transactionMessage,
(msg) => appendTransactionMessageInstruction(
getSetComputeUnitPriceInstruction({ microLamports: priorityFee }),
msg
)
);
Phí ưu tiên được chỉ định bằng micro-lamports trên mỗi đơn vị tính toán. Phí cao hơn làm tăng ưu tiên giao dịch trong thời gian tắc nghẽn.
Xử lý Lỗi
Solana trả về các mã lỗi cụ thể cho các lỗi phổ biến:
import { isSolanaError, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE } from "@solana/web3.js";
try {
await sendAndConfirmTransaction(signedTransaction);
} catch (error) {
if (isSolanaError(error)) {
switch (error.contextErrorCode) {
case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE:
console.error("Preflight failed:", error.message);
break;
default:
console.error("Solana error:", error);
}
}
}
Các lỗi phổ biến bao gồm không đủ tiền (0x1), blockhash không hợp lệ (hết hạn) và tài khoản đang được sử dụng (xung đột giao dịch).
Các Thực hành Bảo mật Tốt nhất
Thông lượng cao của Solana mang đến những cân nhắc bảo mật độc đáo. Thực hiện các biện pháp này để bảo vệ ứng dụng và người dùng của bạn.
Quản lý Khóa
Không bao giờ đưa khóa riêng tư vào hệ thống kiểm soát phiên bản. Sử dụng biến môi trường:
# .env
SOLANA_PRIVATE_KEY="[1,2,3,...]"
Tải khóa một cách an toàn trong ứng dụng của bạn:
import { createKeyPairSignerFromBytes } from "@solana/web3.js";
import { getBase58Encoder } from "@solana/codecs";
const secretKey = JSON.parse(process.env.SOLANA_PRIVATE_KEY);
const signer = await createKeyPairSignerFromBytes(
new Uint8Array(secretKey)
);
Đối với các ứng dụng trình duyệt, hãy tích hợp các bộ điều hợp ví (Phantom, Solflare) thay vì xử lý trực tiếp khóa riêng tư. Người dùng ký giao dịch thông qua tiện ích mở rộng ví của họ, giữ cho khóa được an toàn.
Mô phỏng Giao dịch
Luôn mô phỏng giao dịch trước khi gửi để phát hiện lỗi sớm:
const simulationResult = await rpc.simulateTransaction(signedTransaction).send();
if (simulationResult.value.err) {
console.error("Simulation failed:", simulationResult.value.err);
// Handle error without wasting fees
}
Mô phỏng thực thi giao dịch dựa trên trạng thái hiện tại mà không thực hiện thay đổi. Nó tiết lộ các lỗi logic, tài khoản không đủ, và vi phạm ngân sách tính toán.
Bảo vệ khỏi Tấn công Replay
Các giao dịch Solana bao gồm một blockhash gần đây sẽ hết hạn sau khoảng 90 giây. Điều này ngăn chặn các cuộc tấn công replay—gửi cùng một giao dịch nhiều lần. Đối với các thao tác idempotent, hãy tạo dữ liệu lệnh hoặc tài khoản duy nhất cho mỗi giao dịch.
Giới hạn Tốc độ Yêu cầu (Rate Limiting)
Các điểm cuối RPC công cộng triển khai giới hạn tốc độ yêu cầu nghiêm ngặt (thường là 100 yêu cầu mỗi 10 giây). Thực hiện thuật toán backoff lũy thừa:
async function withRetry(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (error.status === 429) {
await new Promise(r => setTimeout(r, 1000 * Math.pow(2, i)));
continue;
}
throw error;
}
}
}
Đối với sản xuất, sử dụng các nút RPC chuyên dụng hoặc các gói nhà cung cấp trả phí với giới hạn cao hơn.
Xác minh Chương trình
Trước khi tương tác với các chương trình của bên thứ ba, hãy xác minh mã nguồn của chúng trên các trình khám phá như SolanaFM hoặc Solscan. Tìm kiếm các huy hiệu đã xác minh cho biết bytecode đã triển khai khớp với các kho lưu trữ mã nguồn mở. Các chương trình không được xác minh có thể chứa logic độc hại làm cạn kiệt tiền của người dùng.
Kết luận
API của Solana mang lại hiệu suất mà các ứng dụng hiện đại yêu cầu—thời gian hoàn tất dưới một giây, thông lượng cao và phí có thể dự đoán. Bạn truy vấn trạng thái tài khoản thông qua JSON-RPC, đăng ký cập nhật theo thời gian thực qua WebSocket và xây dựng giao dịch bằng cách sử dụng SDK Web3.js 2.0 có tính năng. Kiến trúc dựa trên tài khoản cho phép thực thi song song trong khi các mức độ cam kết cho phép bạn lựa chọn sự đánh đổi giữa bảo mật và tốc độ.
Bắt đầu với Devnet để thử nghiệm mà không có rủi ro tài chính. Sử dụng phí ưu tiên trong thời gian Mainnet tắc nghẽn. Triển khai mô phỏng và quản lý khóa thích hợp trước khi triển khai các ứng dụng hướng tới người dùng. Hệ sinh thái của Solana cung cấp các công cụ; logic ứng dụng của bạn xác định giá trị.
Bắt đầu với Apidog ngay hôm nay—nhập các điểm cuối API Solana của bạn trong vài giây và bắt đầu kiểm tra mà không cần cấu hình.
