Blockchain/Bitcoin
[Bitcoin] 노드 RPC curl 명령어 정리
AustinProd
2022. 4. 28. 23:41
오늘은 서버에서 curl
을 활용한 비트코인 노드에 RPC 통신 요청 방법을 공유한다. 기본적인 형태만 잘 기억해두면, CLI( = bitcoin-cli )에 접근하지 않더라도 RPC 통신을 할 수 있다. curl 내부 명령어와 파라미터만 바꿔 비트코인 노드에서 블록 정보를 가져오는 게 가능하다.
curl을 날릴 때 신경써야할 부분이 있다면, RPC User 및 Password를 bitcoin.conf에 설정해두었는지와 RPC 호출 IP 주소 및 Port를 정확하게 입력하는 것이다. 기본적으로 RPC Port는 수정하지 않는 한 8332번이며, 사용자 정보가 필요한 노드라면 --user
플래그에 해당 정보를 입력해주어야 한다.
몇 가지 기본적인 RPC 명령어를 기록해두었다. 포멧에 익숙해졌다면, 게시물 하단에 링크해둔 비트코인 CLI 명령어 사이트를 참조해 원하는 요청을 직접 만들어 사용하면 된다.
getblockcount
# getblockcount 명령어 : 노드의 블록 개수 반환
curl --user [RPC 유저명]:[RPC 비밀번호] --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockcount","params":[]}' -H 'content-type:text/plain;' http://[RPC IP 주소]:8332
> {"result":733961,"error":null,"id":"curltext"}
getblockchaininfo
# getblockchaininfo 명령어 : 현재 블록체인 상태값 반환
curl --user [RPC 유저명]:[RPC 비밀번호] --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://[RPC IP 주소]:8332
> {"result":{"chain":"main","blocks":733925,"headers":733925,"bestblockhash":"000000000000000000081b424770ad81226ec519b5b4dbeb5d6465129c32015f","difficulty":29794407589312.08,"mediantime":1651129485,"verificationprogress":0.9999996108992322,"initialblockdownload":false,"chainwork":"00000000000000000000000000000000000000002cd3f1a9acd0803cd3a45160","size_on_disk":457943659501,"pruned":false,"softforks":{"bip34":{"type":"buried","active":true,"height":227931},"bip66":{"type":"buried","active":true,"height":363725},"bip65":{"type":"buried","active":true,"height":388381},"csv":{"type":"buried","active":true,"height":419328},"segwit":{"type":"buried","active":true,"height":481824},"taproot":{"type":"bip9","bip9":{"status":"active","start_time":1619222400,"timeout":1628640000,"since":709632,"min_activation_height":709632},"height":709632,"active":true}},"warnings":""},"error":null,"id":"curltext"}
getnetworkinfo
# getnetworkinfo 명령어 : 노드의 네트워크 정보 반환
curl --user [RPC 유저명]:[RPC 비밀번호] --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getnetworkinfo","params":[]}' -H 'content-type:text/plain;' http://[RPC IP 주소]:8332
> {"result":{"version":220000,"subversion":"/Satoshi:22.0.0/","protocolversion":70016,"localservices":"0000000000000409","localservicesnames":["NETWORK","WITNESS","NETWORK_LIMITED"],"localrelay":true,"timeoffset":0,"networkactive":true,"connections":10,"connections_in":0,"connections_out":10,"networks":[{"name":"ipv4","limited":false,"reachable":true,"proxy":"","proxy_randomize_credentials":false},{"name":"ipv6","limited":false,"reachable":true,"proxy":"","proxy_randomize_credentials":false},{"name":"onion","limited":true,"reachable":false,"proxy":"","proxy_randomize_credentials":false},{"name":"i2p","limited":true,"reachable":false,"proxy":"","proxy_randomize_credentials":false}],"relayfee":0.00001000,"incrementalfee":0.00001000,"localaddresses":[],"warnings":""},"error":null,"id":"curltext"}
getwalletinfo
# getwalletinfo 명령어 : 노드에 등록된 지갑 정보 반환
curl --user [RPC 유저명]:[RPC 비밀번호] --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getwalletinfo","params":[]}' -H 'content-type:text/plain;' http://[RPC IP 주소]:8332
> {"result":{"walletname":"/home/ubuntu/default","walletversion":169900,"format":"bdb","balance":0.00000000,"unconfirmed_balance":0.00000000,"immature_balance":0.00000000,"txcount":0,"keypoololdest":1649404120,"keypoolsize":1000,"hdseedid":"a619ea7e588c69c2e9462ea88be94ae4c9a8031d","keypoolsize_hd_internal":1000,"paytxfee":0.00000000,"private_keys_enabled":true,"avoid_reuse":false,"scanning":false,"descriptors":false},"error":null,"id":"curltext"}
비트코인 RPC 명령어 참고 사이트
https://chainquery.com/bitcoin-cli