Исходник майнера эфира: секретные пулы и настройка батника

Алгоритм Ethash / Хабр

Обзор алгоритма Ethash

В этой статье я расскажу про алгоритм Ethash, который используется для майнинга различных криптовалют, но главная из них это, конечно, Ethereum. Ethash — это Proof of Work (PoW) алгоритм, который является последней версией алгоритма Dagger-Hashimoto, хотя его больше нельзя назвать таковым, так как многие из исходных функций обоих алгоритмов были кардинально изменены.

Термин Proof of Work означает, что майнеры ищут решение (“nonce” или одноразовый номер), которое при хешировании выдаст значение меньше целевого порога, который предварительно задан. Из-за криптографического характера хеш-функции практически невозможно обратное вычисление одноразового номера (“nonce”), удовлетворяющего целевому пороговому пределу. Только если вручную перебирать все возможные варианты.

Алгоритм Dagger-Hashimoto был придуман путем соединения алгоритма Dagger — Виталика Бутерина (одного из основателей Ethereum) и алгоритма Hashimoto Thaddeus Dryja. Он создавался, для того чтобы затруднить майнинг для ASIC-оборудования (Application Specific Integrated Circuits), а также для того, чтобы была легкая проверка и полное хранение в цепочке.

Затруднение майнинга для ASIC-оборудования необходимо, чтобы дать возможность добывать монеты пользователям, у которых нет достаточного объема капитала для покупки таких устройств.

Многие знают, что в данный момент майнинг монет Bitcoin невозможен даже на очень мощном компьютере. Это вызвано тем, что существует большое количество майнинговых ферм, состоящих из ASIC-оборудования, и имеющие гораздо большие вычислительные мощности чем любой персональный компьютер. Именно этой ситуации старались избежать разработчики алгоритма Dagger-Hashimoto и, соответственно, Ethash.

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

Создание больших ферм на ASIC-оборудовании негативно влияет на блокчейн, так как значительно уменьшает уровень децентрализации. А децентрализация необходима для надежности криптовалюты. С помощью равномерной рассредоточенности узлов блокчейна и многократному дублированию файлов платформы, получается создать систему, которая будет невосприимчива к блокировке, удалению, изменению и хакерским атакам.

В итоге, появление ASIC-устройств вынудило пользователей, у которых нет достаточного капитала для их покупки, перестать майнить Bitcoin. По прогнозам некоторых аналитиков, в скором времени Bitcoin будут майнить только крупные ASIC-фермы, что приведет к централизации.

Как уже было сказано выше, алгоритм Ethash создавался с целью предотвратить появление ASIC-устройств для майнинга на этом алгоритме. Но в начале 2018 года компания Bitmain анонсировала выпуск первых ASIC-устройств для Ethash. Однако Ethereum решительно выступил против перспективы доминирования этих устройств в их сети, что привело к разговору о “брикетировании” этого оборудования. Брикетирование это технологическое обновление сети, которое делает аппаратное обеспечение бесполезным или даже сломанным, если оно подключено к сети. Из-за этого майнеры на таком оборудование были вынуждены скрыть свое присутствие и снизить мощность хеширования своих устройств. Также план Ethereum по переходу на технологию PoW/PoS (гибрид Proof of Work и Proof of Stake) c просто PoW делает разработку ASIC устройств для Ethash очень рискованным для производителей.

Принцип работы алгоритма Ethash

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

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

Размер DAG-файла увеличивается каждый раз, когда создаются новые 30000 блоков. На данный момент размер DAG файла для Ethereum около 3,5 Гб. Это означает, что скоро видеокарты на 4 Гб не смогут заниматься майнингом этой монеты. Еще более печальная ситуация была у Ethereum classic, когда размер DAG приблизился к  3,96 Гб. В тот момент было принято решения уменьшить размер файла до ~2,5 Гб. Это было необходимо сделать, так как большая часть майнеров использовала видеокарты на 4 Гб и, соответственно, они бы не смогли майнить, что привело бы к централизации майнинга у крупных игроков и уменьшению надежности криптовалюты.

Теперь перейду к описанию алгоритма хэширования Ethash:

