계정 / 컨트랙트
RPC API를 사용하면 계정 및 컨트랙트에 대한 세부 정보를 보고 컨트랙트 호출을 수행할 수 있습니다.
계정 보기
기본 계정 정보를 반환합니다.
예시:
- JSON
- JavaScript
- HTTPie
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_account",
"finality": "final",
"account_id": "nearkat.testnet"
}
}
const response = await near.connection.provider.query({
request_type: "view_account",
finality: "final",
account_id: "nearkat.testnet",
});
http post https://rpc.testnet.near.org jsonrpc=2.0 id=dontcare method=query \
params:='{
"request_type": "view_account",
"finality": "final",
"account_id": "nearkat.testnet"
}'
응답 예시:
{
"jsonrpc": "2.0",
"result": {
"amount": "399992611103597728750000000",
"locked": "0",
"code_hash": "11111111111111111111111111111111",
"storage_usage": 642,
"storage_paid_at": 0,
"block_height": 17795474,
"block_hash": "9MjpcnwW3TSdzGweNfPbkx8M74q1XzUcT1PAN8G5bNDz"
},
"id": "dontcare"
}
무엇이 잘못될 수 있나요?
API 요청이 실패하면, RPC 서버는 제한된 수의 잘 정의된 오류 변형과 함께 구조화된 오류 응답을 반환하므로 클라이언트 코드는 가능한 모든 오류 사례를 철저하게 처리할 수 있습니다. JSON-RPC 오류는 오류 응답을 구조화하기 위해 verror 규칙을 따릅니다.
{
"error": {
"name": <ERROR_TYPE>,
"cause": {
"info": {..},
"name": <ERROR_CAUSE>
},
"code": -32000,
"data": String,
"message": "Server error",
},
"id": "dontcare",
"jsonrpc": "2.0"
}
주의
위 구조의
code
,data
, 및message
필드는 레거시 항목으로 간주되며, 향후 사용되지 않을 수 있습니다. 이에 의존하지 마세요.
다음은 view_account
요청 자료형에 의해 반환될 수 있는 오류 변형의 전체 목록입니다.
ERROR_TYPE | ERROR_CAUSEerror.cause.name | Status Code | 이유 | 해결책 |
---|---|---|---|---|
HANDLER_ERROR | UNKNOWN_BLOCK | 200 | 요청된 블록이 아직 생성되지 않았거나 가비지 수집되었습니다(RPC 노드의 공간을 절약하기 위해 정리됨). |
|
INVALID_ACCOUNT | 200 | 요청된 account_id 가 잘못되었습니다. |
| |
UNKNOWN_ACCOUNT | 200 | 계정이 생성되지 않았거나 이미 삭제되었기 때문에 요청된 account_id 를 찾을 수 없습니다. |
| |
UNAVAILABLE_SHARD | 200 | 노드가 데이터가 있는 샤드를 추적하지 않기 때문에 요청된 데이터를 찾을 수 없습니다. |
| |
NO_SYNCED_BLOCKS | 200 | 노드가 여전히 동기화 중이고 요청된 블록이 아직 데이터베이스에 없습니다. |
| |
REQUEST_VALIDATION_ERROR | PARSE_ERROR | 400 | 전달된 인자는 JSON RPC 서버에서 파싱할 수 없습니다(인자 누락, 잘못된 형식 등). |
|
INTERNAL_ERROR | INTERNAL_ERROR | 500 | 노드 자체에 문제가 있거나 과부하가 걸렸습니다. |
|
계정 변경 보기
지정된 계정의 트랜잭션에서 계정 변경 사항을 반환합니다.
- 메서드:
EXPERIMENTAL_changes
- 매개변수:
예시:
- JSON
- JavaScript
- HTTPie
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "EXPERIMENTAL_changes",
"params": {
"changes_type": "account_changes",
"account_ids": ["your_account.testnet"],
"block_id": 19703467
}
}
const response = await near.connection.provider.experimental_changes({
changes_type: "account_changes",
account_ids: ["nearkat.testnet"],
block_id: 19703467,
});
http post https://rpc.testnet.near.org jsonrpc=2.0 id=dontcare method=EXPERIMENTAL_changes \
params:='{
"changes_type": "account_changes",
"account_ids": ["your_account.testnet"],
"block_id": 19703467
}'
응답 예시:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "6xsfPSG89s6fCMShxxxQTP6D4ZHM9xkGCgubayTDRzAP",
"changes": [
{
"cause": {
"type": "transaction_processing",
"tx_hash": "HLvxLKFM7gohFSqXPp5SpyydNEVpAno352qJJbnddsz3"
},
"type": "account_update",
"change": {
"account_id": "your_account.testnet",
"amount": "499999959035075000000000000",
"locked": "0",
"code_hash": "11111111111111111111111111111111",
"storage_usage": 182,
"storage_paid_at": 0
}
},
{
"cause": {
"type": "receipt_processing",
"receipt_hash": "CPenN1dp4DNKnb9LiL5hkPmu1WiKLMuM7msDjEZwDmwa"
},
"type": "account_update",
"change": {
"account_id": "your_account.testnet",
"amount": "499999959035075000000000000",
"locked": "0",
"code_hash": "11111111111111111111111111111111",
"storage_usage": 264,
"storage_paid_at": 0
}
}
]
},
"id": "dontcare"
}