안녕하세요.

쌩광부입니다.

 

한동안 ESN 재단 설립 때문에 너무 바빠서 강좌를 못했었는데요.

오늘 ESN 재단 구성원 모집이 완료되어 한시름 놓았습니다.

그리하여... 다시 강좌를 시작하도록 하겠습니다.

 

지난 강좌는 땡글 블로그와 스팀잇에서 보실 수 있고요.

https://steemit.com/@topmining

https://www.ddengle.com/@TopMining

 

오늘 강좌는 계정 트랜젝션 개수를 확인하는 방법인데요.

트랜젝션 개수가 왜 필요한 걸까요?

 

트랜젝션 개수는 새로운 트랜젝션을 만들기 위한 Nonce 값으로 활용됩니다.

코인을 전송하기 위해서 트랜젝션이 필요한데요.

Nonce는 그 트랜젝션의 일련번호라고 보시면 되겠습니다.

즉, 맨 처음 전송을 할 때는 트랜젝션의 일련번호는 0입니다.

그다음은 1입니다.

이런 식으로 자신의 트랜젝션이 생성될 때마다 고유한 번호를 붙여줘야 하는데요.

그때 사용하기 위해 이전에 생성된 자신의 트랜젝션의 개수를 읽어와 Nonce 값으로 적용하게 되는 것이죠.

 

1. get_txcount.php 파일을 만들고 아래와 같이 코딩합니다.

<?php

require "json-rpc.php";

require "api-config.php";

 

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

 

$account = array_key_exists('account', $_GET) ? $_GET['account'] : '';

 

if(strlen($account) == 42 && ctype_alnum($account) && strpos($account, '0x') >= 0) {

  $id = 1;

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

 

  $data = json_decode($json, true);

  $error = array_key_exists('error', $data) ? $data['error'] : null;

 

  $result = array();

  if($error) {

    $result['error'] = $error;

  }

  else {

    $value = $data["result"];

    $result['error'] = null;

    $result['result']['count'] = hexdec(str_replace('0x', '', $value));

  }

 

  echo json_encode($result);

}

else {

  $result = array();

  $result['error']['code'] = '-1';

  $result['error']['message'] = 'Invalid address';

 

  echo json_encode($result);

}

 

한 줄 한 줄 살펴볼까요?

 

require "json-rpc.php";

require "api-config.php";

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

 

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

출력 Content-type을 JSON 형태로 지정합니다.

 

$account = array_key_exists('account', $_GET) ? $_GET['account'] : '';

HTTP GET 형식으로 지갑 주소를 받습니다.

 

