블록체인

bitcoin core 테스트

쏘가리와함께춤을 2018. 12. 5. 11:58

bitcoin core는 GUI 방식이외에 커맨드라인 방식을 지원합니다


bitcoind 데몬 프로세스가 서비스를 제공하고, 사용자 명령어는 bitcoin-cli 프로그램을 통하여

JSON-RPC 통신 방식으로 bitcoind 데몬에게 명령어를 전달하고 응답을 받는 방식을 기본 골격으로 합니다.



[테스트 환경]

ubuntu 18.04 LTS

bitcoin core v0.17.99 + regtest (로컬네트워크)




[테스트 실행]

-서비스 데몬 구동

gun@gun-VirtualBox:~/src/bitcoin$ bitcoind -regtest -daemon
Bitcoin server starting

un@gun-VirtualBox:~$ ps -ef | grep bitcoind
gun      32532   722  0 05:53 ?        00:00:04 bitcoind -regtest -daemon


- 블록 생성

gun@gun-VirtualBox:~$ bitcoin-cli -regtest generate 101
error code: -32
error message:
The wallet generate rpc method is deprecated and will be fully removed in v0.19. To use generate in v0.18, restart bitcoind with -deprecatedrpc=generate.
Clients should transition to using the node rpc method generatetoaddress

위와 같은 에러가 발생, generate 기능은 더 이상 지원하지 않을 모양입니다.


현재 제가 컴파일한 bitcoin core 버전은 0.17.99 이며, generate 하기 위해서 추가 옵션을 지정이 필요합니다.

(v0.19.0 부터는 완전히 삭제될 예정이지만...)

$ bitcoind -regtest -daemon -deprecatedrpc=generate
$ bitcoin-cli -regtest generate 101
$ bitcoin-cli -regtest getblockcount
101


-계좌 생성 및 잔고 확인

gun@gun-VirtualBox:~$ bitcoin-cli -regtest getnewaddress user1
2NEDQQ9s45TUB4dgwdmNb83KFaGTg7YYJ9R

gun@gun-VirtualBox:~$ bitcoin-cli -regtest getbalance
50.00000000

gun@gun-VirtualBox:~$ bitcoin-cli -regtest getbalance user1
error code: -32
error message:
dummy first argument must be excluded or set to "*".

특정 계정을 인자로 받는 getbalance 기능도 deprecated 되었습니다.


- 송금 및 트랜잭션 확인

; 송금

gun@gun-VirtualBox:~$ bitcoin-cli -regtest sendtoaddress 2NEDQQ9s45TUB4dgwdmNb83KFaGTg7YYJ9R 10
0bedf75a7b703f0c893d84765cd3c6209813c3ad43e01b8d063f61364e5cac56


; 트랜잭션 확인
gun@gun-VirtualBox:~$ bitcoin-cli -regtest listunspent
[
]

; 미확정 트랜잭션 확인
gun@gun-VirtualBox:~$ bitcoin-cli -regtest listunspent 0
[
  {
    "txid": "0bedf75a7b703f0c893d84765cd3c6209813c3ad43e01b8d063f61364e5cac56",
    "vout": 0,
    "address": "2NEDQQ9s45TUB4dgwdmNb83KFaGTg7YYJ9R",
    "label": "user1",
    "redeemScript": "0014cf68cfdf9f6c4b865c8a79f9098b7cac347ca6e6",
    "scriptPubKey": "a914e602802b0aa7195546dbc70322625e1bbc4e601e87",
    "amount": 10.00000000,
    "confirmations": 0,
    "spendable": true,
    "solvable": true,
    "desc": "sh(wpkh([ebf3713e/0'/0'/1']02c58548b63acb0711d1805bfe4d24779b31a219feb6ebd7819ac4588de0c712d7))",
    "safe": true
  },
  {
    "txid": "0bedf75a7b703f0c893d84765cd3c6209813c3ad43e01b8d063f61364e5cac56",
    "vout": 1,
    "address": "2NBAMNoqiFvKCr4JEoZXj8mXb2eHNXUmUBv",
    "redeemScript": "00145b12d22acefc49ec4cd337165db07a0a0f86d2f2",
    "scriptPubKey": "a914c4865a0e97c16a6879fd5c5f7b4eb61d708a610387",
    "amount": 39.99996260,
    "confirmations": 0,
    "spendable": true,
    "solvable": true,
    "desc": "sh(wpkh([ebf3713e/0'/1'/0']02c1673a82572b7140ff227f7999bb673ab70ce2f8a5a40baf66addb3f9237c035))",
    "safe": true
  }
]