Процесс состоит из 6 основных этапов:

  1. На вход алгоритму подается препроцессированый заголовок, полученный из последнего блока и “nonce”. “Nonce” число, выбранное случайным или псевдослучайным образом. Это подается на SHA-3 подобную функцию, которая создает 128 байтный микс.

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

  3. Полученная страница сочетается с миксом с помощью специальной функции смешивания

  4. 2 и 3 шаг повторяется 64 раза

  5. Полученный в итоге микс обрабатывается для получения более короткого 32-байтного дайджест микса. 

  6. В конце дайджест микс сравнивается с целевым порогом. Если дайджест микс меньше или равен порогу, то “nonce” считается успешным и транслируется в сеть Ethereum. Если же дайджест микс больше порога, то выбирается новый “nonce” путем рандомного выбора или прибавлением единицы к старому “nonce”. И потом алгоритм перезапускается с новым значением “nonce”.

Майнинг с помощью алгоритма Ethash

Майнинг на алгоритме Ethash можно производить как на CPU, так и на GPU. Однако, майнинг на CPU практически не приносит прибыли, так как GPU гораздо эффективнее. Также я упоминал про майнинг на ASIC-устройствах и FPGA, которые в настоящее время способны к интеллектуальному анализу Ethash, однако они неэффективны по сравнению с графическими процессорами и не приветствуются как сообществом, так и разработчиками. Поэтому наиболее выгодным является майнинг на GPU.

Ethash занимает мало памяти, однако требует не менее 2-3 ГБ ОЗУ на каждый используемый графический процессор. GPU от компании AMD обычно показывают лучшие результаты, чем GPU от компании Nvidia. Для того чтобы начать майнить, необходимо скачать специальную программу, например  Ethminer.

Майнинг в пуле также очень популярный способ добычи криптовалют. Он позволяет людям с низкими вычислительными мощностями участвовать в майнинге и получать с этого какую то прибыль. За это создатели пулов берут какой-то процент, обычно в районе 1-2% от дохода.

Далее сравним основные способы майнинга:

Способ

Суть

Минусы

Плюсы

Самостоятельный майнинг

Майнер приобретает оборудование самостоятельно

1. Затраты на видеокарты

2. Шум от оборудования

3. Самостоятельный сбор и настройка фермы

4. Затраты на электроэнергию

5. Риск поломки оборудования

Майнер получает все деньги

Майнинг через пул

Майнер приобретает оборудование самостоятельно и подключается к пулу

1. Затраты на видеокарты

2. Шум от оборудования

3. Самостоятельный сбор и настройка фермы

4. Затраты на электроэнергию

5. Риск поломки оборудования

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

Облачный майнинг

Майнер арендует вычислительные мощности

1. Плата за аренду

Нет минусов связанных с покупкой, настройкой и обслуживанием оборудования.

Монеты на основе алгоритма Ethash

В настоящее время алгоритм Ethash используется во многих криптовалютах. Но самым популярными из них являются:

  1. Ethereum

  2. Ethereum Classic

  3. Expanse

  4. Ubiq

Далее мы более подробно рассмотрим каждую из них:

  1. Ethereum. Это вторая по популярности криптовалюта после Bitcoin. Ее капитализация составляет 67,5 млрд $, что сопоставимо с капитализацией Газпрома. Одним из основателей является выходец из Коломны Виталик Бутерин. Эта платформа позволяет создавать собственные токены, создавать и применять умные контракты и собственные децентрализованные онлайн сервисы и приложения.

  2. Ethereum Classic. Эта криптовалюта появилась в результате несогласия некоторых пользователей с хард-форком оригинального Ethereum. Он произошел из-за того, что один хакер нашел уязвимость и воспользовался ею, чтобы украсть около 50 млн $. Разработчики в свою очередь выпустили обновление, убирающее эту уязвимость, а также позволившее вернуть украденные деньги владельцам. Часть людей посчитало, что злоумышленник не нарушал никаких правил. А так как платформа является децентрализованной, то никто не имеет право вносить в нее изменения. И поэтому они высказались против обновления. И в итоге это привело к созданию Ethereum Classic.

  3. Expanse. Появление этой криптовалюты произошло в 2015 году из-за форка Ethereum. Эта криптовалюта является платежным средством на децентрализованной платформе Expanse Tech, которая создавалась для создания онлайн сервисов. Эта криптовалюта уникальна тем, что все решения о развитие сети принимаются только участниками путем голосования. Если большинство решит, что обновление плохое, то его отменят.

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

