Bài viết này cung cấp một hướng dẫn toàn diện về cách sử dụng Monero Daemon RPC (Remote Procedure Call) để tương tác với node Monero của bạn. Bạn sẽ tìm hiểu về cả các phương thức JSON RPC tiêu chuẩn và các lệnh RPC khác, giúp bạn truy vấn thông tin, quản lý node và thực hiện các tác vụ khác một cách hiệu quả. Dù bạn là nhà phát triển, người vận hành node hay chỉ đơn giản là muốn tìm hiểu sâu hơn về Monero, hướng dẫn này sẽ cung cấp cho bạn những kiến thức và công cụ cần thiết.
Monero Daemon RPC cho phép bạn giao tiếp với daemon Monero (monerod
) thông qua các lệnh gọi từ xa. Điều này rất hữu ích cho việc tự động hóa các tác vụ, xây dựng các ứng dụng và giám sát trạng thái node. Có hai loại chính của RPC:
Để sử dụng Monero Daemon RPC, bạn cần chạy daemon monerod
với các tùy chọn cấu hình phù hợp. Ví dụ:
monerod --rpc-bind-ip 0.0.0.0 --rpc-bind-port 18081 --restricted-rpc
Lệnh này sẽ khởi động daemon và cho phép các kết nối RPC đến từ bất kỳ địa chỉ IP nào trên cổng 18081. Tùy chọn `--restricted-rpc` giới hạn các lệnh gọi có thể thực hiện, tăng cường tính bảo mật.
Hầu hết các lệnh gọi JSON RPC tuân theo một cấu trúc chung. Bạn có thể sử dụng curl
để gửi các yêu cầu HTTP POST đến endpoint /json_rpc
của daemon. Dưới đây là một ví dụ:
IP=127.0.0.1
PORT=18081
METHOD='get_block_count'
curl -X POST http://$IP:$PORT/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'"}'
Thay đổi biến METHOD
để gọi các phương thức khác nhau. Dưới đây là một số phương thức JSON RPC quan trọng:
get_block_count
Lấy số lượng block trong chuỗi dài nhất mà node biết đến.
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"count": 2700000,
"status": "OK",
"untrusted": false
}
}
Kết quả trả về bao gồm số lượng block (count
), trạng thái (status
) và trạng thái tin cậy (untrusted
).
get_block_header_by_height
Lấy thông tin header của một block cụ thể theo chiều cao.
IP=127.0.0.1
PORT=18081
METHOD='get_block_header_by_height'
PARAMS='{"height":1000000}'
curl -X POST http://$IP:$PORT/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'$PARAMS'}'
Kết quả trả về chứa thông tin chi tiết về header block, chẳng hạn như kích thước block, độ khó, hash, chiều cao và phần thưởng.
get_block
Lấy thông tin đầy đủ về một block, bao gồm các giao dịch.
IP=127.0.0.1
PORT=18081
METHOD='get_block'
PARAMS='{"height":1000000}'
curl -X POST http://$IP:$PORT/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'$PARAMS'}'
Kết quả trả về bao gồm blob của block, header của block và thông tin JSON chi tiết về block và các giao dịch bên trong.
Ngoài các phương thức JSON RPC, một số lệnh RPC khác sử dụng các endpoint HTTP riêng biệt. Ví dụ:
/get_height
Lấy chiều cao hiện tại của node.
curl http://127.0.0.1:18081/get_height
/get_transaction_pool
Lấy thông tin về các giao dịch chưa được khai thác trong pool giao dịch.
curl http://127.0.0.1:18081/get_transaction_pool
Các lệnh này có thể trả về dữ liệu ở định dạng khác với JSON, chẳng hạn như dữ liệu nhị phân (khi sử dụng các endpoint .bin
). Bạn cần xử lý dữ liệu này một cách thích hợp.
Một số người dùng đã gặp sự cố khi sử dụng lệnh rpc_access_data
. Điều này có thể do sự nhầm lẫn giữa cổng RPC bị hạn chế và cổng RPC không bị hạn chế. Hãy đảm bảo bạn đang gửi yêu cầu đến đúng cổng.
Nếu bạn đang sử dụng --restricted-rpc
, hãy nhớ rằng một số lệnh gọi RPC chỉ có sẵn trên cổng bị hạn chế. Kiểm tra nhật ký daemon để biết thông tin chi tiết về lỗi.
Monero Daemon RPC là một công cụ mạnh mẽ để tương tác với mạng Monero. Bằng cách hiểu các phương thức JSON RPC và các lệnh RPC khác, bạn có thể xây dựng các ứng dụng tùy chỉnh, tự động hóa các tác vụ và giám sát trạng thái node của mình. Hãy nhớ tham khảo tài liệu chính thức của Monero để biết danh sách đầy đủ các lệnh gọi RPC và các tùy chọn cấu hình.
Bài viết liên quan