Jump to content

Leaderboard


Popular Content

Showing most liked content on 04/07/18 in Posts

  1. 4 likes
    Скоро и фермы уйдут с алгоритма этого вообще, битмайн же не остановится выпустит другой еще мощнее и тогда ETC и форки аминь. Про кефир уже можно начинать забывать и не строить планы, в общем для владельцев GPU жизнь скоро перестанет быть беззаботной. Разработчики монеро только противостоят асикам.
  2. 3 likes
  3. 3 likes
    Даже без измения алгоритмов, асики только ради "втихую помайнить" и без вариантов последующей продажи, гиганты, навроде битмэйн, запиливать не будут, имхо... это уже совсем другой профит и другие риски. Молодцы девы монеро, респект, создали правильный прецедент!!
  4. 3 likes
    Алго изменили, асики отвалились, очень интересный эксперимент, буду наблюдать за результатами. Сама монета не интересна, по прецедент по изгнанию асиков очень любопытный. Думаю если успешно пройдет, то со временем стоит ждать нечто подобное и в других монетах на регулярной основе и это будет хорошо :)
  5. 3 likes
    Выходят значит 2 трейдера вечером с биржи , первый в шлепанцах а Sergey Vertush голый ) Парни очнитесь туземун идет !
  6. 3 likes
    Период времени не указан. Так что берем базовый час. И это, дядя, не нервничай, а то инфаркт хватит
  7. 2 likes
  8. 2 likes
    Это было дно! Всплываем!)))
  9. 2 likes
  10. 2 likes
    АУ народ туземун !
  11. 2 likes
    Какой в пень 1 биток для хэшнеста? Туда вход копейки. Точнее сатошики-лайтошики. Фиата нет.
  12. 2 likes
    аааа))вон она че))спасибо мил человек - а то тут нервные все, минусы кидают и кидают...
  13. 2 likes
    Вернул плюсом, каждому своё и каждый сам вправе выбирать как распоряжаться .
  14. 2 likes
    @kamikadze69 у каждого свои условия и свои расчеты. Для меня асики, при моем дешевом электричестве, это деньги на каждый день, а купленные битки это долгосрочные вложения,как ты и говорил чуть выше. Дрочиться на биржах и не спать ночами, типа трейдить, это не мое, лучше утром встать, вывести намайненое на магазин,ресторан,а если не нужно, то оставить.
  15. 2 likes
    внешний вид не важен, важны действия, а вот они как раз так себе
  16. 2 likes
    @alzov и счуко толковый майнер ток для Нвидео и на Убунту!!!! как я тогда не выспался......................... хотя тогда наверное мало хто спал
  17. 2 likes
    И с мастернодой не так все просто как это кажется... мало того чтобы "сообщество", организующее "шаредноды", не "забыло" о выплатах вашего % вложения в ноду. Но нужно еще и саму монетку правильно выбрать. Т.к. подавляющее большинство новых монет сейчас организуют для "подстрижки хомячков". Закладывается изначально МЕГА-умопомрачительный % доходности - народ ведется на это - слив такой монеты происходит моментально... Вот как пример такой монетки - https://masternodes.online/currencies/YOBA/ - они её продавали (пресейл) столько времени, сколько монета покупалась, а потом тупо слились... поэтому нужно смотреть на те монетки, которые уже есть на бирже и у которых спрос выше, чем предложение. Есть еще такой момент - в начале продаж "хомячки" в своем безудержном стремлении "навариться" с намайненной монеты - сливают её по той цене, по которой стоит ордер на закуп. Вот интересная монетка, которую сливали по цене больше чем в два раза ниже означенной цены девом - видно что дев "тестит" цену не ниже 0,0002, а кто-то слился по 0,000111, и неплохим объемом, ссыль => https://wallet.crypto-bridge.org/market/BRIDGE.HTRC_BRIDGE.BTC Зная эту "хомячье-психологию" - можно прикупить монет себе на ноду в несколько раз ниже цены по которой разрабы продают её на пресейле. Кстати - интересна монетка эта HTRC. Заложен алгоритм поддержки достаточно высокого ROI на длительный период жизни монеты => https://bitcointalk.org/index.php?topic=3224342.0 - как вариант для коллективного сбора в "шаредноду"... - но, как в крипте говорят - "НО ЭТО НЕ ТОЧНО"... Посему - нужно рассматривать все возможные особенности входа в мастерноду. Для того, чтобы менее болезненным оказался "провал" - целесообразно собираться коллективом - как говорят - входите в крипту той суммой, которую можете потерять.
  18. 2 likes
  19. 2 likes
    Блин, я не могу уже больше, забаньте меня, что ли!!! Пожалуйста, @e46btcзабань на неделю, или Лексис77, не могу уже, честное слово
  20. 2 likes
    Человек дело пишет, именно переход мелкого, среднего бизнеса может принести массовое использование криптовалют на на наши просторы. Я бы тоже продавал свой сельскохозяйственный товар за крипту. Но у меня сайта нет )
  21. 1 like
    Продам блоки питания Bitmain apw3++ подходит для Antminer Bitmain S7, S9, D3, A3, L3+, Ebit E9 Plus, Innosilicon и пр.10 кабелей 6-pin PCI-Eзаводской артикул APW3++-12-1600-A3 5500р за штуку. Всегда в наличии, есть доставка, звоните 8 (999) 82З-69-8З Telegram: @partshp
  22. 1 like
    Все воркеры имеют одинаковых хешрейт, порядка 25 килохешей.
  23. 1 like
    Потому и написал что их три. J6 подписано белой краской около разъема, смотрите внимательней. Он ближе к разъему питания.
  24. 1 like
    @Genych Я понял уже :). @solex Сенкс. Вообще хорошо даже перейти на монеру, вырвавшуюся из цепей асиководов ;). Прям на душе как-то легко ;).
  25. 1 like
    @Neotex :) попробуйте не набирать эту команду, а щелкнуть мышкой на минемонеропро (это имя форумчанина и по совместительству админа хешваулта)
  26. 1 like
    Да ну на! Я за холодную воду (ибо есть водогрей), на 3 чела, из них 2е "очень волосатых на голове" (не я :) ) в мес не более 400-500 руб плачу.
  27. 1 like
    У меня на эзермайне меньше чем на любом PPS Ну я тоже так с самого начала и понял) Пока отладится все...
  28. 1 like
    Вообще полностью согласен, разницы с тем же ethermine нет абсолютно. Порой ethermine показывает и большие результаты, нежели здесь на чистом PPS
  29. 1 like
  30. 1 like
    Фигасебе пробомбило и это из-за каких-то киловатт, и по времени 4 утра, хотя мож часовой пояс другой. Соболезнование нервной системе.
  31. 1 like
    Да вообще и в России есть куча ребят, кто взял кредиты под недвижимость. А еще хуже-заняли у бандитов. Полтора года назад я вложил 400 тыс. кредитных в майнинг на картах. Сейчас уже отдал кредит, плюс взял 5 асиков. Асики взял в основном из-за падения доходов с альтов. Асики куплены Только на прибыль от одной GPU фермы (10 х 1070, 10 х 470). В итоге даже сейчас около 60 тыс. руб. в месяц со всего. И это когда биткоин (я надеюсь) на дне... Окупятся со временем, по розетке запас есть. В трединг пока не полезу, т.к. 100% лотерея.
  32. 1 like
    Чоо? Не, не слышал. (с)
  33. 1 like
    Проверку по истории? Конечно, она будет на всех поддерживаемых биржах, просто делается постепенно, биржа за биржей.
  34. 1 like
  35. 1 like
    Окупится через 1449 дн. Проект стух короче. Ладно я потерял 600$ а то есть люди продававшие хаты и бравшие кредиты для облака и железа. Может и было бы все хорошо если бы был один биток и больше ни какой крипты. На все виды крипты денег не хватает.
  36. 1 like
    Эх жаль что кто то все же пострадал от этих гадов. Я пытался все вроде разложил про фотошоп и принцип развода. Будте аккуратнее друзья и так не простые времена в нашей теме.
  37. 1 like
    @Rumpert Ты на фотку Виталика посмотри, он сам как первоапрельская шутка, от него можно ожидать чего угодно, точнее не так, от него можно ожидать того чего ожидать от других просто нереально (гении те еще идиоты).
  38. 1 like
    А в РФ разрешили продажу в у.е.? Вроде лет 20 как уже цены должны быть только в руб? Если ничего не поменялось и нет каких-либо исключений, то ждать тогда в первую очередь штрафа.
  39. 1 like
    Как минимум 3 разных решения для этого есть. а реализаций вообще под десяток. на каждом углу про них написано на каждом форуме. в том числе и в этой ветке.
  40. 1 like
    @Alext59, принимайте биткоин через агрегатора, который поддерживает подобную оплату, и никаких проблем.
  41. 1 like
    Насколько я понимаю законодательство принимать оплату в биткоинах Вы можете. На сайте должен быть указан курс биткоина к рублю, чтобы покупатель понимал, сколько товар стоит в рублях при оплате биткоином. Закон, запрещающий оплату криптовалютой еще не принят, соответственно юридической силы не имеет. При этом контролирующие органы теоретически могут придраться к такому способу приема платежей и придется Вам отстаивать свое законное право в суде. Суд с высокой долей вероятности займет Вашу позицию, и санкций не будет. Уголовного наказания не будет точно.
  42. 1 like
    После долгих и мучительных переговоров и уговоров данного поставщика, созрело желание написать свой отзыв, чтобы уберечь других людей от деятельности данного персонажа, именуемого «Balonka”, он же владимир кнышов и его семейства. Знаю найдется миллион защитников, которые заказали и у них всё норм, но у меня всё через одно место, ПОЕХАЛИ! Заказ был оформлен 14 декабря, 5 s9 с отгрузкой 10-20 января. По транспортным накладным удалось выяснить что груз был отгружен 18 января, но «balonka” забрал его из транспортной только 23 января и якобы в течении 2-3 дней выслал клиентам, с объявленным временем ожидания 12-18 дней. Естественно никакие сроки доставки не выдержанны, мало того, на просьбу от всех заказчиков предоставить накладные об отправке, «Balonka “ отказался, ссылаясь на какие-то бредовые отговорки. В итоге оказалось что «Balonka “ вообще не отвечает за доставку, доставку осуществляет ТК и все вопросы к ней. На просьбу выслать контакты ТК, чтобы узнать о состоянии груза, был получен отказ, ссылаясь опять на какие то бредовые и никому не понятные отмазки, а ответы от “Balonka “ поражали своей наглостью и хамством: «я сказал всем ждать!», общается с людьми как король с рабами. 25 февраля пришло сообщение от неизвестного номера о том что груз прибыл и я должен перевести деньги за доставку непонятным людям, с которыми вообще ни о чем не договаривался 1500$. После долгих и мучительных расспросов у Balonka удалось добиться подтверждения, что это действительно тот самый поставщик. Один из заказчиков нашей отгрузки лично поехал к данному перевозчику в Москву и сам забрал свой заказ, где выяснилось, что груз оказывается был отправлен лишь 10 февраля, что и объясняет не желание Balonka предоставить накладные об отправке и поделиться контактами перевозчика. С самим перевозчиком проблем не возникло, в течении 1-2 дней груз был выслан и получен мной в моем городе 2 марта. Но приключения на этом не закончились. Один асик из пяти был не исправен, конкретно короткое замыкание на плате, о чем было сразу написанно Balonka, и как оказалось что не у меня одного. При этом Balonka сначала сослался, что это я его сломал, холод, влага, и они всё проверяли, но потом всё же признался, что оборудование ими не проверялось. Спрашивается, для чего я плачу этому УВАЖАЕМОМУ чЕЛОВЕКУ, если он мне кирпичи высылает. Вопрос о компенсации стоит следующим образом: высылайте оборудование нашим мастерам, они всё проверят и после этого Balonka вынесет свой вердикт и сделает частичное возмещение! подчеркиваю частичное! При том что нормальные поставщики проверяют оборудование перед отправкой своим клиентам, дабы они не получали кирпичи. С учётом задержки в поставке, дополнительных тратах на доставку непонятным и неизвестным никому мастерам, и полной виной и безответственностью Balonka, считаю что такой ремонт даром не нужен! Проблемные вопросы не решаются абсолютно! Только болтавня в общем чате telegram и WhatsApp , что всё решается, всё хорошо. При это в выше названных чатах присутствует так называемая группа поддержки, которая создаёт благоприятную атмосферу в группе, что они уже заказывали, всё доходит и Balonka чуть ли не современный мессия. Если в этих чатах написать какой-то негатив, они тут же набрасываются и высмеивают, полностью выгораживая Balonka. Всё не удобные и компрометирующие вопросы удаляются, знаю как минимум 5 человек из моей поставки, кто был удален из этих чатов, дабы не поднимать шумиху. На волнующие вопросы Balonka отвечать в лс не торопиться, пока не начнёшь раскачивать общий чат на всеобщем обозрении. Перед отправкой денег задумайтесь, вы их отправляете человеку, который даже паспортные данные свои не хочет выслать, я вообще переводил деньги на карту Китайца, поэтому учитесь на чужих ошибках, я их сделал очень много так как заказывал первый раз из Китая. Договора на поставку вы тоже не увидите, поэтому balonka и чувствует свою безнаказанность, ни за что отвечать не собирается, и ведёт себя по хамски с клиентами.
  43. 1 like
    Всем привет. Купил термалтейк тр2 с серия 700 ватт. Подключил на него навесное и одну 1080. Включение, а ничего не происходит!!! Все перепроверил, разобрал собрал, НИФИГА. Итак несколько раз. Потом решил все таки проверить от самой вилки начиная и о чудо!!!!! Первого же включения в розетку не выдержал фирменный кабель))) Поменял, все работает уже сутки, пока нареканий нет.
  44. 1 like
    Результат тот же самый та же ошибка, пробовал это выполнять и в командной строке запущенной от имени админа - результат тот же
  45. 1 like
    У меня в шкале сколько использовать депозита нули. что делать ? И бот выставляет в ордер все что есть все 100% депозита. Что я делаю не так ?
  46. 1 like
  47. 1 like
    Даю 1800$ , только в течении 3х дней. Ждём больше до 7000$ за биток, продадим дешевле... Вставить ник
  48. 1 like
    Картавый шалит)) Если серьезно, что форумов мало?) Чем битсмедиа не угодил?) miningclub - эта шайка бандитов :D, не жди от них добра)
  49. 1 like
    чесно слово яб ответил но незнаю как. Тут если поможет, только я знаю ДЯДКА Uliss. Я только могу песню поставить.
  50. 1 like
    5.2 Даем права sudo права пользователю debian и конфигурируем LXC adduser debian sudo echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-start" > /etc/sudoers.d/gitian-lxc echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab echo '#!/bin/sh -e' > /etc/rc.local echo 'brctl addbr br0' >> /etc/rc.local echo 'ifconfig br0 10.0.3.2/24 up' >> /etc/rc.local echo 'exit 0' >> /etc/rc.local # make sure that USE_LXC is always set when logging in as debian, # and configure LXC IP addresses echo 'export USE_LXC=1' >> /home/debian/.profile echo 'export GITIAN_HOST_IP=10.0.3.2' >> /home/debian/.profile echo 'export LXC_GUEST_IP=10.0.3.5' >> /home/debian/.profile reboot (перезагружаемся) 5.3 подключаемся по SSH входим по пользователем Debian. 5.4 Качаем и устанавливаем python-vm-builder wget http://archive.ubuntu.com/ubuntu/pool/universe/v/vm-builder/vm-builder_0.12.4+bzr489.orig.tar.gz Проверяем контрольною суму echo "ec12e0070a007989561bfee5862c89a32c301992dd2771c4d5078ef1b3014f03 vm-builder_0.12.4+bzr489.orig.tar.gz" | sha256sum -c # (verification -- must return OK) Распаковываем. tar -zxvf vm-builder_0.12.4+bzr489.orig.tar.gz Переходим в папку которою распаковали cd vm-builder-0.12.4+bzr489 Устанавливаем sudo python setup.py install Возвращаемся в предыдущую директорию cd .. 5.5 Клонируем репозитории gitian и наш. Gitian git clone https://github.com/devrandom/gitian-builder.git Mycointest git clone https://github.com/mycointest/dash 6 сборка gitian builder и самого коина. Переходим в директорию gitian исходников cd gitian-builder Cобираем исходники bin/make-base-vm --lxc --arch amd64 --suite precise Возврат cd .. Пробуем собрать наш коин. Переходим в директорию исходников коина. cd ~debian/dash Обновляем git pull Переходим в папку компилятора cd ~debian/gitian-builder Качаем зависимости,процесс не быстрый , ждем make -C ../dash/depends download SOURCES_PATH=`pwd`/cache/common Собираем /bin/gbuild --commit dash=v0.12.0.x ../dash/contrib/gitian-descriptors/gitian-win.yml Открываем параллельно 2 сесии SSH , переходим в них в cd gitian-builderДожидаемся создания соответсвующих логов в основной консоли Пишым tail -f var/install.log tail -f var/build.logи смотрим сборку В первый раз процесс достаточно долгий так как будет происходит компиляция и настройка всех зависимостей… В конце получаем такой результат Подключаемся по ftp к нашему дебиан по sftp://127.0.0.1 , пользователь debian ,пароль от пользователя, порт 22222 на котором у нас SSH. Переходим сюда /home/debian/gitian-builder/build/out и видим наши бинарники. 6 Чего мы в общем то и ждали , сам процесс создания форка 6.1 Подготовимся Заходим сюда https://github.com/lhartikk/GenesisH0 и устанавливаем генератор Genesis блока Конструктор алгоритма скрипт на питоне. sudo pip install scrypt construct Модуль для монеток x11 git clone https://github.com/lhartikk/xcoin-hash Переходим к исходнику модуля cd xcoin-hash Собираем sudo python setup.py install Сам генератор генесис блока git clone https://github.com/lhartikk/GenesisH0 Переходим к нему cd GenesisH0 Проверяем работает ли python genesis.py -a X11 -z "Wired 09/Jan/2014 The Grand Experiment Goes Live: Overstock.com Is Now Accepting Bitcoins" -t 1317972665 -p "040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9" -n 28917698 -t 1390095618 -v 5000000000 Если имеем такое на выходе,значит все хорошо. Примечание для работы генератора нам требуются apt-get install python-dev python-pip python2.7-dev libssl-dev Нам их ставить больше не требуется , так как мы установили их в самом начале. 7 Редактирование исходников ( я буду описывать все по порядку с 1 по последний ) Первое что мы делаем переименовываем наш репозиторий на название нашем будущий монетки , я буду использовать имя owncoin. Жмем Setting и пишем наше название, жмем rename. Переходим назад и смотрим что все успешно переименовалось. Теперь открываем наш github клиент для windows и входим в него пользователем github. Далее клонируем репозиторий к нам на диск. Жмем View branch И видим такое Переходим в нашу папку с исходниками и будем массово заменять адреса репозиториев сохраненные в файлах на наш. Делаем как на картинке заменяем github.com/dashpay/dash на github.com/mycointest/owncoin в папке D:\owncoin во всех файлах. Далее переходим в наш клиент github и видим такое, Пишем что либо в Summary и Description и жмем Comit to master И видим что все успешно загрузилось на наш репозиторий. По History как вы уже поняли мы можем отслеживать вносимые изменения. Теперь мы переименуем DASHPAY Dashpay dashpay на MYTESTCOIN Mycointest mycointest И DASH ,Dash, dash на OWNCOIN Owncoin owncoin Важно при массовом переименовании поставить галочку учитывать регистр ,а также сначала жать найти все , и беглым взглядом искать найденные файлы с крякозяблами , в них не в коем случае нельзя нечего переименовывать. Потому мы их находим при поиске и делаем бекапы. И после процесса переименования мы их возвращаем на свои места. В обязательном порядке начинайте с Dashpay вариаций. Начнем … Dashpay на Mycointest Как мы видим мы наши всего 1 результат. Жмем заменить во всех файлах. dashpay на mycointest Как мы можем заметить тут результатов побольше уже ,но нечего критично тут нету, так что смело жмем заменить во всех файлах. Теперь перейдем к замене DASH ,Dash, dash на OWNCOIN Owncoin owncoin DASH на OWNCOIN Пройдя беглым взглядом по всему списку , мы также не обнаруживаем тут нечего критического и жмем заменить во всех файлах. Dash на Owncoin А вот тут наш поджидает сюрприз в виде файлов с крякозяблами. Мы должны пройтись по всему списку найдя все файлы и скопировать их куда то для последующего возвращения на место. В моем случае это файлы D:\owncoin\owncoin\.git\objects\pack\pack-86e81c3d9a98b214df607081954f37e571a09fd6.pack D:\owncoin\owncoin\contrib\gitian-downloader\luke-jr-key.pgp D:\owncoin\owncoin\contrib\macdeploy\background.psd По этому я просто копирую эти файлы в укромное место ,и жму заменить после возвращая эти файлы на свои места. dash на owncoin Опять как и в прошлом примере имеем 3 файла с крякозяблами В моем случае это файлы D:\owncoin\owncoin\.git\index D:\owncoin\owncoin\.git\objects\pack\pack-86e81c3d9a98b214df607081954f37e571a09fd6.pack D:\owncoin\owncoin\contrib\gitian-downloader\luke-jr-key.pgp Поступаем также , копируем в укромное место , жмем заменить в файлах. Теперь открываем папку с нашими исходниками в проводнике , и через поиск ищем все со словами dash (папки с названиями dashpay можно проигнорировать) И прямо в проводники руками заменяем всё dash на owncoin Важное проводник почемуто находит не все , потому идем потом в папку D:\key\owncoin\src\qt\res\icons Изменяем названия в файлах в которых есть dash на owncoin ( заменяем в файлах только часть dash!) Теперь переходим в наш клиент github , и загрузим на него изменённые файлы . Как это делать я рассказывал выше. Теперь приступаем к настройке исходников Первое что мы сделаем сгенерируем свои уникальные паблик и приват ключи Для этого мы идем в консоль на наш дебиан И генерируем их командой ( нам понадобится 5 ключей ) openssl ecparam -genkey -name secp256r1 -out k.pem -out название файла ключа я буду их называть mainalert.pem testnetalert.pem main.pem mainspork.pem testnetspork.pem openssl ecparam -genkey -name secp256r1 -out mainalert.pem Теперь получаем вывод нашего ключа командой openssl ec -in k.pem -noout –text у меня выглядит так openssl ec -in mainalert.pem -noout -text копируем содержимое с командной строки, и помещаем в текстовик. Теперь убираем все двоеточия И выравниваем в 1 срочку Проделываем так 5 раз, Теперь делаем так openssl ec -in mainalert.pem -text > mainalert.hex Проделываем так для каждого файла. Теперь делаем вывод ключа в hex, и сохраняем их в отдельный текстовый файл Тоже для всех , этой командой cat mainalert.hex Вот так они выглядят в моей текстовом документе их 5. В результате я имею такой набор приват паблик и приват ключей , теперь лезем по FTP на наш дебиан и копируем все файлы ключей к себе на будущие. Теперь проверим валидность наших ключей Идем на http://kjur.github.io/jsrsasign/sample-ecdsa.html Жмем sing message Далее жмем verify it, и если на выходе получаем такое то ключи валидные. Проделываем такое с каждым ключом. Далее приступаем к генерации генезис блоков Идем в нашу консоль на дебиан Переходим в cd GenesisH0 Берем наш main паблик ключ в моем случае это 0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177 Придумываем уникально фразу которая будет у нас pszTimestamp В моем случае это "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you" Идем на http://www.unixtimestamp.com/index.php и timestamp на будущий старт , я сделал примерно на 5 часов от текущего времени , так как примерно столько еще я потрачу на это гайд :) я получил 1449579900 И формулируем такой запрос python genesis.py -a X11 -z "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you" -t 1449579900 -p "0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177" Вставляем в консоль , и ждем нахождения генезис блока. Результат копируем в текстовик. Это мы создали генезис блок для основной сети , а теперь мы создадим для тест нета и регтестнета генезис блоки! Что бы это сделать мы просто к –t прибавим в конце 1 и 2 Это у нас будет для тестнета python genesis.py -a X11 -z "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you" -t 1449579901 -p "0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177" Как мы можем заметить мы получили совсем другой генезис блок но с тем же pszTimestamp и паблик ключом А это для рег теста , только тут мы еще добавим параметр –b 0x207fffff и -n 2 python genesis.py -a X11 -z "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you" -t 1449579901 -p "0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177" -b 0x207fffff –n 2 Объясню зачем мы делаем это для тестовых параметров , так как мы заменили pszTimestamp и merkle hash на свой уникальный , если мы не заменим в тест и рег тест генезис блоки то после компиляции клиента мы получим error. Иза связи их генезис блоков с pszTimestamp и merkle hash. В результате я получил такое в своем текстовике. Ну а теперь когда у нас все есть , мы можем приступить к редактированию исходников :) Начнем с файла chainparams.cpp Первое что мы делаем , редактируем чек поинты static Checkpoints::MapCheckpoints mapCheckpoints = boost::assign::map_list_of ( 1500, uint256("0x000000aaf0300f59f49bc3e970bad15c11f961fe2347accffff19d96ec9778e3")) ( 4991, uint256("0x000000003b01809551952460744d5dbb8fcbd6cbae3c220267bf7fa43f837367")) ( 9918, uint256("0x00000000213e229f332c0ffbe34defdaa9e74de87f2d8d1f01af8d121c3c170b")) ( 16912, uint256("0x00000000075c0d10371d55a60634da70f197548dbbfa4123e12abfcbc5738af9")) ( 23912, uint256("0x0000000000335eac6703f3b1732ec8b2f89c3ba3a7889e5767b090556bb9a276")) ( 35457, uint256("0x0000000000b0ae211be59b048df14820475ad0dd53b9ff83b010f71a77342d9f")) ( 45479, uint256("0x000000000063d411655d590590e16960f15ceea4257122ac430c6fbe39fbf02d")) ( 55895, uint256("0x0000000000ae4c53a43639a4ca027282f69da9c67ba951768a20415b6439a2d7")) ( 68899, uint256("0x0000000000194ab4d3d9eeb1f2f792f21bb39ff767cb547fe977640f969d77b7")) ( 74619, uint256("0x000000000011d28f38f05d01650a502cc3f4d0e793fbc26e2a2ca71f07dc3842")) ( 75095, uint256("0x0000000000193d12f6ad352a9996ee58ef8bdc4946818a5fec5ce99c11b87f0d")) ( 88805, uint256("0x00000000001392f1652e9bf45cd8bc79dc60fe935277cd11538565b4a94fa85f")) ( 107996, uint256("0x00000000000a23840ac16115407488267aa3da2b9bc843e301185b7d17e4dc40")) ( 137993, uint256("0x00000000000cf69ce152b1bffdeddc59188d7a80879210d6e5c9503011929c3c")) ( 167996, uint256("0x000000000009486020a80f7f2cc065342b0c2fb59af5e090cd813dba68ab0fed")) ( 207992, uint256("0x00000000000d85c22be098f74576ef00b7aa00c05777e966aff68a270f1e01a5")) ( 312645, uint256("0x0000000000059dcb71ad35a9e40526c44e7aae6c99169a9e7017b7d84b1c2daf")) ; static const Checkpoints::CCheckpointData data = { &mapCheckpoints, 1423563332, // * UNIX timestamp of last checkpoint block 853742, // * total number of transactions between genesis and last checkpoint // (the tx=... number in the SetBestChain debug.log lines) 2800 // * estimated number of transactions per day after checkpoint }; static Checkpoints::MapCheckpoints mapCheckpointsTestnet = boost::assign::map_list_of ( 261, uint256("00000c26026d0815a7e2ce4fa270775f61403c040647ff2c3091f99e894a4618")) ( 77900, uint256("00000007e5ec67e2a626c07b7d66673c3dd8df0aed5018ca984b99fba2b71024")) ( 82313, uint256("000000156a313af1d69fe855609175b276996235e8f4f7da41b10e4a7a750a19")) ; static const Checkpoints::CCheckpointData dataTestnet = { &mapCheckpointsTestnet, 1405699509, 201, 500 }; static Checkpoints::MapCheckpoints mapCheckpointsRegtest = boost::assign::map_list_of ( 0, uint256("0x000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e")) ; static const Checkpoints::CCheckpointData dataRegtest = { &mapCheckpointsRegtest, 0, 0, 0 }; убираем лишние и ставим нулевые блоки , и взамен них наши генесис блоки в моем случае это Main 00000205a2b36c89d27547db95cdf4a3038662dd26cf21af8b9c8978a64b06a2 Testnet 00000416024caa7a7900f9a73c120660773ca4019d0671ee5d5bb528acbaa633 Regtest 17a08f326f61be14e0502edeb93d46013596a0bf1d8ddd9d5909f37dab7305a4 Ну и тайм штамп и количество транзакций между генезис блоком и последним у нас будет ноль . Последний пункт не трогаем. Как у меня теперь это выглядит static Checkpoints::MapCheckpoints mapCheckpoints = boost::assign::map_list_of ( 0, uint256("0x00000205a2b36c89d27547db95cdf4a3038662dd26cf21af8b9c8978a64b06a2")) ; static const Checkpoints::CCheckpointData data = { &mapCheckpoints, 1449579900, // * UNIX timestamp of last checkpoint block 0, // * total number of transactions between genesis and last checkpoint // (the tx=... number in the SetBestChain debug.log lines) 2800 // * estimated number of transactions per day after checkpoint }; static Checkpoints::MapCheckpoints mapCheckpointsTestnet = boost::assign::map_list_of ( 0, uint256("00000416024caa7a7900f9a73c120660773ca4019d0671ee5d5bb528acbaa633")) ; static const Checkpoints::CCheckpointData dataTestnet = { &mapCheckpointsTestnet, 1449579901, 0, 500 }; static Checkpoints::MapCheckpoints mapCheckpointsRegtest = boost::assign::map_list_of ( 0, uint256("0x17a08f326f61be14e0502edeb93d46013596a0bf1d8ddd9d5909f37dab7305a4")) ; static const Checkpoints::CCheckpointData dataRegtest = { &mapCheckpointsRegtest, 0, 0, 0 }; Дальше заменяем генезис блоки и AlertPubKey main Тут мы вписуем совершенно рандомные валидные hex символы я возьму 0x1c 0xbd 0xcb 0x4f pchMessageStart[0] = 0xbf; pchMessageStart[1] = 0x0c; pchMessageStart[2] = 0x6b; pchMessageStart[3] = 0xbd; Сюда мы вписываем папблик ключ что генерировали ранее – тот что maimalert 04f4ef416b8597cbadde2216eb0d4fc5137075a3fa3442b71b4ea97efca14e885aa75911b7ef3e6353281d2515a375e8a510455214031df1ac46e443e1ea9a9647 vAlertPubKey = ParseHex("048240a8748a80a286b270ba126705ced4f2ce5a7847b3610ea3c06513150dade2a8512ed5ea86320824683fc0818f0ac019214973e677acd1244f6d0571fc5103"); Это наш порт для связа сети , мы его будет изменять на свой я буду использовать для замены 9887 nDefaultPort = 9999; это мы не трогаем bnProofOfWorkLimit = ~uint256(0) >> 20; // Owncoin starting difficulty is 1 / 2^12 Это момент когда уменьшится награда в 2 раза за майнинг. nSubsidyHalvingInterval = 210000; начало роста сложности nEnforceBlockUpgradeMajority = 750; nRejectBlockOutdatedMajority = 950; nToCheckBlockUpgradeMajority = 1000; Майниг клиента сколько ядер процессора будет задействовано , 0= по все. nMinerThreads = 0; Пересчет сложости раз в сутки. nTargetTimespan = 24 * 60 * 60; // Owncoin: 1 day Время на генерацию блока nTargetSpacing = 2.5 * 60; // Owncoin: 2.5 minutes /** * Build the genesis block. Note that the output of the genesis coinbase cannot * be spent as it did not originally exist in the database. * * CBlock(hash=00000ffd590b14, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=e0028e, nTime=1390095618, nBits=1e0ffff0, nNonce=28917698, vtx=1) * CTransaction(hash=e0028e, ver=1, vin.size=1, vout.size=1, nLockTime=0) * CTxIn(COutPoint(000000, -1), coinbase 04ffff001d01044c5957697265642030392f4a616e2f3230313420546865204772616e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73) * CTxOut(nValue=50.00000000, scriptPubKey=0xA9037BAC7050C479B121CF) * vMerkleTree: e0028e */ pszTimestamp как мы помним мы его создавали в самом начале "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you" const char* pszTimestamp = "Wired 09/Jan/2014 The Grand Experiment Goes Live: Overstock.com Is Now Accepting Bitcoins"; CMutableTransaction txNew; txNew.vin.resize(1); txNew.vout.resize(1); Это мы не трогаем txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp)); Награда за блок ( поправьте если ошибаюсь) txNew.vout[0].nValue = 50 * COIN; Паблик ключи генезис блока у нас это 0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177 txNew.vout[0].scriptPubKey = CScript() << ParseHex("040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9") << OP_CHECKSIG; genesis.vtx.push_back(txNew); genesis.hashPrevBlock = 0; genesis.hashMerkleRoot = genesis.BuildMerkleTree(); genesis.nVersion = 1; Временна метка по unix системе у нас это 1449579900 genesis.nTime = 1390095618; Nbits у нас это 0x1e0ffff0 genesis.nBits = 0x1e0ffff0; nonce у нас он 2087222 genesis.nNonce = 28917698; Это сам генезис блок hashGenesisBlock = genesis.GetHash(); assert(hashGenesisBlock == uint256("0x00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6")); Его Merkleroot хеш assert(genesis.hashMerkleRoot == uint256("0xe0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7")); ДНС сиды, их мы будем убирать путем замены на vSeeds.clear(); vSeeds.push_back(CDNSSeedData("darkcoin.io", "dnsseed.darkcoin.io")); vSeeds.push_back(CDNSSeedData("darkcoin.qa", "dnsseed.darkcoin.qa")); vSeeds.push_back(CDNSSeedData("masternode.io", "dnsseed.masternode.io")); vSeeds.push_back(CDNSSeedData("mycointest.io", "dnsseed.mycointest.io")); Это отвечает за адрес я его не менял . base58Prefixes[PUBKEY_ADDRESS] = list_of( 76); // Owncoin addresses start with 'X' base58Prefixes[SCRIPT_ADDRESS] = list_of( 16); // Owncoin script addresses start with '7' base58Prefixes[SECRET_KEY] = list_of(204); // Owncoin private keys start with '7' or 'X' base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x02)(0xFE)(0x52)(0xF8); // Owncoin BIP32 pubkeys start with 'drkv' base58Prefixes[EXT_SECRET_KEY] = list_of(0x02)(0xFE)(0x52)(0xCC); // Owncoin BIP32 prvkeys start with 'drkp' base58Prefixes[EXT_COIN_TYPE] = list_of(0x80000005); // Owncoin BIP44 coin type is '5' convertSeed6(vFixedSeeds, pnSeed6_main, ARRAYLEN(pnSeed6_main)); fRequireRPCPassword = true; fMiningRequiresPeers = true; fAllowMinDifficultyBlocks = false; fDefaultConsistencyChecks = false; fRequireStandard = true; fMineBlocksOnDemand = false; fSkipProofOfWorkCheck = false; fTestnetToBeDeprecatedFieldRPC = false; nPoolMaxTransactions = 3; Достаточно спорная часть , я думаю вполне возможно просто вставить ключ и после импортировать себе приват кей в кошелек для работы спорка , но могу ошибаться поправьте кто знает . Принципе и без этого все работает. Ставим сюда mainspork 04594d9bcfd432ed21603c81dc6a2cbdc58ded77217ecd91c0420737f60a1948871a66bb84bff26e0f5dd447ee931b5213bca0d9de686c49f6f03545a03fd79b75 strSporkKey = "04549ac134f694c0243f503e8c8a9a986f5de6610049c40b07816809b0d1d06a21b07be27b9bb555931773f62ba6cf35a25fd52f694d4e1106ccd237a7bb899fdd"; strMasternodePaymentsPubKey = "04549ac134f694c0243f503e8c8a9a986f5de6610049c40b07816809b0d1d06a21b07be27b9bb555931773f62ba6cf35a25fd52f694d4e1106ccd237a7bb899fdd"; strDarksendPoolDummyAddress = "Xq19GqFvajRrEdDHYRKGYjTsQfpV5jyipF"; Ставим что ставили в генезис блок или делаем отдельный на будущею дату. nStartMasternodePayments = 1403728576; //Wed, 25 Jun 2014 20:36:16 GMT как это выглядит после редактирования. class CMainParams : public CChainParams { public: CMainParams() { networkID = CBaseChainParams::MAIN; strNetworkID = "main"; /** * The message start string is designed to be unlikely to occur in normal data. * The characters are rarely used upper ASCII, not valid as UTF-8, and produce * a large 4-byte int at any alignment. */ pchMessageStart[0] = 0x1c; pchMessageStart[1] = 0xbd; pchMessageStart[2] = 0xcb; pchMessageStart[3] = 0x4f; vAlertPubKey = ParseHex("04f4ef416b8597cbadde2216eb0d4fc5137075a3fa3442b71b4ea97efca14e885aa75911b7ef3e6353281d2515a375e8a510455214031df1ac46e443e1ea9a9647"); nDefaultPort = 9887; bnProofOfWorkLimit = ~uint256(0) >> 20; // Owncoin starting difficulty is 1 / 2^12 nSubsidyHalvingInterval = 210000; nEnforceBlockUpgradeMajority = 750; nRejectBlockOutdatedMajority = 950; nToCheckBlockUpgradeMajority = 1000; nMinerThreads = 0; nTargetTimespan = 24 * 60 * 60; // Owncoin: 1 day nTargetSpacing = 2.5 * 60; // Owncoin: 2.5 minutes /** * Build the genesis block. Note that the output of the genesis coinbase cannot * be spent as it did not originally exist in the database. * * CBlock(hash=00000ffd590b14, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=e0028e, nTime=1390095618, nBits=1e0ffff0, nNonce=28917698, vtx=1) * CTransaction(hash=e0028e, ver=1, vin.size=1, vout.size=1, nLockTime=0) * CTxIn(COutPoint(000000, -1), coinbase 04ffff001d01044c5957697265642030392f4a616e2f3230313420546865204772616e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73) * CTxOut(nValue=50.00000000, scriptPubKey=0xA9037BAC7050C479B121CF) * vMerkleTree: e0028e */ const char* pszTimestamp = "I create my owncoin 07/12/2015 for test , End its work for me. I hope this guide help you"; CMutableTransaction txNew; txNew.vin.resize(1); txNew.vout.resize(1); txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp)); txNew.vout[0].nValue = 50 * COIN; txNew.vout[0].scriptPubKey = CScript() << ParseHex("0436b2d4b1a72bcad8a8f9b8d12048014bcbbb21df91d84ed172cbcfe8aa6f0e9da5e995fa3b8c63da129c247b73cdd55bac80abc2b67adfbf88381a9889e64177") << OP_CHECKSIG; genesis.vtx.push_back(txNew); genesis.hashPrevBlock = 0; genesis.hashMerkleRoot = genesis.BuildMerkleTree(); genesis.nVersion = 1; genesis.nTime = 1449579900; genesis.nBits = 0x1e0ffff0; genesis.nNonce = 2087222; hashGenesisBlock = genesis.GetHash(); assert(hashGenesisBlock == uint256("0x00000205a2b36c89d27547db95cdf4a3038662dd26cf21af8b9c8978a64b06a2")); assert(genesis.hashMerkleRoot == uint256("0xb7ba7a0616705a327d39f6bf791c7db48abe4c79a11b62c6d690816eddc4d730")); vSeeds.clear(); base58Prefixes[PUBKEY_ADDRESS] = list_of( 76); // Owncoin addresses start with 'X' base58Prefixes[SCRIPT_ADDRESS] = list_of( 16); // Owncoin script addresses start with '7' base58Prefixes[SECRET_KEY] = list_of(204); // Owncoin private keys start with '7' or 'X' base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x02)(0xFE)(0x52)(0xF8); // Owncoin BIP32 pubkeys start with 'drkv' base58Prefixes[EXT_SECRET_KEY] = list_of(0x02)(0xFE)(0x52)(0xCC); // Owncoin BIP32 prvkeys start with 'drkp' base58Prefixes[EXT_COIN_TYPE] = list_of(0x80000005); // Owncoin BIP44 coin type is '5' convertSeed6(vFixedSeeds, pnSeed6_main, ARRAYLEN(pnSeed6_main)); fRequireRPCPassword = true; fMiningRequiresPeers = true; fAllowMinDifficultyBlocks = false; fDefaultConsistencyChecks = false; fRequireStandard = true; fMineBlocksOnDemand = false; fSkipProofOfWorkCheck = false; fTestnetToBeDeprecatedFieldRPC = false; nPoolMaxTransactions = 3; strSporkKey = "04594d9bcfd432ed21603c81dc6a2cbdc58ded77217ecd91c0420737f60a1948871a66bb84bff26e0f5dd447ee931b5213bca0d9de686c49f6f03545a03fd79b75"; strMasternodePaymentsPubKey = "04594d9bcfd432ed21603c81dc6a2cbdc58ded77217ecd91c0420737f60a1948871a66bb84bff26e0f5dd447ee931b5213bca0d9de686c49f6f03545a03fd79b75"; strDarksendPoolDummyAddress = "Xq19GqFvajRrEdDHYRKGYjTsQfpV5jyipF"; nStartMasternodePayments = 1449579900; //Wed, 25 Jun 2014 20:36:16 GMT Проделываем тоже самое что testnet заполняя только те поля что доступны , чистим сиды. В регтест обязательно bits: 0x207fffff Также не забываем заменить везде порты я заменял в 4 позициях main 9999 на 9887 testnet 19999 на 19887 regtest 19994 на 19883 Unite=test 18445 на 18334 И сохраняем наш исходник , и приступаем к редактированию следующего. activemasternode.cpp Тут мы изменям порты 9999 на 9887 вот в этих местах LogPrintf("CActiveMasternode::ManageStatus() - Checking inbound connection to '%s'\n", service.ToString()); if(Params().NetworkID() == CBaseChainParams::MAIN) { if(service.GetPort() != 9999) { notCapableReason = strprintf("Invalid port: %u - only 9999 is supported on mainnet.", service.GetPort()); LogPrintf("CActiveMasternode::ManageStatus() - not capable: %s\n", notCapableReason); return; } } else if(service.GetPort() == 9999) { notCapableReason = strprintf("Invalid port: %u - 9999 is only supported on mainnet.", service.GetPort()); LogPrintf("CActiveMasternode::ManageStatus() - not capable: %s\n", notCapableReason); return; } if(!ConnectNode((CAddress)service, NULL, true)){ notCapableReason = "Could not connect to " + service.ToString(); LogPrintf("CActiveMasternode::ManageStatus() - not capable: %s\n", notCapableReason); return; } и CService service = CService(strService); if(Params().NetworkID() == CBaseChainParams::MAIN) { if(service.GetPort() != 9999) { errorMessage = strprintf("Invalid port %u for masternode %s - only 9999 is supported on mainnet.", service.GetPort(), strService); LogPrintf("CActiveMasternode::Register() - %s\n", errorMessage); return false; } } else if(service.GetPort() == 9999) { errorMessage = strprintf("Invalid port %u for masternode %s - 9999 is only supported on mainnet.", service.GetPort(), strService); LogPrintf("CActiveMasternode::Register() - %s\n", errorMessage); return false; } Тут заменяем порты chainparamsbase.cpp * Main network */ class CBaseMainParams : public CBaseChainParams { public: CBaseMainParams() { networkID = CBaseChainParams::MAIN; nRPCPort = 9998; } }; static CBaseMainParams mainParams; /** * Testnet (v3) */ class CBaseTestNetParams : public CBaseMainParams { public: CBaseTestNetParams() { networkID = CBaseChainParams::TESTNET; nRPCPort = 19998; strDataDir = "testnet3"; } }; Я заменил 9998 на 9886 ,19998 на 19886 Тут мы прописываем вшитые fixed seeds chainparamsseeds.h // ***TODO*** fix generate-seeds.py and REGENERATE static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb3,0x2b,0x80,0xef}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x80,0x7f,0x6a,0xeb}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x25,0x9d,0xfa,0x0a}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa2,0xd1,0x63,0x23}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0xd2,0x36}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xac,0xf5,0x05,0x84}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2e,0xa2,0x42,0x0a}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4e,0x6d,0xb2,0xc3}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8a,0x80,0xa9,0x5e}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x34,0x0b,0x8d,0xe5}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x25,0x3b,0x15,0x3a}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2e,0x69,0x76,0x0f}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb2,0x21,0x7e,0xdd}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xec,0x17,0x83}, 9999}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0xd1,0x25}, 9999} }; static SeedSpec6 pnSeed6_test[] = { // {{0xfd,0x87,0xd8,0x7e,0xeb,0x43,0x99,0xcb,0x26,0x31,0xba,0x48,0x51,0x31,0x39,0x0d}, 18333}, // {{0xfd,0x87,0xd8,0x7e,0xeb,0x43,0x44,0xf4,0xf4,0xf0,0xbf,0xf7,0x7e,0x6d,0xc4,0xe8}, 18333} }; #endif // BITCOIN_CHAINPARAMSSEEDS_H Получить их легко, идем на http://www.miniwebtool.com/ip-address-to-hex-converter/ пишем там свой ip адресс как пример использовал 127.0.0.1 и получил 0x7F000001 Теперь превратим его в нужный формат , берем просто убираем 0x c 0x7F000001 И делаем так 7F 00 00 01 Теперь заменяем после 0xff 0xff, не забываем про порт. Результат {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x01}, 9887}, Как у меня все выглядит после редактирования. Тут мы изменяем версию клиента , я сделаю 1.0.0.1 clientversion.h //! These need to be macros, as clientversion.cpp's and owncoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MINOR 12 #define CLIENT_VERSION_REVISION 0 #define CLIENT_VERSION_BUILD 55 Результат //! These need to be macros, as clientversion.cpp's and owncoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 1 #define CLIENT_VERSION_MINOR 0 #define CLIENT_VERSION_REVISION 0 #define CLIENT_VERSION_BUILD 1 Тут заменяем порты chainparamsbase.cpp * Main network */ class CBaseMainParams : public CBaseChainParams { public: CBaseMainParams() { networkID = CBaseChainParams::MAIN; nRPCPort = 9998; } }; static CBaseMainParams mainParams; /** * Testnet (v3) */ class CBaseTestNetParams : public CBaseMainParams { public: CBaseTestNetParams() { networkID = CBaseChainParams::TESTNET; nRPCPort = 19998; strDataDir = "testnet3"; } }; Я заменил 9998 на 9886 ,19998 на 19886 Управление сложностью майнига и наградами мастер нодам. main.cpp Я здесь оставил все как есть ,вы же можете попробовать поэкспериментировать , и можете дополнить мою статью в теме разъяснениями под данным пунктам. Тут мы заменяем порты с 9999 на 9887 masternode.cpp if(Params().NetworkID() == CBaseChainParams::MAIN) { if(addr.GetPort() != 9999) return false; } else if(addr.GetPort() == 9999) return false; И снова порты 9999 на 9887 masternodeconfig.cpp if(Params().NetworkID() == CBaseChainParams::MAIN) { if(CService(ip).GetPort() != 9999) { strErr = _("Invalid port detected in masternode.conf") + "\n" + strprintf(_("Line: %d"), linenumber) + "\n\"" + line + "\"" + "\n" + _("(must be 9999 for mainnet)"); streamConfig.close(); return false; } } else if(CService(ip).GetPort() == 9999) { strErr = _("Invalid port detected in masternode.conf") + "\n" + strprintf(_("Line: %d"), linenumber) + "\n\"" + line + "\"" + "\n" + _("(9999 could be used only on mainnet)"); streamConfig.close(); return false; } Заменяем порты с 9999 на 9887 masternodeman.cpp if(Params().NetworkID() == CBaseChainParams::MAIN){ if(addr.GetPort() != 9999) return; } else if(addr.GetPort() == 9999) return; Сохраняем все исходники и идем по этим путям отрываем эти документы и редактируем порты D:\owncoin\owncoin\contrib\linearize\linearize-hashes.py if 'host' not in settings: settings['host'] = '127.0.0.1' if 'port' not in settings: settings['port'] = 9998 if 'min_height' not in settings: settings['min_height'] = 0 if 'max_height' not in settings: settings['max_height'] = 313000 if 'rpcuser' not in settings or 'rpcpassword' not in settings: print("Missing username and/or password in cfg file", file=stderr) sys.exit(1)D:\owncoin\owncoin\contrib\spendfrom\spendfrom.py testnet = config.get('testnet', '0') testnet = (int(testnet) > 0) # 0/1 in config file, convert to True/False if not 'rpcport' in config: config['rpcport'] = 19998 if testnet else 9998D:\owncoin\owncoin\contrib\bitrpc\bitrpc.py if rpcpass == "": access = ServiceProxy("http://127.0.0.1:9998") else: access = ServiceProxy("http://"+rpcuser+":"+rpcpass+"@127.0.0.1:9998") cmd = sys.argv[1].lower() заменяем 9998 на 9886 и 19998 на 19886 Теперь идем в D:\owncoin\owncoin\contrib\qos\tc.sh # this filter sends the packages into the 1:11 class, and this class is limited to ${LIMIT} iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 9999 ! -d ${LOCALNET} -j MARK --set-mark 0x2 iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 9999 ! -d ${LOCALNET} -j MARK --set-mark 0x2 и заменяем тут порты 9999 на 9887 Теперь сюда D:\owncoin\owncoin\src\test\netbase_tests.cpp и тут заменяем BOOST_CHECK(TestSplitHost("www.bitcoin.org", "www.bitcoin.org", -1)); BOOST_CHECK(TestSplitHost("[www.bitcoin.org]", "www.bitcoin.org", -1)); BOOST_CHECK(TestSplitHost("www.bitcoin.org:80", "www.bitcoin.org", 80)); BOOST_CHECK(TestSplitHost("[www.bitcoin.org]:80", "www.bitcoin.org", 80)); BOOST_CHECK(TestSplitHost("127.0.0.1", "127.0.0.1", -1)); BOOST_CHECK(TestSplitHost("127.0.0.1:9999", "127.0.0.1", 9999)); BOOST_CHECK(TestSplitHost("[127.0.0.1]", "127.0.0.1", -1)); BOOST_CHECK(TestSplitHost("[127.0.0.1]:9999", "127.0.0.1", 9999)); BOOST_CHECK(TestSplitHost("::ffff:127.0.0.1", "::ffff:127.0.0.1", -1)); BOOST_CHECK(TestSplitHost("[::ffff:127.0.0.1]:9999", "::ffff:127.0.0.1", 9999)); BOOST_CHECK(TestSplitHost("[::]:9999", "::", 9999)); BOOST_CHECK(TestSplitHost("::9999", "::9999", -1)); BOOST_CHECK(TestSplitHost(":9999", "", 9999)); BOOST_CHECK(TestSplitHost("[]:9999", "", 9999)); BOOST_CHECK(TestSplitHost("", "", -1)); И заменяем 9999 на 9887 потом в поиске ищем еще 9999 , нас бросает в низ документа, и делаем тоже самое. BOOST_CHECK(TestParse("127.0.0.1", "127.0.0.1:65535")); BOOST_CHECK(TestParse("127.0.0.1:9999", "127.0.0.1:9999")); BOOST_CHECK(TestParse("::ffff:127.0.0.1", "127.0.0.1:65535")); BOOST_CHECK(TestParse("::", "[::]:65535")); BOOST_CHECK(TestParse("[::]:9999", "[::]:9999")); BOOST_CHECK(TestParse("[127.0.0.1]", "127.0.0.1:65535")); BOOST_CHECK(TestParse(":::", "")); Теперь сюда D:\owncoin\owncoin\contrib\seeds\makeseeds.py И изменяем это SUSPICIOUS_HOSTS = set([ "130.211.129.106", "178.63.107.226", "83.81.130.26", "88.198.17.7", "148.251.238.178", "176.9.46.6", "54.173.72.127", "54.174.10.182", "54.183.64.54", "54.194.231.211", "54.66.214.167", "54.66.220.137", "54.67.33.14", "54.77.251.214", "54.94.195.96", "54.94.200.247" ]) import re import sys import dns.resolver PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):9999$") PATTERN_AGENT = re.compile(r"^(\/Satoshi:0.8.6\/|\/Satoshi:0.9.(2|3)\/|\/Core:0.1(0|1|2).\d{1,2}.\d{1,2}\/)$") На такое SUSPICIOUS_HOSTS = set([ "127.0.0.1" - наш ип основной ноды ]) import re import sys import dns.resolver PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):9887$") тут изменяем порт PATTERN_AGENT = re.compile(r"^(\/Satoshi:0.8.6\/|\/Satoshi:0.9.(2|3)\/|\/Core:0.1(0|1|2).\d{1,2}.\d{1,2}\/)$") Теперь идем в D:\owncoin\owncoin\share\seeds В обоих текстовых документах трем все ипы и пишем свой. Открываем generate-seeds.py И заменяем тут порты with open(os.path.join(indir,'nodes_main.txt'),'r') as f: process_nodes(g, f, 'pnSeed6_main', 9999) g.write('\n') with open(os.path.join(indir,'nodes_test.txt'),'r') as f: process_nodes(g, f, 'pnSeed6_test', 19999) g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')Результат with open(os.path.join(indir,'nodes_main.txt'),'r') as f: process_nodes(g, f, 'pnSeed6_main', 9887) g.write('\n') with open(os.path.join(indir,'nodes_test.txt'),'r') as f: process_nodes(g, f, 'pnSeed6_test', 19887) g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n') Теперь идем сюда D:\owncoin\owncoin\configure.ac И ставим версию которою мы указали в исходном файле ,напомню я указывал 1.0.0.1 define(_CLIENT_VERSION_MAJOR, 0) define(_CLIENT_VERSION_MINOR, 12) define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_BUILD, 55)Стало так define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_BUILD, 1) Теперь переходим в D:\owncoin\owncoin\contrib\gitian-descriptors И в каждом файле изменяем name: "owncoin-win-0.12" enable_cache: trueПолучилось так name: "owncoin-win-1.0.0.1" enable_cache: trueНе забываем все сохранить. Теперь переходим в на клиент github и загружаем все изменения на репозиторий. Идем на сайт https://github.com/mycointest/owncoin Жмем на releases Далее жмем Draft a new release В таге пишем номер версии в моем случае это 1.0.0.1 Жмем Publish release Теперь переходим в нашу консоль на дибиан Убеждаемся что мы в корневой директории пользователя дебиан. И пишем туда git clone https://github.com/mycointest/owncoin Ждем пока скачаются исходники. Переходим в cd gitian-builder Потом cd ~debian/owncoin Пишем git pull Переходим cd ~debian/gitian-builder Снова качаем зависимости make -C ../owncoin/depends download SOURCES_PATH=`pwd`/cache/common Собираем ./bin/gbuild --commit owncoin=v1.0.0.1 ../owncoin/contrib/gitian-descriptors/gitian-win.yml Открываем параллельно 2 сесии SSH Переходим в них в cd gitian-builder и смотри сборку с помощью tail -f var/install.log tail -f var/build.log Что бы открыть логи , надо сначала дождаться их создания! Дожидаемся компиляции , берем клиент с ftp Делаем 2 папку под дату , запускам 1 клиент и 2 клиент с -datadir=owncoin2 –listen=0 –gen=1 В конф файл не забываем прописать addnode=127.0.0.1 Запускаем сначала тот что c –listen=1 а после уже тот что с 0, и наблюдаем генерацию монеток :)
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...