Заключение

Сегодня много различных криптовалют основаны на алгоритме Ethash. Это объясняется рядом причин. Во-первых, код алгоритма находится в свободном доступе. Во-вторых, она позволяет предотвратить или сильно уменьшить возможности создания ASIC-устройств для него, что в свою очередь позволяет сделать платформу децентрализованной. Из-за этого она более надежна и позволяет зарабатывать на майнинге не только крупным игрокам, но и рядовым пользователям. Однако есть и ограничения, связанные с высокими требованиями к оперативной памяти для графического процессора.

Список источников:

  1. http://promining.su/kriptovalyuty-na-ethash/

  2. https://altcoinlog.com/algoritm-ethash-dagger-hashimoto/#i-3

  3. https://crypta.guru/kriptovalyuty/algoritm-ethash/

  4. https://cryptomagic.ru/kriptovaluty/ethereum/algoritm. html

  5. https://eth.wiki/en/concepts/ethash/ethash/

Weipool опубликовал исходный код своего Ethereum майнинг пула

 

Рекомендуем

Майнинг на GPU видеокартах — подробное руководство для новичков


Выбор видеокарт для майнинга криптовалют


Актуальный хешрейт видеокарт 2022 


Материнские платы для сборки GPU майнинг ригов


Выбираем ОС для майнинга криптовалют на видеокартах

 

Популярные статьи

  • Майнинг Ethereum POW (ETHW). Инструкция.

  • Хешрейт видеокарт на алгоритме SHA512/256d. Майнинг криптовалюты Radiant RXD

  • Какую криптовалюту добывать на видеокартах вместо Ethereum

  • org/Article»>

    Материнская плата B75 USB-BTC самый выгодный комплект для майнинга

  • Lolminer Autoswitch — автоматически переключит майнинг на самый выгодный вариант

  • Хешрейт видеокарты intel ARC A380 в майнинге на алгоритме Ethash

  • Какой доход будут получать валидаторы от POS майнинга Ethereum

  • Хешрейт CPU AMD Ryzen 9 7950X на алгоритмах RandomX, Ghostrider, AstroBWT и PufferFish3

  • AMD Ryzen 9 7900X в майнинге криптовалюты Monero. Алгоритм RandomX.

  • Хешрейт видеокарты Nvidia Geforce RTX 4090 на алгоритмах Ethash,Etсhash, KawPow, Autolykos2, Equihash, Octopus, Kaspa

  • org/Article»>

    Бездепозитный бонус. Получите 5 USD за регистрацию на Binance до 9 сентября

  • Криптобиржи вместо Binance для граждан России, которые не поддерживают санкции

  • Nvidia удалила LHR защиту в последнем драйвере 522.25

  • Bitget.com — без верификации (KYC) доступен ввод, вывод криптовалюты до 20 BTC и P2P рынок

  • Для чего нужен Индекс Binance CMC TOP 10 равновзвешенных криптовалют

  • CMC от Bitget с кодом верификации. Что это?

  • Binance раскрыла информацию по своим резервам в криптовалюте

 







Информация о материале


Опубликовано: 23. 09.2015, 08:11

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


 Вы можете скачать на github исходный код Backend’а пула и исходный код Frontend’а. Имейте ввиду, что помимо Ethereum клиента, для развертывания и работы пула понадобится Redis и Node.js, по которым существует на так уж много документации на русском языке. Поэтому вы должны уметь работать с этими фреймворком и БД. Фронтенд пула довольно прост, поэтому возможно вы захотите сделать его более красивым и функциональным. Для того, чтобы посмотреть работающий пример данного кода, посетите Weipool. К сожалению, данному пулу не удалось привлечь большое количество майнеров и удержать их.

Скачать исходный код Weipool backendСкачать исходный код Weipool frontend



Подпишись на наш Telegram канал @cryptoage и Вконтакте,  узнавай новости про криптовалюты первым.

Общайся с криптоэнтузиастами и майнерами в Telegram чате @CryptoChat

 

Лучшие биржи для покупки и обмена криптовалют, токенов:







 
Биржа ПреимуществаБонусы при регистрации

