본문 바로가기

나만의 코인 만들기

나만의 코인 만들기 6단계 본격적으로 소스코드 수정해보기

잘 쉬셨나요, 포스팅이 늦어서 죄송합니다. 만든 코인으로 이것 저것 테스트 해 보느라고 여전히 바쁜 하루를 보내고 있는 1인 입니다. 최대한 쉽게 설명하려면 그만큼 더 잘 알아야 겠기에 여러가지로 오픈 소스를 점검하며 확인중에 있습니다.

자. 그러면 오늘부터 본격적으로 소스코드를 수정해 보는 시간 입니다.

 

지난번 강좌에서는 라이트코인의 오픈 소스를 다운 받았고, 이름을 변경하는 것 까지 해봤습니다. 오늘 부터는 포트를 바꾸고 본격적으로 다른 소스 코드들수정할 건데요, 먼저 공지할 사항이 있습니다. lingcoin을 ringcoin으로 변경 했습니다. 집사람이 자기 이름으로 코인을 만들어 달라고 하길래 집사람 이니셜인 레이코의 r을 생각하니 갑자기 반지의 ring도 생각나더군요.... lingcoin은 알수없는 채굴자 4명이 진입해서 작업을 방해하는 바람에 현재 상태를 보고 있는 중입니다.

 

어차피 lingcoin으로 ringcoin을 만드는 방법도 설명드리려 했기때문에 두종류의 코인을 만들어둘 필요도 있었고요.

자. 우리가 만들어둔 기존의코인 가지고 계시죠? 거기서부터 이어서 작업 하겠습니다.

 

먼저 빈 폴더를 만들고 그안에 라이트 코인 소스를 준비했습니다. 바로 그 빈 폴더를 클릭하고 마우스 우클릭을 진행 합니다. 

 

그리고 터미널을 열어 주세요!!!!

이런식으로 코인 디렉토리 위에 터미널을 열면 에러를 미연에 방지할 수 있는 팁이라는거 제가 전에 설명 드렸죠?

 

우선 우리는 RPC 포트와 p2p포트를 변경 할 건데요. 상세하게 포트들이 어느 파일에 저장되어 있는지는 다음강좌에 설명 하겠습니다. 여기서 우리는 파일을 클릭해서 수정하는 방법 보다 좀더 편리하게 직접 또 이름을 바꾼 것 처럼 명령어를 이용해 포트를 변경합니다.

 

파일 수정 준비작업 P2P 포트와 RPC 포트 변경

 find . -type f -print0 | xargs -0 sed -i 's/9332/2466/g'
 find . -type f -print0 | xargs -0 sed -i 's/9333/3925/g'

 

저는 이렇게 한번 바꿔 보도록 하겠습니다. 한줄은 RPC포트, 한줄은 P2P포트 이며 라이트코인에는 9332와 9333이 입력 되어 있는데요. 이 포트들을 각각 2466과 3925로 바꾸라는 명령어 입니다. 이번에도 숫자 변경 귀찮으시면 그냥 직접 복사 붙여넣기 하시면 됩니다!!!!^^충돌 생긴다고 바꾸는 분들 계신데... 안바꿔도 지장은 없습니다.

무수하게 많은 사람들이 이 포트를 이용하지 않는다음에는요.

 

참 쉽죠?

명령어 두줄 복사해서 넣으면 포트 바꾸기 끝납니다!!!!!

 

 

이렇게 마지막줄에 엔터 한두번 쳐주는거 꼭 잊지마시구요. 변경은 되는데 포트가 하나만 바뀌기도 해요! 그래도 실행에 지장은 없습니다만 내가 디자인한 코인의 포트도 제대로 안바뀌었다면 기분 나쁘겠죠^^?

 

자 이제 이렇게 포트변경은 끝났고, 이번에는 다른 소스코드를 수정합니다. 이 단계부터가 조금 복잡하니 잘 따라 해 주세요!!!!!

 

 

코인 폴더 바로 상위 폴더에, 명령어를 몇줄 입력 해야 합니다. 물론 이번에도 복붙 서비스 준비 되어 있습니다.

 

 

openssl ecparam -genkey -name secp256k1 -out alertkey.pem
openssl ec -in alertkey.pem -text > alertkey.hex
openssl ecparam -genkey -name secp256k1 -out testnetalert.pem
openssl ec -in testnetalert.pem -text > testnetalert.hex
openssl ecparam -genkey -name secp256k1 -out genesiscoinbase.pem
openssl ec -in testnetalert.pem -text > genesiscoinbase.hex

 

 

