Вернуться   Биткоин Форум > - Altcoin Обсуждение
19 апреля 2015, 5:49:17 AM   # 1
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Самые последние сообщения в блоге «криптовалюта 101» в

http://dillingers.com/blog/2015/04/18/how-to-make-an-altcoin/

Объясняет, как адаптировать источники Bitcoin 0.10 сделать altcoin.

Для образовательных целей в основном, хотя я уверен, что это будет означать, что некоторые люди делают альты, что в противном случае не имели бы.  

Вот паста полного текста статьи: Дополнения и исправления приветствуются.


Как сделать altcoin

Хорошо, я собираюсь предварить эту статью, задавая вам две вещи:

Во-первых, почему вы хотите создать altcoin?

Это является отправной точкой. Если вы не имеете какие-то оригинальные идеи, и возможность на самом деле читать и писать C ++ код для их выполнения, то вы собираетесь создать что-то, что не может ничего Bitcoin не может сделать делать, и в этом случае нет никакого указывают в освобождении его. Так что нет.

Если вы хотите, чтобы выпустить altcoin, перекачивать, получить много присосками, чтобы вложить свои деньги, подкупить обмен криптовалюта мириться торговый рынок в него, а затем сбросить кучу premined монет на раздутом рынке и оставить все присосками, удерживающие сумку, то «нет» не совсем все советы я хочу дать вам. Кроме того, «идти умирать в огне».

Так. Если у вас есть причина, чтобы создать altcoin - что-то вы думали над тем, как сделать это не когда-нибудь в Bitcoin себя и который позволил бы вашей идеальной криптовалюте функционировать таким образом, Bitcoin не может - то у меня есть второй вопрос для вас.

Можете ли вы посвятить себя сохранению релиз?

Это серьезно. Если вы собираетесь выпустить altcoin, вы будете иметь сорок часа в неделю работу второстепенную ее. Вы собираетесь придется тратить время на каждый день просто читать код, чтобы убедиться, что вы знаете, что каждая часть этого делает. И вам нужно это знание, потому что вы будете иметь, чтобы выяснить технические проблемы и сделать технические исправления, в чрезвычайных ситуациях, когда какой-то шутник атакует ваш блок цепь. Bitcoin имеет некоторую стабильность, потому что Bitcoin имеет большинство хеширования силы на планете, посвященной ей. Ваш altcoin даже не пердеть в ураган еще и ваше доказательство правильности работы блока цепи будет зависеть от атак, которые вы собираетесь иметь либо предвидеть или счетчик в режиме реального времени. Чтение кода каждый день подготовки. Только так вы можете найти свой путь вокруг него достаточно быстро, чтобы сделать исправление, если вы знаете его внутри и снаружи. Во всяком случае, вы можете иметь полное время работы, или социальную и семейную жизнь, а также поддерживать выпущенное altcoin - но, вероятно, не так, если вы не один из тех людей, кто считает сон, как совершенно неадекватный отвлекающим заменитель кофеина.

Теперь, со всем, что сказал, что эта статья будет охватывать только начало процесса: бесстыдно клонировать существующую монету. Независимо от нововведения вы намерены сделать, я не могу предвидеть их, так что нет никакого руководства здесь, чтобы сделать их. Вы должны прочитать код, пока вы не поймете, что достаточно хорошо, чтобы сделать их самостоятельно. Для целей данной статьи, мы будем использовать 0,10 исходный код Bitcoin, мы собираемся сделать почти-клон его именем «Newcoin», и я буду работать с Debian Jessie.

Получить исходный код
Откройте оболочку командной строки. Создайте новый каталог в вашем домашнем каталоге с именем ЦСИ. Это место, где вы будете работать. Так что ваши первые три командные строки являются

Код:
CD
MkDir ЦСИ
кд ЦСИ

Теперь используйте свой веб-браузер, чтобы перейти к https://bitcoin.org/en/download, найти кнопку в правом нижнем углу окна, который говорит «исходный код», и получить архив. Его имя должно быть Bitcoin-0.10.0 (1) .tar.gz. Скопируйте его в свой новый каталог и распаковать его с помощью команды:

Код:
ср ~ / Загрузки / Bitcoin-0.10.0 \ (1 \). tar.gz.
деготь XVf Bitcoin-0.10.0 \ (1 \). tar.gz
ф -r Bitcoin-0.10.0 newcoin

В приведенных выше двух команд, обратные косые черты до того, как круглые скобки есть, потому что есть фактические скобки в имени файла, и если вы просто введите их, ваша оболочка будет пытаться интерпретировать команду по-разному. А каталог ~ / Downloads, где вещи приземляется на моей системе, когда я загрузить его с моего веб-браузера. Если вы получили ваши настроить по-разному, вы должны настроить команду, чтобы использовать свой каталог загрузки, а не, как там оно с именем.

И последняя команда делает клон каталога Bitcoin-0.10.0 имя newcoin - со своими собственными копиями всех файлов, которые вы только что добытыми. Вы должны использовать все, что вы хотите thename вашего нового altcoin быть на имя этого каталога.

Далее, вам нужно, чтобы получить все вещи, что строительство Bitcoin зависит. Вот последовательность команд, чтобы сделать это.

Получить вещи код зависит от

Код:
су
эхо «Деб-Src ftp://ftp.us.debian.org/debian/ с.и.д. главный вно несвободных» >> /etc/apt/sources.list
обновление APT-прибудете
APT-получить строить-DEP Bitcoin
кв-прибудете -install рекомендует установить libbitcoin-DEV
Выход
Теперь, я обманул немного здесь. Debian имеет пакет Bitcoin доступный в Сиде 'распределения, но он не использует ту же версию исходного кода мы хотим работать. Первая линия делает вас корень, потому что корень имеет разрешение на изменение sources.list и установить пакеты. Он спросит пароль суперпользователя, и вы должны ввести его. Вторая строка меняет sources.list добавить источники Sid к тому, что доступно вашей меткой команде. Третья строка говорит Debian, чтобы загрузить все мета-информацию об этих источниках, поэтому он знает, что процесс сборки этих пакетов требуется. Четвертые и пятые строки говорят это, чтобы загрузить и установить все вещи, вам нужно будет построить SID Bitcoin пакета исходного кода. Но вы не загрузили пакет исходного кода с.и.д., вы загрузили новый исходный код непосредственно с сайта вместо. Чит, что зависимости одинаковы, так что это легкий способ получить все, что нужно строить. И последняя строка должна перестать быть корнем.

Тест сборки, чтобы убедиться, что вы получили все настройки
Следующий шаг построить Bitcoin просто чтобы убедиться, что у вас есть все. Так давайте сделаем это. Вот еще несколько командных строк. Некоторые из них могут занять несколько минут, чтобы бежать к завершению; это нормально.
Код:
CD Bitcoin-0.10.0
ACLOCAL
Automake --add пропущенными
./ Настроить --with-несовместимый-BDB
делать
Как все это работало. (Система Automake)
ACLOCAL создает файл с именем «aclocal.m4 ', который представляет собой пучок макроопределений и так далее, что Automake работает с. Был уже aclocal.m4 в каталоге, но для версии Automake, что, вероятно, не тот, который установлен в вашей системе Jessie.

Automake -add пропущенного вызывает Automake, который использует эти макросы и файл Makefile.am, который уже есть, чтобы создать еще один файл с именем Makefile.in. -add пропущенного аргумент говорит это, чтобы создать пару стандартных макропакетов что AutoMake использует, потому что источники Bitcoin не дать им; это не нужно, чтобы обеспечить их, потому что он использует по умолчанию, предоставляемые -add-недостающее.

Makefile.in определяет, какую конфигурацию нужно знать и делать, и сохраняет, что в сценарии оболочки с именем Configure. Затем ./configure запускает этот скрипт, который проверяет много вещей на вашей системе, находит то, что доступно, чтобы построить с и ссылки на, и вообще выяснит подробно, как строить источники Bitcoin это, глядя на, сохраняя эту информацию в Makefile. -с-несовместимый-BDB аргумент говорит, что это хорошо с вами, чтобы использовать версию базы данных Berkeley позже, чем один оригинальный клиент Bitcoin был построен с.

Наконец сделать на самом деле использует сборочный файл, который вы только что построенный с помощью ./configure, чтобы построить проект Bitcoin.

И если у вас есть все вещи, вам необходимо строить с, весь процесс должен закончить без ошибок.

Убедитесь, что ваш тест сборка работала.
Вот еще пару командных строк, чтобы убедиться, что сборка работала, проверяя, чтобы убедиться, что исполняемые файлы, которые он должен был построить на самом деле есть.

Код:
Ls ЦСИ / bitcoind
Ls SRC / Bitcoin-кли
Ls SRC / Qt / Bitcoin-кварта
Получил их? Отлично! Это означает, что среда сборки есть все, что нужно для работы с сделать altcoin. Итак, теперь, когда тест дыма закончился, пришло время, чтобы фактически перейти в каталог newcoin и начать делать свой altcoin. Так вот, еще несколько командных строк:
Начните altcoin, используя его имя вместо Bitcoin-х
Код:
кд ~ / SRC / newcoin
найти . -типа е -print0 | xargs -0 Сед -i 's / Биткойн / newcoin / г'
найти . -типа е -print0 | xargs -0 Сед -i 's / Биткойн / Newcoin / г'
найти . -типа е -print0 | xargs -0 Сед -i 's / Биткойн / Newcoin / г'
найти . -типа е -print0 | xargs -0 Сед -i 's / Биткойн / NEWCOIN / г'
найти . -типа е -print0 | xargs -0 СЕПГ -i 's / BTC / НКС / г'
найти . -типа е -print0 | xargs -0 Сед -i 's / BTC / НКС / г'
найти . -типа е -print0 | xargs -0 Сед -i 's / Btc / НКС / г'
Первые четыре команд изменяют каждое вхождение строки «Bitcoin» в четыре капитализации в строку «newcoin» во всех файлах в директории или под ним, в три различной капитализации. Вторые три команды делают то же самое на строку «BTC», превращая каждый экземпляр этого во все шапки.

