[블록체인] Bitcoin 트랜잭션 전송과 확인
이번 포스팅은 이전 글에 이어 비트코인 송금을 통해 트랜잭션을 일으키고 확인해보겠습니다.
luna 노드의 address에서 pine 노드의 address에 25 비트코인을 송금해보도록 하자.
비트코인 송금을 위해서는 luna 노드는 address를 만들고 채굴을 통해 비트코인을 채워야 한다.
pine 노드도 비트코인을 송금받기 위한 address가 필요하므로 luna, pine 모두 address를 하나씩 만들어보자.
# luna 노드의 address 생성
bitcoin@DESKTOP-82KRV15:~/bitcoin/node3$ bitcoin-cli -rpcuser=luna -rpcpassword=luna -rpcport=1111 getnewaddress
# 생성된 luna 노드의 address
bcrt1qettlkccy5yxe6pnnchdncjr7ng5ypm38f9j3l9
# pine 노드의 address 생성
bitcoin@DESKTOP-82KRV15:~/bitcoin/node3$ bitcoin-cli -rpcuser=pine -rpcpassword=pine -rpcport=2222 getnewaddress
# 생성된 pine 노드의 address
bcrt1qtl69d5szefry4e7r9hwjxza5wxtsajfyd4yrh2
luna address에서 pine address에 25 비트코인을 송금해보자.
bitcoin-cli -rpcuser=luna -rpcpassword=luna -rpcport=1111 sendtoaddress "bcrt1qtl69d5szefry4e7r9hwjxza5wxtsajfyd4yrh2" 25
위 명령어를 실행하면 해시된 TX ID 값을 얻을 수 있다. (966be9204025c7150edc50b1925e69137c35b01448b4bce83dbb0134f3256df6)
해당 트랜잭션은 mempool에 들어가 있는 상태이다.
위 명령어를 통해 mempool에 있는 tx를 조회할 수 있다.
이제 TX를 컨펌하고 블록에 넣기 위해서는 마이너가 채굴을 한 번 해야 한다.
채굴을 함으로써 블록 하나를 추가했다.
블록 하나를 추가함으로써 luna 노드가 pine 노드에게 25 btc를 송금한 tx가 컨펌이 됐다.
getbalance 명령어를 통해 pine 노드의 address에는 25 btc가 잔고에 남아있는 것을 확인할 수 있다.
3번 노드인 kim 노드에서 getrawtransaction 명령어를 통해 tx hash 값을 넣어 조회해보자.
인코딩되어 출력된 값을 디코딩하면 아래처럼 TX 정보를 조회할 수 있다.
vout에는 value가 24.99997180, 25.00000000 두 개 존재하는 것을 확인할 수 있다.
비트코인은 전자는 luna 노드의 address에 돌려주고(UTXO 특징) 후자는 pine 노드의 address에 전송된 것이다.
참고
https://ww w.youtube.com/watch?v=_5bjloFz7l8&list=PLZwFtgKc35I_ROUsSev0xcy5poVH486CV&index=8