EOS 개발 파트2 - 블록 정보를 읽어 보자.

in #kr-dev6 years ago

안녕하세요.

["간단한 EOS API를 소개합니다."] 에 이은 두번째 이야기 입니다.
요즘 EOS가 핫 합니다. 이 핫한 EOS블록의 정보를 얻어오는 방법에 대한 posting입니다.

블록 정보를 읽어보자.

eos.getInfo({}).then(result => {

방법은 너무 간단합니다. 이렇게 하면 result에 다음과 같은 정보들이 들어 옵니다.

promise를 지원하니 "then"이라고 간단히 적으면 됩니다. callback지옥을 경험하지 않으셔도 됩니다.

Object
block_cpu_limit: 198766
block_net_limit: 1048424
chain_id: "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906"
head_block_id: "0071a4ca42a1c9367aaf19a099e42bd73ea00790cc95d503aa728502637c7156"
head_block_num: 7447754
head_block_producer: "eosriobrazil"
head_block_time: "2018-07-24T01:21:00.000"
last_irreversible_block_id: "0071a38d849df979e53e9039f2a8e78bfef51415d5baa69d65feea1cdf033241"
last_irreversible_block_num: 7447437
server_version: "980721a6"
virtual_block_cpu_limit: 34501270
virtual_block_net_limit: 1048576000

다닥다닥 붙어 있긴 하지만...

last_irreversible_block_num은 21개의 BP중에 15개이상이 검증하여 이미 fix된 블록의 번호를 의미합니다.

우리가 관심있는 것은 "head_block_num" 입니다. 이 정보가 500ms마다 생성되는 EOS블록의 정보를 가지고 있기 때문입니다. 즉 500ms에 한번씩 블록이 생성되니 이 값은 500ms마다 1씩 증가합니다.

그리고 그 블록 안에는 transaction들이 있고, 다시 그 transaction안에는 actions들이 들어 있습니다.

EOS의 TPS를 하나의 block에 얼마나 많은 transaction이 들어있냐가 기준이 됩니다. 예를 들어 700TPS면..transaction per second이니 하나의 블록에는 약 350개의 transaction이 평균적으로 들어있게 됩니다.

아래의 그림으로 설명드리겠습니다.

이렇게 각각의 블록에는 transaction들이 map이 됩니다.

그리고 그 transaction에는 그림과 같은 action이 포함됩니다.

어제인가 3,000 TPS를 찍었으니 이때엔 1,500개가 들어있었을 것입니다.

블록별 transaction의 수는 가변이기 때문에 항상 몇개가 들어있다고 이야기할수는 없습니다.

이렇게 얻은 혹은 다른 방법을 통해서 얻은 구체적인 블록의 json data는 다음과 같이 구할수 있습니다.

세부 정보를 가져오자!

eos.getBlock(blockNo).then(result => {

특정 블록 번호의 세부 데이터를 가져옵니다. 위에서 이야기한 정보들이 여기에 다 들어 있습니다.

이렇게 하는 이유는? 여러가지가 있겠지만 우선은 블록체인에서 발생하는 이벤트를 감시할수 있습니다.

trx = result.transactions[i].trx.transaction;

이렇게 해서 하나의 transaction의 값을 얻어올수 있습니다.

세부적으로는 그 안의 action을 보아야 구체적인 내용을 알수 있습니다.

type = trx.actions[j].name;
data = trx.actions[j].data; 

예를 들어 transfer event인 경우에는.. 아래와 같이 to를 구할수 있습니다.

account = data.to;
accountFrom = data.from;

오늘은 간단하게 block chain상의 block정보에 대해서 살펴 보았습니다. 실제로 위의 내용들은 ["이오스 알람봇"] 에 사용이 되었습니다.

다음 시간에는 eosjs를 이용해서 실제로 eos 또는 다른 token들은 전송하는 것에 대해서 알아 보도록 하겠습니다.

Sort:  

(jjangjjangman 태그 사용시 댓글을 남깁니다.)
[제 0회 짱짱맨배 42일장]4주차 보상글추천, 1,2,3주차 보상지급을 발표합니다.(계속 리스팅 할 예정)
https://steemit.com/kr/@virus707/0-42-4-1-2-3

4주차에 도전하세요

그리고 즐거운 스티밋하세요!

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.029
BTC 76732.17
ETH 3115.22
USDT 1.00
SBD 2.62