Переименуйте имена файлов «Bitcoin» на имя вашего altcoin
Теперь, потому что это также затрагиваемые Makefiles, которые содержат имена файлов, и затронутые исходные файлы, которые имеют имена файлов в их включают заявления, вы должны изменить все имена файлов, которые имеют строку «Bitcoin» в них, чтобы соответствовать тому, что теперь в заявлениях включают и Makefiles. К счастью, это так же легко.
Код:
найти . -exec переименования 's / Биткойн / newcoin /' {} ";"
найти . -exec переименования 'с / BTC / НКС /' {} ";"
Будет ли переименовать каждый файл, который имеет «Bitcoin» или «BTC» в названии, рекурсии в подкаталоги по мере необходимости. Так что теперь ваши имена совпадают с вашим изменившимся Makefiles и включают заявление.


Проверка на вещи ваших изменений пропущенных, потому что это было неправильно.
Теперь посмотрит на опечатки его.
Код:
Grep -ir BITC
Помимо раскрытия кучи ссылок в исходном коде на nDebitCached и несколько одноименных переменные, показывает, что в арабских переводах «Bitcoin» был оказан как «Bitcion» в нескольких переведенных предложениях. В голландском, он упоминает "bitcon: -uri", И он стал «Bitconi» когда-то на языке, я не признаю вообще, но которые могут быть Эстонии.

Голландцы, конечно, опечатка, так как URI являются пишутся одинаково, независимо от языка. Так
Код:
SED -i 'с / bitcon / newcoin /' SRC / Qt / локаль / newcoin_da.ts
сортирует это.

Я помню о том, что арабский перегибу слова, используя образцы тройных гласные, и «bitcion» используется более чем один раз, так что это не может быть опечатка. Быстрая проверка на Google, однако, показывает много примеров «Bitcoin» с орфографической ошибкой на английском языке, а не арабских страниц. Так с большим количеством доказательств, я думаю, что я сделаю вывод, что это, вероятно, опечатка - о котором, опять же, есть шанс, что я ошибаюсь, и если «newcoin» были то, что вы на самом деле назвать свой новый альт, вы должны написать на ваш список вещей, чтобы сделать просить кого-то, кто на самом деле говорит по-арабски об этом. Но теперь латать его с помощью
Код:
СЕПГ -i 's / bitcion / newcoin /' SRC / кварты / локаль / newcoin_ar.ts
И тогда есть эстонский или-то, что-то есть. Я не слышал о каких-либо языках за пределами Ближнего Востока, что гнуть путем изменения гласных последовательностей, и «Bitconi», кажется, скорее всего, будет опечатка, так что я еще раз буду просто сделать, возможно, тупое предположение и патчем.
Код:
СЕПГ -i 's / Bitconi / Newcoin /' SRC / кварты / локаль / newcoin_et.ts
Закрепить уведомления об авторских правах и кредиты

Теперь, лицензия в соответствии с которым у вас есть доступ к этому коду упоминает, среди прочего, оставляя уведомления об авторских правах нетронутым - и вы искаженное «Em, когда вы перешли„Bitcoin“на„Newcoin“, потому что шаблонный линия есть относится к» Команда разработчиков Bitcoin ». Таким образом, вы должны изменить «Newcoin» обратно «Bitcoin», но только на линиях, где это часть авторского заявления.
Код:
найти . -типа е -print0 | xargs -0 Сед -i '/ opyright / с / Newcoin / Биткойн /' {} ";"
сортирует это. Я оставил первую букву прочь «Авторское право», потому что я не хочу, чтобы заботиться о капитализации.

Были также много ссылок на Bitcoin в файлах релиз отмечает, и это будет откровенная ложь, чтобы делать вид, что эти более ранние выпуски были выпуски вашего альта, а не выпуски Bitcoin, так что те потребности изменились назад, тоже.
Код:
СЕПГ -i 's / newcoin / Bitcoin / г' DOC / релиз струны / *
СЕПГ -i 's / Newcoin / Bitcoin / г' DOC / релиз струны / *
обрабатывает это.

Изменение номеров портов
Bitcoin использует порты 8332 и 18332 на его основной сети и 8333 и 18333 на его тестовой сети. Вы хотите newcoin использовать разные порты, просто чтобы сделать его удобным для людей, чтобы работать как клиент, в то же время.
Код:
найти . -типа е -print0 | xargs -0 Сед -i 's / 8332/9443 /' {} ";"
найти . -типа е -print0 | xargs -0 Сед -i 's / 8333/9444 /' {} ";"
переключит newcoin с использованием порты 9443 и 19443 на mainnet и 9444 и 19444 на testnet. Еще раз, вы должны предоставить свои собственные ценности. Но не изменять любой из номеров портов, либо ниже 1000, или никто, кроме корня не сможет запустить его. Я должен упомянуть здесь, что в дополнении к номерам портов, вы просто изменили пару шестнадцатеричных строк в каталоге тестирования, что тест рамка питает к интерфейсу RPC. Но вы потерпите неудачу этих тестов в любом случае, потому что другие изменения, которые Вы делаете сделают Newcoin ключей, отличные от ключей Bitcoin.

Используйте свои собственные произведения искусства
Вы действительно не хотите, чтобы показать иконки и изображения Bitcoin каждый раз, когда вы начинаете, так что вы должны пойти и изменить некоторые графики в каталоге SRC / Qt / Рез. При редактировании, не забудьте сохранить новые изображения, которые точно такой же размер и формат файла, как и старые. Если вы хотите изменить размеры и / или форматы файлов, вы должны понимать основы QT первого.

У меня нет каких-либо изящные линии команды, которые могут помочь вам сделать хорошее искусство, так что вы сами по себе здесь. По крайней мере, вы будете хотеть, чтобы редактировать newcoin.ico, newcoin.png, newcoin_testnet.ico, newcoin_testnet.png и newcoin.icns. Я предлагаю использовать GIMP для всех этих правок; она говорит все эти графические форматы. МГО и ICNS файлы особенно раздражает дело, потому что вы должны сделать аналогичные (но не идентичные) изменения на разных слоях сохраненного изображения.

Построить в первый раз
Теперь мы закончили с оптовыми правками. Пришло время, чтобы увидеть нарушил ли вы что-нибудь еще. Так типа
Код:
ACLOCAL; Automake --add пропущенный; ./ настроить --with-несовместимую-BDB; сделать
и подождите несколько минут.

Разве это построить? Теперь у вас есть newcoind, newcoin-кли, и newcoin-кварта? Потрясающие! Так что теперь нам удалось получить оптовые редактирует права, пришло время реально взглянуть на исходный код и начать делать некоторые очень специфические изменения.

В chainparams.cpp, редактировать контрольно-пропускные пункты

Получите ваш любимый редактор программирования, перейдите к newcoin / Src /, и открыть chainparams.cpp.

Поиск строки «mapCheckpoints» и он будет считать вас сразу к строке 55, которая устанавливает статическую переменную mapCheckpoints в список пар - первый член каждой пары высоты блока, а второй является хэш этого блока , Клиент Биткойн использует их, как он проверяет блок цепочку Bitcoin. Так что, если вы оставите тех, кто, то newcoin клиент будет искать блоки, которые не существуют в newcoin блочной цепи. Так что избавиться от их, и поставить держатель место для генезиса блока в вместо этого. Это место держатель будет неправильно, но мы не можем это исправить, пока после того, как мы добываем генезис блок. После того, как ваши изменения, он должен выглядеть следующим образом:

