Blockchain
IOST 블록체인 및 IOST 스마트 컨트랙트로부터 정보를 조회하기 위해 상호작용하는 메인 클래스입니다.
constructor
Blockchain 클래스를 생성하고 초기화하는 특수 메서드입니다. 사용자가 직접 초기화할 필요는 없으며, rpc.blockchain을 통해 Blockchain 클래스를 사용합니다.
getChainInfo
블록체인에서 체인 정보를 조회합니다.
Returns
chainInfo 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| net_name | String | 네트워크 이름 (예: mainnet, testnet) |
| protocol_version | String | iost 프로토콜 버전 |
| head_block | Number | 헤드 블록 높이 |
| head_block_hash | String | 헤드 블록 해시 |
| lib_block | Number | 마지막 불가역(irreversible) 블록 번호 |
| lib_block_hash | String | 마지막 불가역 블록 해시 |
| witness_list | Array | 현재 witness 목록 |
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getChainInfo().then(console.log);
/*{
"net_name": "debugnet",
"protocol_version": "1.0",
"head_block": "142",
"head_block_hash": "ryj9qWvbypFd1VJeUiyxmyNiav9E8ZHH1t47zSbMmGk",
"lib_block": "142",
"lib_block_hash": "ryj9qWvbypFd1VJeUiyxmyNiav9E8ZHH1t47zSbMmGk",
"witness_list": [
"IOSTfQFocqDn7VrKV7vvPqhAQGyeFU9XMYo5SNn5yQbdbzC75wM7C"
]
}*/
getBlockByHash
해시로 블록체인에서 블록 정보를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| hash | String | 블록의 해시 |
| complete | Boolean | 전체 트랜잭션과 트랜잭션 영수증을 포함할지 여부 |
Returns
block 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| status | String | 트랜잭션 상태 |
| block | Object | Block Object |
Block Object
| 이름 | 타입 | 설명 |
|---|---|---|
| hash | String | 블록 해시 |
| version | Number | 블록 버전 |
| parent_hash | String | 부모 블록 해시 |
| tx_merkle_hash | String | 트랜잭션 머클 트리 루트 해시 |
| tx_receipt_merkle_hash | String | 트랜잭션 영수증 머클 트리 루트 해시 |
| number | String | 블록 번호 |
| witness | String | 블록 생성자 witness |
| time | String | 블록 타임스탬프 |
| gas_usage | String | 블록 가스 사용량 |
| tx_count | String | 트랜잭션 수 |
| transactions | Array | Transaction Object 배열 |
| info | Object | Info Object |
AmountLimit Object
| 이름 | 타입 | 설명 |
|---|---|---|
| token | String | 토큰 이름 |
| value | Number | 제한 값 |
Info Object
| 이름 | 타입 | 설명 |
|---|---|---|
| mode | Number | 패킹 모드 |
| thread | Number | 트랜잭션 실행 스레드 수 |
| batch_index | Array | 매 배치 실행의 트랜잭션 인덱스 |
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getBlockByNum(1, true).then(console.log);
/*{
"status": "IRREVERSIBLE",
"block": {
"hash": "HSSXypC9GwRowiG6e1FG9qGbvVZFjT9mR7RY8mGZzoLJ",
"version": "0",
"parent_hash": "CyoyPDfRM8a4HWwSbDBRv3UbFoUUQxWu4T5JuaJsmLvs",
"tx_merkle_hash": "7thvoWaULNdrXVYR6wRTfWYSpJDFj6vKX1jitCsh7KRj",
"tx_receipt_merkle_hash": "GvjAbjP9c626UPSMFjPMERyVDxqwvdu5uziqyiZdmoox",
"number": "1",
"witness": "IOSTfQFocqDn7VrKV7vvPqhAQGyeFU9XMYo5SNn5yQbdbzC75wM7C",
"time": "1545384717001253745",
"gas_usage": 0,
"tx_count": "1",
"info": null,
"transactions": [
{
"hash": "5YdA8qPq5N6W47rZV4u31FdbQzeMt2QX9KGj4uPyERZa",
"time": "0",
"expiration": "0",
"gas_ratio": 1,
"gas_limit": 1000000,
"delay": "0",
"actions": [
{
"contract": "base.iost",
"action_name": "Exec",
"data": "[{\"parent\":[\"IOST2FpDWNFqH9VuA8GbbVAwQcyYGHZxFeiTwSyaeyXnV84yJZAG7A\", \"0\"]}]"
}
],
"signers": [],
"publisher": "_Block_Base",
"referred_tx": "",
"amount_limit": [],
"tx_receipt": {
"tx_hash": "5YdA8qPq5N6W47rZV4u31FdbQzeMt2QX9KGj4uPyERZa",
"gas_usage": 0,
"ram_usage": {
"_Block_Base": "0",
"base.iost": "284",
"bonus.iost": "107"
},
"status_code": "SUCCESS",
"message": "",
"returns": [
"[\"\"]"
],
"receipts": [
{
"func_name": "token.iost/issue",
"content": "[\"contribute\",\"IOST2FpDWNFqH9VuA8GbbVAwQcyYGHZxFeiTwSyaeyXnV84yJZAG7A\",\"900\"]"
}
]
}
}
]
}
}*/
getBlockByNum
번호로 블록체인에서 블록 정보를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| num | Number | 블록 번호 |
| complete | Boolean | 전체 트랜잭션과 트랜잭션 영수증을 포함할지 여부 |
Returns
block 객체를 반환하는 Promise. getBlockByHash 참고.
getBalance
계정 잔액을 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 계정 이름 |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
balance 객체를 반환하는 Promise.
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getBalance('myaccount', true).then(console.log);
/*{
balance: 12000,
frozen_balances: null
}*/
getToken721Balance
계정의 token721 잔액을 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 계정 이름 |
| tokenSymbol | String | token721 심볼 |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
balance 객체를 반환하는 Promise.
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Balance('myaccount', 'my721Token', true).then(console.log);
/*{
balance: 12000,
tokenIDs: null
}*/
getToken721Metadata
token721 메타데이터를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| token | String | 토큰 이름 |
| token_id | String | 토큰 ID |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
metadata 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| metadata | String | 메타데이터 |
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Metadata('symbol', 'id', true).then(console.log);
/*{
metadata: ''
}*/
getToken721Owner
token721의 소유자를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| token | String | 토큰 이름 |
| token_id | String | 토큰 ID |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
owner 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| owner | String | 소유자 |
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Owner('symbol', 'id', true).then(console.log);
/*{
owner: 'theowner'
}*/
getContract
블록체인에서 컨트랙트를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| id | String | 컨트랙트 ID |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
contract 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| id | String | 컨트랙트 ID |
| code | String | 컨트랙트 코드 |
| language | String | 컨트랙트 언어 |
| version | String | 컨트랙트 버전 |
| abis | Array | ABI Object 배열 |
ABI Object
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | ABI 이름 |
| args | Array | ABI 인자 |
| amount_limit | Array | AmountLimit Object 배열 |
getContractStorage
블록체인에서 컨트랙트 스토리지를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| id | String | 컨트랙트 ID |
| key | String | StateDB의 키 |
| field | String | StateDB[key]가 맵일 경우 StateDB[key][field]를 가져오기 위한 필드 |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
contract 결과 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| data | String | 데이터 |
getAccountInfo
블록체인에서 계정 정보를 조회합니다.
Parameters
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 계정 이름 |
| by_longest_chain | Boolean | 최장 체인의 헤드 블록 기준으로 조회할지, 마지막 불가역 블록 기준으로 조회할지 |
Returns
account 객체를 반환하는 Promise.
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 계정 이름 |
| balance | Number | 계정 잔액 |
| gas_info | Object | GasInfo Object |
| ram_info | Object | RAMInfo Object |
| permissions | Map | map<String, Permission Object> |
| groups | Map | map<String, Group Object> |
| frozen_balances | Array | FrozenBalance Object 배열 |
GasInfo Object
| 이름 | 타입 | 설명 |
|---|---|---|
| current_total | Number | 현재 총 가스 수량 |
| transferable_gas | Number | 현재 전송 가능한 가스 |
| pledge_gas | Number | 현재 스테이킹된 가스 |
| increase_speed | Number | 가스 증가 속도 |
| limit | Number | 한도 |
| pledged_info | Array | PledgeInfo Object 배열 |
PledgeInfo Object
| 이름 | 타입 | 설명 |
|---|---|---|
| pledger | String | 스테이킹한 계정 |
| amount | Number | 스테이킹된 수량 |
RAMInfo Object
| 이름 | 타입 | 설명 |
|---|---|---|
| available | Number | 사용 가능한 RAM 바이트 |
Permission Object
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 권한 이름 |
| groups | Array | 권한 그룹 배열 |
| items | Array | Item Object 배열 |
| threshold | Number | 권한 임계값 |
Item Object
| 이름 | 타입 | 설명 |
|---|---|---|
| id | String | 권한 이름 또는 키 페어 id |
| is_key_pair | Boolean | 키 페어 여부 |
| weight | Number | 권한 가중치 |
| permission | String | 권한 |
Group Object
| 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 그룹 이름 |
| items | Array | Item Object 배열 |
FrozenBalance Object
| 이름 | 타입 | 설명 |
|---|---|---|
| amount | Number | 잔액 수량 |
| time | Number | 해제 시간 |
Example
const rpc = new IOST.RPC(new IOST.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getAccountInfo("myaccount").then(console.log);
/*{
"name": "myaccount",
"balance": 993939700,
"gas_info": {
"current_total": 3000000,
"transferable_gas": 0,
"pledge_gas": 3000000,
"increase_speed": 11,
"limit": 3000000,
"pledged_info": [
{
"pledger": "myaccount",
"amount": 100
}
]
},
"ram_info": {
"available": "100000"
},
"permissions": {
"active": {
"name": "active",
"groups": [],
"items": [
{
"id": "IOST2mCzj85xkSvMf1eoGtrexQcwE6gK8z5xr6Kc48DwxXPCqQJva4",
"is_key_pair": true,
"weight": "1",
"permission": ""
}
],
"threshold": "1"
},
"owner": {
"name": "owner",
"groups": [],
"items": [
{
"id": "IOST2mCzj85xkSvMf1eoGtrexQcwE6gK8z5xr6Kc48DwxXPCqQJva4",
"is_key_pair": true,
"weight": "1",
"permission": ""
}
],
"threshold": "1"
}
},
"groups": {},
"frozen_balances": []
}*/