본문 바로가기
OPEN 소스

새로운 비트코인(알트코인) 제작을 위한 완벽가이드

본문

아직 가이드 대로 직접 만들어보진 않아서 완벽한 가이드인지는 모르겠지만
비트코인 관련 공부하다가 번역기 반, 어설픈 의역 반으로 올려봅니다

원제 : Complete Guide on How to Create a New Alt Coin
출처 : https://bitcointalk.org/index.php?topic=225690.0

저기 밖에 수많은 쓰레기 코인이 널려있어서 나는 새로운 알트코인 만드는 법을 가르쳐주기위해 이 코스를 만들기로 결정했다.
그것은 아주 쉽고, 나같은 경우에는 보통 2시간 내에 만들 수 있다.

C++프로그래밍에 대한 기본적인 지식이 필요하다. 전문가일 필요는 없지만, 기본적인 컴파일링 에러와 이를 수정하는 방법은 이해해야 한다.

다음 단계를 따라서 새 알트코인을 만들어본다 :

준비단계 :

라이트코인의 전체 소스코드를 다운로드 한다.
github에서 찾을 수 있다.
구글에서 검색하면 찾을 수 있다.

만약에 윈도우를 사용한다면, 이 스레드의 단계를 따른다 :
https://bitcointalk.org/index.php?topic=149479.0

환경 및 라이브러리를 설정하고 라이트코인을 컴파일 한다.
컴파일 할 때(그리고 실행할 때) 성공하면, 환경 설정이 잘 된 것이다.

코인설계 :

이제 코딩을 하기전에 환경을 설정했으므로, 코인을 설계해야 한다.
이는 간단한 수학계산이지만, 코딩의 매개변수가 필요하다.

기본적으로 원하는 것을 결정해야 한다.

  • 코인의 이름.
    우리의 예제에서 Abc coin이라고 부르자.
    또한, 기호를 경정하고, 우리는 이것을 "ABC"라고 부른다.

  • 블록타임.
    블록 간의 평균 목표시간이다. 보통 15초에서 2분 사이로 설정한다.
    원하는 경우 비트코인과 같이 10분을 할 수도 있지만 너무 길다.

  • difficulty retarget time
    이것은 심각한 instamine 문제를 일으킬 수 있기 때문에 중요하다.
    보통 1시간에서 1일 사이다.
    (diff retarget time)/(block time)은 블록의 수를 알려준다.
    이것은 고려해야 할 중요한 매개변수다.

  • 블록 당 초기 코인
    보통 2 ~ 100으로 설정된다. 원하는 것을 설정하면 된다.
    또한 블록 수를 기준으로 블록 당 코인을 만들 수 도 있고 무작위로 (JKC/LKY 등) 코인을 만들 수도 있다.

  • 블록 당 코인이 반으로 줄어드는 기간
    보통 6개월에서 3년이다. 원하는 것을 설정하면 된다.

  • 포트(2개)
    연결 포트와 RPC 포트가 필요하다.
    공통 앱에서 사용되지 않는 것을 선택한다.
    구글에서 특정포트 사용에 대해서 검색할 수 있다.

초기 난이도 등 조정할 수 있는 몇가지 다른 것들이 있지만, 일반적으로 나는 이것들을 신경쓰고싶지 않다.

이제 이러한 매개변수가 정의되면, 한가지 중요한 점은 1달, 1년 등에서 생성된 블록/코인 수를 계산하고 총 동전이 생성된다는 것이다.

이것은 코인의 전반적인 작동방식을 알려주고 위의 매개변수를 다시 조정할 수 있다.

코드변경 부분 :

시작하기 전에 Litecoin의 전체 디렉토리를 Abccoin으로 복사한다.
그런 다음 Abccoin에서 코드를 수정한다.

코드를 변경하려면 다음 단계를 따른다 :

#1. Abccoin / src dir에서 "litecoin"을 검색하고 대부분을 "abccoin"으로 변경한다.
대소 문자를 구별하여 교체해야 할 수도 있다.
모두를 대체 할 필요는 없지만 대부분을 교체해야 한다.
smallchange 코드를 참조하려면 먼저 필요한 변경 사항을 https://github.com/bfroemel/smallchange/commit/947a0fafd8d033f6f0960c4ff0748f76a3d58326 에 문의한다.

참고 : smallchange 1 차 커밋에는 아래에서 개략적으로 설명 할 많은 변경 사항이 포함되어 있지 않지만 변경해야 할 사항에 대한 좋은 참조이다.

#2. Abccoin / src dir에서 "LTC"에 대한 검색을 수행하고 "ABC"로 변경한다.

#3. 포트를 변경한다 : 동전 디자인에서 정의한 포트를 사용하고 다음 파일을 변경한다 :

  • 연결 포트 : protocol.h 및 init.cpp
  • rpc 포트 : bitcoinrpc.cpp 및 init.cpp

#4. main.cpp에서 매개 변수를 변경한다.

  • 블록 값 (GetBlockValue ()에서)
  • 블록 시간 (GetBlockValue () 직후)
  • diff retarget time (GetBlockValue () 직후)
  • instmine을 피하기 위해 diff retarget 스케일을 조정한다 (GetNextWorkRequired ()에서).

마지막 항목은 Luckycoin 코드를 참조한다. 그러면 어떻게 수행되는지 볼 수 있다.
블록 내의 임의의 코인 값에 대해서는 JKC 및 Luckycoin 코드의 GetBlockValue () 함수를 참조한다.

#5. 코인 디자인에 따라 main.h의 값을 조정한다 :

  • max coin count
  • dPriority