Код:
статические Checkpoints :: MapCheckpoints mapCheckpoints =
повышение :: правопреемником :: map_list_of
(0, uint256 ("0x001"));
Нулевая высота блока блока генеза и uint256 ( «0Ч001") дикое предположение о том, что хэш будет.

Сделайте то же самое редактировать в тех местах, где она устанавливает «mapCheckpointsTestnet» и «mapCheckpointsRegtest».

Редактирование контрольных точек данных
Прямо под каждым из этих редактируемых списков контрольных точек, есть утверждения, которые устанавливают соответствующую переменным. Они называются данные (для основной сети), dataTestnet (для тестовой сети), и dataRegtest (для регрессионного тестирования). Перейти к командной строке и введите
Код:
дата +% s
чтобы узнать, что текущая дата Unix эпоха, то перезаписать первое число в каждом из этих блоков с текущей датой. Вы должны будете сделать это снова (и шахты нового генезиса блоки) перед запуском. Второе число в каждом блоке является счетчиком транзакций, как самой последней контрольной точки; она должна быть заменена на ноль, потому что нет никаких сделок до блока генеза. Третий номер не имеет значения, как много, но сейчас я предлагаю 500 для основной сети, 250 для тестовой сети, и ноль для regtest. Обновление этих чисел как объем трафика на изменениях блока цепи вашей монеты является одной из вещей, которые вы делаете, как разработчик, если вы хотите, чтобы ваши клиент, чтобы сделать точные оценки их прогресса, как они индексировать или проверить блок цепь.

Изменение протокола «волшебные» байты

Следующий блок после dataRegtest устанавливает другую переменную с именем CMainParams. И у вас есть много вещей, чтобы изменить здесь. Первые четыре строки набора кодовых значений в массиве с именем pchMessageStart. Эти «магические байты» сети; Они серия из четырех байт, которые идентифицируют сообщения, принадлежащие к определенному протоколу. 0xf9, 0xbe, 0xb4 и 0xd9 те Bitcoin использует. Вы хотите использовать что-то еще, так что никто никогда не сможет обмануть ваш клиент newcoin в подключении к сети Bitcoin, или наоборот. Это не имеет значения, что это за исключением того, что они не должны совпадать с одним из используемых в других протоколах (в частности, другая криптовалюта блок цепи). Они должны быть значения между 0 и 255. Я предлагаю вернуться к раковине и используя
Код:
Эхо $ RANDOM
Просто повторите команду и записать последние три цифры, когда они находятся под 255. Когда у вас есть четыре из них, установите значения pchMessageStart в CMainParams. Когда у вас есть еще четыре, установите значения pchMessageStart в CTestNetParams. И когда у вас есть еще четыре, установите значения pchMessageStart в CRegTestParams.

Сделайте ключи coinbase оповещения и генезис
Следующая строка (в объектах первые два Params) устанавливает значения vAlertPubKey. Так вернуться к командной строке, чтобы получить.
Код:
OpenSSL ecparam -genkey -name secp256k1 отъезда alertkey.pem
OpenSSL ес -в alertkey.pem -text > alertkey.hex
OpenSSL ecparam -genkey -name secp256k1 отъезда testnetalert.pem
OpenSSL ес -в testnetalert.pem -text > testnetalert.hex
OpenSSL ecparam -genkey -name secp256k1 отъезда genesiscoinbase.pem
OpenSSL ес -в testnetalert.pem -text > genesiscoinbase.hex
Будет ли создавать частные ключи и поместите их в файлы с именем alertkey.pem, testnetalert.pem и genesiscoinbase.pem, а затем разверните их в пар ключей и падение пары ключей в шестнадцатеричном формате в файлы с именем alertkey.hex, testnetalert.hex и genesiscoinbase .hex.

Вставьте ключи Уведомления
Код:
кот alertkey.hex
Покажет содержимое alertkey.hex. Скопируйте четыре строки, которые появляются между «паб» и «ASN1 OID: secp256k1 'и вставить их в файл исходного кода заменить содержимое строки в строку, которая говорит vAlertPubKey = ParseHex („...“);

Затем отредактируйте раздеться символами двоеточия и символы новой строки из него, и вы получите уведомление ключа. Если вам когда-нибудь понадобится, чтобы отправить оповещение из по сети, вы можете использовать соответствующий закрытый ключ.
Код:
кот testnetalert.hex
покажет вам ключ для testnet, так что вы можете установить vAlertPubKey блок CTestNetParams. Блок CRegTest не один из его собственных; если она когда-либо нуждается, то он использует ключ testnet.

Измените строку времени
Теперь переходите к знаменитой строке метки времени, в строке
Код:
Const символ * pszTimestamp = "The Times 03 / Jan / 2009 Канцлер на грани второго катапультирования для банков";
Это традиционное, чтобы выбрать заголовок газеты за день запуска, но вы не должны. Что бы вы ни использовать, покороче. Если это более 90 символов или около блока будет не прошли проверку длины, что, как предполагается, чтобы предотвратить отказ в обслуживании нападения от людей, приходящихся большие данные по сделкам.

Вставьте генезис Публичный.
Код:
кот genesiscoinbase.hex
покажет вам ключ для транзакции генезиса coinbase, так что вы можете вставить, что в блок CMainParams заменяя содержимое строки в строке
Код:
txNew.vout [0] = .scriptPubKey CScript () << ParseHex ("...") << OP_CHECKSIG;

Установите дату в CMainParams
Спустившись немного изменить строку в блоке CMainParams, который устанавливает genesis.nTime так, что он устанавливает его в тот же день Unix эпохи вы получили с помощью команды «дата» выше. Повторите это редактирование в блоке CTestNetParams.

Удалить семенные узлы Bitcoin в
Пропуск вниз мимо hashGenesisBlock вещи, вы увидите ряд линий, которые устанавливают значения для списка с именем vSeeds. Эти сетевые адреса, где долгоживущих узлы Bitcoin, как предполагается, должны быть найдены, так что люди всегда могут подключаться к сети Bitcoin. Которая, как вы установить сейчас не в сети. До тех пор пока вы не поставить сервера, чтобы сделать это для вашей новой сети, заменить эти строки (в обоих CMainParams и CTestNetParams) с простыми утверждениями:
Код:
vFixedSeeds.clear ();
vSeeds.clear ();

Изменение ключа префиксы
Перемещение вниз, мы получаем блок операторов, которые устанавливают значения в массиве списков имени base58Prefixes. Это префикс байт, которые добавляются к ключам. Установив их на разные значения, вы можете гарантировать, что ключи для монет на сети Newcoin никогда не будут действительными клавишами Bitcoin и наоборот. В определенной степени, устанавливая эти цифры также определяет, какие символы, в которых base58 форма клавиш, которые пользователи видят начинается с. Шансы случайного столкновения в ключах смешны, но «шансы» и «случайные» являются причудливыми старомодными идеями здесь; вы работаете над кодом, что кто-то собирается намеренно атаковать. Таким образом, изменение значения. Вы можете использовать эхо $ RANDOM в командной строке еще раз, если вы хотите. Если вы заботитесь о том, что начальные символы ваш выбор приведет к base58 форме ключей, ознакомьтесь со списком на вики Bitcoin. Существует одно важное ограничение здесь: ни один из списков не могут быть одинаковыми, так как клиенты смотрят на начальных байтов, чтобы выяснить, какой ключ они имеют дело. Кроме того, не изменять длину любого списка до тех пор, пока вы читали код достаточно, чтобы знать все, что будет влиять.

PUBKEY_ADDRESS этого значения приставки к открытым ключам - это публика половина / частной пары ключей Публичной, который представляет txOut и возможность провести его. Secret_key, предсказуемо, являются префиксами для приватной половины пары. SCRIPT_ADDRESS прикрепляются к адресам, которые являются хэш сценариев; ищу разницу между начальными байтами, как клиент знает, какой из двух «по умолчанию» Потратьте скриптов для применения. Наконец, EXT_PUBLIC_KEY и EXT_SECRET_KEY являются четыре байта префиксов для так называемого «стелса-адреса», которые получили введенный в Bitcoin версии 0.9, которые позволяют забавные вещи, как адреса, которые могут быть использованы для генерации новых ключей, которые могут принимать платежи, но не тратить их. Aaaanyway, это не имеет значения, что вы изменить их, это просто важно, что они все, что они когда-либо спутать с, как ключи Bitcoin не совпадают - или друг с другом. Так дайте им новые значения в CMainParams, CTestNetParams и CRegTestParams.

Добавьте код заминировать генезис блок
Наконец, мы почти готовы к месторождению блока Genesis. Но код на самом деле помоему блок-Genesis не был в Bitcoin в течение длительного времени; что блок уже добыт. Его параметры там сверять, но нет никакого кода, чтобы установить, что некоторые из них должны быть. Вам нужно исправить. Таким образом, в инициализаторе CMainParams, сразу после того,
Код:
genesis.nNonce = 414098458;
и перед
Код:
hashGenesisBlock = genesis.GetHash ();
утверждать (hashGenesisBlock == uint256 ("....."));
утверждать (genesis.hashMerkleRoot == uint256 ("....."));
вставьте этот код:
Код:
hashGenesisBlock = uint256 ("0x01");
если правда && genesis.GetHash ()! = hashGenesisBlock)
        {
            Logprintf ("перерасчета Params для mainnet. \ п");
            Logprintf ("старый mainnet генезис одноразовое значение:% s \ п", Genesis.nNonce.ToString () c_str ()).
            Logprintf ("старый mainnet генезис хэш:% s \ п", HashGenesisBlock.ToString () c_str ()).
            // намеренно пустой цикл находит нонс значения.
            для (genesis.nNonce == 0; genesis.GetHash () > bnProofOfWorkLimit; genesis.nNonce ++) {}
            Logprintf ("новый mainnet генезис Merkle корень:% s \ п", Genesis.hashMerkleRoot.ToString () c_str ()).
            Logprintf ("новый mainnet генезис нонс:% s \ п", Genesis.nNonce.ToString () c_str ()).
            Logprintf ("новый mainnet генезис хэш:% s \ п", Genesis.GetHash () ToString () c_str ())..;
        }
Используйте один и тот же код в инициализаторе CTestNetParams, за исключением изменений «mainnet» в 'testnet. Точно так же инициализатору CRegTestParams, за исключением изменений «mainnet» в «regtest».

Теперь опять строить. На этот раз вы уже сделали всю AUTOCONF вещи, так что вам просто нужно ввести
Код:
делать
и вы только изменили один файл, который не включен в другом месте. Поэтому он должен быть построен в течение нескольких секунд.

