Lien : https://www.hackster.io/pjdecarlo/how-to-make-a-cryptocurrency-using-litecoin-v0-15-source-fb5e82 Distribution de travail : Lubuntu 18.04
util01@station01:~$ sudo apt-get update && sudo apt-get upgrade
util01@station01:~$ sudo apt-get install build-essential git libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb-dev libdb++-dev libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
util01@station01:~$ sudo add-apt-repository ppa:bitcoin/bitcoin util01@station01:~$ sudo apt-get update util01@station01:~$ sudo apt-get install -y libdb4.8-dev libdb4.8++-dev
util01@station01:~$ mkdir CUBECOIN util01@station01:~$ cd CUBECOIN/ util01@station01:~/CUBECOIN$
util01@station01:~/CUBECOIN$ git clone https://github.com/litecoin-project/litecoin.git cubecoin
util01@station01:~/CUBECOIN$ cd cubecoin/ util01@station01:~/CUBECOIN/cubecoin$
util01@station01:~/CUBECOIN/litecoin$ git checkout tags/v0.15.1 util01@station01:~/CUBECOIN/litecoin$ git checkout -b v0.15.1
util01@station01:~/CUBECOIN/cubecoin$ git checkout -b cubecoin
util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/Litecoin/Cubecoin/g" {} \; util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/LiteCoin/CubeCoin/g" {} \; util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/LTC/CC/g" {} \; util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/litecoin/cubecoin/g" {} \; util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/litecoind/cubecoind/g" {} \;
util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/lites/cubes/g" {} \; util01@station01:~/CUBECOIN/cubecoin$ find ./ -type f -readable -writable -exec sed -i "s/photons/atoms/g" {} \;
http://www.asciitable.com/
c = 63 u = 75 b = 62 e = 65
Ouvrir :
src/chainparams.cpp
**Chercher :
pchMessageStart[0] = 0xfb; pchMessageStart[1] = 0xc0; pchMessageStart[2] = 0xb6; pchMessageStart[3] = 0xdb;
Remplacer par :
pchMessageStart[0] = 0x63; pchMessageStart[1] = 0x75; pchMessageStart[2] = 0x62; pchMessageStart[3] = 0x65;
https://en.bitcoin.it/wiki/List_of_address_prefixes
Decimal version Leading symbol Address length 28 C 34
Ouvrir :
src/chainparams.cpp
Chercher :
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,48); base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5); base58Prefixes[SCRIPT_ADDRESS2] = std::vector<unsigned char>(1,50); base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,176); base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E}; base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};
Remplacer par :
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,28); base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5); base58Prefixes[SCRIPT_ADDRESS2] = std::vector<unsigned char>(1,50); base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,28); base58Prefixes[EXT_PUBLIC_KEY] = {0xff, 0x88, 0xB2, 0x1E}; base58Prefixes[EXT_SECRET_KEY] = {0xff, 0x88, 0xAD, 0xE4};
util01@station01:~/CUBECOIN/cubecoin$ cd .. util01@station01:~/CUBECOIN$
util01@station01:~/CUBECOIN$ sudo apt install python-pip util01@station01:~/CUBECOIN$ sudo pip install scrypt construct==2.5.2
util01@station01:~/CUBECOIN$ git clone https://github.com/lhartikk/GenesisH0.git
util01@station01:~/CUBECOIN$ cd GenesisH0/ util01@station01:~/CUBECOIN/GenesisH0$
util01@station01:~/CUBECOIN/GenesisH0$ date +%s 1594148555
util01@station01:~/CUBECOIN/GenesisH0$ python genesis.py -a scrypt -z "Blockchain for CubeCoin" -p "040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9" -t 1594148555 -n 2084524493
04ffff001d010417426c6f636b636861696e20666f722043756265436f696e algorithm: scrypt merkle hash: 75c043ef2b32fdb1625beb798e10f03561a07492809fc5021865fe342365c25f pszTimestamp: Blockchain for CubeCoin pubkey: 040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9 time: 1594148555 bits: 0x1e0ffff0 Searching for genesis hash.. 2539.0 hash/s, estimate: 469.9 hgenesis hash found! nonce: 2085137478 genesis hash: ef6cdb4ebe56effe9e0292470d3d4f42ac53f7e86091883f721d1f6838cba6f5
util01@station01:~/CUBECOIN/GenesisH0$ python genesis.py -a scrypt -z "Blockchain for CubeCoin" -p "040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9" -t 1594148555 -n 2085137478
04ffff001d010417426c6f636b636861696e20666f722043756265436f696e algorithm: scrypt merkle hash: 75c043ef2b32fdb1625beb798e10f03561a07492809fc5021865fe342365c25f pszTimestamp: Blockchain for CubeCoin pubkey: 040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9 time: 1594148555 bits: 0x1e0ffff0 Searching for genesis hash.. genesis hash found! nonce: 2085137478 genesis hash: ef6cdb4ebe56effe9e0292470d3d4f42ac53f7e86091883f721d1f6838cba6f5
Ouvrir :
src/chainparams.cpp
**Chercher :
const char* pszTimestamp = "NY Times 05/Oct/2011 Steve Jobs, Apple’s Visionary, Dies at 56";
Remplacer par :
const char* pszTimestamp = "Blockchain for CubeCoin";
**Chercher :
genesis = CreateGenesisBlock(1317972665, 2084524493, 0x1e0ffff0, 1, 50 * COIN);
Remplacer par :
genesis = CreateGenesisBlock(1594148555, 2085137478, 0x1e0ffff0, 1, 50 * COIN);
**Chercher :
assert(consensus.hashGenesisBlock == uint256S("0x12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2")); assert(genesis.hashMerkleRoot == uint256S("0x97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9"));
Remplace par :
assert(consensus.hashGenesisBlock == uint256S("0xef6cdb4ebe56effe9e0292470d3d4f42ac53f7e86091883f721d1f6838cba6f5")); assert(genesis.hashMerkleRoot == uint256S("0x75c043ef2b32fdb1625beb798e10f03561a07492809fc5021865fe342365c25f"));
Chercher :
# class CRegTestParams : public CChainParams genesis = CreateGenesisBlock( consensus.hashGenesisBlock = genesis.GetHash(); assert(consensus.hashGenesisBlock == uint256S(" assert(genesis.hashMerkleRoot == uint256S("
Remplace par :
genesis = CreateGenesisBlock(1594148555, 2085137478, 0x1e0ffff0, 1, 50 * COIN); consensus.hashGenesisBlock = genesis.GetHash(); assert(consensus.hashGenesisBlock == uint256S("0xef6cdb4ebe56effe9e0292470d3d4f42ac53f7e86091883f721d1f6838cba6f5")); assert(genesis.hashMerkleRoot == uint256S("0x75c043ef2b32fdb1625beb798e10f03561a07492809fc5021865fe342365c25f"));
**Chercher :
checkpointData = (CCheckpointData) { { { 1500, uint256S("0x841a2965955dd288cfa707a755d05a54e45f8bd476835ec9af4402a2b59a2967")}, { 4032, uint256S("0x9ce90e427198fc0ef05e5905ce3503725b80e26afd35a987965fd7e3d9cf0846")}, { 8064, uint256S("0xeb984353fc5190f210651f150c40b8a4bab9eeeff0b729fcb3987da694430d70")}, { 16128, uint256S("0x602edf1859b7f9a6af809f1d9b0e6cb66fdc1d4d9dcd7a4bec03e12a1ccd153d")}, { 23420, uint256S("0xd80fdf9ca81afd0bd2b2a90ac3a9fe547da58f2530ec874e978fce0b5101b507")}, { 50000, uint256S("0x69dc37eb029b68f075a5012dcc0419c127672adb4f3a32882b2b3e71d07a20a6")}, { 80000, uint256S("0x4fcb7c02f676a300503f49c764a89955a8f920b46a8cbecb4867182ecdb2e90a")}, {120000, uint256S("0xbd9d26924f05f6daa7f0155f32828ec89e8e29cee9e7121b026a7a3552ac6131")}, {161500, uint256S("0xdbe89880474f4bb4f75c227c77ba1cdc024991123b28b8418dbbf7798471ff43")}, {179620, uint256S("0x2ad9c65c990ac00426d18e446e0fd7be2ffa69e9a7dcb28358a50b2b78b9f709")}, {240000, uint256S("0x7140d1c4b4c2157ca217ee7636f24c9c73db39c4590c4e6eab2e3ea1555088aa")}, {383640, uint256S("0x2b6809f094a9215bafc65eb3f110a35127a34be94b7d0590a096c3f126c6f364")}, {409004, uint256S("0x487518d663d9f1fa08611d9395ad74d982b667fbdc0e77e9cf39b4f1355908a3")}, {456000, uint256S("0xbf34f71cc6366cd487930d06be22f897e34ca6a40501ac7d401be32456372004")}, {638902, uint256S("0x15238656e8ec63d28de29a8c75fcf3a5819afc953dcd9cc45cecc53baec74f38")}, {721000, uint256S("0x198a7b4de1df9478e2463bd99d75b714eab235a2e63e741641dc8a759a9840e5")}, } };
Remplacer par :
checkpointData = { { { 0, uint256S("0xef6cdb4ebe56effe9e0292470d3d4f42ac53f7e86091883f721d1f6838cba6f5")}, } };
**Chercher :
chainTxData = ChainTxData{ // Data as of block 59c9b9d3fec105bdc716d84caa7579503d5b05b73618d0bf2d5fa639f780a011 (height 1353397). 1516406833, // * UNIX timestamp of last known number of transactions 19831879, // * total number of transactions between genesis and that timestamp // (the tx=... number in the SetBestChain debug.log lines) 0.06 // * estimated number of transactions per second after that timestamp };
Remplacer par :
chainTxData = ChainTxData{ // Data as of block 59c9b9d3fec105bdc716d84caa7579503d5b05b73618d0bf2d5fa639f780a011 (height 1353397). 1594148555, // * UNIX timestamp of last known number of transactions 0, // * total number of transactions between genesis and that timestamp // (the tx=... number in the SetBestChain debug.log lines) 0.0 // * estimated number of transactions per second after that timestamp };
Ouvrir :
src/chainparams.cpp
**Chercher :
vSeeds.emplace_back("seed-a.cubecoin.loshan.co.uk", true); vSeeds.emplace_back("dnsseed.thrasher.io", true); vSeeds.emplace_back("dnsseed.cubecointools.com", true); vSeeds.emplace_back("dnsseed.cubecoinpool.org", true); vSeeds.emplace_back("dnsseed.koin-project.com", false);
Remplacer par :
vSeeds.emplace_back("dnsseed.cubeco.in");
Ouvrir :
src/chainparams.cpp
**Chercher :
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000002ee655bf00bf13b4cca");
Remplacer par :
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000000000000000");
util01@station01:~/CUBECOIN/litecoin$ find ./ -type f -readable -writable -exec sed -i "s/9333/9666/g" {} \;
util01@station01:~/CUBECOIN/litecoin$ cp doc/man/litecoin-cli.1 doc/man/cubecoin-cli.1 util01@station01:~/CUBECOIN/litecoin$ cp doc/man/litecoind.1 doc/man/cubecoind.1 util01@station01:~/CUBECOIN/litecoin$ cp doc/man/litecoin-qt.1 doc/man/cubecoin-qt.1 util01@station01:~/CUBECOIN/litecoin$ cp doc/man/litecoin-tx.1 doc/man/cubecoin-tx.1
util01@station01:~/CUBECOIN/litecoin$ ./autogen.sh util01@station01:~/CUBECOIN/litecoin$ ./configure util01@station01:~/CUBECOIN/litecoin$ make util01@station01:~/CUBECOIN/litecoin$ sudo make install
util01@station01:~/CUBECOIN/litecoin$ cd
util01@station01:~$ mkdir .cubecoin
Ouvrir :
.cubecoin/cubecoin.conf
Ajouter :
`# Use as many addnode= settings as you like to connect to specific peers
addnode=192.168.1.200:9666
addnode=192.168.1.201:9666
server=1
rpcuser=cubecoinrpc rpcpassword=mot2passe
rpctimeout=30
rpcallowip=127.0.0.1
gen=1
4way=1
paytxfee=0.001`
util01@station01:~$ cubecoind --printconsole
util01@station01:~$ cubecoin-qt -reindex

Ouvrir :
~/CUBECOIN/mine_cubecoin.sh
Ajouter :
#!/bin/bash echo "Mining... Press [CTRL+C] to stop" while : do cubecoin-cli generate 1 done
Action :
chmod +x mine_cubecoin.sh
util01@station01:~/CUBECOIN$ ./mine_cubecoin.sh