default debug random = 1

안녕하세요.

쌩광부입니다.

 

#3. 계정 잔액 확인하기

 

우선 이더소셜 노드에서 잔액을 읽어오기 위해 노드를 설치해야합니다.

 

1. 이더소셜 노드 설치하기

 

이더소셜 노드의 빌드를 위해 필요한 패키지들을 설치하고 설정합니다.

이더소셜 또는 이더리움 코인의 경우 대부분 golang 프로그래밍 언어를 사용하므로 golang도 설치해야 합니다.

sudo apt-get install -y build-essential

cd ~

wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz

tar zxvf go1.11.linux-amd64.tar.gz

sudo mv go /usr/local

 

export GOROOT=/usr/local/go

export PATH=$GOROOT/bin:$PATH

 

재부팅시에도 golang을 사용하려면 아래 .profile 파일 맨 하단에 아래 두 줄을 입력합니다.

vi ~/.profile

 

export PATH="$PATH:/usr/local/go/bin"

export PATH="$HOME/.yarn/bin:$PATH"

 

이제 이더소셜 노드를 다운 받고 빌드합니다.

cd ~

git clone https://github.com/ethersocial/go-esn

cd go-esn

chmod 755 build/*

make gesn

sudo cp ~/go-esn/build/bin/gesn /usr/local/bin/

 

screen을 이용해 별도의 터미널에서 이더소셜 노드를 실행합니다.

screen -S gesn1

gesn --cache=1024 --rpc --rpcaddr 127.0.0.1 --rpcport 9545 --rpcapi "eth,net,web3" console

 

screen 터미널에서는 Ctrl + a, d로 빠져나오면 실행중인 노드가 중단되지 않고 계속 백그라운드로 작동됩니다.

 

2. 필요한 PHP 패키지 설치

 

지난 강좌에서 얘기한대로 composer를 이용해 필요한 PHP 패키지를 설치합니다.

이더리움 계열 코인들은 소수점 18자리까지 정확하게 처리하여야 하므로 BigInteger, BigDecimal 클래스를 사용해야 하는데요.

저희는 Brick/Math를 이용합니다.

 

cd /var/www/html

composer require Brick/Math

 

위와 같이 Brick/Math을 패키지를 설치합니다.

Apache2를 설치하면 기본 홈 디렉토리가 /var/www/html 이기 때문에 그곳으로 이동해서 composer를 실행합니다.

 

3. api-config.php 파일을 만듭니다.

 

전체 소스는 아래 링크에서 확인하세요.

https://github.com/topmining/ethersocial-php-api

 

노드의 RPC 주소와 포트를 입력합니다.

 

<?php

$api_host = "127.0.0.1";

$api_port = 9545;

 

4. json-rpc.php 파일을 만듭니다.

 

curl을 이용해 JSON-RPC 호출 함수를 만듭니다.

 

<?php

function getEtherRpc($host, $port, $method, $params, $id) {

$ch = curl_init();

 

curl_setopt($ch, CURLOPT_URL, $host);

curl_setopt($ch, CURLOPT_PORT, $port);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","method":"'.$method.'","params":['.$params.'],"id":'.$id.'}');

 

$ret = curl_exec($ch);

curl_close($ch);

 

return $ret;

}

 

JSON-RPC에 대한 자세한 사항은 아래 링크를 참고하세요.

https://github.com/ethereum/wiki/wiki/JSON-RPC

 

5. get_balance.php 파일을 만듭니다.

 

노드에서 잔액을 읽어옵니다.

 

<?php

ini_set('display_errors', 'On');

 

require "json-rpc.php";

require "api-config.php";

require __DIR__."/vendor/autoload.php";

 

use Brick\Math\BigDecimal;

use Brick\Math\BigInteger;

use Brick\Math\RoundingMode;

 

header('Content-type: application/json');

 

$account = $_GET['account'];

 

$id = 1;

$json = getEtherRpc($api_host, $api_port, 'eth_getBalance', '"'.$account.'", "latest"', $id++);

 

$data = json_decode($json, true);

$value = $data["result"];

$value = str_replace("0x", "", $value);

 

$wei = BigInteger::parse($value, 16);

$ether = BigDecimal::of($wei)->dividedBy("1000000000000000000", 9, RoundingMode::DOWN);

$balance = "$ether";

 

$result = array();

$result["result"] = array("balance"=>$balance);

 

echo json_encode($result);

 

간단하죠?

미리 만들어둔 getEtherRpc 함수를 이용해 노드에 eth_getBalance를 호출하고 hex값으로 되어있는 잔액을 읽어와서 Json형태로 출력하는 내용입니다.

 

require "json-rpc.php";

...

require를 이용해 필요한 파일들을 로드하고요.

 

use Brick\Math\BigDecimal;

...

use를 이용해 사용할 클래스를 지정합니다.

 

$json = getEtherRpc($api_host, $api_port, 'eth_getBalance', '"'.$account.'", "latest"', $id++);

지정된 IP와 포트로 JSON-RPC를 호출합니다.

eth_getBalance는 잔액을 가져오는 요청합니다.

 

$wei = BigInteger::parse($data["result"], 16);

$ether = BigDecimal::of($wei)->dividedBy("1000000000000000000", 9, RoundingMode::DOWN);

이더리움의 경우 내부적으로 wei 단위(1 ether = 1000000000000000000 wei)를 사용하기 때문에 BigInteger, BigDecimal을 사용해 소수점 9자리(gwei 단위)까지 표시하도록 합니다.

 

$balance = "$ether";

PHP 해본분들은 다 아실텐데요. 문자열안에 변수를 넣으면 그 변수가 바로 문자로 변경되어 저장됩니다.

매우 유용한 기능이죠.

 

결과값을 확인해볼까요?

 

http://서버주소/get_balance.php?account=지갑주소

 

{

  "result": {

    "balance": "100.000000000"

  }

}

 

위와 같이 나오면 정상입니다.

물론 정상적인 잔액이 나오려면 노드에서 모든 블록이 동기화되어야 하는데요.

이더소셜의 경우 서버 성능에 따라 틀리지만 수십 분 이내에 동기화가 완료됩니다.

 

이상으로 이번 강좌를 마치도록 하겠습니다.

감사합니다.


[알림: 이 게시글은 관리자에 의해 ''에서 '개발'로 이동되었습니다]
8,411

쌩광부님의 서명

profile

이더소셜(ESN) 채굴풀 (Pool fee 0.5%)

https://esn.topmining.co.kr

칼리스토(CLO) 채굴풀 (Pool fee 0.5%)

https://clo.topmining.co.kr

메타버스(ETP) 채굴풀 (Pool fee 0.5%)

https://etp.topmining.co.kr

 

디스코드 https://discord.gg/sjwKhaS

페이스북 https://www.facebook.com/topmining.co.kr

트위터 https://twitter.com/TopMining

댓글 4
  • profile
    Up&Right 2018.12.14 15:36
    항상 좋은 자료, 좋은 의견 감사합니다.

    참고하겠습니다. 즐거운 하루되세요
  • ?
    블루레인 2018.12.14 17:51
    따라해보기 쉽게 잘 설명해 주셔서 감사합니다.. ㅎㅎ
  • profile
    ddengle BOT 2018.12.14 17:51
    @블루레인
    블루레인님 축하합니다. 4 보너스 캐시에 당첨되셨습니다.!!
  • ?
    로텔 2019.01.16 17:10
    좋은 정보 감사합니다

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 땡글 회원 / ESN 홀더분들을 위한 (가칭) 땡글인의 밤 추진 사전조사!!! 8 new 4 631
ESN홍보
2019.06.17
공지 땡글 시세표 시범 서비스 지원! 15 file 26 7119
땡글개발자
2019.06.06
공지 [Air Drop 이벤트] 게시판을 신설합니다 22 updatefile 1 47881
땡글운영위원회
2019.05.17
1500 질문 이더스캔 문의드립니다. 초보입니다. 혼자 공부중인데여. 하다보니 좀 많이 막히네요. 테스트넷으로 하고있구요. 코인 수량10개를 만들어서 테스트해보는 중인데... 메타마스크 10개를 받았습니다. 이더스캔에 확인해보니  in out 보니 밑에... 4 file 673
심퉁이
2018.12.29
1499 질문 이더리움 받는것은 되는데, 보내기가 안됩니다. 이전에 다른분의 글에 댓글로 질문 드리다가, 새로 질문 드립니다.   우분투 17.10 이고... geth로 하다가, 도저히 안되어서 parity로 바꾸어서 테스트 중입니다.   parity 테스트넷인 kovan 에서는 입금/출금 모두 ... 8 609
비폭력무저항
2018.12.27
1498 개발 구글스프래드시트로 거래소 코인 수량 확인해보신 분 계시나요? 구글스프레드시트의 스크립트편집기능을 이용해서 코인 가격을 끌어와서 밖에 나가있을 때 잘 사용하고 있는데   혹시 구글스프레드시트로 코인 수량 끌어와보신 분 계시나요? 파이썬으로는 해봤는데 구글스프레드시... 1 382
Mist.B
2018.12.26
1497 질문 ccxt로 비트멕스 짜고 돌리는데 잘 돌다가 매번 다른 에러가 나네요   ccxt로 비트멕스 짜고 돌리는데 잘 돌다가 매번 다른 에러가 나네요 되던부분에서 에러나고, 또 되고 고수님들 도움 부탁드립니다.       File &quot;C:\Anaconda3\lib\site-packages\ccxt\base\exchange.py&quot;, line 363,... 2 755
jins81c
2018.12.26
1496 질문 깃허브를 통해 코인을카피해보려합니다(도움 주시면 사례하겠음) 비트코인그린최신버전에서 마노와 노드서버를 올리고 진행중인데 pow에서 포스로 넘어갈시 블록생성이안됩니다. 도움주실수있는분은 비트로 사례가능합니다!   @acidbet3000 텔레그램으로연락부탁드립니다     https:... 1 624
만득미남
2018.12.25
1495 개발 업비트 API 요청수 제한   //감사합니다. 해결했습니다.   웹소켓을 이용하면 깔끔하게 진행됩니다. 웹소켓 이용추천드립니다.     * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주세요.   비트코인 암호화화폐 커뮤니티... 6 1544
김연성
2018.12.22
1494 개발 07 블록체인 - 머클트리 국내 대기업 L* 에서 교육한 블록체인 교육 실강입니다.     https://www.youtube.com/watch?v=r9QP_Y_VROQ                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * ... 8 11 993
쌍둥아빠
2018.12.21
1493 질문 bitmex비트멕스 ccxt order 에러 질문드립니다. 안녕하세요    코드는 아래 세줄입니다. 여기서도 검색해서 작성한 코드구요. 그런데 이렇게 코드를 실행하면 마지막 3번째 오더실행시 에러가  뜹니다. ==========================================================... 1 754
jins81c
2018.12.21
1492 알트코인 코어 설치 질문 드립니다. 안녕하세요 코인 코어 설치를 해보고 싶어서 문의 드립니다~ 찾을려고 해도 찾을 수가 없네요ㅠㅠ 에이다, 미스릴 ,오미세고 혹시 코어 설치방법 아시는분 계신가요??   구글링해도 안나오는거 같아요...           -... 11 499
블록체인배우고싶어요
2018.12.20
1491 개발 06 블록체인 - 트랜잭션1 국내 대기업 L* 에서 교육한 블록체인 교육 실강입니다.   https://www.youtube.com/watch?v=VQbRemR1Hic&amp;feature=youtu.be                     ------------------------------------- 꼬리말 * 게시글 내용 삭... 2 7 677
쌍둥아빠
2018.12.20
1490 질문 모네로질문이요~     안녕하세요 모네로 연구중입니다.    ubutu로 개발연구중인데 1모네로가 리눅스에서 단위가 어떻게되나요?   표기법이다른거같은데 아시는분 알려주시면 감사하겟습니다.                   --------------------... 9 455
피로
2018.12.18
1489 질문 거래소 서버 vps사용되나요?         해외친구한테 맡겨서 거래소제작 중인데 서버를 vps 넣어도 상관없나요?? 마무리단계인대 사업하고 아이디어만 가지고 하는거라 서버랑 프로그래밍쪽은 자세히 모릅니다. 잘아시는분들 알려주세요 ㅜ   거래... 9 594
글로벌플렛폼
2018.12.16
1488 개발 erc-20토큰과 백서 작성 문의드립니다. 안녕하세요 .   토큰개발과 백서 작성 의뢰를 하려 합니다 erc-20토큰 개발 문의 드립니다.  전송 기능만 있으면 됩니다 . 현재는 스마트 컨트랙은 따로 필요 없습니다.    더불어 백서 작성 의뢰도 드리려 합니다.  ... 513
inyori
2018.12.15
[강좌] 이더소셜 PHP API 서버 만들기 #3. 계정 잔액 확인하기 안녕하세요. 쌩광부입니다.   #3. 계정 잔액 확인하기   우선 이더소셜 노드에서 잔액을 읽어오기 위해 노드를 설치해야합니다.   1. 이더소셜 노드 설치하기   이더소셜 노드의 빌드를 위해 필요한 패키지들을 설치... 4 10 1986
쌩광부
2018.12.14
1486 비트코인 캐시는 어떻게 전송속도 문제를 극복하는가? _ 블록체인 쿠키     비트코인 캐시는 빅 블록 스케일링을 채택하였습니다.      블록체인은 코인 전송 주문을 블록에 담아 처리하는데 비트코인은 1MB의 블록에 전송 거래건을 기록합니다. (segwit 제외)     반면 비트코인 캐시는 3... 12 file 14 1752
도원Dowon
2018.12.14
1485 질문 라이트닝네트워크 노드 도대체 무슨말인지???       도데체 무슨말인지 문과 출신 사람들도 이해할수 있도록 알기쉽게 설명 좀 부탁드립니다.^^        출처 : 코인투데이         라이트닝을 이용한 비트코인 노드의 놀라운 발전속도 지난 몇 개월 동안 암호화폐... 9 file 699
rhdwjd
2018.12.13
1484 [강좌] 이더소셜 PHP API 서버 만들기 #2. 서버 환경 설정 안녕하세요. 쌩광부입니다.   이더소셜 PHP API 서버 만들기 2번째 강좌입니다. 이번 시간에는 코딩에 앞서 서버 환경 설정방법에 대하여 설명하도록 하겠습니다.   윈도우에서는 APM Setup을 이용하면 Apache2, PHP,... 7 17 1365
쌩광부
2018.12.12
1483 개발 블록체인 강의 05 - 암호화(2) 국내 대기업 L* 에서 교육한 블록체인 교육 실강입니다.   https://www.youtube.com/watch?v=naSwBOFA_DU&amp;feature=youtu.be                     ------------------------------------- 꼬리말 * 게시글 내용 삭... 5 10 814
쌍둥아빠
2018.12.12
1482 개발 블록체인 개발자가 되기 위하여 안녕하세요? 금마입니다.  (https://www.ddengle.com/@63285)   2016년 5월 28일 개발을 처음 시작하는 일반인을 대상으로 글을 올린 적이 있습니다.  * 개발공부가 처음이라고요?(https://www.ddengle.com/develop/1... 31 25 3757
금마
2018.12.11
1481 개발 라이트닝 네트워크 노드 돌리기       안녕하세요.    비트코인 확장성 솔루션 중 하나인 라이트닝 네트워크 노드를 돌려보려 합니다.   제가 워낙 프로그래밍에 무지해서 무슨 말인지 잘 모르겠습니다.   관심있으신 분은 아래글을 읽고 조금 더 쉽... 13 file 5 1428
rhdwjd
2018.12.11
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 83 Next
/ 83