Mine блока генезиса и вставить новые значения
Есть все, что? Теперь запустите newcoin-кварта.

Он выбросит диалоговое окно с запросом, куда установить. Пусть это есть по умолчанию он хочет, что будет новый подкаталог вашего домашнего каталога с именем ~ / .newcoin.

Тогда ничего не произойдет. В течение двадцати минут до часа, обычно. Может быть, больше, чем за час, в зависимости от немой удачи и скорости вашего компьютера. Если ваш компьютер работает медленно, это может быть хорошее время, чтобы пойти получить бутерброд.

Вот что на самом деле происходит. Это установить временное значение, перемешанный блок генеза, заметил, что это не соответствует 0х01, и теперь живет в том, что тугие пустой цикл, увеличивающиеся хэш, хэширования блок, и проверять, является ли низкий новый хэш достаточно отвечают корректуры из-работы требований.

Через некоторое время, он умрет. Значение, он нашел временное значение, которое дало генезис Блоку А хэш достаточно низко, чтобы передать доказательство правильности работы, вышел из для цикла, вошел в новом хэш и временное значение и значение дерева Меркла, а затем ударил утверждают, что до сих пор настаивает на том, на хэш-значения будучи генезис блок хэш-значение Bitcoin в. Итак, вы хотите, чтобы увидеть новые значения. Тип
Код:
хвост ~ / .newcoin / debug.log
и вы будете видеть последние несколько строк вывода логфайла.
Теперь у вас есть одноразовый номер и хэш и корень Merkle так идет изменить необходимые строки в CMainNet инициализаторе.

В коде вы вставили, вы инициализируетесь hashGenesisBlock в uint256 ("0x01"). Изменение, что ваш новый генеза хэш.

Прямо над кодом, который вы вставили, вы увидите строку, которая устанавливает значение для genesis.nNonce. Измените его на новый Нонс значение.

Прямо под код, который вы вставили, вы найдете Assert () заявления, которые проверяют значение корня Merkle и хэш. Изменение тех вашего нового корневой Merkle и хэш-значение.

В верхней части файла, есть свой список mapCheckpoints, утверждая, что хэш-блока генеза является 0Ч01. Изменение, что к вашей новой хэш-значения.

Шахтные генезиса блоки Testnet и Regtest
После того как вы сделали эти изменения, перекомпилировать и запустить его снова. То же самое будет происходить во всем, но на этот раз для testnet. И вы меняете одни и те же вещи в инициализаторе CTestNetParams (и testnet контрольно-пропускные пункты), которые были изменены для CMainParams.

Перекомпилируйте и запустить его снова, и он будет срабатывать на regtest значения. Таким образом, вы меняете одни и те же вещи в инициализаторе CRegTestParams.

ОСТАНОВИТЬ добыча генеза блоков
Хорошо? Теперь вы добывали свой генезис блок. Теперь, в коде, который вы вставили в см, где тупой видом, если условие проверки для
Код:
если правда && genesis.GetHash ()! = hashGenesisBlock)
?
Изменение этих трех «истинных, чтобы«ложных годов. Цель этого «истина / ложь» бизнес, чтобы сделать его легким для вас, чтобы переключиться назад и вперед от добычи генеза блоков не добыча генеза блоков. Вы должны будете добывать новый генезис блок перед запуском, и, возможно, потребуется несколько больше во время тестирования и разработки в зависимости от того, делаете ли вы что-нибудь, что изменения заголовков блоков или начальной транзакции coinbase. Но в клиенте вы на самом деле проверить и отпустить, вы не хотите, добыча генезиса блока включена. Если он видит неправильный блок генеза в папке, вы хотите, чтобы разбомбить сразу, а не сидеть там жевание и пытаемся создать новую.

Всякий раз, когда вам нужно добывать новые блоки генеза, потому что вы изменили что-то, что аннулировал старый в процессе разработки, вы можете вернуться к chainparams.cpp, обновить строку параметров даты и метки времени, сделать три истина / ложь изменения, перекомпилировать сделать
Код:
гт -rf ~ / .newcoin 
поэтому он не видит (теперь) неправильный бывший блок генеза в данных там, а у меня новые генеза блоки.

То, что вы получили

На этом этапе вы создали полный и совершенно простой, клон Bitcoin версии 0.10. Если это все, что вы делаете, то это был хороший опыт обучения, но не запускать эту монету. Если делать что-то новое, нет никакого смысла.

Проблемы вам все еще нужно исправить

Это вещь, которую вы создали не может выжить как altcoin; Помимо не имеющая сеть семян самостоятельно, его алгоритм регулировки трудности не будет реагировать достаточно быстро, чтобы предотвратить ваш блок цепочку от получения instamined, а затем застряли. Добыча киты будут выкопать две недели монет, а не обработки практически не сделок, менее чем за час, а ваш блок цепь является прибыльной, а затем, когда корректировка трудности для того, что две недели хиты они покинут вашу цепочку с невероятно высокой сложностью и идти к чему-то еще. Вы не получите блок в течение нескольких дней, и никто не будет в состоянии использовать свой альт, чтобы сделать какой-либо сделки из-за него. В результате блок-цепь, которая может обрабатывать транзакции, может быть, два часа из каждого года, что бесполезно для всех.

Таким образом, следующая вещь, что вам нужно сделать, это пойти исправить. И когда вы исправили, ваш новый альт еще не способен выжить; у каждого исправление проблемы сложности, что создает клонированную монету. Еще раз, вы либо новую идею и способность развивать и поддерживать его, или у вас нет ничего, что это стоит начать. То, что я показал вам здесь первые три шага на длинной дороге.

Я буду говорить об один способ исправить трудности в следующей партии.
Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit


Как заработать Биткоины?
Без вложений. Не майнинг.


19 апреля 2015, 6:00:46 AM   # 2
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Получил 1806 Биткоинов
Реальная история.





Стена поста. Цените вы проводки, хотя.
Pepijn сейчас офлайн Пожаловаться на Pepijn   Ответить с цитированием Мультицитирование сообщения от Pepijn Быстрый ответ на сообщение Pepijn

19 апреля 2015, 7:38:33 AM   # 3
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Я сейчас поставлю версию этой статьи на моем блоге по адресу: http://dillingers.com/blog/2015/04/21/altcoin-difficulty-adjustment-with-midas/ .  Если вы цитируете его или отправить его в другом месте, пожалуйста, укажите ссылку на эту страницу.

Altcoin сложности регулировка с помощью MIDAS

Хорошо, я обещал дать способ исправить трудности переориентации вопроса. Вот.

Перейти в файл SRC / pow.cpp. Удалить функцию GetNextWorkRequired.

Заменить его с кодом прилагается к данному сообщению.

MIDAS или Mульта яnterval Difficulty djustment System мое собственное изобретение. Он очень хорошо реагирует на внезапные изменения хэширования власти ли вверх или вниз. Корректировки в чрезвычайных ситуациях в случае необходимости, как правило, удар в течение десяти блоков, так и в не-чрезвычайных ситуациях, он получил в ответе, но постепенная и хорошо затухают регулировку.

Кроме того, он делает усилие, чтобы сохранить высоту блока цепи приблизительно синхронизированный с реальным временем - хотя реальное время здесь следует рассматривать скорее с точки зрения календарной даты, чем время часов. Если это больше, чем на пару недель позади, MIDAS будет пытаться сделать раз блокировать около 10% быстрее, чем номинальная, и если это больше, чем на пару недель вперед, он будет пытаться сделать раз блокировать около 10% медленнее, чем номинальная , Inbetween, есть линейная интерполяция между этими скоростями - это означает точку, к которой MIDAS регулирующую будет точно номинальное время блок всякий раз, когда это есть точное соответствие между высотой блока и реального времени. Всякий раз, когда скорость хеширования была достаточно устойчивой в течение последнего месяца или около того, соответствие между высотой блока и фактическое время должно быть в течение нескольких часов.

Это было первоначально предложено в качестве реакции (и замены) первой версии алгоритма Kimoto гравитации Ну, что было очень «раздражительным» в том, что всякий раз, когда два блока прибыль, чья временные метки были слишком близко друг к другу, или обратить вспять в последовательности, было бы экстремальные корректировки скорости сложности. При проверке нескольких различных интервалов и внесения изменений только тогда, когда есть согласие судить по несколько интервалам, какой путь и примерно как крайняя корректировка должна быть, MIDAS и избегает twitchiness и разрешений довольно экстремальных корректив, когда они действительно необходимы.

Поскольку интервалы он проверяет, не имеют общего делителя, также чрезвычайно устойчив к TIMEWARP атак; нет «гармоники» для злоумышленника, чтобы использовать, что позволит фиктивные отметки времени на определенные интервалы, чтобы усиливать друг друга приводит к ложным корректировками и никоим образом не для фиктивной метки времени, чтобы вызвать непропорциональное регулировки сложности.

На мой взгляд, MIDAS является то, что почти каждый altcoin должен иметь; Я считаю, что лучше себя ведет, чем все остальное я знаю, что это используется.

Установка параметров - Интервалы Блочные