Binance

Самая крупная и известная крипто биржа в мире. Надежность и функционал на самом высшем уровне.

Скидка 20% на торговую комиссию по нашей ссылке, 50 USD бонусов за регистрацию

OKX

Одна из старейших крипто бирж в мире. Основана в 2013 году. Занимает 3 место по объему торгов. Максимально возможный функционал и надежность.

Низкие комиссии плюс скидка 20% на торговую комиссию по нашей ссылке

Bybit

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

Бонусы до 600 USD для новых участников

Gate.io

Входит в топ 10 лучших крипто бирж. Предоставляет полный спектр услуг и множество различных бонусов50 USD бонусов и 25 тестовых USD при регистрации. 1000 тестовых USD при прохождении KYC. 500 USD бонусов за выполнение заданий. Розыгрыш 1BTC и уникальных NFT.

1inch

Агрегатор DeFi (децентрализованных) обменников в сети Ethereum, Binance, Polygon, Optimism и Arbitrum. Находит самые выгодные обмены и экономит комиссию на  создание смарт контрактов за счет использования уникальной технологии. Для работы необходимо установить в браузере кошелек MetamaskВсе криптовалюты, токены, NFT остаются на вашем кошельке за счет DeFi обменов. Нет рисков потери инвестиций из-за закрытия или взлома обычной биржи.

Поделиться

Читайте так же:

Рекомендуем

Майнинг на GPU видеокартах — подробное руководство для новичков


Выбор видеокарт для майнинга криптовалют


Актуальный хешрейт видеокарт 2022 


Материнские платы для сборки GPU майнинг ригов


Выбираем ОС для майнинга криптовалют на видеокартах

 

Популярные статьи

  • org/Article»>

    Майнинг Ethereum POW (ETHW). Инструкция.

  • Хешрейт видеокарт на алгоритме SHA512/256d. Майнинг криптовалюты Radiant RXD

  • Какую криптовалюту добывать на видеокартах вместо Ethereum

  • Материнская плата B75 USB-BTC самый выгодный комплект для майнинга

  • Lolminer Autoswitch — автоматически переключит майнинг на самый выгодный вариант

  • Хешрейт видеокарты intel ARC A380 в майнинге на алгоритме Ethash

  • Какой доход будут получать валидаторы от POS майнинга Ethereum

  • org/Article»>

    Хешрейт CPU AMD Ryzen 9 7950X на алгоритмах RandomX, Ghostrider, AstroBWT и PufferFish3

  • AMD Ryzen 9 7900X в майнинге криптовалюты Monero. Алгоритм RandomX.

  • Хешрейт видеокарты Nvidia Geforce RTX 4090 на алгоритмах Ethash,Etсhash, KawPow, Autolykos2, Equihash, Octopus, Kaspa

  • Бездепозитный бонус. Получите 5 USD за регистрацию на Binance до 9 сентября

  • Криптобиржи вместо Binance для граждан России, которые не поддерживают санкции

  • Nvidia удалила LHR защиту в последнем драйвере 522.25

  • Bitget. com — без верификации (KYC) доступен ввод, вывод криптовалюты до 20 BTC и P2P рынок

  • Для чего нужен Индекс Binance CMC TOP 10 равновзвешенных криптовалют

  • CMC от Bitget с кодом верификации. Что это?

  • Binance раскрыла информацию по своим резервам в криптовалюте

 

Напишите свой собственный алгоритм майнинга блокчейна в Go! | by Coral Health

Со всем недавним повальным увлечением майнингом биткойнов и эфириума легко задаться вопросом, о чем идет речь. Для новичков в этой области они слышат дикие истории о людях, заполняющих склады графическими процессорами, которые зарабатывают криптовалюты на миллионы долларов в месяц. Что именно представляет собой майнинг криптовалюты? Как это работает? Как я могу попробовать написать свой собственный алгоритм майнинга?

В этом посте мы ответим на каждый из этих вопросов, а его кульминацией станет руководство по кодированию собственного алгоритма майнинга. Алгоритм, который мы покажем вам, называется 9.0005 Proof of Work , который является основой для Биткойн и Эфириум, двух самых популярных криптовалют. Не волнуйтесь, мы скоро объясним, как это работает.

