bitcoin core 테스트
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 프로그램을 이용한 간단한 테스트를 마칩니다.
감사합니다.