Назад в файле ChainParams.cpp, есть некоторые параметры, которые можно изменить, что изменит поведение вашей сложности переориентации. Наиболее важным из них является nTargetSpacing, во всех трех параметров инициализаторах. Для Bitcoin это установлено (во всех трех местах) до 600 (10 * 60), так как протокол Биткойна построен около десяти минут блоков и есть 600 секунд в блоке. Если вы хотите шесть-минутные блоки для Newcoin, установите его на 360 (6 * 60) вместо этого. Большинство альтов сделать это быстрее, которая имеет тенденцию к централизации добычи в местах с хорошей связью, потому что меньше времени блока, тем более вероятно, шахтер, чтобы получить блок-сироту из-за иначе, незначительных различий в сети лаге. Если вы сделаете раз блока слишком короток, сеть не сможет выполнить синхронизацию, поскольку блоки не смогут даже пересечь сеть, прежде чем

Настройка параметров - Интервал регулировки
Во-вторых, nAdjustmentInterval, который установлен непосредственно под nTargetSpacing во всех трех блоках. MIDAS использует эту переменную для совершенно другой цели, чем алгоритм регулировки трудности Bitcoin, используемой для его. В MIDAS, это период, в течение которого блок интервалы регулируются + - 10% в зависимости от того, как далеко высота блока составляет от переписки с метками времени. Из кода Bitcoin в этом 60 * 60 * 24 * 7 - стоит одна недели секунд. Я оставляю это значение на месте.

MIDAS растягивается или сжимается блоки немного, поскольку она стремится сделать (время генезиса + высоту блока * nTargetSpacing), примерно равную отметки времени блоков это получает. nTargetSpacing или номинальное время блока, учитывая наше значение 6 минут, составляет 360 секунд. На самом деле, блочные интервалы, что MIDAS будет регулировать в сторону диапазоне от 324 (360-36) секунд, если это полный адаптационный период или более позади, 396 (360 + 36) секунд, если это полный адаптационный период или более вперед. В промежутках есть гладкая интерполяция, так долго, как это соответствие достаточно близко, мы никогда не должны быть регулирования в сторону интервала более чем на несколько секунд дольше или короче, чем 360. Если вы сделали интервал регулировки очень короткий, то небольшие различия в переписке приведет к большим различиям в сроках блока MIDAS регулирует достичь. Как написано, отличие от номинального расстояния ограничивается до десяти процентов.

Код:
Код:
// Это MIDAS (Multi Interval Сложность системы регулировки), новый алгоритм getnextwork. Он быстро реагирует на
// огромные изменения в хэширования мощности, устойчив к деформации времени атак, и регулирует скорость блока, чтобы сохранить высоту блока
// близок к высоте блока ожидаемой, учитывая номинальный блок интервал и прошедшее время. Как закрыть
// соответствие между высотой блока и настенными часами временем, зависит от того, насколько стабильна силы хешировании была. Может быть
// Bitcoin может ждать 2 недели между обновлениями, но не altcoin может.

// Важно, что ни один из этих интервалов (5, 7, 9, 17) не имеют какой-либо общий делитель; устраняя существование
// гармоника является важной частью устранения эффективности TIMEWARP атак.
недействительным avgRecentTimestamps (Const CBlockIndex * pindexLast, int64_t * avgOf5, int64_t * avgOf7, int64_t * avgOf9, int64_t * avgOf17)
{
  INT blockoffset = 0;
  int64_t oldblocktime;
  int64_t blocktime;

  * AvgOf5 = * avgOf7 = * = * avgOf9 avgOf17 = 0;
  если (pindexLast)
    blocktime = pindexLast->GetBlockTime ();
  остальной blocktime = 0;

  для (blockoffset = 0; blockoffset < 18; blockoffset ++)
  {
    oldblocktime = blocktime;
    если (pindexLast)
    {
      pindexLast = pindexLast->pprev;
      blocktime = pindexLast->GetBlockTime ();
    }
    еще
    {// генезис блок или предыдущий
. Blocktime - = Params () TargetSpacing ();
    }
    // для каждого блока, добавить интервал.
    если (blockoffset < 5) * avgOf5 + = (oldblocktime - blocktime);
    если (blockoffset < 7) * avgOf7 + = (oldblocktime - blocktime);
    если (blockoffset < 9) * avgOf9 + = (oldblocktime - blocktime);
    * AvgOf17 + = (oldblocktime - blocktime);    
  }
  // теперь мы имеем сумму интервалов блока. Отдел получает нас средние.
  * AvgOf5 / = 5;
  * AvgOf7 / = 7;
  * AvgOf9 / = 9;
  * AvgOf17 / = 17;
}


неподписанных INT GetNextWorkRequired (Const CBlockIndex * pindexLast, Const CBlockHeader * pblock)
{
    int64_t avgOf5;
    int64_t avgOf9;
    int64_t avgOf7;
    int64_t avgOf17;
    int64_t toofast;
    int64_t tooslow;
    int64_t difficultyfactor = 10000;
    int64_t в настоящее время;
    int64_t BlockHeightTime;

    int64_t nFastInterval = (Params () TargetSpacing () * 9.) / 10; // секунд в блоке желательно, когда далеко отстает от графика
    int64_t nSlowInterval = (Params () TargetSpacing () * 11.) / 10; // секунд в блоке желаемого, когда далеко впереди графика
    int64_t nIntervalDesired;

    . Беззнаковое целочисленное значение nProofOfWorkLimit = Params () ProofOfWorkLimit () GetCompact ().

    если (pindexLast == NULL)
        // Genesis Block
        вернуться nProofOfWorkLimit;

    
    если (Params (). AllowMinDifficultyBlocks ())
    {
        // Специального правило трудности для testnet: Если метка нового блока составляет более 2 * TargetSpacing затем позволяет
        // добыча в мин сложности блока.
        если (pblock->NTime > pindexLast->Ntime + Params (). TargetSpacing () * 2)
           вернуться nProofOfWorkLimit;
        еще
        {
            // возвращает последнее неспециальный-мин-затрудненное-правила-блок
           Const CBlockIndex * pindex = pindexLast;
           в то время как (pindex->pprev && pindex->nHeight% nIntervalDesired! = 0 && pindex->Nbits == nProofOfWorkLimit)
               pindex = pindex->pprev;
           вернуться pindex->Nbits;
        }
    }

    // Регулировать раз блок таким образом, чтобы оставаться синхронизирован в долгосрочной перспективе с реальным временем. Первым шагом является
    // вычислить, какой интервал мы хотим использовать в качестве нашей цели регулирования. Это зависит от того, как далеко впереди (или сзади)
    // Расписание мы. Если мы больше, чем период перестройки впереди или позади, мы используем максимум (nSlowInterval) или минимум
    // значения (nFastInterval); в противном случае мы вычисляем средневзвешенную где-то между ними. Чем ближе мы
    // чтобы быть точно по расписанию ближе наш выбранный интервал будет наш номинальный интервал (TargetSpacing).

    Теперь = pindexLast->GetBlockTime ();
    BlockHeightTime = Params (). GenesisBlock (). Ntime + pindexLast->nHeight * Params () TargetSpacing ().
    
    если (в настоящее время < BlockHeightTime + Params (). AdjustmentInterval () && Теперь > BlockHeightTime)
    // досрочно менее одного интервала.
nIntervalDesired = ((Params () AdjustmentInterval () -. (сейчас -. BlockHeightTime)) * Params () TargetSpacing () +  
   (Сейчас - BlockHeightTime) * nFastInterval) / Params () AdjustmentInterval ();.
    иначе если (теперь + Params (). AdjustmentInterval () > BlockHeightTime && Теперь < BlockHeightTime)
    // отстает от графика менее чем на один интервал.
. NIntervalDesired = ((Params () AdjustmentInterval () - (BlockHeightTime -. Сейчас)) * Params () TargetSpacing () +
   (BlockHeightTime - сейчас) * nSlowInterval) / Params () AdjustmentInterval ();.

    // вперед более чем на один интервал;
    иначе если (в настоящее время < BlockHeightTime) nIntervalDesired = nSlowInterval;
    
    // за более чем интервал.
    еще nIntervalDesired = nFastInterval;
    
    // выяснить, что средние интервалы в течение последних 5, 7, 9 и 17 блоков были.
    avgRecentTimestamps (pindexLast, &avgOf5, &avgOf7, &avgOf9, &avgOf17);    

    // проверка аварийных настроек. Они должны принести диф вверх или вниз быстро, когда шахтер лопнуть или multipool
    // прыгает или выключен. После того, как они пинают в них можно регулировать трудности очень быстро, и они могут пнуть очень быстро
    // после массивной хэш питания подскакивает включения или выключения.
    
    // Важное примечание: Это само демпфирование регулировки, так как 8/5 и 5/8 ближе к 1, чем 3/2 и 2/3. Не
    // винт с константами таким образом, что нарушает эти отношения. Несмотря на то, само-затуханием, это будет, как правило,
    // занижению немного. Но нормальная регулировка будет обрабатывать затухание, не возвращаясь к ситуации.
    toofast = (nIntervalDesired * 2) / 3;
    tooslow = (nIntervalDesired * 3) / 2;

    // обе эти проверки кратчайший интервал быстро остановить, когда промахнулся. В противном случае первый длиннее и короче второй.
    если (avgOf5 < слишком быстро && avgOf9 < слишком быстро && avgOf17 < слишком быстро)
    {// аварийная регулировка, замедлить (более длительные интервалы, потому что более короткие блоки)
      LogPrintf ("GetNextWorkRequired EMERGENCY Retarget \ п");
      difficultyfactor * = 8;
      difficultyfactor / = 5;
    }
    иначе если (avgOf5 > слишком медленно && avgOf7 > слишком медленно && avgOf9 > слишком медленно)
    {// аварийная регулировка, ускорить (более короткие интервалы, так как длинные блоки)
      LogPrintf ("GetNextWorkRequired EMERGENCY Retarget \ п");
      difficultyfactor * = 5;
      difficultyfactor / = 8;
    }

    // Если нет настройки аварийно, проверьте для нормальной регулировки.
    иначе если (((avgOf5 > nIntervalDesired || avgOf7 > nIntervalDesired) && avgOf9 > nIntervalDesired && avgOf17 > nIntervalDesired) ||
    ((AvgOf5 < nIntervalDesired || avgOf7 < nIntervalDesired) && avgOf9 < nIntervalDesired && avgOf17 < nIntervalDesired))
    {// По крайней мере, 3 средних слишком высоки или, по меньшей мере, 3 слишком низкий, в том числе два дольше. Это будет выполняться 3/16
      // время на основе случайной вариации, даже если параметры являются совершенными. Он регулирует одну шестую часть пути
      // к расчетной точке.
      LogPrintf ("GetNextWorkRequired Retarget \ п");
      difficultyfactor * = (6 * nIntervalDesired);
      difficultyfactor / = (avgOf17 + 5 * nIntervalDesired));
    }

    // предел удвоения или деления пополам. Там нет никаких условий, где это будет иметь значение, если не является
    // незаподозренной ошибка в коде выше.
    если (difficultyfactor > 20000) difficultyfactor = 20000;
    если (difficultyfactor < 5000) difficultyfactor = 5000;

    uint256 bnNew;
    uint256 bnOld;

    bnOld.SetCompact (pindexLast->Nbits);

    если (difficultyfactor == 10000) // нет регулировки.
      возврата (bnOld.GetCompact ());

    bnNew = bnOld / difficultyfactor;
    bnNew * = 10000;

    если (bnNew > Params (). ProofOfWorkLimit ())
      bnNew = Params () ProofOfWorkLimit ().

    LogPrintf ("Фактическое время% д, по расписанию время для этого блока высота =% г \ п", В настоящее время, BlockHeightTime);
    LogPrintf ("Номинальный блок интервал =% d, регулируя на интервал% D, чтобы вернуться к графике. \ П",
     . Params () TargetSpacing (), nIntervalDesired);
    LogPrintf ("Интервалы последних 5/7/9/17 блоков =% d /% d /% d. \ П",
     Params () TargetSpacing (), avgOf5, avgOf7, avgOf9, avgOf17).;
    LogPrintf ("Сложность Перед Adjustment:% 08x% s \ п", pindexLast->Nbits, bnOld.ToString ());
    LogPrintf ("Сложность После настройки:% 08x% s \ п", BnNew.GetCompact (), bnNew.ToString ());

    вернуть bnNew.GetCompact ();
}

Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