Что такое майнинг криптовалюты?

Криптовалюты должны иметь дефицит, чтобы быть ценными. Если бы кто-то мог производить столько биткойнов, сколько он хотел, в любое время, биткойн был бы бесполезен как валюта (подождите, разве Федеральная резервная система не делает это? *facepalm*). Алгоритм Биткойн выпускает некоторое количество биткойнов выигравшему участнику своей сети каждые 10 минут, при этом максимальное предложение будет достигнуто примерно через 122 года. Этот график выпуска также в определенной степени контролирует инфляцию, поскольку в начале не высвобождается все фиксированное предложение. Со временем постепенно высвобождается больше.

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

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

Как работает майнинг?

Быстрый поиск в Google «как работает майнинг биткойнов?» заполняет ваши результаты множеством страниц, объясняющих, что майнинг биткойнов просит узел (вас или ваш компьютер) решить сложную математическую задачу . Хотя технически это верно, просто называть это «математической» задачей невероятно избито и избито. Очень интересно понять, как работает майнинг под капотом. Нам нужно немного разобраться в криптографии и хешировании, чтобы узнать, как работает майнинг.

Краткое введение в криптографические хэши

Односторонняя криптография принимает удобочитаемый ввод, такой как «Hello world», и применяет к нему функцию (т. е. математическую задачу) для получения неразборчивого вывода. Эти функции (или алгоритмы) различаются по характеру и сложности. Чем сложнее алгоритм, тем сложнее его реконструировать. Таким образом, криптографические алгоритмы очень эффективны в защите таких вещей, как пароли пользователей и военные коды.

Давайте рассмотрим пример SHA-256, популярного криптографического алгоритма. Этот веб-сайт хеширования позволяет легко вычислять хэши SHA-256. Давайте хэшируем «Hello world» и посмотрим, что у нас получится:

Попробуйте хешировать «Hello world» снова и снова. Вы получаете один и тот же хэш каждый раз. В программировании получение одного и того же результата снова и снова при одних и тех же входных данных называется идемпотентностью .

Фундаментальное свойство криптографических алгоритмов заключается в том, что их должно быть чрезвычайно сложно реконструировать, чтобы найти входные данные, но чрезвычайно легко проверить выходные данные. Например, используя приведенный выше хэш SHA-256, для кого-то другого должно быть тривиально применить хэш-алгоритм SHA-256 к «Hello world», чтобы проверить, действительно ли он создает тот же результирующий хэш, но он должен быть очень сложно взять полученный хэш и получить из него «Hello world». Вот почему этот тип криптографии называется в одну сторону .

Биткойн использует Double SHA-256 , который просто применяет SHA-256 еще раз к хэшу SHA-256 «Hello world». Для наших примеров в этом руководстве мы будем использовать SHA-256.

Майнинг

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

Например, вернитесь на веб-сайт хеширования и наберите «886». Он создает хэш с 3 нулями в качестве префикса.

Но как мы узнали, что «886» дает что-то с 3 нулями? В этом-то и дело. До написания этого блога мы не . Теоретически нам пришлось бы проработать целую кучу комбинаций букв и цифр и проверить результаты, пока мы не получили бы ту, которая соответствует требованию 3 нулей. Чтобы дать вам простой пример, мы уже заранее работали над тем, чтобы хэш «886» производил 3 начальных нуля.

Тот факт, что любой может легко проверить, что «886» производит что-то с тремя ведущими нулями , доказывает , что мы проделали тяжелую работу по тестированию и проверке большой комбинации букв и цифр, чтобы получить этот результат. Так что, если бы я был первым, кто получил этот результат, я бы заработал биткойн на , доказав , что я сделал эту работу — доказательство состоит в том, что любой может быстро проверить, что «886» производит количество нулей, которое я утверждаю. Вот почему алгоритм консенсуса Биткойн называется 9.0005 Доказательство работы .

Но что, если мне просто повезло, и я получил 3 лидирующих нуля с первой попытки? Это крайне маловероятно, и случайный узел, который успешно добывает блок (доказывает, что он сделал работу) с первой попытки, перевешивает миллионы других, которым пришлось приложить дополнительные усилия, чтобы найти желаемый хэш. Давай, попробуй. Введите любую другую комбинацию букв и цифр на веб-сайте хеша. Мы держим пари, что вы не получите 3 лидирующих нуля.