한줄씩 따로 하셔도 되는데 전부 그냥 긁어서 복사해 주세요. 정신건강에 이롭습니다. 요거 그대로 다 복사해서 또 그대로 붙여넣으면 되는데, SRC, 혹은 하위 폴더에 붙여넣지 않도록 조심해 주십시요. 복붙하면 몇개의 파일이 추가 되는데 나중에 찾아서 지울거에요 ^^

 

마지막에 꼭 엔터 한번 더 쳐주세요. 이거 습관입니다. 정신건강에 이로워요... ㅋㅋㅋ

저렇게 여섯개의 파일이 코인 폴더 옆에 잘 안착(!)했습니다.

 

 

저렇게 형성이 안되면 다른데다 복사하신거거나.. 제가말씀드린대로 빈폴더를 하나 더 안만들었거나... ㅋㅋㅋㅋ

제가 말씀 드렸죠? 빈폴더 하나 더 만드는거 어려운거 아니니 오픈소스 다운로드 작업 전 꼭 준비해 주세요.

 

 

이제부터 우리는alert.cpp파일을 수정합니다.

 

 

파일 수정 1단계 alert cpp의 메인넷과 테스트 넷의 alert key 값 바꾸기!

 

코인 폴더 => SRC 안에 alert.cpp가 있습니다. 물론 이제부터 우리가 수정할 파일들 모두 src안에 있습니다. 이 폴더의 구성은 매우 중요하므로 우리가 변경한 파일을 기억해 두는 것이 좋습니다. 나중에 오픈 소스 형태로 배포할 때 제가 그렇게 하라고 한 이유를 또 한번 알게 되실 겁니다^^

 

키 값을 확인하는 방법은 두가지가 있습니다. 

하나는 생성된 alert파일을 더블클릭 해서 키값을 확인 하는 방법. 하나는 명령어를 터미널에 입력해서 직접 키값을 확인하는 방법 입니다. 둘다 말씀 드립니다. 먼저 alertkey.hex파일을 더블클릭 합니다.

 

더블클릭 하면 위와같이 숫자와 영문으로 구성된 키값들을 볼수가 있는데요, 우리가 사용 할 것은 pub값입니다.

pub 값을 복사해서 텍스트 문서나 워드 문서 하나 열고, 붙여넣기 하면 됩니다. 저는 여기서 보여 드릴게요.

 

 

04:9e:c1:d8:c9:99:66:ed:c8:b0:53:b7:ee:39:b2:
    83:73:0f:22:8b:b9:09:00:09:ca:83:76:fd:fb:9d:
    ae:bb:ab:e4:c4:03:a8:40:7c:25:c2:c5:06:14:e4:
    e5:d7:35:65:38:9a:c4:17:c3:69:20:f3:24:29:be:
    45:ff:3d:6b:39

 

먼저 이렇게 붙여넣고':'를 모두 지웁니다. 귀찮은 작업이지만 꼭해야 하는 중요한 작업입니다.

':'를 다 지우면 이렇게 하나의 문자열이 됩니다. 우리가 사용하는 문자열 입니다. 간혹 숫자를 잘못지웠거나, 

':'하나 못지우는 분이 계시는데요, 천천히 잘 작업해 주셔야 합니다. 조급해 하지 마시구요^^

 

익숙해지면 속도 빨라집니다.

 

다 지우고 나면 

 

049ec1d8c99966edc8b053b7ee39b283730f228bb9090009ca8376fdfb9daebbabe4c403a8407c25c2c50614e4e5d73565389ac417c36920f32429be45ff3d6b39

이렇게 하나의 배열로 문자가 완성이 됩니다.

 

자, 이 값을 가지고, src 폴더의 alert.cpp파일을 더블 클릭해서  엽니다.

바로 이파일 입니다. 더블 클릭해서 열면,

 

 

 

이런식으로 static const char 값이 두개가 있고, Mainkey 가 방금 우리가 alertkey.hex로 확인한 메인 키 값입니다.

 

터미널에서 명령어로 키값을 확인하는 방법은 쉽습니다.아까 파일 6개가 만들어진 곳에 터미널을 그대로 열고

cat alertkey.hex

를 그대로 복사해서 붙여넣기 하면 됩니다. 

그러면 터미널에서도 이 키값이 보여지는데요, 

 

이 값들중 pub 값을 복사해서 빈문서 하나 열고 거기 붙여넣기 한다음  쓰면 됩니다!!!!!

 

메인넷 작업중이므로 위쪽의 메인넷 키값을 그대로 지우고 복사 해 넣겠습니다.