19 апреля 2015, 8:20:56 AM   # 4
 
 
Сообщения: 140
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Действительно interisting. Спасибо тебе за этот пост 
Nowi сейчас офлайн Пожаловаться на Nowi   Ответить с цитированием Мультицитирование сообщения от Nowi Быстрый ответ на сообщение Nowi

19 апреля 2015, 11:47:44 AM   # 5
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

www.Howtocloneanaltcoin.com лучше и окна пользователи также охватывает более. Может быть, не лучше, но немного понятнее формат
muddafudda сейчас офлайн Пожаловаться на muddafudda   Ответить с цитированием Мультицитирование сообщения от muddafudda Быстрый ответ на сообщение muddafudda

19 апреля 2015, 4:53:51 PM   # 6
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Хм, хорошо. Формат списка с заголовками в смелом считается яснее? Я могу сделать это, я думаю. Хорошее напоминание о том, что, как нормальные люди, хотя. Я всегда забываю, как визуально ориентированные большинство людей; Я живу и дышу текст и код и даже не заметить визуальные детали, как это. Это проблема связи, на самом деле. Люди, присутствующие фотографии думает, что они чисты, и мне они просто нет. Важные части информации всегда не хватает из фотографий. По крайней мере, я не вижу их там. Нормальные люди думают, что карта яснее, чем письменные инструкции, даже если карта не дают имена штопать улицы! Так что заблудиться не зная, что улицы будут искать, потому что место никогда действительно выглядит как карта. Но достаточно об одном из моих личных проблем .... 

Похоже, что у него есть хороший опыт для выполнения его на Windows, который я слышал жестоко. Он даже использует командную строку Windows, достаточно эффективно, даже если это выглядит как командная строка Windows, по-прежнему почти так же калека, как я помню это время. Он не мог даже сделать рекурсивную замену строки из его командной строки, не говоря уже о изменении имен файлов. Если вы должны сделать это вручную, как это, редактирование и переименование каждого файла один в то время, что вы собираетесь делать ошибки и пропустить материал. Страшно.

Подождите, это выглядит, как он не переименование файлов. У него есть альт, и все исходные файлы еще называют Bitcoin-что? И он должен переименовать его исполняемые каждый раз после того, как он строит? Ergh. Это будет беспокоить меня намного больше, чем это делает его, я думаю. Не беспокоили текстовые несоответствия, как, что другие "обычные люди" вещь? 

Это похоже, что он дополнительно получил много с его руководством, чем я до сих пор, охватывающим такие темы, как хостинг и premine и переориентация и так далее, что я до сих пор не трогал. Так подпирает ему за это.

Я, вероятно, буду нужны кто-то с таким опытом Windows, чтобы порт моих вещей, когда я запускаю. Я не использовал Windows, в течение долгого времени, и это будет трудно для меня, чтобы проверить через окно строить, даже если я попытался сделать один. Я бы, вероятно, придется арендовать облако сервер с Windows, на нем, то много читал о том, как настроить среду сборки на Windows, и начать действительно с нуля. 

Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

19 апреля 2015, 5:36:22 PM   # 7
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Есть ли редактирует сделать его более понятным для нормальных людей читать? 
Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

20 апреля 2015, 5:52:38 AM   # 8
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Хм, хорошо. Формат списка с заголовками в смелом считается яснее? Я могу сделать это, я думаю. Хорошее напоминание о том, что, как нормальные люди, хотя. Я всегда забываю, как визуально ориентированные большинство людей; Я живу и дышу текст и код и даже не заметить визуальные детали, как это. Это проблема связи, на самом деле. Люди, присутствующие фотографии думает, что они чисты, и мне они просто нет. Важные части информации всегда не хватает из фотографий. По крайней мере, я не вижу их там. Нормальные люди думают, что карта яснее, чем письменные инструкции, даже если карта не дают имена штопать улицы! Так что заблудиться не зная, что улицы будут искать, потому что место никогда действительно выглядит как карта. Но достаточно об одном из моих личных проблем ....  

Похоже, что у него есть хороший опыт для выполнения его на Windows, который я слышал жестоко. Он даже использует командную строку Windows, достаточно эффективно, даже если это выглядит как командная строка Windows, по-прежнему почти так же калека, как я помню это время. Он не мог даже сделать рекурсивную замену строки из его командной строки, не говоря уже о изменении имен файлов. Если вы должны сделать это вручную, как это, редактирование и переименование каждого файла один в то время, что вы собираетесь делать ошибки и пропустить материал. Страшно.

Подождите, это выглядит, как он не переименование файлов. У него есть альт, и все исходные файлы еще называют Bitcoin-что? И он должен переименовать его исполняемые каждый раз после того, как он строит? Ergh. Это будет беспокоить меня намного больше, чем это делает его, я думаю. Не беспокоили текстовые несоответствия, как, что другие "обычные люди" вещь?  

Это похоже, что он дополнительно получил много с его руководством, чем я до сих пор, охватывающим такие темы, как хостинг и premine и переориентация и так далее, что я до сих пор не трогал. Так подпирает ему за это.

Я, вероятно, буду нужны кто-то с таким опытом Windows, чтобы порт моих вещей, когда я запускаю. Я не использовал Windows, в течение долгого времени, и это будет трудно для меня, чтобы проверить через окно строить, даже если я попытался сделать один. Я бы, вероятно, придется арендовать облако сервер с Windows, на нем, то много читал о том, как настроить среду сборки на Windows, и начать действительно с нуля.  



Два различных руководств. Я уверен, что изменение названия является одной из первых частей к клону. Оба отличаются и как удовлетворить различные потребности. Если вы застряли на что-то, когда вы идете через окно дает мне крик. И да, он отсутствует замену ключей оповещения.


Вопрос? Могу ли я вам вести там?

О, и окна командной строки вещь. Я хотел, чтобы визуально изменить свой код лично, это дает мне лучшее понимание того, что происходит и вокруг кода, который я издаю. Каждый к своим собственным, хотя.
muddafudda сейчас офлайн Пожаловаться на muddafudda   Ответить с цитированием Мультицитирование сообщения от muddafudda Быстрый ответ на сообщение muddafudda

20 апреля 2015, 6:27:43 AM   # 9
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.


Два различных руководств. Я уверен, что изменение названия является одной из первых частей к клону. Оба отличаются и как удовлетворить различные потребности. Если вы застряли на что-то, когда вы идете через окно дает мне крик.

Спасибо вам за это. И я, вероятно, принять вас на это, когда я думаю, что у меня есть материал готов. Последние версии Windows, полностью для меня загадка, и я не знаю, с чего начать. 