if(strlen($account) == 42 && ctype_alnum($account) && strpos($account, '0x') >= 0) {

지갑 주소에 대한 유효성 검사를 하고요.

 

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

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

eth_getTransactionCount는 계정 트랜젝션 개수를 받아오는 RPC 명령입니다.

id의 경우 큰 의미는 없는데 내가 보낸 RPC의 고유번호라고 보면 됩니다.

여러 명령을 한 번에 보낼 때 유용하게 사용할 수 있지만 지금은 한 건만 보내기 때문에 큰 의미는 없습니다.

 

$data = json_decode($json, true);

받아온 데이터가 JSON 문자열이므로 PHP 배열로 변경합니다.

 

$error = array_key_exists('error', $data) ? $data['error'] : null;

오류가 있는지 확인하고요.

 

$result['error'] = $error;

오류가 있는 경우 오류 메시지를 출력합니다.

 

$result['result']['count'] = hexdec(str_replace('0x', '', $value));

16진수(Hex)값으로 되어있는 개수 값을 10진수로 변경하여 출력합니다.

 

echo json_encode($result);

최종 결과값은 JSON 형태로 변경하면 되는 거죠.

 

이것으로 트랜젝션 개수 가져오는 코딩은 끝나는 거죠.

참~~ 쉽죠!

 

그럼 결과값을 봅시다.

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

 

{

  "result": {

    "count": 10

  }

}

 

위와 같이 나오면 성공입니다.

 

이 강좌의 전체 소스는

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

여기서 확인하면 되고요.

오류가 있으면 언제든 제보해주시면 감사하겠습니다.

 

그럼 다음 강좌도 많이 기대해주세요~~

 

 

-------------------------------------

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에 적어주세요.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

-------------------------------------

3,999 CASH

Who's 쌩광부

profile

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

https://esn.topmining.co.kr

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

https://clo.topmining.co.kr

펄(PIRL) 채굴풀 (Pool fee 0.5%)

https://pirl.topmining.co.kr

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

https://etp.topmining.co.kr

폴엠(FLM) 채굴풀 (Pool fee 0.5%)

https://flm.topmining.co.kr

 

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

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

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

Comment '3'
  • ?
    이니셜225 2019.01.30 14:54
    고생하셨습니다. 깔끔하게 잘 만드셨습니다.
    php-curl 은 프로세스를 백그라운드로 하지않다보니 rpc 서버와 연결이 원활하지 않은경우, 서비스가 계속 대기상태가 되다보니 json-rpc.php 쪽에 timeout 이 하나 들어가면 좋을듯 해요

    curl_setopt($ch, CURLOPT_TIMEOUT, $sec);
  • profile
    쌩광부 2019.01.30 15:46
    to 이니셜225 :
    좋은 의견 감사합니다.
  • ?
    블루레인 2019.01.30 15:59
    좋은 정보 감사합니다~~

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 [AD] 암호화폐 장외거래 및 커뮤니티 데바야 update 216
관리자
2019.02.21
공지 [AD] 거래소 제작, 코인, 토큰 제작, 전자지갑 제작, 암호화폐 결제 시스템 구축 1 updatefile 664
김대박
2019.02.20
1564 질문 비트코인 시간봉, 분봉을 더 길게 볼 수 있는 사이트가 있을까요? 비트코인(btc) 백테스트를 하는데,   시간봉은 6개월, 분봉은 이틀치밖에 못받네요...   데이터를 더 많이 받을 수 있는 사이트가 있을까요?   가급적 코인마켓캡 것을 받고 싶긴한데, 코인마켓캡 돈 내면 분단위, 시... 7 444
축당첨
2019.02.06
1563 개발 비트맥스 지정가 주문(post only 로) 을 넣는 방법   안녕하세요.   비트맥스 api 를 이용하여 트레이딩을 하고 있는데요. 비트맥스 사이트에 보면 지정가주문을 위해 손으로 거래하는 경우 post only 를 체크하게 되어 있는데요. (taker fee를 받기 위해)   봇을 이용... 1 400
부자아들
2019.02.06
1562 질문 코인 개발 목적에 관하여.. 각 나라의 화폐 최소 단위 1개당  1개의 나비코인을 판매한다면.. 그러니까 대한민국은 1원에 나비코인 1개, 미국은 1센트에 1 나비, 개발도상국도 마찬가지로... 이러면, 나비코인이 성공한다면 어떤 영향이 있을까... 13 1 1225
Xmessiah
2019.02.04
1561 개발 코인 개발 완료... 혼자 잡고 열심히 개발하였습니다. 미흡한 점이 많지만 소스를 공개하였습니다. Go언어로 되어있으니 필요하신분은 참고하셨으면 합니다..   덧, 고정 아이피에서만 작동합니다.   PoW이고 특이 점은 코인을 보낼시 ... 14 2 2141
Xmessiah
2019.02.03
1560 질문 안녕하세요. 국내 eos, eth, trx dapp관련 큰 커뮤니티 혹시 아시나요?     2019년은 dapp의 해가 될 것 같은데 해당 커뮤니티 아시면   추천부탁드리겠습니다!   행복한 연휴되세요!!   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별... 1 518
코인코1
2019.02.02
1559 질문 흥미가 생겨서 코인을 만들던중 궁금한게 있어서 남깁니다.   https://etherscan.io/token/0x59f2e9311cc43f731e18bd2b9b573aca42f670c1#readContract     보면 Readcontract 다른 코인들은 다 기입이 되어있는걸 알고있습니다   그래서 저도 보이게 하려고 Verify Your Contra... 4 1 720
빵빵한포도알
2019.02.02
1558 질문 거래소에서 ERC20 코인 지갑생성과 관련되어 질문있습니다. 업비트 거래소에서 ERC20코인 지갑을 생성하고 이더스캔에 생성된 지갑 주소를 검색하면 지갑 타입이 Address가 아닌 Contract형으로 나오는데    굳이 Smart Contract 형의 주소로 발급해야 하는 특별한 이유나 이점... 1 478
나비잠
2019.02.01
1557 질문 이더리움을 개발하는 사람들은 모두 몇명이나 되나요?     이더리움 재단의 비탈릭같은 개발자들이 몇명있나 있는지 문득 궁굼하네요   혹 아시는분 있으시면 부탁드려요                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등... 3 1115
신화창조7
2019.01.31
1556 질문 리플 질문입니다~       안녕하세요 리플 공부중입니다 .   포스트맨으로 rpc테스트중인데  {     &quot;method&quot;: &quot;wallet_propose&quot;,     &quot;params&quot;: [         {             &quot;seed&quot;: &quot;snoPBrXtMeMyMHUVTgbuqAfg1SUTb&quot;,             &quot;key_ty... 4 530
피로
2019.01.30
» 개발 [강좌] 이더소셜 PHP API 서버 만들기 #4. 계정 트랜젝션 개수 확인하기 안녕하세요. 쌩광부입니다.   한동안 ESN 재단 설립 때문에 너무 바빠서 강좌를 못했었는데요. 오늘 ESN 재단 구성원 모집이 완료되어 한시름 놓았습니다. 그리하여... 다시 강좌를 시작하도록 하겠습니다.   지난 강... 3 13 1682
쌩광부
2019.01.29
1554 질문 메타마스크 문의드립니다. 컴퓨터 밀고 재설치했습니다. 구글 로그인하고 메타마스크 들어가보니 다시 가입하라고 나오더라구요. 가입하면 전에 지갑 다시 나오겠지 했는데... 새로 가입된걸로 되있습니다. 예전 계정으로 다시 되돌리려면 어떻... 4 425
심퉁이
2019.01.29
1553 질문 이걸 이용해서 다른게시판 ..   https://github.com/esoodev/crawler-inven-archeag   자꾸 죄송합니다 ㅠㅠ..이걸 이용해서 오버워치 인벤 제목만 파싱하고싶은데 url만 바꾸면 될까요?                   -------------------------------------... 4 542
허니잼
2019.01.28
1552 질문 인벤게시판 파싱을 하고싶은데..     파이썬을 이용해서 게시글 제목을 파싱하고싶은데.. 초보라서 잘이해를 못하겠습니다..ㅜㅜ도움 부탁드립니다..                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강... 5 479
허니잼
2019.01.28
1551 질문 추적60분 kbs token 링크 아시는 분 ?     1시간만에 뚝딱 만들어낸다   는  추적60분 kbs token 그 사이트 링크 아시는 분 ? 계세염?   한~~~ 참~~구글정보바다를 검색해봤는데,,,,와~~따~~~ 찾기 어려움....요                     --------------------... 4 file 1306
내가총대멘다
2019.01.26
1550 질문 현재 이더리움 풀노드 데이타 폴더 용량이 얼마인지요? 어떤것은 250기가쯤 되고 어떤것은 460기가가 넘네요.                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주세요.   비트코인 ... 2 726
김대박
2019.01.25
1549 질문 블록체인 인포 같은 사이트를 어떤식으로 만들어야되나요?ㅠ       라이트코인 기반으로 알트코인 만들었는데요   블록체인 인포처럼 저의 알트코인에 대한 정보들을 확인 하고 싶습니다.   웹쪽을 다뤄보지 않아서 처음부터 작업 해보려니 뭐 부터 해야될지 감이 안잡히네요...... 2 400
김깡
2019.01.25
1548 개발 카카오게임 개발에 관심있는 개발자분이라면 한번 참조해볼만한..   카카오 클레이튼에 올라가는 보라 플랫폼이 해커톤을 진행한다네요.   게임 댑 개발을 주제로 하니까 참가해보면 좋을것 같습니다.   http://www.fnnews.com/news/201901141819407902                   ----------... 1 file 681
코인끝판킹마
2019.01.25
1547 개발 나비 코인 계속 돌려 보며 안정화 시키는데 생각 보다 많이 걸렸습니다 많은 조언 감사하고 기왕 만든거 계속 개선하고 개발하겠습니다... 감사합니다. www.nabi-coin.com           ------------------------------------- 꼬... 5 1 895
Xmessiah
2019.01.24
1546 개발 게임 해커톤 개발 공모전     게임 해커톤 개발 대회 진행하네요. 관심 있으신 분들 첨고하시길   http://www.fnnews.com/news/201901141101354291   블록체인 콘텐츠 플랫폼 '보라' 게임 개발자 대상 해커톤 진행   록체인 디지털 콘텐츠 플... 448
수영귀신
2019.01.24
1545 질문 완전 생초보 개발자가 읽을만한 서적 추천 부탁드립니다.. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 464
김승리
2019.01.24
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 80 Next
/ 80