9_P_B_T2

안녕하세요.

쌩광부입니다.

 

한동안 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

여기서 확인하면 되고요.

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

 

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

 

 

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

꼬리말

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

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

 

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

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

4,006 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

댓글 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
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 땡글/ESN의 공식 운영위원회의 출범을 알립니다. 40 28 4922
땡글운영위원회
2019.03.08
[AD] [AD] ESN으로만 신청 가능한 광고자리입니다. 11 5578
관리자
2019.01.02
1569 질문 해커놈 추적하는데 자문 좀 구합니다   보시면 이 hacker address 주소에서  bc1qq0tmfdy8cjgraqphmw2d0pu7wlqxvztfjh3gtn   이 주소로 돈이 보내진 것 같은데 1EimBpXgYqKP3twh5QPmgjpAVeGjCpbVgJ  . ..........조금 특이한 게  bc1qq0tmfdy8cjgraqphmw2... 14 1 1866
내가총대멘다
2019.02.13
1568 질문 해커를 추적하다보니 잔돈을 많이 모았던데 이 놈이 채굴하는 녀석일까요?         hacker 해커를 추적하다보니 주소가 있던데.... 여기저기서 수수료를 저렇게 받은 건가요?? 채굴하는 놈일까요??? 잔돈을 엄청 많이 받아서 0.40076499 BTC  BTC 돼 있습니다     해커놈 주소입니다 18i1p8gR... 1133
내가총대멘다
2019.02.13
1567 질문 제가만든 ERC20 컨트랙트를 테스트해보고 싶은데 질문있습니다. 제가 만든 컨트랙트를 mainnet으로 배포하기전 testnet으로 배포한다음 토큰 송금, 지갑과 컨트랙트간의 이더 교환등의 기본적인 테스트를 해보고 싶은데요.   제 컴퓨터에 설치된 가상머신 2개를 이용해 사설 네트워... 3 498
나비잠
2019.02.12
1566 개발 [강좌] 이더소셜 PHP API 서버 만들기 #5. 블록 내용 살펴보기 안녕하세요. 쌩광부입니다.   지난 강좌 https://steemit.com/@topmining https://www.ddengle.com/@TopMining   오늘 강좌 내용은 트랜잭션(거래내역)을 MySql DB로 옮기기 위해 필요한 사항을 알아보겠습니다.   그... 4 8 1194
쌩광부
2019.02.12
1565 질문 geth 콘솔을 이용해 erc20 토큰을 송금하려고 하는중에 질문있습니다. https://nuclearcryptobuddha.blog/2017/06/how-to-send-receive-and-check-balance-of-erc20-tokens-using-geth/ 위의 URL을 참고해서 erc 20 콘트랙트 주소와 abi 정보를 이용해 토큰을 송금하려고 합니다.    여기... 8 350
나비잠
2019.02.11
1564 질문 직원은 구하지 않습니다... 쪽지로 직원이 되고프다며 자기 PR을 하시는 분이 종종있는데.... 전 돈이 없습니다..나비 코인이라면 얼마든지 드리겠지만.. 암호화폐를 투기성 화폐가 아닌 다른 방향으로 흐르게 할 방법이 없을까요...           ... 9 1904
Xmessiah
2019.02.08
1563 질문 비트코인 시간봉, 분봉을 더 길게 볼 수 있는 사이트가 있을까요? 비트코인(btc) 백테스트를 하는데,   시간봉은 6개월, 분봉은 이틀치밖에 못받네요...   데이터를 더 많이 받을 수 있는 사이트가 있을까요?   가급적 코인마켓캡 것을 받고 싶긴한데, 코인마켓캡 돈 내면 분단위, 시... 7 548
축당첨
2019.02.06
1562 개발 비트맥스 지정가 주문(post only 로) 을 넣는 방법   안녕하세요.   비트맥스 api 를 이용하여 트레이딩을 하고 있는데요. 비트맥스 사이트에 보면 지정가주문을 위해 손으로 거래하는 경우 post only 를 체크하게 되어 있는데요. (taker fee를 받기 위해)   봇을 이용... 1 558
부자아들
2019.02.06
1561 질문 코인 개발 목적에 관하여.. 각 나라의 화폐 최소 단위 1개당  1개의 나비코인을 판매한다면.. 그러니까 대한민국은 1원에 나비코인 1개, 미국은 1센트에 1 나비, 개발도상국도 마찬가지로... 이러면, 나비코인이 성공한다면 어떤 영향이 있을까... 13 1 1375
Xmessiah
2019.02.04
1560 개발 코인 개발 완료... 혼자 잡고 열심히 개발하였습니다. 미흡한 점이 많지만 소스를 공개하였습니다. Go언어로 되어있으니 필요하신분은 참고하셨으면 합니다..   덧, 고정 아이피에서만 작동합니다.   PoW이고 특이 점은 코인을 보낼시 ... 15 2 2463
Xmessiah
2019.02.03
1559 질문 안녕하세요. 국내 eos, eth, trx dapp관련 큰 커뮤니티 혹시 아시나요?     2019년은 dapp의 해가 될 것 같은데 해당 커뮤니티 아시면   추천부탁드리겠습니다!   행복한 연휴되세요!!   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별... 1 570
코인코1
2019.02.02
1558 질문 흥미가 생겨서 코인을 만들던중 궁금한게 있어서 남깁니다.   https://etherscan.io/token/0x59f2e9311cc43f731e18bd2b9b573aca42f670c1#readContract     보면 Readcontract 다른 코인들은 다 기입이 되어있는걸 알고있습니다   그래서 저도 보이게 하려고 Verify Your Contra... 4 1 819
빵빵한포도알
2019.02.02
1557 질문 거래소에서 ERC20 코인 지갑생성과 관련되어 질문있습니다. 업비트 거래소에서 ERC20코인 지갑을 생성하고 이더스캔에 생성된 지갑 주소를 검색하면 지갑 타입이 Address가 아닌 Contract형으로 나오는데    굳이 Smart Contract 형의 주소로 발급해야 하는 특별한 이유나 이점... 1 578
나비잠
2019.02.01
1556 질문 이더리움을 개발하는 사람들은 모두 몇명이나 되나요?     이더리움 재단의 비탈릭같은 개발자들이 몇명있나 있는지 문득 궁굼하네요   혹 아시는분 있으시면 부탁드려요                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등... 3 1238
신화창조7
2019.01.31
1555 질문 리플 질문입니다~       안녕하세요 리플 공부중입니다 .   포스트맨으로 rpc테스트중인데  {     &quot;method&quot;: &quot;wallet_propose&quot;,     &quot;params&quot;: [         {             &quot;seed&quot;: &quot;snoPBrXtMeMyMHUVTgbuqAfg1SUTb&quot;,             &quot;key_ty... 4 592
피로
2019.01.30
» 개발 [강좌] 이더소셜 PHP API 서버 만들기 #4. 계정 트랜젝션 개수 확인하기 안녕하세요. 쌩광부입니다.   한동안 ESN 재단 설립 때문에 너무 바빠서 강좌를 못했었는데요. 오늘 ESN 재단 구성원 모집이 완료되어 한시름 놓았습니다. 그리하여... 다시 강좌를 시작하도록 하겠습니다.   지난 강... 3 13 1913
쌩광부
2019.01.29
1553 질문 메타마스크 문의드립니다. 컴퓨터 밀고 재설치했습니다. 구글 로그인하고 메타마스크 들어가보니 다시 가입하라고 나오더라구요. 가입하면 전에 지갑 다시 나오겠지 했는데... 새로 가입된걸로 되있습니다. 예전 계정으로 다시 되돌리려면 어떻... 4 488
심퉁이
2019.01.29
1552 질문 이걸 이용해서 다른게시판 ..   https://github.com/esoodev/crawler-inven-archeag   자꾸 죄송합니다 ㅠㅠ..이걸 이용해서 오버워치 인벤 제목만 파싱하고싶은데 url만 바꾸면 될까요?                   -------------------------------------... 4 591
허니잼
2019.01.28
1551 질문 인벤게시판 파싱을 하고싶은데..     파이썬을 이용해서 게시글 제목을 파싱하고싶은데.. 초보라서 잘이해를 못하겠습니다..ㅜㅜ도움 부탁드립니다..                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강... 5 565
허니잼
2019.01.28
1550 질문 추적60분 kbs token 링크 아시는 분 ?     1시간만에 뚝딱 만들어낸다   는  추적60분 kbs token 그 사이트 링크 아시는 분 ? 계세염?   한~~~ 참~~구글정보바다를 검색해봤는데,,,,와~~따~~~ 찾기 어려움....요                     --------------------... 4 1474
내가총대멘다
2019.01.26
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 81 Next
/ 81