Error fetching balance blockchain что это
HiveOS «Балансы кошельков»
HaloGenius
Друг форума
Анонс
Представляем Hive Wallets Balances BETA, вы теперь можете:
Блокчейн
Вы можете легко получить баланс кошелька из одной из следующих общедоступных блокчейнов:
BTC, BCH, BTG, DASH, DCR, ETC, ETH, FTC, GRS, LTC, MONA, XVG, ZEC.
Для этого создайте новый или отредактируйте существующий кошелек публичного блокчейна и включите “Fetch wallet balance” (“Получить баланс кошелька”).
Готово! Баланс должен отображаться как показано ниже:
Баланс пула
С публичным блокчейном вы можете получить невыплаченный баланс из пула: hiveon, 2miners, ethermine, f2pool, flypool, nanopool, nicehash, sparkpool.
Это так же просто, как получить баланс из публичного блокчейна. Для этого создайте новый или отредактируйте существующий кошелек и включите “Fetch wallet balance”(“Получить баланс кошелька”).
Если у вас есть полетный лист, в который включен пул из списка поддерживаемых пулов, вы можете увидеть неоплаченный баланс из этих пулов, как показано выше. Названия пулов представляют собой ссылку на страницу вашего баланса на пуле.
Ключи в списке “Exchange API Keys”:
Далее вам нужно создать или отредактировать кошелек. Source=имя кошелька (в нашем случае biitrex), API key=имя из “Exchange API Keys” для нашей биржы.
Для получения неподтвержденного баланса требуется только адрес кошелька.
Для подтвержденного баланса необходим ключ API.
На панели инструментов HiveOS перейдите к обзору кошельков и перейдите на вкладку “Exchange API Keys”. Вы можете добавить новый ключ API отсюда.
Чтобы получить ключ API, перейдите на панель настроек в личных настройках Nicehash, зайдите в API и найдите API ID и ReadOnly API Key (если пусто, нажмите кнопку «Получить новый ключ»).
Заполните форму “New API Key” задав Name, Exchange=nicehash, API ID и API Key=ReadOnly API Key
Затем перейдите в раздел “Кошельки” и отредактируйте свой кошелек Nicehash. Выберите Source=nicehash, задайте nicehash API Key=(имя, которое мы указали на предыдущем шаге), активировать получение баланса с помощью переключателя “Fetch wallet balance”.
Теперь вы можете видеть как ваш подтвержденный, так и неподтвержденный баланс NiceHash.
Что делать с неподтвержденной транзакцией биткоин
Количество человек, желающих заработать на криптовалюте, ежедневно растет. Соответственно, увеличивается и число транзакций с популярными цифровыми валютами, в первую очередь – биткоином. Это означает, что блоки, где хранятся монеты, заполняются быстрее. Из-за этого возникает проблема неподтвержденных транзакций, ведь размер блока по-прежнему остается 1 Мб.
Время перевода монет может затянуться на неопределенное количество часов, а иногда и дней, что вызывает большие неудобства. В этой статье мы детально поговорим о проблеме, разберемся в причинах ее возникновения и главное – выясним, как действовать в ситуации, когда зависла транзакция.
Записали видео-инструкцию для тех, у кого зависла биткоин-транзакция и он не знает, что делать. Показываем 3 рабочих способа, один из которых точно вам подойдет. Все зависит от биткоин-кошелька, которым вы пользуетесь. Работает только для неподтвержденных транзакций биткоина:
Что такое неподтвержденная транзакция биткоина
Чтобы разобраться с понятием неподтвержденной транзакции, познакомимся сначала с общим пониманием транзакции Биткоин.
Любая операция криптовалюты – это записи в цепочке блоков (блокчейн), которые содержат данные:
Когда инициируется транзакция, указанные данные отправляются в сеть и ждут занесения в блок – подтверждения со стороны майнеров. Только после этого подтверждения, баланс отправителя уменьшается, а получателя увеличивается на соответствующую сумму.
Большинство новичков в криптовалютном мире ошибочно полагают, что единственная задача майнеров – добыча цифровой валюты. На самом деле, их основная задача – подтверждение транзакций. Делают они это путем добычи блоков в сети биткоин, которые весят 1 МБ. Как только этот объем забивается информацией о переводах, блок считается закрытым и подтвержденным.
Если какая-то сделка после запуска не получила место в очередном блоке сети блокчейн (не была добавлена майнерами), она считается неподтвержденной транзакцией Биткоин, попадает в очередь из транзакций. Это может вызывать большие задержки в проведении операций с криптовалютой, что создает трудности для трейдеров, проводящих операции с данной монетой.
Почему не подтверждается транзакция
Время совершения операций с криптовалютой зависит от многих факторов:
За проведение операций в сети блокчейн участники сделок платят комиссии. Когда биткоин еще не был так популярен, комиссионные отчисления устанавливались и начислялись автоматически, а операции в блоки попадали мгновенно. С ростом спроса на биткоин, выросла и конкуренция за место в блоке. Фиксированная плата перестала отвечать потребностям рынка криптовалюты, и трейдеры начали самостоятельно определять размер комиссии.
Разумеется, в первую очередь майнеры выбирают операции, в которых размер оплаты за транзакцию больше. Потому, чем больше размер комиссии устанавливает пользователь, тем выше шанс, что его транзакция будет подтверждена в ближайшее время. Другими словами, в блоки попадают те сделки, стороны которых готовы заплатить больше.
Операции с низким вознаграждением также имеют шанс быть обработанными, но пользователям придется подождать. Именно с такими сделками, как правило, и возникает проблема попадания в очередь транзакций.
Сколько ждать подтверждения транзакции биткоин
В блокчейн блоки генерируются каждые 10 минут, но из-за большой конкуренции, в среднем перевод биткоинов занимает не менее 60-90 минут.
Если в сети появляются много активных пользователей с экспресс-транзакциями (повышенной комиссией), то те, кто желают сэкономить на комиссионных отчислениях, могут бороться за осуществление сделки неделями.
Операция, которая попала в очередь транзакций, может быть либо одобрена в течение 72 часов либо быть отменена. Тогда сумма перевода вернется на кошелек отправителя, и сделку придется осуществить заново.
Как ускорить транзакцию
Статус неподтвержденной сделки не означает, что она не состоялась или произошел какой-то сбой. Это только означает, что придется подождать какое-то время либо совершить операцию заново.
Существуют различные варианты ускорить или «протолкнуть» подтверждение транзакции.
Двойная трата — «Double Spend»
Основной и самый простой метод решения проблемы с очередью транзакций – двойная трата. Его суть заключается в том, что проведенная операция совершается повторно, но уже с адекватной комиссий, и перекрывает первичную.
Важно: Не стоит переживать, что обе операции пройдут, то есть двойная трата совершится буквально. По правилам криптовалютной системы при совершении подобных сделок совершается только та, которая имеет более выгодные условия для майнеров. Менее выгодные аналоги операций подлежат уничтожению.
Применение данного способа зависит от вида кошелька, используемого для хранения и операций с монетами. Для примера возьмем бумажник Bitcoin-Core.
Для других криптокошельков подход является аналогичным. Основные различия могут быть лишь в наименовании команд. Отличная функция есть в бумажнике Electrum. Кнопка «replace-by-fee» позволяет повторно отправить биткоины с увеличенным комиссионным вознаграждением.
Child Pays for Parent
Child Pays for Parent (CPFP), дословно «дети платят за родителей» – один из самых популярных методов «проталкивания» платежа. Его суть заключается в том, что отправитель биткоинов создает еще одну операцию, используя «сдачу» с неподтвержденного платежа.
Сдача – средства, которые должны остаться на счету после совершения проблемной операции. Важно, чтобы суммы хватило и для старой, и для новой сделки.
Сторона сделки создает новую операцию со сдачей, которая «условно» была получена с другой, еще не подтвержденной транзакции. Ставит повышенную комиссию, которая распределится на две операции. Майнер заметит высокие комиссионные и подтвердит сделку.
Отправка монет совершается по любому адресу. Часто используют свой. Рассмотрим применение CPFP на примере кошелька Bitcoin Core.
Важно: Метод требует дополнительных затрат – комиссия за вторую операцию, и поддерживается небольшим количеством пулов майнеров.
Использование ускорителей
Еще один способ ускорить подтверждение сделки с биткоином – обратиться за помощью к майнинговым пулам. Самый популярный «поставщик» такой услуги – пул ViaBTC.
Также есть функция платного ускорения. Для этого надо зарегистрироваться на сайте. Комиссия сервиса уплачивается в Bitcoin Cash.
Пул ViaBTC обладает 7% мощностей, благодаря чему обращение к нему за помощью может быть оправдано. После оставления заявки, пул устанавливает транзакции более высокий приоритет. Однако сервис рассчитан не более чем на 100 сделок в час и часто бывает сильно перегружен.
Иные подобные сервисы: сайт пула AntPool, бот по ускорению в «Телеграм» – @FastTXbot.
Segregated Witness
Если все вышеописанные способы были связаны с манипуляцией над комиссиями транзакций, то Segregated Witness или SegWit работает с масштабируемостью блокчейн.
SegWit представляет собой софт форк от разработчиков кошелька Bitcoin Core, который путем оптимизации размера транзакций решает проблему переполненности блоков, а, следовательно, и скорости подтверждения транзакций.
Софт форк (Soft Fork) – то, что предполагает изменение в коде операции, не затрагивая ядро ПО. Он изменяет правила проверки подлинности блока.
Segregated Witness исключает из структуры транзакции подписи, которые занимают около 47% операции, в результате чего транзакция становится легче, а, следовательно, почти вдвое больше сделок помещается в блок, ограниченный 1 Мб. Подписи же выделяются в отдельную структуру, именуемую «отдельным свидетелем».
Решение SegWit было включено в клиент Bitcoin Core 0.13.1 2016 года. В 2017 году Segregated Witn был активирован в сети Litecoin, а также в среде менее популярных токенов: Groestlcoin, Syscoin, DigiByte, Monacoin, Vertcoin.
Как отменить неподтвержденную транзакцию биткоина
Если сделка получила хотя бы 1 подтверждение, отменить ее и вернуть монеты невозможно.
Как отменить перевод биткоинов в кошельке Bitcoin Core:
Метод не сработает: (1) если пользователь применяет облачное хранилище для сохранения информации о переводах; (2) если майнеры успели обработать неподтвержденную операцию.
Количество неподтвержденных транзакций
Ранее мы отмечали, что существуют специальные сервисы, на которых можно проверить статус перевода биткоинов, примерное время совершения транзакций, рассчитать уровень удачной комиссии. Например, это сайты:
Заключение
C увеличением спроса на биткоины число сделок с ним в разы увеличилось. При этом размер блоков остался прежним – 1 Мб. Это порождает конкуренцию среди транзакций по включению их в блоки и проблему создания очереди из них. Операции, которые не были добавлены в блок, получили название неподтвержденных транзакций.
Основная причина «игнорирования» майнерами конкретного перевода кроется в размере комиссии. Участники сети заинтересованы в сделках с большим размером награды, потому операции с маленькими комиссиями вынуждены ждать своего подтверждения часами, а то и днями.
Узнайте о новой схеме обмана с использованием фейкового кошелька Blockchain.com
Услуга чарджбэка помогает вернуть деньги от мошенников, но не все попытки заканчиваются удачей. На чарджбэке спекулируют фирмы, которые гарантируют результат, однако всё, что они могут – это дать ложные надежды и принести финансовые потери.
В финале 2020 года чарджбэк-мошенники придумали новую схему развода. Она состоит из нескольких этапов, предполагает использование поддельного кошелька Blockchain.com и рассылку фейковых писем. Она также включает один обязательный платеж, а обещанный chargeback от псевдоброкера – нет.
Кто запустил схему, как она устроена и как в нее не попасть, читайте в материале БрокерТрибунала.
Изобретатели новой схемы
Первыми, кто попался на использовании схемы, – фирма CYBER Pro Lawyers. Она заявляет, что специализируется на “возврате денег на карту после мошенничества”.
Сайт CYBER Pro Lawyers полнится доказательствами, что за ним стоят мошенники:
Однако нельзя винить пользователей, которые заказывают здесь чарджбэк, что они сами дают себя обмануть. Анализ сайта helpcyberpro.com требует знаний и времени, а в сети опубликовано множество статей, которые подгоняют быстрее запускать чарджбэк, чтобы он был успешным. Люди спешат и охотно доверяются: мол, “обман не случается дважды”.
Клиенты CYBER Pro Lawyers попадают в руки трех действующих лиц: псевдоюристов Андрея Терещенко и Владимира Кронова, а также подставного представителя Blockchain.com Максима. Наверняка, эти люди пользуются псевдонимами.
Брокер не выводит средства?
Получите бесплатный анализ вашего дела и персональные советы юристов.
Суть развода с помощью Blockchain.com
Мошенники, которые берутся возвращать средства, последовательно реализуют схему обмана. Согласно рассказу экс-клиента CYBER Pro Lawyers, который с нами связался, она рассчитана на примерно месяц и состоит из нескольких этапов.
Этап 1. Жертва “брокера” инициирует чарджбэк. Она заполняет заявление, в котором фиксирует свое имя, название организации, не выполнившей обязательства, номер своего счета, сумму ущерба и способ перевода.
В дополнение к заявлению пользователь прилагает выписки и скриншоты, которые доказывают мошенничество брокера.
Этап 2. Спустя неделю (пока не подоспели конкуренты) менеджер CYBER Pro Lawyers сообщает клиенту, что сумма найдена на “резерве” Blockchain.com. В подтверждение этой информации приходит письмо якобы от кошелька с адреса [email protected]
В письме используется логотип Blockchain.com и говорится, что нужно зарегистрировать кошелек, пройти верификацию и отправить “оборотные средства для синхронизации сервиса с банковской картой”. Цена вопроса – 10-12% от суммы желаемого возврата.
Это все, конечно, наглая ложь. Не существует никакого “резерва” Blockchain.com, а если бы и был, то как бы туда попадал ворованный фиат? Не реализована такая процедура, как “ввод оборотных средств для синхронизации”, ни в одном финансовом предприятии. Более того, настоящий Blockchain.com вообще не имеет отношения к чарджбэку. Он отправляет письма (другого содержания) с адреса [email protected]
Этап 3. Пользователь регистрирует кошелек, проходит верификацию и с помощью обменника переводит “оборотные средства”. Он получает очередное поддельное письмо об “авторизации чарджбэка” и даже звонок от подставного сотрудника Blockchain.com.
Как все это организовано? На самом деле жертвы CYBER Pro Lawyers регистрируют кошельки на сайте-”зеркале” Blockchain.com. Они пользуются точной копией сервиса, которой полностью владеют мошенники. Их подделка имеет только одно существенное отличие от оригинала – доменное имя не blockchain.com, а похожая комбинация. “Оборотные” деньги они кладут себе в карман.
Этап 4. Жертва делает запрос на вывод средств. Она рассчитывает, что получит назад деньги от брокера-мошенника и так называемые оборотные. Этого, конечно, не происходит.
Теперь – о ролях людей, которые упоминались выше. Андрей Терещенко выступает как менеджер-юрист: он ведет клиентов через все этапы развода. Максим звонит от имени Blockchain.com. Владимир Кронов позиционирует себя в качестве “жилетки для рыданий”: когда клиент не дожидается средств, Кронов выражает непонимание ситуации и исчезает.
Вряд ли только одна чарджбэк-фирма использует новую схему обмана. Развод в таком же или измененном виде может встречаться у других аферистов, причем не обязательно на почве трейдинга и инвестиций.
Правила безопасности
Чтобы не пострадать от “черных” брокеров и чарджбэк-мошенников, стоит навсегда запомнить несколько вещей. Соблюдайте простые правила – и не будет причин браться за голову из-за потерянных денег.
ЧИТАЙТЕ ТАКЖЕ: Руководство на все времена. Как проверить регистрацию и лицензию брокера
Схема развода с использованием сайта-“зеркала” Blockchain.com рассчитана на людей, которые не понимают, как устроен финансовый мир. Поиск денег в “резерве” криптокошелька и “оборотные средства для синхронизации Blockchain.com и банковской карты” – процедуры, которые не существуют в реальной жизни.
Перефразируя миллиардера-инвестора Уоррена Баффета, советуем: участвуйте в том, что вы хорошо понимаете. Это убережет вас от разбитых надежд и финансовых потерь.
Изучаем блокчейн на практике
Вы читаете эту статью потому, что, как и я, с горячим интересом наблюдаете за возрастающей популярностью криптовалюты. И вам хочется понять, как работает блокчейн — технология, которая лежит в ее основе.
Но разобраться в блокчейне не так-то просто, по крайней мере, по моему опыту. Я корпел над заумными видео, продирался через туториалы и с нарастающей досадой отмечал недостаток иллюстрирующих примеров.
Я предпочитаю учиться в процессе работы. При таком раскладе мне приходится отрабатывать тему сразу на уровне кода, что помогает закрепить навык. Если вы последуете моему примеру, то к концу статьи у вас будет функционирующий блокчейн и ясное понимание, как это все работает.
Но для начала…
Напомню: блокчейн — это неизменяемая, последовательная цепочка записей, которые называются блоками. Они могут заключать в себе транзакции, файлы и, в принципе, любые другие виды данных. Главное здесь — что они связаны друг с другом посредством хэшей.
Если вы не совсем понимаете, что такое хэш, вам сюда.
На кого рассчитано это руководство? На тех, кто без проблем может читать и писать несложный код на Python и в общих чертах представляет, как работают HTTP запросы — мы будет общаться с нашим блокчейном через HTTP.
Что будет нужно для работы? Проверьте, чтобы у вас был установлен Python 3.6+ (вместе с pip). Также вам нужно будет установить Flask и прекрасную библиотеку Requests:
Ах да, еще вам понадобится HTTP клиент, например, Postman или cURL. Тут подойдет любой.
Где можно посмотреть то, что получится в итоге? Исходный код доступен здесь.
Шаг первый: Делаем блокчейн
Откройте свой любимый текстовый или графический редактор, мне вот, например, нравится PyCharm. Создайте новый файл под названием blockchain.py. Мы будем работать только в этом файле, а если запутаетесь, всегда можно подсмотреть в исходный код.
Сначала мы создаем новый класс, конструктор которого создаст исходный пустой список (где и будет храниться наш блокчейн) и еще один — для транзакций. Вот как выглядит структура класса:
Класс Blockchain отвечает за управление цепочкой. Здесь будут храниться транзакции, а также некоторые вспомогательные методы для добавления в цепочку новых блоков. Давайте распишем эти методы.
В каждом блоке содержится индекс, метка времени (в Unix), список транзакций, доказательство и хэш предыдущего блока.
Вот пример того, как может выглядет отдельный блок:
Теперь идея цепочки должна быть очевидна — каждый блок включает в себя хэш предшествующего. Это очень важно: именно так обеспечивается неизменность цепочки: если хакер повредит какой-либо блок, то абсолютно все последующие будут содержать неверные хэши.
Понятно? Если нет, остановитесь и дайте себе время усвоить эту информацию — именно в ней состоит базовый принцип блокчейна.
Добавляем транзакции в блок
Нам нужно каким-то образом добавлять в блок новые транзакции. За это отвечает метод new_transaction(), работает он достаточно просто:
Когда new_transaction() добавляет новую транзакцию в список, он возвращает индекс блока, куда она была записана, следующему, с которым будет осуществляться майнинг. Позже это пригодится следующему пользователю, добавляющему транзакцию.
Помимо создания блока genesis в конструкторе, мы также распишем методы new_block(), new_transaction() и hash():
Вышеприведенный код, вероятно, в пояснениях не нуждается — я добавил кое-где комментарии и докстринги, чтобы было понятнее. С представлением блокчейна мы практически закончили. Но сейчас вы, должно быть, задаетесь вопросом, как происходит процесс создания, встраивания и майнинга блоков.
Разбираемся с доказательством работы
Алгоритм доказательства работы служит для создания новых блоков в блокчейне (это процесс еще называется майнингом). Цель доказательства работы — вычислить нужное значение, чтобы решить уравнение. Это значение должно быть сложно рассчитать (с математической точки зрения), но легко проверить любому участнику системы. В этом заключается основная идея доказательства работы.
Чтобы стало яснее, давайте рассмотрим очень простой пример.
Допустим, хэш некоторого числа X, помноженного на другое Y, должен оканчиваться на 0. Соответственно, hash(x * y) = ac23dc. 0. Для этого упрощенного примера установим x = 5. Прописываем все это на Python:
Правильный ответ здесь: y = 21; именно при таком значении получается хэш с 0 в конце:
В биткойне алгоритм доказательства работы называется HashCash и не особенно отличается от простенького примера, приведенного выше. Это уравнение, которые майнеры наперегонки пытаются разрешить, чтобы создать новый блок. В целом, сложность определяется тем, сколько символов нужно вычислить в заданной последовательности. За верный ответ майнеры получают вознаграждение в виде одной монеты — в ходе транзакции.
Проверить их решение для системы не составляет труда.
Пишем простое доказательство работы
Теперь давайте пропишем подобный же алгоритм для нашего блокчейна. Условия возьмем в духе вышеприведенного примера:
Найдите число p, которое, будучи хэшировано с доказательством предыдущего блока, дает хэш с четырьмя нулями в начале.
Мы можем варьировать сложность этой задачи, меняя количество нулей в начале. Но четырех вполне достаточно. Вы можете сами убедиться, что один-единственный дополнительный нолик значительно замедляет процесс поиска решения.
Работа над классом почти завершена и теперь мы готовы начать взаимодействие с ним при помощи HTTP запросов.
Шаг второй: Блокчейн как API
Здесь мы будем использовать Python Flask — микрофреймворк, который облегчает процесс соотнесения конечных пунктов с функциями Python, что позволяет нам осуществлять диалог с блокчейном по Сети при помощи HTTP запросов.
Создаем три метода:
Наш «сервер» сгенерирует один-единственный узел сети в блокчейн-системе. Давайте напишем немного шаблонного кода:
Краткие пояснения к тому, что мы добавили:
Строка 15: Инстанцирует узел. Подробнее о Flask можно почитать здесь.
Строка 18: Создает произвольное имя для узла.
Строка 21: Инстанцирует класс Blockchain.
Строки 24-26: Создает конечную точку /mine, то есть запрос GET.
Строки 28-30: Создает конечную точку /transactions/new, то есть запрос POST, так как именно туда мы и будем отсылать данные.
Строки 32-38: Создает конечную точку /chain, который возвращает блокчейн целиком.
Строки 40-41: Запускает сервер на порту 5000.
Конечный пункт для транзакций
Вот как будет выглядеть запрос на транзакцию. Именно это пользователь отсылает на сервер:
Метод класса для добавления транзакции в блок у нас уже есть, поэтому дальше все легко. Давайте напишем функцию для добавления транзакции:
Конечный пункт для майнинга
Именно в этой конечной точке творится вся магия, но ничего особо сложного в нем нет. Она должна делать три вещи:
Обратите внимание, что в качестве получателя созданного блока указан адрес узла. Большая часть того, что мы тут делаем, сводится к взаимодействию с методами нашего класса Blockchain. По завершению этого шага основная работа закончена, можно начинать диалог.
Шаг третий: Диалог с блокчйном
Для взаимодействия с API в рамках системы можно использовать старый-добрый cURL или Postman.
Давайте попробуем создать блок, отправив запрос GET по адресу localhost:5000/mine:
Теперь создаем новую транзакцию, отправив запрос POST, содержащий ее структуру, по адресу localhost:5000/transactions/new:
Если вы работаете не с Postman, вот как сформулировать аналогичный запрос в cURL:
Я перезапустил сервер и создал еще два блока, чтобы в итоге получилось три. Давайте изучим получившуюся цепочку через запрос localhost:5000/chain:
Шаг четвертый: Консенсус
Все это очень здорово. У нас есть простой блокчейн, который позволяет осуществлять транзакции и создавать новые блоки. Но блокчейн имеет смысл только в том случае, если он децентрализован. А если сделать его децентрализованным, как мы вообще можем гарантировать, что везде будет отображаться одна и та же цепочка? Это называется проблемой консенсуса. Если мы хотим, чтобы в системе было больше одного узла, придется ввести алгоритм консенсуса.
Распознаем новые узлы
Прежде чем внедрять алгоритм консенсуса, нам нужно что-то предпринять, чтобы каждый узел в системе знал о существовании соседних. У каждого узла в системе должен быть реестр всех остальных узлов. А значит понадобятся дополнительные конечные точки:
Заметьте: мы использовали set() для хранения списка узлов. Это нехитрый способ гарантировать, что при добавлении новых узлов будет соблюдаться индемпотентность — то есть сколько бы раз мы ни добавляли какой-то конкретный узел, он будет засчитан только единожды.
Внедряем алгоритм консенсуса
Как я уже упоминал, конфликт происходит тогда, когда цепочка одного узла отличается от цепочки другого. Чтобы его устранить, мы введем такое правило: прерогатива всегда у той цепочки, которая длиннее. Иными словами, самая длинная цепочка в системе рассматривается как фактическая. Используя такой алгоритм, мы достигаем консенсуса среди всех узлов системы:
Первый метод valid_chain() отвечает за проверку цепочек на валидность, проходя каждый блок и верифицируя и хэш, и доказательство.
resolve_conflicts() — метод, который прорабатывает все соседние узлы: скачивает их цепочки и проверяет их описанным выше способом. Если при этом найдена валидная цепочка длиннее, чем наша, производится замена.
Давайте введем в наш API две конечные точки, один для добавления соседних узлов, другой для разрешения конфликтов:
На данном этапе, если хотите, можете привлечь другие машины и насоздавать разных узлов для вашей системы. Или добиться того же используя разные порты на одной машине. Я создал новый узел на другом порте той же машины, и позволил исходному узлу его распознать. Таким образом, получилось два узла: localhost:5000 и localhost:5001.
В узел номер два я добавил побольше блоков, чтобы цепочка получилась однозначно длиннее. После чего вызвал GET /nodes/resolve в первом узле — и алгоритм консенсуса заменил его цепочку на цепочку второго.
Ну, вот и все. Теперь собирайте друзей и тестируйте вам блокчейн совместными усилиями.
Надеюсь, этот материал вдохновит вас на новые идеи. Лично я с большим энтузиазмом наблюдаю за развитием криптовалюты: я уверен, что блокчейн перевернет наши представления об экономике, управлении государством и хранении информации.
В будущем я планирую выпустить вторую часть статьи, где мы добавим в блокчейн механизм валидации транзакций и поговорим о том, как все это можно использовать в продуктах.