Mô phỏng trước khi gửi: chạy thử giao dịch bằng eth_simulateV1
Chạy thử nhiều giao dịch và kiểm tra thay đổi trạng thái trước khi gửi on-chain bằng eth_simulateV1. Tìm hiểu chính sách phương thức theo chuỗi, payload yêu cầu theo đặc tả thực thi, trọng số CU và tích hợp MCP cho AI Agent.
Trước khi phát giao dịch lên mạng blockchain, chạy thử giúp nhà phát triển kiểm tra kết quả thực thi, xác minh chuyển đổi trạng thái hợp đồng và quan sát log sự kiện, tránh phí gas không cần thiết do hợp đồng revert.
Lớp thực thi Ethereum cung cấp nhiều cách đánh giá giao dịch trước khi gửi:
eth_call: Thực thi một lệnh gọi thông điệp chỉ đọc, không lưu trạng thái giữa các lệnh gọi liên tiếp.eth_estimateGas: Tính giới hạn gas cần cho thực thi, nhưng không cung cấp chuyển đổi trạng thái tuần tự giữa nhiều giao dịch hoặc log sự kiện đầy đủ.eth_simulateV1: Được định nghĩa trong đặc tả tiêu chuẩn Ethereum Execution APIs, phương thức này cho phép mô phỏng tuần tự nhiều giao dịch qua các khối, tích lũy thay đổi trạng thái giữa các giao dịch và hỗ trợ ghi đè tham số khối cùng trạng thái tài khoản.
Chuỗi được hỗ trợ và chính sách phương thức
Khả năng mạng được công bố động qua GET /v1/chains. Đọc methods.allow trong phản hồi để xem chuỗi nào cho phép eth_simulateV1; chuỗi không liệt kê phương thức này từ chối lệnh gọi với lỗi JSON-RPC -32601 (method not available, không tính phí).
Điều kiện trạng thái node
eth_simulateV1 là phương thức truy vấn trạng thái:
- Kiểm tra đồng bộ (
-32010): Khi node của chuỗi đích đang đồng bộ và chưa sẵn sàng, lệnh gọi trả-32010(node is syncing, không tính phí). - Cửa sổ trạng thái (
-32011): Trên Robinhood Chain, yêu cầu nhắm đến khối cũ hơnstate_window_blockscủa chuỗi (GET /v1/chains), hoặc chỉ định block tagsafe,finalizedhayearliest, trả-32011(không tính phí). Block tag mặc định làlatest.
Cấu trúc yêu cầu và ví dụ cơ bản
Theo đặc tả lớp thực thi (định nghĩa eth_simulateV1 trong Ethereum Execution APIs), eth_simulateV1 chấp nhận hai tham số theo vị trí:
- Đối tượng payload:
blockStateCalls(mảng bắt buộc): Mảng đối tượng khối mô phỏng. Mỗi đối tượng chứa mảng lệnh gọi giao dịchcalls, phần ghi đè header khốiblockOverridestùy chọn và phần ghi đè trạng thái tài khoảnstateOverridestùy chọn.validation(boolean tùy chọn, mặc địnhfalse): Khi làfalse, hoạt động nhưeth_call; khi làtrue, chạy tất cả kiểm tra EVM trừ kiểm tra chữ ký.traceTransfers(boolean tùy chọn): Khi làtrue, trả log sự kiện cho chuyển token gốc.
- Block tag (chuỗi tùy chọn, mặc định
'latest'): Số khối, hash khối hoặc block tag.
Ví dụ cơ bản: chạy thử chuyển ERC-20
Ví dụ sau chạy thử lệnh gọi ERC-20 transfer(address,uint256) trên Robinhood Chain. Thay $BLOCKVECTRA_API_KEY bằng API key thực tế của bạn:
export BLOCKVECTRA_API_KEY=rgw_your_api_key
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H "Content-Type: application/json" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_simulateV1",
"params": [
{
"blockStateCalls": [
{
"calls": [
{
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"data": "0xa9059cbb00000000000000000000000033333333333333333333333333333333333333330000000000000000000000000000000000000000000000000de0b6b3a7640000",
"value": "0x0"
}
]
}
]
},
"latest"
]
}'Kiểm tra cấu trúc phản hồi
Theo đặc tả thực thi Ethereum, trường result chứa mảng kết quả khối mô phỏng với schema sau:
Trường cấp khối
number: Số khối của khối mô phỏng (chuỗi thập lục phân).hash: Hash khối mô phỏng (chuỗi thập lục phân 32 byte).parentHash: Hash khối cha.timestamp: Dấu thời gian khối (chuỗi thập lục phân).gasLimit: Giới hạn gas của khối.gasUsed: Tổng gas tiêu thụ của tất cả lệnh gọi mô phỏng trong khối này.baseFeePerGas: Phí cơ sở mỗi gas của khối.miner: Địa chỉ coinbase nhận phí khối.calls: Mảng kết quả thực thi của từng lệnh gọi mô phỏng.
Trường cấp lệnh gọi (phần tử mảng calls)
status: Trạng thái lệnh gọi dưới dạng chuỗi thập lục phân.0x1biểu thị thành công, còn0x0biểu thị thất bại hoặc revert.gasUsed: Gas thực tế lệnh gọi này tiêu thụ (chuỗi thập lục phân).maxUsedGas(tùy chọn): Mức gas sử dụng cao nhất trong quá trình thực thi trước khi hoàn lại.returnData: Dữ liệu trả về mã hóa thập lục phân. Khi chuyển ERC-20 thành công, chứa booleantrue; khi revert, chứa selector lỗi hoặc dữ liệu revert.logs: Mảng log sự kiện lệnh gọi phát ra. Khi thành công, chứa log sự kiện nhưTransfer:address: Địa chỉ hợp đồng phát sự kiện.topics: Mảng hash topic 32 byte (topics[0]là hash chữ ký sự kiện, như chữ ký sự kiệnTransfer).data: Dữ liệu sự kiện không được lập chỉ mục, mã hóa thập lục phân.blockNumber,blockHash,transactionHash,transactionIndex,logIndex,removed.
error(có khi thất bại): Đối tượng chứacode(3cho revert,-32015cho lỗi VM) vàmessage(nhưexecution reverted).
Bảng giá và trọng số CU
BlockVectra đo mức sử dụng bằng Compute Unit (CU). Trọng số của mỗi phương thức JSON-RPC được công bố động qua GET /v1/plans:
Trọng số CU mỗi lệnh gọi
| Phương thức | CU mỗi lệnh gọi |
|---|---|
eth_simulateV1 | 20 |
eth_call | 15 |
eth_estimateGas | 20 |
Để biết công thức quy đổi đơn vị và chi tiết nạp tiền, xem trang bảng giá.
Yêu cầu bị từ chối — gồm node đang đồng bộ (-32010), ngoài cửa sổ trạng thái (-32011) hoặc phương thức không khả dụng (-32601) — không bị tính phí. Xem Yêu cầu nào miễn phí để biết đầy đủ quy tắc tính phí.
Sử dụng với AI Agent và MCP
AI Agent tự chủ có thể gọi eth_simulateV1 trực tiếp qua máy chủ Model Context Protocol (MCP) của BlockVectra.
Công cụ rpc_call có xác thực bằng API key cho phép thực thi phương thức JSON-RPC trên các chuỗi được hỗ trợ. API key phải được cấu hình trong HTTP header của MCP client (x-api-key: {api_key} hoặc Authorization: Bearer {api_key}), không bao giờ truyền trong tham số công cụ hay nội dung cuộc trò chuyện.
Ví dụ payload gọi công cụ rpc_call trên Robinhood Chain:
{
"chain": "robinhood_mainnet",
"method": "eth_simulateV1",
"params": [
{
"blockStateCalls": [
{
"calls": [
{
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"data": "0xa9059cbb00000000000000000000000033333333333333333333333333333333333333330000000000000000000000000000000000000000000000000de0b6b3a7640000",
"value": "0x0"
}
]
}
]
},
"latest"
]
}Agent có thể kiểm tra status === "0x1" để xác minh tính hợp lệ của tương tác hợp đồng và đánh giá mức tiêu thụ gas trước khi gửi giao dịch thô. Xem hướng dẫn cấu hình và sử dụng trong hướng dẫn tích hợp AI Agent.
Các bước tiếp theo
- Xem gói miễn phí và bảng giá để kiểm tra những gì tài khoản của bạn bao gồm.
- Đăng nhập bảng điều khiển để tạo API key.
Cập nhật lần cuối:
Bắt đầu với Robinhood Chain Testnet
Bắt đầu với RPC Robinhood Chain Testnet: URL RPC công khai, đọc không cần key, log WebSocket bằng API key, truy cập faucet và chuyển cùng key sang mainnet.
Thanh toán stablecoin
Xây dựng bộ nhận thanh toán và con trỏ thăm dò. Xác minh hợp đồng token, người nhận và số tiền nguyên, loại trùng sự kiện và đối chiếu các khối bị thiếu hoặc thay thế.