Требования Биткойн немного сложнее, чем это (много больше начальных нулей!), и он может динамически корректировать требования, чтобы убедиться, что требуемая работа не слишком проста или слишком сложна. Помните, что он стремится выпускать биткойны каждые 10 минут, поэтому, если слишком много людей занимаются майнингом, необходимо усложнить доказательство работы, чтобы компенсировать это. это называется регулировка сложности . Для наших целей корректировка сложности будет просто означать необходимость большего количества начальных нулей.

Итак, вы видите, что алгоритм консенсуса Биткойн гораздо интереснее, чем просто «решение математической задачи»!

Теперь, когда у нас есть необходимые данные, давайте создадим нашу собственную программу Blockchain с алгоритмом Proof-of-Work. Мы напишем его на Go, потому что мы используем его здесь, в Coral Health, и, честно говоря, это здорово.

Прежде чем продолжить, мы рекомендуем прочитать наш оригинальный пост в блоге, Создайте собственный блокчейн менее чем из 200 строк Go! Это не обязательное требование, но некоторые из приведенных ниже примеров мы быстро рассмотрим. Обратитесь к исходному сообщению, если вам нужна дополнительная информация. Если вы уже знакомы с этим исходным постом, перейдите к разделу «Доказательство работы» ниже.

Архитектура

У нас будет сервер Go, где для простоты мы поместим весь наш код в один файл main.go . Этот файл предоставит нам всю необходимую нам логику блокчейна (включая Proof of Work) и будет содержать все обработчики для наших REST API. Эти данные блокчейна неизменны; нам нужно только GET и запросы POST . Мы будем делать запросы через браузер для просмотра данных через GET , и мы будем использовать Postman для POST новых блоков ( curl тоже отлично работает).

Импорт

Начнем с нашего стандартного импорта. Обязательно загрузите следующие пакеты с go get

github.com/davecgh/go-spew/spew довольно печатает ваш блокчейн в Терминале

github.com/gorilla/mux удобный слой для подключения вашего веб-сервера

github.com/joho/godotenv чтение переменных окружения из файла .env в корневом каталоге

Давайте создадим файл .env в корневом каталоге который просто хранит одну переменную среды, которая нам понадобится позже. Поместите одну строку в файл .env : ADDR=8080

Сделайте декларацию пакета и определите свой импорт в main.go в вашем корневом каталоге:

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

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

Немного базовой сантехники

Давайте добавим нашу модель данных и другие переменные, которые нам понадобятся, при импорте в main.go

сложность — это константа, определяющая количество нулей, которые мы хотим вести в хеше. Чем больше нулей мы должны получить, тем сложнее найти правильный хэш. Мы просто начнем с 1 нуля.

Блок — это модель данных каждого блока. Не беспокойтесь о Nonce , мы скоро объясним это.

Блокчейн — это фрагмент блока , который представляет нашу полную цепочку.

Сообщение — это то, что мы отправим для создания нового блока , используя запрос POST в нашем REST API.

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

Веб-сервер

Давайте быстро подключим наш веб-сервер. Давайте создадим запустите функцию , которую мы будем вызывать из main позже, которая поддерживает наш сервер. Мы также объявим наши обработчики маршрутов в makeMuxRouter() . Помните, что все, что нам нужно, это GET для получения блокчейна и POST для добавления новых блоков. Блокчейны неизменны, поэтому нам не нужно редактировать или удалять их.

httpAddr := os.Getenv("ADDR") извлечет порт :8080 из нашего файла .env , который мы создали ранее. Мы сможем получить доступ к нашему приложению через http://localhost:8080 в нашем браузере.

Давайте напишем наш обработчик GET , чтобы вывести нашу цепочку блоков в наш браузер. Мы также добавим быструю функцию responsewithJSON , которая возвращает нам сообщения об ошибках в формате JSON, если какой-либо из наших вызовов API приводит к ошибке.

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

Теперь пишем нашу Обработчик POST . Вот так мы добавляем новые блоки. Мы делаем запрос POST с помощью Postman, отправляя тело JSON, например. {"BPM":60} to http://localhost:8080 с частотой пульса, которую вы измерили ранее.

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