Вопрос? Могу ли я вам вести там?

Конечно. Я не сделал новые изменения в моем блоге еще нет, но пожалуйста, укажите ссылку на него.

О, и окна командной строки вещь. Я хотел, чтобы визуально изменить свой код лично, это дает мне лучшее понимание того, что происходит и вокруг кода, который я издаю. Каждый к своим собственным, хотя.

Конечно, я понимаю, что. Когда я готовлюсь поддерживать кодовую, я провожу часов в день, просто считав код, чтобы попытаться понять все части и как они работают вместе. Так что я полностью понимаю необходимость увидеть его и ознакомиться с ним и посмотреть, как все взаимодействует. Изменение названия, хотя, является полным и однозначным, так что это действительно можно сделать один шаг и делать это в противном случае я бы боялся пропустить вещи или делать ошибки. 

Я знаю, что Windows, работает очень хорошо для многих людей, но все, что я помню о том, что в настоящее время разочарования, когда я пытался сделать ничего сложного из командной строки. Он имеет переменные окружения, некоторые Подстановка имени файла, и вы можете использовать трубы, чтобы отправить вывод файлов или устройств или следующей команды, так что командная строка не явно нарушена. Но рекурсивные утилиты, редакторы, поток узорной переименовывать, ничего подобного команды находят ... Я никогда не обнаружил какой-либо способ сделать эти вещи. Я не знаю, если это потому, что я просто нахожусь в неведении относительно инструментов и утилит, доступных на Windows, или если эти инструменты и утилиты действительно не существует. Во всяком случае, я не хотел оскорбить его - я просто не знаю, как люди делают задачи, которые заставляют меня тянуться этих утилит. 

Я предполагаю, что я пишу это руководство, призванное пользователей Unix / Linux, потому что я даже не знаю, как сделать большинство из этого материала на Windows.

Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

20 апреля 2015, 7:15:09 PM   # 10
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.


Конечно. Я не сделал новые изменения в моем блоге еще нет, но пожалуйста, укажите ссылку на него.


Хорошо, у меня есть новые изменения в блоге прямо сейчас. Таким образом, ссылки на него поможет вам лучшую версию. 
Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

21 апреля 2015, 12:55:24 AM   # 11
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Удар. Я редактировал пост, добавив код для системы регулировки трудности MIDAS. 
Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

21 апреля 2015, 8:01:30 PM   # 12
 
 
Сообщений: 90
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Это увлекательная тема. Спасибо за информацию.
TheMystic сейчас офлайн Пожаловаться на TheMystic   Ответить с цитированием Мультицитирование сообщения от TheMystic Быстрый ответ на сообщение TheMystic

22 апреля 2015, 2:50:01 AM   # 13
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Удар. Я обновил выше статью о корректировке сложности, а также отправил его в блог, так что теперь есть ссылка на интернет-статье.
Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

23 апреля 2015, 3:52:35 AM   # 14
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Хорошо, на этот раз я буду говорить о том, как получить сделку coinbase от блока генеза. Те, кто хочет придерживаться premine в блок генеза должны обратить внимание здесь.


Получить секретный ключ для coinbase
Ранее мы использовали OpenSSL, чтобы получить пару ключей использовать для генезиса coinbase. Мы вставили открытый ключ в шестнадцатеричном виде, в coinbase сделки блока генеза. В нормальных условиях это coinbase не расходуемая. Потому что нет кошелька в момент создания coinbase транзакции, закрытый ключ не спасется в бумажник. Но если мы можем импортировать закрытый ключ в нашем кошельке после того, как бумажник создан, то генезис coinbase могут быть потрачены.

Итак, вернемся к паре ключей, чей открытый ключ вы использовали для генезиса coinbase. Соответствующий секретный ключ, который вы должны потратить. Но сначала вы должны понять, что, черт возьми, он выглядит в формате base58, который можно импортировать в ваш кошелек.

Таким образом, вы должны взять на себя секретный ключ и сделать что-то к нему, чтобы получить его в бумажник ввозимый формате.  

Вот последовательность шагов, которые вы должны сделать:  

Во-первых, возьмите секретный ключ: Для этого примера, скажем, это
Код:
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
(Что, конечно, не будет, но я отвлекся.)

Добавить префикс байт для секретных ключей newcoin в.
Затем, независимо от байта вы выбрали в качестве значения для base58prefixes [secret_key] выше, вставить эти байты в (в шестнадцатиричной форме!) В качестве префикса к ключу. Мы скажем, что наш байт base58prefixes был 0xAA.

Так что теперь у вас есть
Код:
AA0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF

Найти SHA256D результата

Теперь вы берете двойную SHA256 того, что можно сделать из командной строки снова.
Код:
Эхо AA0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF | XXD -r -p > температура
помещает ключ в виде двоичного кода в временный файл.
Код:
OpenSSL dgst -sha256 темп
выводит SHA256 хэш этого ключа. Это будет выглядеть следующим образом:
Код:
SHA256 (температура) = 855d46b953763179ae26937d7d5d9a7fbdf063f6e23fa5abc08e02b1ee202b0e
Теперь вы копируете шестнадцатеричной строки и вставить его в следующую команду:
Код:
эхо 855d46b953763179ae26937d7d5d9a7fbdf063f6e23fa5abc08e02b1ee202b0e | XXD -r -p > temp2
Эффект, который должен поставить хэш ключа, в виде двоичного кода в файл Temp2. Итак, теперь вы можете получить SHA256 хэша, как так:
Код:
OpenSSL dgst -sha256 temp2
и OpenSSL выложит хэш хэша.  

Эффект сделать 2 итераций SHA256 на закрытом ключе: Без конвейера через XXD оба раза, мы будем делать SHA256 на строке байт, которая случается, ASCII представление шестнадцатеричной строки вместо. Во всяком случае, выход из этого является SHA256D хэш префикса байт плюс секретного ключа. В нашем примере, это случается
Код:
SHA256 (temp2) = 02709d7a22eebf159eb9e67669afb4c565a6fa90d9ac2f6069beccce226b04ab

Извлечь контрольную сумму байтов из хэша SHA256D
Первые четыре байта, что - которые 02, 70, 9г, 7а, являются контрольная сумма для закрытого ключа - это четыре байта кода, который добавляется к ключам, чтобы сделать это крайне маловероятно (примерно один шанс в четыре миллиарда) что ключ будет пропущен на самом деле быть действительным ключом. Это предназначено, чтобы сделать это маловероятно, что люди тратят монеты к неправильным адресам. Конечно, они делают это так или иначе, но благодаря этой контрольной сумме это не потому, что они ошиблись при вводе адреса.


Append контрольной суммы байт ключа приставки-продлено
Во всяком случае, вы берете ключ, с префиксом байт, и поставить контрольную сумму битов в конце, так что вы получите
Код:
AA0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF02709D7A.

Теперь это число в шестнадцатеричной системе, которые необходимо преобразовать в форму base58check. https://en.bitcoin.it/wiki/Base58Check_encoding на Bitcoin вики объясняет, как кодируется base58check, но не указывает на любой удобной утилиты на самом деле сделать это, что не зависит от секретного ключа префикса Bitcoin в. Так что я буду один код.

Простой маленький сюсюкать диалект называется Scheme, верить этому или нет, это мой любимый язык сценариев. У меня есть Мят-схема на моей машине, и схема имеет стандартный bignums и понимает числовые обозначения в шестнадцатеричном формате. Если вы счастливы делать такого рода вещи в Haskell или Eiffel или Python или что-то, что вместо того, чтобы использовать. Но я на самом деле написать программу шесть строки для вас, если вы хотите использовать схему. Если вы не имеете его в вашей системе, вы можете ввести

Код:
Sudo APT-получить установку Мит-схему
чтобы получить его. Затем в командной строке введите
Код:
мит-схема

чтобы запустить его, и вставить это определение функции в ней:

Код:
(Определение (вход base58check)
   (Определить (base58digit к) (строка-реф "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" к))
   (Определение (extractdigits п цифр)
       (если (> 58 п)
         (список->строка (конс (п) base58digit цифр))
  (Extractdigits (фактор-н 58) (минусы (base58digit (по модулю п 58)) цифры))))
   (Extractdigits вход «()))

Теперь вы просто должны дать ключ к этой функции, как шестнадцатеричное число:

