этот курс, чтобы научить вас, как создать новый альт монету. Это так просто,
что я могу сделать, как правило, в течение 2-х часов.
Вы должны иметь базовые знания в области программирования C ++. Не нужно
быть экспертом, но вы должны понимать основные ошибки Компиляция
и как исправить их.
Выполните следующие шаги, чтобы создать новую альт монету:
Приготовление Шаг:
Загрузить полный исходный код Litecoin, вы можете найти его в GitHub, просто
сделать Google, вы найдете его.
Если вы используете окна, выполните действия, описанные в этой теме:
создать среду и библиотеки, и компилировать Litecoin. Если вы успешны
в его составлении (и запустить его), то ваша среда хороша.
Дизайн вашей монеты:
Теперь, когда вы окр установить, прежде чем делать кодирование, вам необходимо сделать некоторые конструкции
ваша монета, это простые математические расчеты, но вам нужно для параметров
в кодировании.
В общем, вы должны определить, что вы хотите:
- наименование монеты. Давайте назовем это AbcCoin в нашем примере. Также определить символ, мы называем его "азбука"
в нашем примере.
- блок время: это среднее время между блоками мишени. Обычно вы установите его между 15 секунд и 2 минуты.
Вы также можете сделать 10 минут, если вы хотите (как Bitcoin), но это слишком долго имо.
- Трудность перенастроить время: это важно, так как в противном случае это может привести к серьезной проблеме instamine.
Обычно это от 1 часа до 1 дня.
(Дифф время Retarget) / (время блока) дает вам, сколько блокирует дифференциал Retarget будет. Это
является важным параметром для рассмотрения.
- что начальная монета для каждого блока. Люди установить его на 2 до 100, обычно. Вы можете установить любого вы хотите.
Также вы можете сделать монеты в блок на основе числа блоков, или даже случайным образом (например, Jkc / LKY и т.д.).
- Как долго вы хотите монеты на блок наполовину. Обычно это 6 месяцев до 3-х лет. Но вы снова установить любой
тебе нравится.
- Порты, вам нужно два: подключение и RPC порты. Выберите те, которые не используются в обычных приложениях.
Вы можете Google для конкретного использования порта.
Есть некоторые другие вещи, которые вы можете настроить, такие как начальный diffculty и т.д. Но, как правило, я не хочу возиться с ними.
Теперь эти параметры определены, одна важная вещь, что вы хотите, чтобы вычислить, сколько блоков / монет
генерироваться в месяц, год и т.д., и общие монеты когда-либо будет. Это дает хорошее представление о том, как в целом
ваша монета будет работать, и вы можете повторно настроить некоторые параметры выше.
Теперь изменение часть кода.
Перед тем, как начать, скопируйте весь каталог Litecoin в Abccoin. Затем измените код в Abccoin.
Выполните следующие шаги для изменения коды:
1. В Abccoin / Src директорию, выполнить поиск "litecoin"И изменить большинство из них "abccoin", Обратите внимание, вы можете
сделать чувствительный к регистру заменить. Вам не нужно, чтобы заменить все, но большинство должно быть заменено.
Вы можете ссылаться на SmallChange код первой фиксации
https://github.com/bfroemel/smallchange/commit/947a0fafd8d033f6f0960c4ff0748f76a3d58326
для необходимых изменений.
Примечание: SmallChange первой фиксации не включает в себя многие из изменений, которые я опишу ниже, но это
хорошая ссылка на то, что необходимо изменить.
2. В Abccoin / Src дир, сделать поиск по "LTC"И изменить их "азбука",
3. Изменение портов: использовать те, которые вы определили в дизайне монет, а также изменить в следующих файлах:
- Порт подключения: protocol.h и init.cpp
- RPC порт: bitcoinrpc.cpp и init.cpp
4. Изменение параметров, все в main.cpp:
- блок-значение (в GetBlockValue ())
- блок времени (сразу после GetBlockValue ())
- дифф перенастроить время (сразу после GetBlockValue ())
- изменить масштаб различий перенастроить, чтобы избежать instamine (в GetNextWorkRequired ())
для последнего элемента, обратитесь к Luckycoin код, вы увидите, как это делается.
Для случайных величин монет в блоке, обратитесь к функции GetBlockValue () в JKC и Luckycoin кода.
5. По вашему дизайну монеты, измените значение в main.h:
- Количество монет макс
- dPriority
6. Изменение количество подтверждения сделки (если вы хотите сказать, сделку 3 подтверждения и т.д.) в transactionrecord.h
также изменить COINBASE_MATURITY, которая влияет на время зрелости для добываемых блоков, в main.h / CPP.
7. Создать генезис блок. Некоторые люди застревают там, это очень просто:
- найти LoadBlockIndex () функция, внутри, изменение:
- Перефразируя (pszTimestamp) на любой последнем этапе новостей.
- получить последние Юниксовое время (сделать Google), и положить в block.nTime.
- установить любой nNonce (на самом деле не имеет значения)
Вы можете изменить время / временное значение для testnet тоже, если вы хотите использовать его.
После того, как вы закончите, сохраните его. Теперь блок генезис не будет соответствовать проверка хэша и проверка Merkle корень, это не имеет значения.
Первый раз при запуске скомпилированного кода (демон или QT), он будет говорить "утверждение не удалось", Просто выйти из программы, перейдите
конфиг реж (под AppData / Roaming), откройте debug.log, получить хэш после "block.GetHash () = "Скопируйте и вставьте его в НАЧАЛЕ main.cpp, hashGenesisBlock. Кроме того, получить корень Merkle в том же файл журнал, вставьте его в ... положение в следующем коде, в LoadBlockIndex ()
котировка
утверждать (block.hashMerkleRoot == uint256 ("0x ..."));
перекомпилировать код, и генезис блок создан!
Кстати, не забудьте изменить "txNew.vout [0] = .nValue " к монете для каждого блока вы определили, это не имеет значения, чтобы оставить как 50, так же согласуется с вашей монеты на блок (сделайте это, прежде чем регулировать хэш и т-корень, в противном случае они будут снова изменены).
Кроме того, необходимо изменить ключ предупреждения / контрольную точку, это зависит от типа монеты и версии, вы можете найти его в main.cpp, main.h, alert.cpp и checkpoint.cpp.
8. Установите правильную букву начала адреса в base58.h. Вы можете сделать некоторые проб и ошибок, чтобы найти письмо, которое вы хотите. Я не могу точно рассчитать расположение букв.
изменить соответствующие "начинается с " в sendcoinsentry.cpp
изменить пример, в signverifymessagedialog.cpp
9. Контрольная точка: вы хотите, чтобы отключить контрольную точку проверки на начальном этапе, в противном случае вы можете застрять.
У вас есть несколько способов, чтобы отключить его, мой путь:
- открытая checkpoints.cpp
- есть 3 функции, закомментируйте нормальное возвращение, и заставить их вернуться либо истинными, 0, или нуль, как это:
котировка
BOOL CheckBlock (интермедиат nHeight, Const uint256& хэш)
{
если (fTestNet) возвращает истину; // Testnet не имеет контрольно-пропускные пункты
MapCheckpoints :: const_iterator я = mapCheckpoints.find (nHeight);
если (я == mapCheckpoints.end ()) возвращает истину;
// возвращает хеш == i->второй;
возвращает истину;
}
ИНТ GetTotalBlocksEstimate ()
{
если (fTestNet) возврат 0;
// возвращает mapCheckpoints.rbegin () ->первый;
возвращать 0;
}
CBlockIndex * GetLastCheckpoint (Const станд :: Карта& mapBlockIndex)
{
если (fTestNet) возврата NULL;
BOOST_REVERSE_FOREACH (константные MapCheckpoints :: VALUE_TYPE& я, mapCheckpoints)
{
Const uint256& хэш = i.second;
станд :: Карта:: const_iterator т = mapBlockIndex.find (хэш);
если (т! = mapBlockIndex.end ())
// возвращает t->второй;
возвращать NULL;
}
возвращать NULL;
}
{
если (fTestNet) возвращает истину; // Testnet не имеет контрольно-пропускные пункты
MapCheckpoints :: const_iterator я = mapCheckpoints.find (nHeight);
если (я == mapCheckpoints.end ()) возвращает истину;
// возвращает хеш == i->второй;
возвращает истину;
}
ИНТ GetTotalBlocksEstimate ()
{
если (fTestNet) возврат 0;
// возвращает mapCheckpoints.rbegin () ->первый;
возвращать 0;
}
CBlockIndex * GetLastCheckpoint (Const станд :: Карта
{
если (fTestNet) возврата NULL;
BOOST_REVERSE_FOREACH (константные MapCheckpoints :: VALUE_TYPE& я, mapCheckpoints)
{
Const uint256& хэш = i.second;
станд :: Карта
если (т! = mapBlockIndex.end ())
// возвращает t->второй;
возвращать NULL;
}
возвращать NULL;
}
Теперь эта функция отключена. После того, как все работает, вы можете premine 50 блоков, и извлечь некоторые хэш и поместить их в контрольно-пропускных пунктах, и повторно включить эти функции.
Вот об этом. Вы можете сделать компиляцию всего путь вместе, не нужно делать в конце концов, вы не можете получить ошибки компиляции много.
О, иконки:
10. Найдите хорошее изображение для вашей монеты, а затем сделать 256x256 иконки / изображения. У вас есть 5 изображений, чтобы заменить в ИПВ / Qt / RES / иконок, и 1 для замены (всплеск) в ИПВ / Qt / RES / изображений.
11. О также редактировать эти файлы в Qt / форм. Эти файлы для помощи и т.д., лучше сделать их хорошо выглядеть, отображать название монет, чем litecoin из них.
12. Теперь для компиляции:
- кварты: изменить файл .pro под abccoin и следить за процессом грима в
- Демон: обновить один из Makefile для вашей системы, и в моем случае я использую Mingw32 оболочку сделать.
Вот это, вуаля, у вас есть свои собственные альт монет !!