- 채굴하여 트랜잭션 확정 후 잔고 확인

; 수수료는 이미 나간 상태

gun@gun-VirtualBox:~$ bitcoin-cli -regtest getbalance
49.99996260

; 채굴
gun@gun-VirtualBox:~$ bitcoin-cli -regtest generate 1
[
  "496dc3bc9776f1539d6a1fe29607ea0a8b38ffa4fd5c44a30c4e47543a019de8"
]

; 송금 트랜잭션 재확인
gun@gun-VirtualBox:~$ bitcoin-cli -regtest listunspent
[
  {
    "txid": "0bedf75a7b703f0c893d84765cd3c6209813c3ad43e01b8d063f61364e5cac56",
    "vout": 0,
    "address": "2NEDQQ9s45TUB4dgwdmNb83KFaGTg7YYJ9R",
    "label": "user1",
    "redeemScript": "0014cf68cfdf9f6c4b865c8a79f9098b7cac347ca6e6",
    "scriptPubKey": "a914e602802b0aa7195546dbc70322625e1bbc4e601e87",
    "amount": 10.00000000,
    "confirmations": 1,
    "spendable": true,
    "solvable": true,
    "desc": "sh(wpkh([ebf3713e/0'/0'/1']02c58548b63acb0711d1805bfe4d24779b31a219feb6ebd7819ac4588de0c712d7))",
    "safe": true
  },
  {
    "txid": "0bedf75a7b703f0c893d84765cd3c6209813c3ad43e01b8d063f61364e5cac56",
    "vout": 1,
    "address": "2NBAMNoqiFvKCr4JEoZXj8mXb2eHNXUmUBv",
    "redeemScript": "00145b12d22acefc49ec4cd337165db07a0a0f86d2f2",
    "scriptPubKey": "a914c4865a0e97c16a6879fd5c5f7b4eb61d708a610387",
    "amount": 39.99996260,
    "confirmations": 1,
    "spendable": true,
    "solvable": true,
    "desc": "sh(wpkh([ebf3713e/0'/1'/0']02c1673a82572b7140ff227f7999bb673ab70ce2f8a5a40baf66addb3f9237c035))",
    "safe": true
  },
  {
    "txid": "313c0285fb3b0fc79c4b1648fec273f24c620f8cdac04d082717434d1589e3c7",
    "vout": 0,
    "address": "mvzmgyvM8hqzBy8JnRkmM6DZPCRG1CW78w",
    "scriptPubKey": "2103db9de9284462bc28e4b131ebec23597fd2d09d6a46bbe5e7f56fb7f990cb534cac",
    "amount": 50.00000000,
    "confirmations": 101,
    "spendable": true,
    "solvable": true,
    "desc": "pk([ebf3713e/0'/0'/0']03db9de9284462bc28e4b131ebec23597fd2d09d6a46bbe5e7f56fb7f990cb534c)",
    "safe": true
  }
]

gun@gun-VirtualBox:~$ bitcoin-cli -regtest getbalance
99.99996260


account 지정하여 잔고 확인하는 기능이 없어서, 서버의 전체 잔고가 표시되는 것으로 보입니다

(If account is not specified, returns the server's total available balance.

출처: https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line/blob/master/bitcoin-cli-commands-help.md)


이상으로, bitcoin-cli 프로그램을 이용한 간단한 테스트를 마칩니다.

감사합니다.