Код:
(Base58check # xAA0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF02709D7A)

и мит-схема вежливо кашлять в base58check форму его; В нашем примере это строка

Код:
"6hU445Fi7j2WSwc2uLsbcQMJ1r2xbENWxGdfxTApKaRRaQ2Ppk1"

И это форма ключа, который нужно импортировать в ваш кошелек, чтобы вы могли провести транзакцию coinbase из блока генеза.

Круто, да? Теперь введите
Код:
(Выход)
а затем «у» на да / нет подсказки, чтобы выйти из схемы.

Добавление Premine

Теперь мы собираемся прийти к одной из самых злоупотребляли особенностей криптовалюта; Я собираюсь объяснить, как добавить premine.  

Следующая вещь, если вы хотите, чтобы рассматривать генезис coinbase как ваш premine, является вопрос о том, как изменить размер? Есть три вещи, которые вы должны изменить. Очевидная вещь в chainparams.cpp, в строке выше того, где вы вставили в coinbase ОГО открытого ключа. Это в строке, где код говорит

Код:
txNew.vout [0] .nValue = 50 * МОНЕТКА;

Таким образом, мы скажем, вы хотите 5000 монет вместо 50 для вашего premine. Это в достаточно легкое изменение здесь; вы просто изменить номер, так он говорит,
Код:
 txNew.vout [0] .nValue = 5000 * МОНЕТА;
вместо.  

Изменение GetBlockValue Разрешить ваш Premine
Но это только очевидная вещь. Есть две вещи, которые вы должны изменить для этого работать. Следующая функция GetBlockValue в main.cpp. Если вы не измените это, ваш блок цепь не будет действовать, когда клиент пытается проверить его. Эта функция говорит то, что coinbases должна стоить, и если клиент проверки блока цепи находит coinbase сделки, которая не соответствует тому, что говорит эта функция она должна быть, то он будет отвергать блок генеза. Функция выглядит

Код:
CAmount GetBlockValue (интермедиат nHeight, Const CAmount& nFees)
{
    CAmount nSubsidy = 50 * МОНЕТКА;
    INT halvings = nHeight / Params () SubsidyHalvingInterval ().

    // блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
    если (halvings >= 64)
        вернуться nFees;

    // Субсидия разрезают пополам каждые 210000 блоков, которые будут происходить примерно каждые 4 года.
    nSubsidy >>= halvings;

    вернуться nSubsidy + nFees;
}

и вы хотите сделать субсидию для блока на нулевой высоты (т.е. генезис блок) стоит 5000 монет вместо 50. И пока мы здесь, мы могли бы также правильно Пожаловаться на предположение в десять минут блоков. Так что ваша пересмотренная функция может выглядеть следующим образом:

Код:
CAmount GetBlockValue (интермедиат nHeight, Const CAmount& nFees)
{
    CAmount nSubsidy = (? NHeight == 0 5000: 50) * МОНЕТА;
    INT halvings = nHeight / Params () SubsidyHalvingInterval ().

    // блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
    если (halvings >= 64)
        вернуться nFees;

    // Субсидия разрезают пополам каждые 350000 блоков, которые будут происходить примерно каждые 4 года.
    nSubsidy >>= halvings;

    вернуться nSubsidy + nFees;
}

Затем вернитесь к chainparams.cpp и установить интервал субсидий на сокращение вдвое 350000 вместо 210000 поддерживать 4-летний интервал сокращения вдвое (если вы хотите 4-летний интервал пополам). Другой эффект этого изменения является то, что он также изменит ваше окончательное количество монет, которые будут выпущены, чтобы быть ~ 35М вместо ~ 21М.  

Регенерация одноразовых номеров

Хорошо, что был вторым из трех вещей. Теперь для третьего. Вы уже должны знать, что это такое. Когда мы изменили генезис coinbase, мы изменили хэш сделки. И когда мы изменили хэш сделки, мы изменили корень Merkle в блоке генеза. И это наше аннулируется случайное слово. Так что вам нужно заминировать ваши генеза блоки снова.  

Я покрывал это уже тогда, когда я объяснил, как заминировать генеза блоков. Вы возвращаетесь к chainparams.cpp, изменить «ложные, чтобы» истинных х, сотрите ~ / .newcoin каталог, скомпилировать и запустить его. Это займет некоторое время. Затем вы посмотрите на debug.log в (воссоздавал) ~ / каталог .newcoin, чтобы получить новые значения. Вставить их в течение основных Params, полоскание, повторяю, пасту в testnet Params. Промыть, повторить, пасту в regtest Params. Затем измените «истинные, чтобы» ложные и компилируется снова.

Так что теперь newcoin имеет генезис блок coinbase с premine 5000 монет, и у вас есть ключ, который вы можете импортировать в ваш кошелек позже, который позволит вам на самом деле потратить 5000 монет.

Изменение количества монет, которые можно оформить

С вашим premine и другим интервалом уполовинивать вы изменили количество монет, которые могут быть выданы. Но вам нужно изменить другие части коды для этого полностью поддерживаются. Первый и самый очевидный в amount.h, где он говорит:
Код:
/ ** Никакое количество больше, чем это (в Satoshi) действует * /
Статическая Const CAmount MAX_MONEY = 21000000 * МОНЕТА;
И, очевидно, вы измените 21000000 на 35004950. (помните, что вы добавили 4950 монет в общей сложности, когда вы изменили выход генеза coinbase).


Во-вторых, в rpcserver.cpp, в функции AmountFromValue. Это выглядит следующим образом:  
Код:
CAmount AmountFromValue (константное значение& стоимость)

И еще раз, вам нужно изменить, что 21000000 на 35004950. А теперь у вас есть код для клиента, который является правильным для вашего нового интервала блока и распределения монет.  

Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

27 мая 2015, 6:20:54 PM   # 15
 
 
Сообщения: 2
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.


Mine блока генезиса и вставить новые значения
Есть все, что? Теперь запустите newcoin-кварта.

Он выбросит диалоговое окно с просьбой установить, куда. Пусть это есть по умолчанию он хочет, что будет новый подкаталог вашего домашнего каталога с именем ~ / .newcoin.

Тогда ничего не произойдет. В течение двадцати минут до часа, обычно. Может быть, больше, чем за час, в зависимости от немой удачи и скорости вашего компьютера. Если ваш компьютер работает медленно, это может быть хорошее время, чтобы пойти получить бутерброд.

Вот что на самом деле происходит. Это установить временное значение, перемешанный блок генеза, заметил, что это не соответствует 0х01, и теперь живет в том, что тугие пустой цикл, увеличивающиеся хэш, хэширования блок, и проверять, является ли низкий новый хэш достаточно отвечают корректуры из-работы требований.

Через некоторое время, он умрет. Значение, он нашел временное значение, которое дало генезис Блоку А хэш достаточно низко, чтобы передать доказательство правильности работы, вышел из для цикла, вошел в новом хэш и временное значение и значение дерева Меркла, а затем ударил утверждают, что до сих пор настаивает на том, на хэш-значения будучи генезис блок хэш-значение Bitcoin в. Итак, вы хотите, чтобы увидеть новые значения. Тип

хвост ~ / .newcoin / debug.log

и вы будете видеть последние несколько строк вывода логфайла.



Когда я бегу newcoin-кварта, диалоговое окно не появляется ... вместо того, чтобы код идет сразу в коду, где цикл для создания генезиса хэша
Код:
для (genesis.nNonce == 0; genesis.GetHash () > bnProofOfWorkLimit; genesis.nNonce ++) {}
так что не debug.log не будет создаваться, и нет ничего, чтобы проверить потом.

Что здесь случилось?
frooble сейчас офлайн Пожаловаться на frooble   Ответить с цитированием Мультицитирование сообщения от frooble Быстрый ответ на сообщение frooble

28 мая 2015, 2:54:54 AM   # 16
 
 
Сообщения: 840
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

 

Я не знаю. Если каталог уже существует, он не будет бросать диалоговое окно. Таким образом, сначала сделать проверку вменяемости и введите

кд ~ / .newcoin

чтобы увидеть, если каталог существует. 

Если это произойдет, ваши ценности будут в последних десятках строк debug.log в этом каталоге.

Если этого не произойдет, то проверьте ~ / .bitcoin вместо того, чтобы увидеть, если вы пропустили имя каталога файлов, когда вы изменяли "Bitcoins" в "newcoins."

Cryddit сейчас офлайн Пожаловаться на Cryddit   Ответить с цитированием Мультицитирование сообщения от Cryddit Быстрый ответ на сообщение Cryddit

29 мая 2015, 12:34:09 PM   # 17
 
 
Сообщения: 2
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

У меня ни ~ / .newcoin нет ~ / .bitcoin каталогов доступны

Я вижу проблему.
Код создания (в chainparams.cpp) статические экземпляры CMainParams CTestNetParams CRegTestParams (и CUnitTestParams на то пошло) .. поэтому код хеширования становится выполняется перед основной программой () вызывается.

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

Я положу некоторые зЬй: соиЬ призывает писать в консоль и захватить начальные значения хэш-функции, чтобы заменить в коде ...

Будет ли это работать так хорошо? Или что-то не получить создан (в ~ / .newcoin), который должен получить создан
frooble сейчас офлайн Пожаловаться на frooble   Ответить с цитированием Мультицитирование сообщения от frooble Быстрый ответ на сообщение frooble

30 мая 2015, 12:39:11 AM   # 18
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

прохладный гид, есть еще более простой способ добывать генезис блок

https://github.com/lhartikk/GenesisH0
испорчены сейчас офлайн Пожаловаться на испорчены   Ответить с цитированием Мультицитирование сообщения от испорчены Быстрый ответ на сообщение испорчены

14 августа 2015, 4:34:39 PM   # 19
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

Может ли это быть составлен на Debian 8?
john75077 сейчас офлайн Пожаловаться на john75077   Ответить с цитированием Мультицитирование сообщения от john75077 Быстрый ответ на сообщение john75077

14 августа 2015, 5:01:40 PM   # 20
 
 
Сообщений: 98
Цитировать по имени
цитировать ответ
по умолчанию Re: Как сделать altcoin.

очень привлекательный, но никто, что я знаю, может быть, я мог бы просто использовать 
zero01 сейчас офлайн Пожаловаться на zero01   Ответить с цитированием Мультицитирование сообщения от zero01 Быстрый ответ на сообщение zero01



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW