티스토리 뷰

미루고 미뤄오던 비트코인 풀노드 설치를 시작하며 기록을 남깁니다.

 

라즈베리파이를 하나 준비해서 별도로 풀노드 서버를 하나 준비하려다가 최근 가격이 많이 올라서 그냥 개인 노트북에 설치를 시작합니다.

 

 

비트코인 코어 다운로드

본인 PC환경에 알맞게 비트코인 코어를 다운로드 합니다.  Bitcoin Core 22.0 기준으로 Mac dmg 설치파일은 14MB 용량이네요.

https://bitcoin.org/ko/download

설치파일을 실행할 때 별도 관리자 권한이 필요할 수 있습니다. (Mac 의 경우 옵션키를 누른 후 프로그램 열기하시면 됩니다.)

 

 

설치 옵션

  • 현재(22년 12월 5일) 블록체인 전체 용량은 420GB 인데 해당 블록체인 장부를 내려받을 폴더를 선택합니다.
    • 이때 PC의 저장공간이 충분치 않다면, PC에 연결된 외부 스토리지를 선택할 수 있습니다.
  • 또는 스토리지 공간의 상황에 따라 블록체인 모든 내용을 다운로드 받지 않고 블록체인 스토리지 용량을 제한할 수 있는 옵션(첨부된 화면 가장 아래 옵션)도 가능합니다.
    • 이는 비트코인이 블록 검증시 머클트리를 사용하기 때문에 블록헤더의 머클루트만 있으면 전체 거래내역(블록바디)을 다 저장하지 않아도 되기 때문입니다. (사토시의 선견지명 감사합니다!)
    • 스토리지의 용량을 제한할 경우 해당 저장공간 만큼의 최신 거래내역만 다운로드 하고 그 이전 내역들은 자동으로 삭제하며 해당 제한 용량을 유지할 수 있습니다.

 

하지만 저는 미리 용량이 충분한 외장HDD를 준비하였습니다. 여기서 용량이 충분한 외장HDD 를 선택한다면 블록체인 스토리지의 제한없이 모든 거래내역을 다운로드 받을 수 있습니다. 단, 외부 폴더 영역에 블록체인 데이터를 다운로드 받을 경우에는 외부 폴더접근 권한 허용이 필요합니다.

 

블록체인 데이터 다운로드 경로를 결정하고, 스토리지 용량 제한에 대한 옵션 결정을 마쳤으면 OK버튼을 누릅니다.

그러면 바로 블록체인 장부 동기화가 시작됩니다. 데이터 동기화까지는 개인 PC의 성능과 네트워크 상황에 따라 달라질 수 있습니다. 예상 소요시간은 진행 창에 표시가 됩니다.

 

제 PC의 경우 17시간 정도가 소요되네요. 이정도 쯤은 기다릴 수 있어야죠^^

 

외장HDD 로 블록체인 장부를 담는 중..

제가 구매했던 외장HDD 는 도시바 칸비오인데 만족스럽네요.

한참 걸리네요..

 

 

블록체인 장부 동기화 완료 후

데이터 동기화가 완료되면 아래와 같이 지갑 생성화면

 

설명위에 마우스 포인터를 올리면 툴팁 설명이 나옵니다.

빈지갑 생성 후

 

이렇게 연결된 친구노드들 목록도 보이네요

 

정보 탭에는 이런 정보들이 보여요

 

 

블록체인 데이터  폴더 구조

 

콘솔창을 통해서 다양한 비트코인 명령어들을 수행할 수 있어요

 

콘솔창에서 `help` 명령어를 입력하면 사용가능한 명령어들 목록이 모두 나타나요

>> help
== Blockchain ==
getbestblockhash
getblock "blockhash" ( verbosity )
getblockchaininfo
getblockcount
getblockfilter "blockhash" ( "filtertype" )
getblockhash height
getblockheader "blockhash" ( verbose )
getblockstats hash_or_height ( stats )
getchaintips
getchaintxstats ( nblocks "blockhash" )
getdifficulty
getmempoolancestors "txid" ( verbose )
getmempooldescendants "txid" ( verbose )
getmempoolentry "txid"
getmempoolinfo
getrawmempool ( verbose mempool_sequence )
gettxout "txid" n ( include_mempool )
gettxoutproof ["txid",...] ( "blockhash" )
gettxoutsetinfo ( "hash_type" hash_or_height use_index )
preciousblock "blockhash"
pruneblockchain height
savemempool
scantxoutset "action" ( [scanobjects,...] )
verifychain ( checklevel nblocks )
verifytxoutproof "proof"

== Control ==
getmemoryinfo ( "mode" )
getrpcinfo
help ( "command" )
logging ( ["include_category",...] ["exclude_category",...] )
stop
uptime

== Generating ==
generateblock "output" ["rawtx/txid",...]
generatetoaddress nblocks "address" ( maxtries )
generatetodescriptor num_blocks "descriptor" ( maxtries )

== Mining ==
getblocktemplate ( "template_request" )
getmininginfo
getnetworkhashps ( nblocks height )
prioritisetransaction "txid" ( dummy ) fee_delta
submitblock "hexdata" ( "dummy" )
submitheader "hexdata"

== Network ==
addnode "node" "command"
clearbanned
disconnectnode ( "address" nodeid )
getaddednodeinfo ( "node" )
getconnectioncount
getnettotals
getnetworkinfo
getnodeaddresses ( count "network" )
getpeerinfo
listbanned
ping
setban "subnet" "command" ( bantime absolute )
setnetworkactive state