중간쯤에 가져다 대고 더블클릭 하면, 기값만 전부 선택이 되니까 거기다 붙여넣기를 그대로 하시면 되겠습니다.

익숙하지 않다면 키값을 천천히 다 지우고 붙여넣기 하면 됩니다.

 

 

 

더블 클릭해서

 

 

 

del키 한번 누르고

 

다시 붙여넣기로 끝납니다. 

 

메인넷 키값 바꿔두고, 이제 테스트 넷 키값을 바꿉니다.

 

마찬가지로 테스트넷 키값도, 아까 여섯개의 생성된 파일을 더블클릭하던지 터미널에 명령어를 입력해서확인 할 수 있습니다. 테스트넷 키값을 확인하는 명령어는 

cat testnetalert.hex

입니다. 그대로 복사하기 붙여넣기

 

pub값을 그대로 복사해서 빈문서 하나 열고 똑같이 작업 하면 됩니다!!!

 

 

04:ec:b6:fb:e3:75:94:73:10:ce:8b:35:0c:7b:b7:
    ed:34:24:f8:17:70:fd:60:2b:ff:2a:f7:d2:2d:04:
    09:e3:04:8d:b0:d6:93:f8:68:25:40:f0:31:52:21:
    a3:61:98:88:53:34:5d:13:5a:a6:6d:3d:17:88:4e:
    89:83:a2:87:ad

 

 

04ecb6fbe375947310ce8b350c7bb7ed3424f81770fd602bff2af7d22d0409e3048db0d693f8682540f0315221a361988853345d135aa66d3d17884e8983a287ad

 

저는 이 값이 나왔습니다. 방향키 두번 백스페이스 키 한번 ...ㅡㅡ;;; 이거 진짜 도닦는 기분이 듭니다. 이작업 할 때요.

 

 

 

또 복사하고 이번에는 아래쪽 테스트넷 키값에 붙여넣기 합니다!!!!

수고 하셨습니다. 정말 짜증나죠? 이거 바꾸는거 처음에는 좀 익숙하지가 않습니다. 

그러나 나중에는 2~3분이면 둘다 합쳐서 작업 끝낼 수 있을 정도가 됩니다.

 

어쨌든 틀리지 않게 하나 하나 작업해서 메인넷과테스트 넷의 alertkey값을 모두 바꾸셔야 합니다. 다른 블로거들이나 유투브 보면 이작업 두개 다 안하거나 생략 하는 분들도 있습니다.

그리고 나는 안해도 너는 해. 이런식으로 넘어가죠 ㅡㅡ; 한대 때리고 싶습니다.

 

어쨌든 이제 alert.cpp파일을 변경 했습니다.

잘 바뀌었는지 마지막까지 확인하고 저장 해 주십시요!!!!

 

이제 base58.h를 수정할 차례 입니다. akert.key값 바꾸는 수고에 비하면 이건 정말 쉬워요.

 

 

파일 수정 2단계 : base58.h 파일에서 내가 설정한 이름으로 캐피탈 문자 바꾸기!

 

이번에 src폴더가 어딨는지 설명은 생략 합니다. 아직도 src 폴더가 어딨는지 모르는 단계라면  저한테 의뢰 하시면 저렴하게 만들어 드립니다 ㅡㅡ;; 제가 어떻게 가르쳐 드릴 방법이 없네요.

 

 

surch 메뉴에서 go line 을 선택하면 

 

이렇게 줄번호 입력 하라는 칸이 나옵니다. 이제 이 설명도 생략 하겠습니다^^

제가 라인넘버~~~라고 시작하면 여러분은 이 작업을 미리 해두시고 제 글을 읽으면 되겠습니다.

 

저 입력란에다가, 272를 입력하세요. 그러면 대략 에디터 프로그램에 따라 한두줄 차이는 있지만

 

 

 

 

 

이렇게 숫자 4개와 주석으로 //라이트코인 주소는 캐피탈 넘버 48을 썼다. 라고 남겨놓은 라인을 볼 수 있습니다.

 

48을 여러분이 정한 퍼브키 어드레스 값으로 바꾸어야 합니다.

 

그거 어디서 확인하냐구요? 링크 던져드립니다!

 

List of address prefixes - Bitcoin Wiki

 

List of address prefixes - Bitcoin Wiki

Blockchain-based currencies use encoded strings, which are in a Base58Check encoding with the exception of Bech32 encodings. The encoding includes a prefix (traditionally a single version byte), which affects the leading symbol(s) in the encoded result. Th

en.bitcoin.it

