Phương thức HTTP RPC của Solana

Các node Solana chấp nhận các yêu cầu HTTP sử dụng đặc tả JSON-RPC 2.0.

Đối với các ứng dụng JavaScript, hãy sử dụng thư viện @solana/web3.js như một giao diện thuận tiện cho các phương thức RPC để tương tác với node Solana. Đối với kết nối PubSub đến node Solana, hãy sử dụng API Websocket.

Điểm cuối HTTP RPC

Cổng mặc định: 8899

Định dạng yêu cầu

Để thực hiện yêu cầu JSON-RPC, gửi một yêu cầu HTTP POST với tiêu đề Content-Type: application/json. Dữ liệu yêu cầu JSON nên chứa 4 trường:

  • jsonrpc: <string> - đặt thành "2.0"
  • id: <string | number | null> - một định danh duy nhất cho yêu cầu, được tạo bởi máy khách. Thường là một chuỗi hoặc số, mặc dù null về mặt kỹ thuật được cho phép nhưng không khuyến khích
  • method: <string> - một chuỗi chứa phương thức được gọi
  • params: <array> - một mảng JSON của các giá trị tham số theo thứ tự

Ví dụ sử dụng curl:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"
]
}
'

Đầu ra phản hồi sẽ là một đối tượng JSON với các trường sau:

  • jsonrpc: <string> - khớp với đặc tả yêu cầu
  • id: <number> - khớp với định danh yêu cầu
  • result: <array|number|object|string> - dữ liệu được yêu cầu hoặc xác nhận thành công

Các yêu cầu có thể được gửi theo lô bằng cách gửi một mảng các đối tượng yêu cầu JSON-RPC làm dữ liệu cho một POST duy nhất.

Ví dụ yêu cầu

Tham số commitment nên được bao gồm như phần tử cuối cùng trong mảng params:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",
{
"commitment": "finalized"
}
]
}
'

Định nghĩa

  • Hash: Một hash SHA-256 của một phần dữ liệu.
  • Pubkey: Khóa công khai của một cặp khóa Ed25519.
  • Transaction: Một danh sách các hướng dẫn Solana được ký bởi một keypair của khách hàng để ủy quyền cho các hành động đó.
  • Signature: Một chữ ký Ed25519 của dữ liệu payload giao dịch bao gồm các hướng dẫn. Điều này có thể được sử dụng để xác định các giao dịch.

Kiểm tra sức khỏe

Mặc dù không phải là API JSON RPC, một GET /health tại Điểm cuối HTTP RPC cung cấp cơ chế kiểm tra sức khỏe để sử dụng bởi bộ cân bằng tải hoặc cơ sở hạ tầng mạng khác. Yêu cầu này sẽ luôn trả về phản hồi HTTP 200 OK với nội dung là "ok", "behind" hoặc "unknown":

  • ok: Node đang trong phạm vi HEALTH_CHECK_SLOT_DISTANCE slot từ slot được xác nhận mới nhất của cụm
  • behind { distance }: Node đang chậm hơn distance slot so với slot được xác nhận mới nhất của cụm, trong đó distance > HEALTH_CHECK_SLOT_DISTANCE
  • unknown: Node không thể xác định vị trí của nó trong mối quan hệ với cụm

Is this page helpful?

Mục lục

Chỉnh sửa trang