== Rawtransactions ==
analyzepsbt "psbt"
combinepsbt ["psbt",...]
combinerawtransaction ["hexstring",...]
converttopsbt "hexstring" ( permitsigdata iswitness )
createpsbt [{"txid":"hex","vout":n,"sequence":n},...] [{"address":amount,...},{"data":"hex"},...] ( locktime replaceable )
createrawtransaction [{"txid":"hex","vout":n,"sequence":n},...] [{"address":amount,...},{"data":"hex"},...] ( locktime replaceable )
decodepsbt "psbt"
decoderawtransaction "hexstring" ( iswitness )
decodescript "hexstring"
finalizepsbt "psbt" ( extract )
fundrawtransaction "hexstring" ( options iswitness )
getrawtransaction "txid" ( verbose "blockhash" )
joinpsbts ["psbt",...]
sendrawtransaction "hexstring" ( maxfeerate )
signrawtransactionwithkey "hexstring" ["privatekey",...] ( [{"txid":"hex","vout":n,"scriptPubKey":"hex","redeemScript":"hex","witnessScript":"hex","amount":amount},...] "sighashtype" )
testmempoolaccept ["rawtx",...] ( maxfeerate )
utxoupdatepsbt "psbt" ( ["",{"desc":"str","range":n or [n,n]},...] )

== Signer ==
enumeratesigners

== Util ==
createmultisig nrequired ["key",...] ( "address_type" )
deriveaddresses "descriptor" ( range )
estimatesmartfee conf_target ( "estimate_mode" )
getdescriptorinfo "descriptor"
getindexinfo ( "index_name" )
signmessagewithprivkey "privkey" "message"
validateaddress "address"
verifymessage "address" "signature" "message"

== Wallet ==
abandontransaction "txid"
abortrescan
addmultisigaddress nrequired ["key",...] ( "label" "address_type" )
backupwallet "destination"
bumpfee "txid" ( options )
createwallet "wallet_name" ( disable_private_keys blank "passphrase" avoid_reuse descriptors load_on_startup external_signer )
dumpprivkey "address"
dumpwallet "filename"
encryptwallet "passphrase"
getaddressesbylabel "label"
getaddressinfo "address"
getbalance ( "dummy" minconf include_watchonly avoid_reuse )
getbalances
getnewaddress ( "label" "address_type" )
getrawchangeaddress ( "address_type" )
getreceivedbyaddress "address" ( minconf )
getreceivedbylabel "label" ( minconf )
gettransaction "txid" ( include_watchonly verbose )
getunconfirmedbalance
getwalletinfo
importaddress "address" ( "label" rescan p2sh )
importdescriptors "requests"
importmulti "requests" ( "options" )
importprivkey "privkey" ( "label" rescan )
importprunedfunds "rawtransaction" "txoutproof"
importpubkey "pubkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaddressgroupings
listdescriptors
listlabels ( "purpose" )
listlockunspent
listreceivedbyaddress ( minconf include_empty include_watchonly "address_filter" )
listreceivedbylabel ( minconf include_empty include_watchonly )
listsinceblock ( "blockhash" target_confirmations include_watchonly include_removed )
listtransactions ( "label" count skip include_watchonly )
listunspent ( minconf maxconf ["address",...] include_unsafe query_options )
listwalletdir
listwallets
loadwallet "filename" ( load_on_startup )
lockunspent unlock ( [{"txid":"hex","vout":n},...] )
psbtbumpfee "txid" ( options )
removeprunedfunds "txid"
rescanblockchain ( start_height stop_height )
send [{"address":amount,...},{"data":"hex"},...] ( conf_target "estimate_mode" fee_rate options )
sendmany "" {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode" fee_rate verbose )
sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode" avoid_reuse fee_rate verbose )
sethdseed ( newkeypool "seed" )
setlabel "address" "label"
settxfee amount
setwalletflag "flag" ( value )
signmessage "address" "message"
signrawtransactionwithwallet "hexstring" ( [{"txid":"hex","vout":n,"scriptPubKey":"hex","redeemScript":"hex","witnessScript":"hex","amount":amount},...] "sighashtype" )
unloadwallet ( "wallet_name" load_on_startup )
upgradewallet ( version )
walletcreatefundedpsbt ( [{"txid":"hex","vout":n,"sequence":n},...] ) [{"address":amount,...},{"data":"hex"},...] ( locktime options bip32derivs )
walletdisplayaddress bitcoin address to display
walletlock
walletpassphrase "passphrase" timeout
walletpassphrasechange "oldpassphrase" "newpassphrase"
walletprocesspsbt "psbt" ( sign "sighashtype" bip32derivs )

== Zmq ==
getzmqnotifications

 

이게 다에요.

mempool.space 같이 화려한 UI 는 따로 지원되지 않아요.

 

 

기타

  • 블록체인 장부 데이터의 용량이 클뿐, 다른 부분은 준비하는데 어려운 것이 없네요
    • 블록체인 스토리지 용량을 제한하는 옵션을 선택한다면 추가 스토리지를 따로 구매할 필요도 없어요
  • HDD 보다는 SSD 스토리지를 권장합니다
    • 업무용 PC에서는 SSD에 스토리지 용량제한 30GB로 제한하여 설치했더니 3일만에 블록체인 동기화가 끝났어요
    • 개인용 PC에서는 HDD 스토리지를 사용해서 그런지 스토리지 제한을 하지 않아서인지 모르겠지만, 블록체인 데이터 동기화하는데 몇달 걸릴 듯 하네요ㅡㅡ;
  • bitnodes.io 에서 reachable node 로 인식되지는 않아요. 아쉽

 


https://www.youtube.com/watch?v=1XhwLJErqv8 

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함