이 주소에서 여러분이 원하는 주소 키값을 확인 할 수 있습니다. 대문자 소문자를 구분 합니다.

여기서 다른블로거나 유투버는 하지 않았던 부연 설명을 좀 드릴게요. 링크를 열어 보시면 숫자, 문자와 소문자 대문자가 있는 것들이 보입니다. 우리는 대 소 문자를 구분해서입력 해야 합니다. 내가 RING코인을 만들었는데 대문자인지 소문자인지 모르겠다 하시는 분들은 SRC폴더에 아까 테스트 컴파일 작업하면서 생성된 coind를 확인하면 됩니다. 거기서 첫번째 문자가 여러분의 퍼브키 값입니다.

 

저는 ring coin을 만들 겁니다!!!

 

src 폴더에 ringcoind 라고 소문자가 있습니다.

이걸 보고 여러분의 퍼브 키값이 소문자인지 대문자인지 확인 하는거죠!!!! 그전에는요? 물론 알 수 있습니다. 처음 우리가 이름을 바꿀 때, 

find . -type f -print0 | xargs -0 sed -i 's/litecoin/ringcoin/g'
find . -type f -print0 | xargs -0 sed -i 's/Litecoin/Ringicoin/g'
find . -type f -print0 | xargs -0 sed -i 's/LiteCoin/RingCoin/g'
find . -type f -print0 | xargs -0 sed -i 's/LITECOIN/RINGCOIN/g'
find . -type f -print0 | xargs -0 sed -i 's/LTC/RING/g'

이렇게 다섯줄을 복사해서 붙여 넣었습니다. 이중에 소문자로만 된 litecoin!즉 저기서 우리 코인 이름이 결정되는 것 입니다. 저 값을 대문자로 바꾸고 싶다면, 명령어를 그대로 실행해서

find . -type f -print0 | xargs -0 sed -i 's/r/R/g'

로 바꾸거나 

find . -type f -print0 | xargs -0 sed -i 's/ringcoin/RINGCOIN/g'

 

명령어를 터미널에 입력하면 됩니다. 하지만 처음에 이름을 잘 정하는게 역시 같은 작업을 반복 안하는 요령 입니다.

이런 내용은 어떤 블로거들도 언급하지 않습니다.

왜냐하면 이런거 다 유료강좌에서 써먹는 내용이거던요. 즈그들 밥줄입니다.

제가 이내용을 공개하면 틀림없이 개 잘났네 ㄱ ㅅ ㄲ 라던가 뭐하러 그런짓 해?요즘 이더리움토큰이 대세야!

이지랄 하면서 샤방 치는 놈들 있을 겁니다. 그런 놈들이 바로 그걸로 벌어먹고 사는 넘덜 입니다.

 

 

자 이제 저는 r이라는 것을 확인 했으므로 표에서 소문자 r이 몇번인지 찾으면 되겠습니다.

 

위에 큰 표는 버리고, 아랫쪽의 좁은 표에 여러분이 원하는 넘버가 있을것 입니다.

 

저는 122,123

124를 사용 할 수 있다고 나옵니다.

 

그럼 124로 수정하겠습니다.

나머지 test adress 111과 196은 각각 117과 191으로 잡겠습니다.

 

키값을 설정할때 한가지 주의할 사항이 또 있습니다!!!바로 키값을 너무 크게 변화 하지 말라는 것 입니다.1~5정도 차이나게 바꾸면 됩니다. 그러나 너무 크게 변화하면, 컴파일시 에러나 오류메세지를 보게 될 것 입니다. 우리는 에러나 오류메세지는원하지 않으므로 정석대로 그에 맞는 키값을 설정합시다.

 

 

주석으로 남겨진 대문자 L도 소문자 r로 변경 했습니다.

 

 

두번째의 스크립트 어드레스는 안바꾸는게 좋지만 바꾸겠다면 3에서 7정도의 변화도에서 선택해서 바꿔 주면 좋습니다.

 

 

자!!! 이제 base 58h를 수정 했습니다.

 

지금까지 우리는 rawtransaction.cpp,alert.cpp,base58h를 수정 했습니다. 이제 net cpp를 수정 하겠습니다. 원래 한번에 설명 하려고 했는데, 너무 길면 지루해 하실까봐 net cpp수정은 다음 강좌에서 말씀 드리겠습니다.

 

다른 블로거들은 이런 설명 전혀 없을 겁니다. 제 블로그는 코인만들기의 완결판이자 치트키나 마찬가지 입니다. 공개하면 업자들이 욕할만한 내용도많이 있습니다. 여기까지 잘 따라오셨으면 절반은 오신 겁니다.