취미/비트코인 풀노드 운영

풀노드를 운영하면서 비트코인 블록들을 직접 검증해보자!

저도잘은몰라요 2024. 5. 26. 11:35
반응형

 

저번 글에선 getblock RPC를 썼더니 원하는 블록의 정보가 마구마구 토출되었으나,

글이 길어지는 관계로 미처 자세히 보지 아니하였다. 사실 쓸모있는 정보도 아니고

더 자세하게 알고 싶다면 https://learnmeabitcoin.com/을 참고하라. 비트코인을 이해하는데 매우 유용한 정보가 많다. 

 

hash는 블록의 이름같은거라고 보면 되겠다. 

confirmation은 지금까지 해당 블록이 몇번 검증*되었는지 알려준다. 

height는 블록의 높이. 생성된 순서이다.

merkleroot는 해당 블록의 트랜잭션 값들을 전부 모아 해싱한 값이다. 

time은 유닉스시간이다. 

nonce는 채굴이라는 일종의 계산행위를 통해 찾아낸 해당 블록만의 정답 값이다. 

bits는 채굴을 위한 목표값이다.

chainwork는 해당 블록을 채굴하기 위해 사용된 해시값이다.

nTx는 해당 블록의 트랜잭션 횟수

nextblockhash와 함께 prevblockhash도 있으나, Genesis block인 탓에 prev값은 없다.

tx에는 트랜잭션 관련 정보들이 담겨있다. 

txid란 블록에서 일어난 트랜잭션의 고유한 id값이다. 최근에 채굴된 블록은 계속해서 사용자간 거래가 일어나고 있으므로 txid가 수백수천개이나, Genesis block은 채굴된 이후 한번도 거래된 적이 없어서 txid가 오직 하나뿐**이다. 

 

 

coinbase는 제너레이션 트랜잭션=코인베이스 트랜잭션의 txid생성을 위해 사용되는 임의의 값이다.*** 

sequence는 과거 비트코인 프로그램에서 locktime이란 기능을 쓸때 사용하던 값으로, 지금은 쓰지 않는다.

value는 비트코인의 갯수. 여기서는 채굴 보상으로 주어진 갯수이다.

scriptPubKey: 비트코인 전송에 사용된 공개키. 어셈블리어, 디스크립터, 헥스값 세가지로 표출되어 있다. 

hex: 해당 블록에서 일어난 트랜잭션

 

 

안의 정보들이 전부 나열된 헥스값이다. "txid", "hash", "version", "size"등등...

이러한 정보들을 통해서 첫번째로 채굴된 50개나 되는 비트코인은 어디로 갔는지와 같은 정보들을 알아낼 수 있다. 

다음 글에서는 대체 그 많은 비트코인을 누가 가지고 있는지 알아보도록 하자.

 

*검증: 블록'체인'은 블록끼리 서로 연결되어 있다. 따라서 두번째 블록엔 첫번째 블록의 정보가 들어있다.  두번째 블록에 이상이 없는 것으로 합의된다면 첫번째 블록도 이상이 없는 것으로 판정된다. 나아가서 100번째 블록도 이상이 없는 것으로 합의된다면 이하 99, 98,,,1번째 블록도 이상이 없는 것이고, 이를 매 블록 생성시마다 확인하게 된다. 이를 검증이라고 부른다. 따라서 confirmation값은 계속해서 변한다.

** 채굴이라는 행위를 통해 블록이 생성될 때 보상으로 주는 비트코인도 트랜잭션이 되었다고 치는데 이를 코인베이스 트랜잭션이라고 한다. 

*** 04ffff001d0104까지가 coinbase값이며, 이후에는 임의의 값이 올 수 있다. Genesis block의 코인베이스에는 특별한 메시지가 Hex값으로 숨겨져 있다! 이를 아스키 코드로 변환해보자.

반응형