#6. transactionrecord.h에 ​​트랜잭션 확인 수를 변경한다 (3 확인 트랜잭션 등을 원할 경우).
또한 main.h / cpp에서 채굴 된 블록의 성숙 시간에 영향을주는 COINBASE_MATURITY를 변경한다.

#7. 제네시스 블록을 만든다. 어떤 사람들은 거기에 머물러 있지만 정말 쉽다.

  • 내부에서 LoadBlockIndex () 함수를 찾는다 :
    • 최근 뉴스 단계로의 역설 (pszTimestamp).
    • 최신 유닉스 시간을 얻고 (google을 사용하여) block.nTime을 입력한다.
    • nNonce를 설정한다 (실제로는 중요하지 않음).
      당신은 그것을 사용하고 싶다면 testnet에 대해서도 time / nonce를 변경할 수 있다.

완료되면 저장한다.
이제 제네시스 블록은 해쉬 체크와 머클 루트 체크와 일치하지 않을 것이다.

처음으로 컴파일 된 코드 (데몬 또는 qt)를 실행하면 "assertion failed"라고 표시된다. 프로그램을 종료하고 config.dir (AppData / Roaming 아래)으로 이동하여 debug.log를 열고 "block.GetHash () ="다음에 해시를 가져 와서 main.cpp, hashGenesisBlock의 beginnig에 복사하여 붙여 넣는다. 또한 같은 로그 파일에서 Merkle 루트를 가져 와서 LoadBlockIndex ()에서 다음 코드의 ... 위치에 붙여 넣는다.

Quote
###############################################
assert(block.hashMerkleRoot == uint256("0x..."));
###############################################

코드를 재 컴파일하고 제네시스 블록을 만들었다!

그런데, "txNew.vout [0] .nValue ="를 정의한 블록 당 코인으로 변경하는 것을 잊으면 안된다. 50으로 남겨 두지 않아도 된다. 블록 당 코인과 일관성을 유지한다. (그전에 해시 및 m- root를 조절한다. 그렇지 않으면 다시 변경된다).

또한 알림 / 체크 포인트 키를 변경해야한다. 이것은 동전 유형 및 버전에 따라 다르며 main.cpp, main.h, alert.cpp 및 checkpoint.cpp에서 찾을 수 있다.

#8. base58.h에 올바른 주소 시작 문자를 설정한다. 원하는 letter을 찾으려면 시행 착오를 원할 수 있다. letter 위치를 정확히 계산할 수 없다.
-> List of address prefixes : https://en.bitcoin.it/wiki/List_of_address_prefixes

sendcoinsentry.cpp에서 해당하는 "starts with"로 변경한다.
signverifymessagedialog.cpp의 예를 변경한다.

#9. 체크 포인트 : 처음 체크 포인트 검사를 사용하지 않으려는 경우 그렇지 않으면 멈추게된다.
여러 가지 방법으로 사용 중지 할 수 있다. 나의 방법은 :

  • open checkpoints.cpp
  • 함수가 3 개 있고, normal retrn을 주석 처리하고, 다음과 같이 true, 0 또는 null 중 하나를 반환한다.
    다음과 같이 :

Quote
###############################################
bool CheckBlock(int nHeight, const uint256& hash)
{
if (fTestNet) return true; // Testnet has no checkpoints

    MapCheckpoints::const_iterator i = mapCheckpoints.find(nHeight);
    if (i == mapCheckpoints.end()) return true;
    // return hash == i->second;
  return true;
}

int GetTotalBlocksEstimate()
{
    if (fTestNet) return 0;

    // return mapCheckpoints.rbegin()->first;
  return 0;
}

CBlockIndex* GetLastCheckpoint(const std::map<uint256, CBlockIndex*>& mapBlockIndex)
{
    if (fTestNet) return NULL;

    BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints)
    {
        const uint256& hash = i.second;
        std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash);
        if (t != mapBlockIndex.end())
            // return t->second;
        return NULL;
    }
    return NULL;
}

###############################################

이제는 사용할 수 없다. 모든 것이 작동하면 50 개의 블록을 사전 예약하고 일부 해시를 추출하여 검사 점에 넣고 이러한 기능을 다시 활성화 할 수 있다.

그게 끝이다. 끝까지 컴파일 할 필요가 없다. 컴파일 오류가 많이 발생할 수 있다.

아, 아이콘 :

#10. 코인에 대한 멋진 이미지를 찾은 다음 256x256 아이콘 / 이미지를 만든다. src / qt / res / icons에서 대체 할 5 개의 이미지가 있고 src / qt / res / images에서 1을 대체 (스플래시) 할 수 있다.

#11. 또한 Qt / 양식의 파일을 편집한다. 이 파일들은 도움 등을위한 파일이며, 멋지게 보이게하고, litecoin 것보다 코인 이름을 표시한다.

#12. 이제 편집을 위해 :

  • qt : abccoin에서 .pro 파일을 수정하고에서 make 프로세스를 수행한다.
    https://bitcointalk.org/index.php?topic=149479.0

  • 데몬 : 시스템의 makefile 중 하나를 업데이트한다. 나의 경우에는 mingw32 쉘을 사용한다.

이제 끝이다, 짜잔, 당신은 이제 당신의 알트코인을 가지고있다!

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

페이지 정보

최고관리자 작성일18-01-13 14:00 조회408회 댓글0건

첨부파일

댓글목록

등록된 댓글이 없습니다.

OPEN 소스 목록

게시물 검색

사이트 정보

  • 회사명 주인있소 / 대표 소담
  • 주소 강원도 속초시
  • 사업자 등록번호 123-45-67890
  • 전화 010-2026-0626 / 팩스 없음
  • 통신판매업신고번호 제 OO구 - 123호
  • 개인정보관리책임자 정보책임자명

고객센터

상단으로