EOSJS 시작하기

CUBE
CUBE
Published in
6 min readJul 16, 2018

EOSJS는 EOS 블록체인을 Javascript로 좀더 편하게 컨트롤 할 수 있게 만들어 놓은 라이브러리라고 생각하면 편합니다. 조금만 깊게 들어가면 EOS에서 제공하는(nodeos) HTTP API를 이용하기 편하게 만들어 놓은 것이라고 말 할 수 있습니다. (이더리움에는 web3.js, 네오에는 neon-js)

EOSJS도 EOS에서 제공하는 HTTP API를 사용하기 때문에 BP를 잘 선택해야 합니다.(응답속도, 제공여부 등등)

설치

설치 방법으로는 2가지가 있습니다.

NPM을 통한 간단 설치

> npm install eosjs

CDN 이용하기

EOS Connect

EOSJS를 이용한 EOS Connect

localhost에 EOS가 구동 되어있지 않는다면 위의 코드를 실행하면 아래와 같은 에러가 납니다. (connect하는 EOS의 httpEndpoint가 틀려도 아래와 같은 에러가 나옵니다.)

{ FetchError: request to http://127.0.0.1:8888/v1/chain/get_info failed, reason: connect ECONNREFUSED 127.0.0.1:8888
at ClientRequest.<anonymous> (/Users/mayajuni/Projects/eos-scan/node_modules/node-fetch/index.js:133:11)
at ClientRequest.emit (events.js:182:13)
at Socket.socketErrorListener (_http_client.js:382:9)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
name: 'FetchError',
message:
'request to http://127.0.0.1:8888/v1/chain/get_info failed, reason: connect ECONNREFUSED 127.0.0.1:8888',
type: 'system',
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED' }

Mainnet Connect

위와 같이 connect를 시도 한다면 아래와 같은 에러 메시지가 나옵니다.

에러가 나더라도 getInfo는 가능하니 이걸 통해서 chainId를 확인해서 넣습니다.

Mainnet인 경우는 aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 이것이 공통으로 쓰는 chainId이기 때문에 넣으면 됩니다.

위 방법으로 connect를 하면 아래와 같이 최초 1회 get_info api를 호출합니다. (처음에 잘 모르고 매번 커넥트를 줬더니 모바일에서 데이터 사용량이 아주 높게 나온적이 있습니다 ㅠㅠ)

메인넷 주소는 https://api.eosnewyork.io 에서 확인 해 볼 수 있습니다. BP마다 제공하는 정보의 양, 응답속도 등이 다르기 때문에 확인을 해서 본인에게 가장 잘 맞는 BP를 찾는 것이 좋습니다.(혹은 직접 full node를 받아서 연결하는 방법도 있습니다.)

Connect Config

이부분의 자세한 내용은 github에 있습니다.(github-configuration)

getInfo — api

EOS의 기본 네트워크 정보를 가지고 올 수 있는데. 코드는 아래와 같습니다.

재미있는 점은 다른 api들은 전부 Promise를 기본으로 하는데 getInfo만 callback방식입니다.

Return된 값은 아래와 같습니다.

{
server_version: '36a043c5',
chain_id:
'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
head_block_num: 5469047,
last_irreversible_block_num: 5468711,
last_irreversible_block_id:
'00537227a657d1f4fd74de877e9ad1a3839540ece45eedeaf177b20e51b2da1b',
head_block_id:
'005373770504c59e992214b3056c7bdabb07c53c5a9c4785909b90fe595a119f',
head_block_time: '2018-07-12T08:58:05.500',
head_block_producer: 'helloeoscnbp',
virtual_block_cpu_limit: 200000000,
virtual_block_net_limit: 1048576000,
block_cpu_limit: 199900,
block_net_limit: 1048576
}

위에서(EOS Connect)언급했던 chainId를 모를 경우 getInfo를 통해서 chainId를 얻어서 쓸 수 있습니다.

이번 글에서는 설치, connect, getInfo를 이용한 EOSJS의 첫 걸음이라는 생각으로 가볍게 작성했습니다. 앞으로 EOSJS에 대해 더욱 심도있게 알아보겠습니다.

투명한 게임 생태계를 위한 블록체인 플랫폼 ITAM Games

ITAM Games의 미디움을 구독하시면 새롭게 업로드 되는 정보를 가장 빠르게 확인하실 수 있습니다.

ITAM Games의 카카오톡 오픈채팅에서는 ITAM Games와 EOS 개발 관련 이야기를 나눌 수 있습니다. 👫

웹사이트: https://itam.games
카카오톡: https://open.kakao.com/o/g7XFlhJ
텔레그램: https://t.me/itamgames

--

--