develop custom_top_html:no
default debug random = 1 / type = READ / detected = READ / doc_Srl = 10519745

안녕하세요.

쌩광부입니다.

 

#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

칼리스토(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
  • ?
    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
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 [땡글운영위] 이사진 구성원 변경 공지 7 file 13 728
땡글운영위
2019.09.03
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 3 4 1566
땡글개발자
2019.08.21
공지 개인 정보 유출에 따른 사과문 54 file 8 3394
땡글개발자
2019.08.21
1492 알트코인 코어 설치 질문 드립니다. 안녕하세요 코인 코어 설치를 해보고 싶어서 문의 드립니다~ 찾을려고 해도 찾을 수가 없네요ㅠㅠ 에이다, 미스릴 ,오미세고 혹시 코어 설치방법 아시는분 계신가요??   구글링해도 안나오는거 같아요...           -... 11 625
블록체인배우고싶어요
2018.12.20
1491 개발 06 블록체인 - 트랜잭션1 국내 대기업 L* 에서 교육한 블록체인 교육 실강입니다.   https://www.youtube.com/watch?v=VQbRemR1Hic&amp;feature=youtu.be                     ------------------------------------- 꼬리말 * 게시글 내용 삭... 2 7 849
쌍둥아빠
2018.12.20
1490 질문 모네로질문이요~     안녕하세요 모네로 연구중입니다.    ubutu로 개발연구중인데 1모네로가 리눅스에서 단위가 어떻게되나요?   표기법이다른거같은데 아시는분 알려주시면 감사하겟습니다.                   --------------------... 9 499
피로
2018.12.18
1489 질문 거래소 서버 vps사용되나요?         해외친구한테 맡겨서 거래소제작 중인데 서버를 vps 넣어도 상관없나요?? 마무리단계인대 사업하고 아이디어만 가지고 하는거라 서버랑 프로그래밍쪽은 자세히 모릅니다. 잘아시는분들 알려주세요 ㅜ   거래... 9 667
글로벌플렛폼
2018.12.16
1488 개발 erc-20토큰과 백서 작성 문의드립니다. 안녕하세요 .   토큰개발과 백서 작성 의뢰를 하려 합니다 erc-20토큰 개발 문의 드립니다.  전송 기능만 있으면 됩니다 . 현재는 스마트 컨트랙은 따로 필요 없습니다.    더불어 백서 작성 의뢰도 드리려 합니다.  ... 610
inyori
2018.12.15
[강좌] 이더소셜 PHP API 서버 만들기 #3. 계정 잔액 확인하기 안녕하세요. 쌩광부입니다.   #3. 계정 잔액 확인하기   우선 이더소셜 노드에서 잔액을 읽어오기 위해 노드를 설치해야합니다.   1. 이더소셜 노드 설치하기   이더소셜 노드의 빌드를 위해 필요한 패키지들을 설치... 4 10 2453
쌩광부
2018.12.14
1486 비트코인 캐시는 어떻게 전송속도 문제를 극복하는가? _ 블록체인 쿠키     비트코인 캐시는 빅 블록 스케일링을 채택하였습니다.      블록체인은 코인 전송 주문을 블록에 담아 처리하는데 비트코인은 1MB의 블록에 전송 거래건을 기록합니다. (segwit 제외)     반면 비트코인 캐시는 3... 12 file 14 2021
도원Dowon
2018.12.14
1485 질문 라이트닝네트워크 노드 도대체 무슨말인지???       도데체 무슨말인지 문과 출신 사람들도 이해할수 있도록 알기쉽게 설명 좀 부탁드립니다.^^        출처 : 코인투데이         라이트닝을 이용한 비트코인 노드의 놀라운 발전속도 지난 몇 개월 동안 암호화폐... 9 file 778
rhdwjd
2018.12.13
1484 [강좌] 이더소셜 PHP API 서버 만들기 #2. 서버 환경 설정 안녕하세요. 쌩광부입니다.   이더소셜 PHP API 서버 만들기 2번째 강좌입니다. 이번 시간에는 코딩에 앞서 서버 환경 설정방법에 대하여 설명하도록 하겠습니다.   윈도우에서는 APM Setup을 이용하면 Apache2, PHP,... 7 17 1655
쌩광부
2018.12.12
1483 개발 블록체인 강의 05 - 암호화(2) 국내 대기업 L* 에서 교육한 블록체인 교육 실강입니다.   https://www.youtube.com/watch?v=naSwBOFA_DU&amp;feature=youtu.be                     ------------------------------------- 꼬리말 * 게시글 내용 삭... 5 10 1002
쌍둥아빠
2018.12.12
1482 개발 블록체인 개발자가 되기 위하여 안녕하세요? 금마입니다.  (https://www.ddengle.com/@63285)   2016년 5월 28일 개발을 처음 시작하는 일반인을 대상으로 글을 올린 적이 있습니다.  * 개발공부가 처음이라고요?(https://www.ddengle.com/develop/1... 31 25 4812
금마
2018.12.11
1481 개발 라이트닝 네트워크 노드 돌리기       안녕하세요.    비트코인 확장성 솔루션 중 하나인 라이트닝 네트워크 노드를 돌려보려 합니다.   제가 워낙 프로그래밍에 무지해서 무슨 말인지 잘 모르겠습니다.   관심있으신 분은 아래글을 읽고 조금 더 쉽... 13 file 5 1707
rhdwjd
2018.12.11
1480 비트코인을 현금처럼 쓸수있는 기술 라이트닝 네트워크 _ 블록체인 쿠키     비트코인은 10분에 한 번씩 거래내역들을 받아서 처리합니다. 초당 7건 정도의 거래를 처리할수 있다고 합니다.그러니 초당 거래 수가 7건을 넘어가면 필연적으로 거래가 밀리게 됩니다. 게다가 거래가 밀리지 않... 31 24 2214
도원Dowon
2018.12.11
1479 질문 업비트 매도 주문 에러 문의 업비트 API를 쓰고있는데요   똑같은코드로 매수 매도 가격(body 값만변경)만 변경하여 주문함수가 동작중입니다.   그런데 매수는 이상없이 되는데 매도는 'Jwt의 query를 검증하는데 실패'하였다고 뜨네요   아무리... 2 1535
마지막시드
2018.12.10
1478 개발 블록체인 강의 04 - 암호화(1) *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 17 14 1142
쌍둥아빠
2018.12.10
1477 질문 외부 커뮤니티 홍보를 하려면 어디에 하면 좋을지.. 제가 작은 블록체인 개발자 커뮤니티를 만들어서 이 게시판에 홍보를 했다가 경고를 먹고 삭제가 되었는데요.. 홍보를 하고 싶은데 딱히 어디에다가 하면 좋을지 잘 모르겠네요.. 네이버 검색에도 광고를 올리긴 했는... 6 530
블록체인나라
2018.12.10
1476 질문 현재 이더리움 메인넷의 코어 크기(사이즈)가 몇기가 정도 되나요?   지금 서버를 임대해서 이더리움을 설치하고 geth 명령으로 이더리움서버를 실행했습니다.   2대를 실행해놨는데 한대는 체인데이타가 360기가가 넘었고 다른 한대(fast모드)는 150기가 정도됩니다...   그런데 360... 1 2 1199
로텔
2018.12.10
1475 ProgPOW는 확실한 Anti-ASIC이 될 수 있을까요? ProgPOW에 대한 의문점 몇 가지.  ProgPOW는 확실한 Anti-ASIC이 될 수 있을까요?   https://eips.ethereum.org/EIPS/eip-1057 ProgPOW에 대하여 오늘 이 페이지를 정독해봤습니다. 아래 내용은 영어 번역이 미흡하여... 29 21 2098
쌩광부
2018.12.09
1474 개발 웹디자이너분 계신가요? 안녕하세요..... 저 혼자 하나 만들었는데 디자인 센스가 없어서 사이트가 허름하네요 ㅠㅠ 웹디자인 도와주실분 없나요???   사이트는 www.weshareluck.io 입니다.   한번 둘러보시고 도와주실분 메일이나 카톡 주세... 4 619
친절한냥이
2018.12.09
1473 [강좌] 쌩광부의 모바일 지갑 만들기 #7. 지갑 불러오기 안녕하세요. 쌩광부입니다.   저의 강좌는 오랜시간의 노력과 열정의 결과물입니다. 내용이 길고 지루하더라도, 강좌 내용에 관심없으셔도 &quot;좋아요&quot; 한방 눌러주시면 좋겠습니다. 그럼 더 열심히 강좌를 쓸 수 있겠죠... 9 file 19 1310
쌩광부
2018.12.09
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 ... 85 Next
/ 85

개인 정보 유출에 따른 안내

개인정보 유출에 따른 사과문

https://www.ddengle.com/board_free/11420106

8월20일 땡글 해킹사고 경과 보고

https://www.ddengle.com/board_free/11420345

로그인이 안되시는 분

https://www.ddengle.com/board_free/11420465
8월18일~20일 해커에 의해 땡글 사이트에서 땡글 회원님들의 아이디 및 비밀번호가 유출되고 있음을 발견하였습니다.
더이상 피해가 발생하지 않도록 조치된 상태이나 일부 사용자의 개인정보가 유출되었으며, 해커는 추가적으로 사용자 정보를 불법적으로 공개하겠다고 합니다.
  • 최근에 접속한 사용자의 경우 ID와 비번이 유출되었을 가능성이 높습니다. 최대 비번을 꼭 바꿔주시기 바랍니다. (특히 8월부터 8월21일까지)
  • 최근에 접속하지 않은 사용자의 경우에도 해커는 사용자 정보를 입수하여 그 일부 정보를 불법적으로 공개하였습니다.
  • 해커에 의한 사용자 도용을 방지하고자, 최근 수개월간 비번 변경을 하지 않은 약 1만8천명의 사용자를 이용정지시켰습니다.
이 글을 보시는 땡글 유저분은 자신이 계정이 정지된 상태라면 [email protected] 혹은 [email protected] 으로 메일주셔서 자신임을 간단히 인증하여 다시 계정을 활성화시키는 해킹 안내메일을 받으시기 바라며, 혹은 기존 계정 삭제 요청을 해주시기 바랍니다.
Close