Các RPC Endpoint
Sandbox
chú ýCác RPC endpoint trong mục này chỉ có sẵn trên local sandbox node.
Patch State
Dùng để vá (patch) một account, các access key, contract code, hoặc contract state. Chỉ các bổ sung và các mutation được support. Không được xóa. Account, các access key, contract code, và các contract state có các format khác nhau. Vui lòng xem ví dụ để biết thêm chi tiết về format của chúng.
- method:
sandbox_patch_state
- các param:
records
: một array của các state record dùng để vá (patch). Mỗi state record có thể là một trongAccount
,AccessKey
,Contract
(dành cho contract code), hoặcData
(dành cho contract state).
Ví dụ:
- JSON
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "sandbox_patch_state",
"params": {
"records": [
{
"Account": {
"account_id": "abcdef.test.near",
"account": {
"amount": "100000000000",
"locked": "0",
"code_hash": "7KoFshMQkdyo5iTx8P2LbLu9jQpxRn24d27FrKShNVXs",
"storage_usage": 200000
}
}
},
{
"Contract": {
"account_id": "abcdef.test.near",
"code": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
}
},
{
"AccessKey": {
"account_id": "abcdef.test.near",
"public_key": "ed25519:CngrirkGDwSS75EKczcsUsciRtMmHd9iicrrYxz4uckD",
"access_key": {
"nonce": 0,
"permission": "FullAccess"
}
}
},
{
"Data": {
"account_id": "abcdef.test.near",
"data_key": "U1RBVEU=",
"value": "AwAAAA8AAABhbGljZS50ZXN0Lm5lYXIFAAAAaGVsbG8NAAAAYm9iLnRlc3QubmVhcgUAAAB3b3JsZAoAAABhbGljZS5uZWFyCwAAAGhlbGxvIHdvcmxk"
}
}
]
}
}
Ví dụ về response nhận được:
{
"id": "dontcare",
"jsonrpc": "2.0",
"result": {}
}
Sự cố nào có thể xảy ra?
Khi API request không thành công, RPC server sẽ trả về một error response được cấu trúc sẵn, với một số lượng giới hạn các error variant đã được định nghĩa rõ ràng, từ đó client code có thể handle toàn bộ các error case có thể xảy ra. Các JSON-RPC error của chúng tôi tuân theo convention verror để cấu trúc cho error response:
{
"error": {
"name": <ERROR_TYPE>,
"cause": {
"info": {..},
"name": <ERROR_CAUSE>
},
"code": -32000,
"data": String,
"message": "Server error",
},
"id": "dontcare",
"jsonrpc": "2.0"
}
Chú ý
Các field
code
,data
, vàmessage
trong structure trên là những field kế thừa từ Verror và có thể không được dùng nữa trong tương lai. Do đó vui lòng không sử dụng chúng.
Dưới đây là danh sách đầy đủ các error variant có thể được trả về bởi method sandbox_patch_state
:
ERROR_TYPEerror.name | ERROR_CAUSEerror.cause.name | Nguyên nhân | Giải pháp |
---|---|---|---|
REQUEST_VALIDATION_ERROR | PARSE_ERROR | Đã pass các argument mà JSON RPC server không thể parse được (thiếu các argument, sai format, v.v...) |
|
INTERNAL_ERROR | INTERNAL_ERROR | Đã xảy ra lỗi với chính node đó, hoặc bị overload |
|