В этой статье не раскрыты все детали создания монеты, но даётся обзор процесса создания для того, чтобы иметь общее представление.



Шаг 1:

Найдите монету которую вы бы хотели клонировать и которая станет основой вашей монеты. В данном случае мы будем клонировать Paycoin. Paycoin это клон Peercoin, так что если мы возмем за основу Peercoin, мы получим тот же результат, который приводится в статье.



Шаг 2:

Нужно забрать дистрибутив через github (скачать архив).
https://github.com/GAWMiners/paycoin




Шаг 3:

Придумайте имя своей монете. Мы будем создавать монету с именем “PaycoinDark”.



Шаг 4:

Поиск с заменой. Теперь воспользуйтесь поиском с заменой по тексту кода, найдите все упоминания Paycoin и замените на PaycoinDark. Вам также нужно найти XPC и заманить эти символы, это сокращенное название валюты, как BTC для биткоина. В нашем примере это выглядит так - XPCD. Добавляем букву “D”, которая означает Dark (PaycoinDark).





Шаг 5:



Теперь кастомизирует свою валюту! Редактируйте параметры в main.h в папке src. Меняйте переменные. Вот как выглядит код main.h:

static const int64 MIN_TX_FEE = 0.1 * CENT; // размер комиссии в центах (US)
static const int64 MIN_RELAY_TX_FEE = 0.1 * CENT;
static const int64 MAX_MONEY = 2000000000 * COIN; // максимально достпупное количество монет которые могут существовать
static const int64 MAX_MINT_PROOF_OF_WORK = 9999 * COIN; // максимальная сложность для майнинга
static const int64 MIN_TXOUT_AMOUNT = MIN_TX_FEE;
static const int STAKE_TARGET_SPACING = 1 * 60; // 1 минута на блок
static const int STAKE_MIN_AGE = 60 * 60; // минимальный возраст монеты
static const int STAKE_MAX_AGE = 60 * 60 * 24 * 5; // максимальный возраст монеты
static const int STAKE_START_TIME = 1418470264; // время старта монеты.
static const unsigned int POW_START_TIME = 1418403600; // Пт 12 декабря 2014 12:00:00
static const unsigned int POW_END_TIME = 1419181200; // Сб 21 декабря 2014 12:00:00
static const unsigned int MODIFIER_INTERVAL = 10 * 60;
static const int64 NUMBER_OF_PRIMENODE = 50;

В файле main.cpp Вы можете модифицировать MAX_MONEY,
это переменная для выбора максимального количества монет, изменения требования к возрасту ставки и доли%, изменения длины блока (30 секунд, 1 минута, 10 минут) и изменения вознаграждения за майнинг на блок, для которого создан код.

Шаг 6:

Создайте новый блок генезиса. После изменения кода для своей монеты, вы должны сбросить код, чтобы сгенерировать блок генезиса, который является первым блоком в цепочке. Чтобы это сделать, вы должны установить несколько переменных, хэш merkle, hashGenesisBlock и nOnce. После установки он будет выглядеть примерно так:

static const uint256 hashGenesisBlockOfficial("0x0"); block.nNonce = 0; assert(block.hashMerkleRoot == uint256("0x0"));

После того как вы сбросите цепочку в исходном коде, вам нужно будет скомпилировать код и запустить coin daemon. При первом запуске он крешнется, но сгенерирует новый хэш для блока генезиса, которым будет nOnce. Другими словами, он создаст уникальный хэш, который станет началом нового блокчейна, программно привязанной к вашему новому альткоину. Вот и все, если у вас есть блок генезиса, вам нужно поместить его в hashGenesisBlockOfficial, перекомпилировать, и ваш альткоин можно начинать майнить! Помните, что вам нужно по крайней мере 2 узла, выполняющих одну и ту же цепочку блоков, для того, чтобы процесс майнинга происходил. Одна сущность не может майнить криптовалюту в ее текущем состоянии.





Ссылки на дистрибутивы других монет

Bitcoin: https://github.com/bitcoin/bitcoin
Ethereum: https://github.com/ethereum/go-ethereum
Litecoin: https://github.com/litecoin-project/litecoin
Ripple: https://github.com/ripple/rippled
Blackcoin: https://github.com/CoinBlack/blackcoin/releases
NXT: https://github.com/Blackcomb/nxt
Zcash: https://github.com/zcash/zcash
Monero: https://github.com/monero-project/monero
Dashcoin: https://github.com/dashcoin/dashcoin
Namecoin: https://github.com/namecoin/namecoin.org
Peercoin: https://github.com/peercoin/peercoin
Primecoin: https://github.com/primecoin/primecoin
Dogecoin: https://github.com/dogecoin/dogecoin