Основные функции блокчейна

Давайте подключим наши основные функции блокчейна, прежде чем мы нажмем Proof of Work. Мы добавим функцию isBlockValid , которая гарантирует, что наши индексы увеличиваются правильно, а наши PrevHash нашего текущего блока и Hash предыдущего блока совпадают.

Мы также добавим функцию calculateHash , которая генерирует хэши, необходимые для создания Hash и PrevHash 9009.8 . Это всего лишь хэш SHA-256 нашего составного индекса, временной метки, BPM, предыдущего хэша и Nonce (мы объясним, что это за секунда).

Перейдем к алгоритму майнинга, или Proof of Work. Мы хотим убедиться, что доказательство работы завершено, прежде чем мы разрешим добавление нового блока в блокчейн . Давайте начнем с простой функции, которая проверяет, соответствует ли хэш, сгенерированный во время нашего доказательства работы, установленным нами требованиям.

Наши требования будут следующими:

  • Хэш, сгенерированный нашим доказательством работы, должен начинаться с определенного количества нулей
  • Количество нулей определяется постоянной сложностью , которую мы определили в начале наша программа (в нашем случае 1)
  • Мы можем усложнить решение Proof of Work, увеличив сложность

Напишите эту функцию, isHashValid :

Go предоставляет удобный Повторите функции и HasPrefix в его пакете строк . Мы определяем префикс переменной как повторение нулей, определенных нашей сложностью . Затем мы проверяем, начинается ли хэш с этих нулей, и возвращаем True , если да, и False , если нет.

Теперь давайте создадим нашу функцию generateBlock .

Мы создаем newBlock , который берет хэш предыдущего блока и помещает его в PrevHash , чтобы убедиться, что у нас есть непрерывность в нашей цепочке блоков. Большинство других полей должны быть видны:

  • Индекс приращение
  • Отметка времени — строковое представление текущего времени константа в верхней части нашей программы. Мы не будем использовать это поле в этом руководстве, но оно полезно, если мы проводим дальнейшую проверку и хотим убедиться, что сложность соответствует результатам хеширования (т. е. результат хеширования имеет N нулей с префиксом, поэтому сложность также должна быть равна N, или цепь скомпрометирована)

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

  • Мы возьмем шестнадцатеричное представление i и установим Nonce равным ему. Нам нужен способ добавить изменяющееся значение к нашему хэшу, который мы создаем из нашей функции calculateHash , поэтому, если мы не получим желаемое начальное количество нулей, мы можем попробовать еще раз с новым значением. Это изменяющееся значение мы добавляем к нашей конкатенированной строке в calculateHash называется "Nonce"
  • В нашем цикле мы вычисляем хэш с i и Nonce, начиная с 0, и проверяем, начинается ли результат с количества нулей, как определено нашей константой сложность . Если это не так, мы вызываем следующую итерацию цикла с увеличенным Nonce и пытаемся снова.
  • Мы добавили 1-секундный сон, чтобы имитировать некоторое время, необходимое для решения Proof-of-Work
  • Мы продолжаем цикл, пока не получим желаемое количество начальных нулей, что означает, что мы успешно завершили наше Proof-of-Work. Тогда и только тогда мы позволяем нашим Блок для добавления в блок-цепочку с помощью нашего обработчика handleWriteBlock

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

С godotenv. Load() наша переменная среды, которая представляет собой просто порт :8080 , к которому мы будем обращаться из нашего браузера.

Подпрограмма go создает наш блок генезиса, поскольку нам нужно предоставить нашей цепочке блоков отправную точку.

Мы запускаем наш веб-сервер с помощью run() функция, которую мы создали ранее.

Вот готовый код полностью.

блок-учебник — напишите и опубликуйте свой собственный блокчейн менее чем в 200 строк на Go

Запустите вашу программу с go run main.go

Затем посетите http://localhost:8080 в своем браузере:

Наш блок генезиса был создан для нас. Теперь откройте Postman и давайте отправим Запрос POST на тот же маршрут с нашим BPM (частотой пульса), который мы взяли ранее в теле JSON.

