본문으로 바로가기

이전 포스팅에서 이더리움 기반의 ERC20 토큰을 만드는 방법에 대해서 알아보았습니다. 

가장 간단한 방법으로 ERC20 토큰을 생성할수 있지만, 이번에는 비트코인 소스를 변경하여 채굴이 가능한 알트코인을 만드는 방법에 대해서 알아보겠습니다. 

소스기반으로 생성이 되기 때문에 만들고자 하는 코인의 설정값이나 알고리즘등을 변경하여 자신만의 최적화된 코인을 생성할수 있습니다. 

기반이 되는 소스는 라이트코인이며, 라이트코인 자체가 비트코인 소스를 기반으로 수정되어 만들어진 알트코인이며, 현재 많은 알트코인은 이처럼 라이트코인을 기반으로 변경하여 만들어지고 있습니다.


먼저 라이트코인 소스를 빌드하기 위한 다음과 같이 빌드환경을 구축하고 라이트코인 소스를 가져옵니다.


// System update
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove
// Install the dependencies
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev
sudo apt-get install bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev
sudo apt-get install libboost-program-options-dev libboost-test-dev libboost-thread-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev
sudo apt-get install libqrencode-dev protobuf-compiler miniupnpc
// To install the deprecated version of Berkeley DB 4.8
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
git clone -b 0.8 https://github.com/litecoin-project/litecoin


여기까지 하여 빌드환경이 제대로 구축되었는지 먼저 빌드확인을 하도록 하겠습니다.

이상태에서 빌드를 하게되면 빌드에러가 발생하기 때문에 하기 코드의 한부분의 수정이 필요합니다.


rpcrawtransaction.cpp : 242번 라인을 다음과 같이 수정합니다.


const CScriptID& hash = boost::get<const CScriptID&>(address);

   => const CScriptID& hash = boost::get<CScriptID>(address);


수정후에 다음과 같이 src 폴더에서 다음과 같이 빌드를 합니다. -j8 옵션은 각자 CPU core에 맞게 설정을 하면 됩니다.


$ make -j8 -f makefile.unix


빌드가 정상적으로 수행되면 다음과 같이 src 폴더에 litecoind 가 생성됩니다.


ihpark92@ubuntu:~/litecoin/src$ ls
addrman.cpp db.h makefile.unix scrypt-sse2.cpp
addrman.h hash.cpp mruset.h scrypt.cpp
alert.cpp hash.h net.cpp scrypt.h
alert.h init.cpp net.h serialize.h
allocators.h init.h netbase.cpp sync.cpp
base58.h json netbase.h sync.h
bignum.h key.cpp noui.cpp test
bitcoinrpc.cpp key.h obj threadsafety.h
bitcoinrpc.h keystore.cpp obj-test txdb.cpp
bloom.cpp keystore.h protocol.cpp txdb.h
bloom.h leveldb protocol.h ui_interface.h
checkpoints.cpp leveldb.cpp qt uint256.h
checkpoints.h leveldb.h rpcblockchain.cpp util.cpp
checkqueue.h limitedmap.h rpcdump.cpp util.h
clientversion.h litecoind rpcmining.cpp version.cpp
coincontrol.h main.cpp rpcnet.cpp version.h
compat.h main.h rpcrawtransaction.cpp wallet.cpp
crypter.cpp makefile.linux-mingw rpcwallet.cpp wallet.h
crypter.h makefile.mingw script.cpp walletdb.cpp
db.cpp makefile.osx script.h walletdb.h
ihpark92@ubuntu:~/litecoin/src$


빌드환경 설정이 완료되었으면 소스변경은 다음과 같은 순서로 진행이 됩니다


1. litecoin 이름을 만들고자 하는 알트코인명으로 변경

2. P2P 포트와 RPC 포트 변경

3. 생성되는 주소의 접미부를 변경 (litecoin을 의미하는 'L' 에서 원하는 접미부로 변경)

4. alert system 동작을 위한 mainnet, testnet, genesis block의 private key 값 변경

5. message magic 값 변경

6. 하드코딩되어있는 DNS seed 주소를 삭제 또는 변경

7. 채굴시 보상코인의 갯수, 난이도 재설정 주기, 블록생성시간, 전체 발생코인 갯수를 변경

8. Genesis block 의 설정값 변경 : Timestamp, Nonce, 머클루트, 블럭해쉬


다음 포스팅에서 이어서 위의  순서로 진행을 하도록 하겠습니다.


'블록체인 > 암호화폐' 카테고리의 다른 글

알트코인 마이닝 하기  (2) 2018.04.18
비트코인 소스 기반의 알트코인 만들기 - 2  (21) 2018.04.18