본문 바로가기

나만의 코인 만들기

나만의 코인 만들기 8단계 소스코드 수정하기 파트3

이제 지난 시간까지 퓨어매직 넘버도 바꾸고, 다른 파일들도 점차적으로 수정을 마쳤습니다. 이번시간에는 main.cpp를 2차 수정 해보도록 하겠습니다. 그리고 main.h를 변경하고 한번 컴파일 해서, 결과를 지켜보는 시간을 가져보도록 하겠습니다. 다시 main.cpp파일을 준비 해 보겠습니다. 그리고 아까 말씀드린 2803 라인을 한번 더 보겠습니다.

 

 

드디어 아까 우리가 한번 봤던 그 숫자들이 나옵니다. 이제 이 데이터 값들을 바꿀 시간인데요, 이번시간에는 메인넷과 testnet의 n time 값을 각각 바꾸고 발행량을 재설정하겠습니다. 천천히 따라와 주세요. 먼저 main cpp파일을 연 상태에서, 그대로터미널을 한번 열어 봅시다! date +%s값을 입력하면 몇자리 숫자가 나옵니다. 우리는 이 값을 바로 Testnet과 mainnet 에 복사해서 붙여 넣기를 할 것입니다. fm대로 가르쳐 드리겠습니다.  먼저 이값을 한번 복사해서, test net의 block.ntime 값에 입력 합니다.

 

 

 

 

자 그러면 터미널에 date +%s를 한번 더 입력합니다.

 

 

자 그러면 두번째 값이 나옵니다. 저는 이값을 메인넷에 붙여 넣겠습니다. 꼭 반대로 하고 싶어하는 분들 있더라고요.... ㅡㅡ 따라 주세요. 나중에 이유를 알게 됩니다. 자 그러면 메인넷에 이값을 넣으면

 

위와같이 메인넷과 테스트 넷의 ntime 값이 변경된것이 확인 됩니다. 

 

자. 이게 기본적인 시간 설정은 끝났습니다. 이제 본격적으로 발행수량을 관리 해 보도록 하겠습니다.

main.cpp파일에서, 1083번째 줄 입니다.such go line으로 이동하면 편리합니다.

 

자, 그러면 여기서 다양한 발행 수량을 설정 할 수 있습니다.

 

저는 77개의 코인이 하나의 블록당 지급하도록 설정합니다.

그리고 반감기는 약 284만개로 잡겠습니다.

난이도가 상승하는 주기를 35일로 잡아 볼까 합니다. 너무 뒤로 하면, 블록발행시간이 사람이 많아 질수록 점점 엄청 빨라집니다.그리고 20분당 한개의 블록이 발행 되도록 설정하고자 합니다. 그러나 정확하게 지켜지지 않습니다. 블록은 알아서 최적화된 시간에 맞추어 자동적으로 발행시간이 조절 됩니다. 보통은 생각보다 더빨라요.

 

그러면 다음과 같이 설정하면 됩니다.

 

 

여러분도 천천히 저와 같은 방법으로 시간이나 블록반감기등을 변경 할 수 있습니다. 혹시 몰라서 주석 부분은 수정하지 않고 보여 드립니다

 

물론 주석도 같이 수정하셔야 합니다.

 

자... 변경을 완료 하셨으면, 발행 수량을 한번 더 바꿔 주셔야 하는데요,

다시 such go line 2803으로 해당 라인으로 이동하면

 

여기서 스크롤을 아주 조금만 위로 이동해 주면 또 하나 블록당 발행 수량이 설정되어 있습니다.

이부분도 50으로 되어 있는데, 저는 77개로 바꿨습니다. 물론 발행수량은 여러분이 정한 발행 수량을 입력하셔야 합니다.

 

자, 발행 수량 다 바꿨습니다. 이제 한가지만 더 수정하고 담배 한가치 피웁시다. ㅎㅎ

다시 스크롤을 아래로 천천히 내리면, 

블록해쉬 머클 루트 값이 보입니다. 

여기도 분홍색으로 티가나니까 천천히 찾아보시면 됩니다!

 

if test net 아래쪽 ////debug print값이 주석처리 되면서, assert(blcok.hashMerkkleRoot == uint256 

아래에 분홍색으로 해쉬 머클루트 값이 있습니다. 해쉬 머클루트 값을 바꾸면서, 제네시스 블록을 발행하기 위해 필요한 제네시스 해쉬값을 얻는 작업을 진행 해야 하는데요. 그 부분은 다음에 하기로 하고 우선은 이 값을 0x만 빼고 지워 줍니다.

 

 

이렇게 바꿔 주면 됩니다. 간혹 해쉬값을 몰라서 테스트넷 해쉬값 지우거나 메인넷 해쉬값을 지우는 불상사가 생깁니다만. 절대 그런 실수 하시지 마세요^^ 천천히 제 강의를 보면서 따라 주시면 실패할 가능성 제로가 됩니다.

 

자. 그럼 이제 main.cp도 변경이 끝났습니다. 

 

이제 드디어 다음파일 변경 차례 입니다. main.h에서 총 발행량을 설정 합니다.

꼭 저장을 한 뒤에, 닫으신 뒤 main.h를 실행 해 주세요!!!

 

 

스크롤을 천천히 아래로 조금 내리면, 84000000 개가 라이트 코인의 발행수량으로 되어 있습니다.

저는 77777777 로 변경하겠습니다.

 

그리고 COINBASE_MATURITY = 100; 가 설정되어 있는 것을 볼 수 있습니다. 이것은 내가 지금 77개를 채굴 했다면 100개의 블록을 더 생산 한 뒤에 77개를 이체에 사용할 수 있다는 의미 입니다. 바꾸고 싶다면 여러분의 전략에 맞춰 바꾸면 됩니다. 물론 이 값을 1로 설정하면 1개만 더 채굴하면 바로 이체 할 수 있습니다. 이경우 해킹이나 보안에 취약하다면 문제가 생길 수 있으므로 100개 정도로 여유를 둔 것 입니다.

 

이제 main.h 에서 다시 라인넘버 627로 갑시다.

 

 

그러면 여기서 576이라는 값을 볼 수 있습니다. 이값은 하루에 내가 몇개의 블록을 생산 하겠는가 하는 것을 설정합니다.

저는 아까 20분에 하나의 블록이 생성되도록 설정했습니다. 따라서 한시간에 3개블록이 만들어집니다. 3*24가 하루 생산 블록이 됩니다. 즉 저의 경우는 72개가 하루 생산 블록 입니다.

 

물론 우리가 메인에 이렇게 설정 해 두긴 했지만, 그것이 항상설정한 대로 만들어지는 게 아닙니다. 최적화된 시간에 맞추어자동으로 발행 시간이 설정 됩니다. 일단 기준을 잡아두는 것 입니다.

 

자. 이걸 저장하고 터미널을 열겠습니다!!!!

다시 src폴더로 커서를이동시킵니다!!

cd src 명령어면 이동할 것 입니다.

 

드디어 우리는 2차컴파일을 수행 해 볼 것 입니다. 3차 컴파일을 마치면, 드디어 여러분의 코인이 완성 됩니다.

src 폴더로 커서를 이동하고, make -f makefile.unix를 입력 해 주십시요! 테스트 컴파일 당시 본

대부분의 오류가 수정 되면서 정상적으로 컴파일이 실행되는 것을 볼 수 있습니다.!!!

 

드디어 우리의 마지막 여정이 다가오고 있습니다.