После отправки запроса смотрим что происходит в вашем терминале . Вы увидите, как ваша машина с пыхтением создает новые хэши с увеличением значений Nonce, пока, наконец, не найдет результат с требуемым количеством начальных нулей!

Когда Proof of Work будет решен, мы получим полезное сообщение о том, что работа выполнена ! , и мы можем проверить хэш, чтобы увидеть, что он действительно начинается с количества нулей, которое мы установили в сложность . Это означает, что теоретически новый блок, который мы пытались добавить с BPM = 60, теперь должен был быть добавлен в нашу цепочку блоков.

Обновим наш браузер и проверим:

УСПЕХ! Наш второй блок был добавлен к нашему блоку генезиса. Это означает, что мы успешно отправили наш блок в запросе POST , который запустил процесс майнинга, и ТОЛЬКО когда Proof of Work был решен, он был добавлен в нашу цепочку блоков!

Отличная работа! То, что вы только что узнали, действительно имеет большое значение. Доказательство работы является основой для Биткойн, Эфириум и многих крупнейших блокчейн-платформ. То, через что мы только что прошли, не является тривиальным; в то время как мы использовали низкую сложность для демонстрационных целей, увеличение сложности до высокого числа составляет ровно , как работают готовые к производству блокчейны Proof of Work.

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

  • Узнайте, как работает сеть блокчейнов, в нашем руководстве по работе с сетями
  • Узнайте, как хранить большие файлы распределенным образом и обмениваться данными с блокчейном, в нашем руководстве по IPFS
  • Создайте простой блокчейн P2P в Go.
  • Узнайте о византийской отказоустойчивости, полноте Тьюринга и других передовых концепциях блокчейна здесь.
  • Начните свой собственный блокчейн Hyperledger
  • Создайте DApp на Hyperledger

Если вы готовы сделать еще один шаг, попробуйте узнать о Proof of Stake . В то время как большинство блокчейнов используют Proof of Work в качестве алгоритма консенсуса, Proof of Stake привлекает все больше внимания. Широко распространено мнение, что Ethereum в будущем перейдет от Proof of Work к Proof of Stake.

Чтобы узнать больше о Coral Health и о том, как мы используем блокчейн для продвижения исследований персонализированной медицины, посетите наш веб-сайт.

Майнинг Эфириума - CoinWarz

Майнинг POW завершился на конечной общей сложности (TTD) 58750000000000 для Ethereum и переключился на PoS. Для получения дополнительной информации посетите https://ethereum.org/

Информация о майнинге Ethereum, включая калькулятор майнинга Ethereum, список оборудования для майнинга Ethereum, сложность Ethereum с историческими диаграммами, графики хешрейта Ethereum, а также текущую цену Ethereum.

 Эфириум — это Proof-of-Stake (POS)
«майнинг» криптовалюты.

Имя Эфириум
Символ/тег Эфириум
Логотип
Блок Генезиса Создан пятница, 31 июля 2015 г. , 00:26:28 по Гринвичу
Веб-сайт
Загрузка кошелька Ethereum
https://эфириум.org
Гитхаб / Исходный код Гитхаб
Форум биткойн разговор
Статус Предупреждение
Алгоритм майнинга EtHash
Схема консенсуса Доказательство доли
Монеты к выпуску ?
Время блока 15. 00 сек.

Награда за блок 2.00

монеты

Количество блоков 15 927 428
Эфириум Сложность 1
Сложность Перенацелить 1 блок

Информация о майнинге Эфириума

Сводка по майнингу Эфириума
P2P-порт RPC-порт Блоки Хешрейт сети Сложность Эфириума
30303 8545 15 927 428

390,45 МГц/с

1

Рассчитайте рентабельность майнинга Ethereum и ежедневные вознаграждения за майнинг Ethereum с помощью нашего калькулятора майнинга Ethereum

Калькулятор майнинга Эфириума

График сложности Эфириума

 Загрузка
данные графика. ..

График хешрейта сети Ethereum

 Загрузка
данные графика...

Информация о цене и обменном курсе Эфириума

Текущий обменный курс Объем обмена
0,07477850
(hitbtc)

812.38416801 БТД
10826.11850000 ETH

0,07462204
(Битрекс)

47,36009592 BTC
632,43591627 ETH

0,07254569
(CEX.

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top