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

풀노드 프로그램으로 비트코인을 채굴해보자!

저도잘은몰라요 2024. 5. 26. 12:37
반응형

 

드디어 우린 비트코인 코어 RPC를 다룰 수 있게 되었다. 

RPC명령어 매우 구체적인 사용법

 

비트코인 코어(이하 bitcoind)프로그램 안에는 채굴 기능도 포함되어 있다. 

물론 CPU를 사용해서 채굴하는 단계는 하아아안참 지났고, 직접 해봤자 별 의미는 없을 것이다. 

왜냐면 현재는 ASIC*을 사용해서 채굴이 이뤄지고 있기 때문이다.

그런데 도대체 ASIC인지 뭔지를 쓰는 사람들은 어떻게 채굴을 하고 있는 것일까? 

그 사람들이 쓰는 채굴 프로그램은 어디에 접속해서 무슨 계산을 해서 비트코인을 받아내는 것일까?

그 의문을 해소해보자. 

 

https://developer.bitcoin.org/reference/rpc/index.html

 

RPC들이 정리된 위 웹사이트에는 채굴과 관련된 RPC들도 물론 다루고 있다. 

2009년 당시에는 CPU만으로 채굴했으므로 Mining RPCs예하의 명령어들을 쓰지 않았다. 

우리가 봐야 할 것은 Generating RPCs, 그중에서도 generatetoaddress이다. 

만약 당신이 ASIC이나 그래픽카드 채굴기를 설계하고 있다면 Mining RPC들을 추가로 써야 할 것이다. 

 

각설하고, 어서 비트코인을 채굴해보자!!!!

첫번째 글에서는 지갑을 생성했다. 지갑이라면 응당 돈을 받을 수 있어야겠지?

 

 

받기 탭에 들어가서 새로운 수신 주소 생성을 눌러준다. 그러면 

 

 

이와 같은 지갑 수신 주소가 생성될 것이다.

해당 주소로 비트코인을 보내면, 지갑으로 비트코인이 들어오는 것이다. 

 

이제 bitcoind와 cmd창을 켜고 C:\Program Files\Bitcoin\daemon경로로 이동한다.

해당경로로 이동하는 방법

 

 

cmd창에 아래 명령어를 입력해주자. 

bitcoin-cli generatetoaddress 1 bc1qhz8hs8jyewx9xjgn6pkqcsmufwt0q6unf97xjs 999999999 

 

물론 bc1qhz8hs8jyewx9xjgn6pkqcsmufwt0q6unf97xjs 자리에는 당신의 지갑 주소를 입력해야 한다. 

입력해 보았는가?

getblock 따위 다른 명령어를 입력했을 때와 달리, 결과가 표출되기까지 시간이 좀 걸릴 것이다. 

왜냐하면, 블록을 생성하는 데 필요한 계산(채굴**)은 정답을 찾기가 매우매우 어렵기 때문이다.

 

비트코인 채굴을 하려면 뭐 비잔틴 장군 문제를 푸니 어쩌니 하는 소릴 들어봤을 것이다. 

이 generatetoaddress가 당신 컴퓨터의 CPU로 하여금 그 비잔틴 장군 문제를 풀게 만드는 명령어다!

그것도 999999999번 반복해서 말이다. 한번만 계산시키려면 999999999 대신 1을 입력하자.  

 

 

generatetoaddress명령어가 임무를 완수했으나, 아무것도 얻어내지 못했다.

채굴자들은 채굴이 될때까지 이런 명령어를 컴퓨터 앞에 계속 앉아서 쳐넣고 있는 것일까? 

물론 아니다. 당연히 자동화를 했겠지.

자동화한걸 우린 채굴 프로그램이라고 부른다. antminer같이 말이다.

우리는 비록 CPU를 사용하지만, 그래도 간단한 자동화를 한번 해보자.

 

지금까지 우리가 채굴을 위해 했던 동작들(daemon 폴더로 cd명령어를 통해 이동, bitcoin-cli generatetoaddress 명령어 입력 등)을 똑같이 수행하는 파일을 만들 것이다.

단, 자동으로 무한반복해서. 이걸 배치파일이라고 부른다.

그래서 뭐 배치파일을 만든다는게 별 거 없고, 우리가 지금껏 입력했던 명령어를 메모장에 그대로 적어넣어주면 된다. 

조금의 변형은 들어가니, 양해 바란다.


cd C:\Program Files\Bitcoin\daemon
@echo off
:start 
bitcoin-cli generatetoaddress 1 bc1qhz8hs8jyewx9xjgn6pkqcsmufwt0q6unf97xjs 999999999>nul 2>&1
timeout /t 1 > nul 
goto start


이 배치파일은 이렇게 동작한다. 

cd C:\Program Files\Bitcoin\daemon: 아까 했던, 파일경로로 이동하라는 명령어
@echo off: 입력한 명령어가 안보이게 만들어주는, 그냥 깔끔함을 위한 명령어
:start : 여기서부터 시작하라는 뜻
bitcoin-cli generatetoaddress 1 bc1qhz8hs8jyewx9xjgn6pkqcsmufwt0q6unf97xjs 999999999>nul 2>&1

: 아까 했던 채굴 명령어인데 뒤에 추가로 붙은 nul 2>&1 또한 그냥 깔끔 명령어이다. 이게 없으면 자꾸만 실행 cmd에 

[

]

이게 생성되게 된다. 귀찮게스리..


timeout /t 1 > nul : 1초 기다리라는 뜻인데, 999999999번 실행하는건 1초이상 걸리므로 별 의미는 없다.
goto start 다시 스타트지점으로 돌아가라는 뜻


 

끝~~~~ 이제 메모장을 저장할때 .txt 대신 .bat 으로 저장해주면 된다. 

해당 배치파일을 실행해주면

 

 

이렇게 bitcoind 상에 CreateNewBlock이 주기적으로 뜰 것이다. 

generatetoaddress에서 일어나는 계산과정은 기본적으로 CPU를 통해 일어난다. 

만일 본인이 그래픽카드나 ASIC을 가지고 있다면 Mining RPCs를 통해 계산과정이 그래픽카드 또는 ASIC에서 일어나도록 명령어를 조금 복잡하게 수정해야 한다. 

그 수정한 것이 채굴자들이 쓰고 있는 CGminer등의 채굴 프로그램인 것이며,

Bitcoin Core를 쓴다는 기본적인 채굴 방법은 위에서 다룬 방법과 동일하다. 

모든 비트코인 관련 일은 사토시 나카모토가 설계한 Bitcoin Core에서 일어나고 있으니까...

 

아무튼 이번 글에서는 채굴이란 무엇인지, 어떻게 하는지를 알아보았다.

지금 당장은 필요 없지만, 채굴이 99%이뤄지고 채굴회사들이 싹 망한 후엔 이런 방법들이 슬슬 필요해지리라 생각된다. 

 

 

*ASIC: 채굴만을 위해 설계된 특별한 하드웨어

**채굴: 특정 알고리즘의 정답 해시값을 찾아내는 계산과정

 

반응형