Bitcoin (Биткоин) алгоритм

Bitcoin (Биткоин) алгорит

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

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

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

Итак, начнём.

Схема работы транзакции биткоинов

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


3. Сервер временных меток

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

Временные метки


4. Сложные вычисления

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

Сложные вычисления

Подтверждение по принципу «один IP-адрес — один голос» легко дискредитируется тем, кто контролирует множество IP адресов, ведь, по сути, проверяемые вычисления это: «один процессор — один голос». Когда наибольшие вычислительные мощности находятся под контролем честных участников, честная логическая цепочка растет быстрее, чем любая цепочка участников-мошенников. Далее будет доказано, что у атакующего шансы догнать честную цепочку экспоненциально падают при подключении новых блоков.


5. Сеть

Для работы сети предпринимаются следующие шаги:

  1. всем узлам широковещательно посылается новая транзакция;
  2. узел (каждый!) размещает новые транзакции в своем блоке;
  3. узел (каждый!) активизирует сложные вычисления для расчета «своего» блока;
  4. узел нашел решение «своего» блока и широковещательно рассылает этот блок всем остальным узлам;
  5. если все транзакции в блоке правильные (не просроченные), то узел принимает;
  6. подтверждение принятия узлом блока заключается в том, что данный узел начинает работу по генерации следующего блока в хэш-цепочке, учитывая хэш блока принятого как хэш предыдущий.

Для узлов всегда самой корректной считается самая длинная цепочка, и они постоянно работают над ее ростом. Когда два узла широковещательно (и одновременно!) рассылают различные версии последующего блока, то могут принимать любую из версий в различное время.

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

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

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


6. Стимул

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

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

Стимул присутствует и при реализации транзакций. Когда значение выхода транзакции меньше значения входа, то разница прибавляется к значению блока транзакции (стимулирует). В тот момент, когда будет выпущено математически предопределенное количество «монет», стимулирование станет возможным только с помощью транзакций — инфляция исчезнет полностью.

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


7. Использование дискового пространства

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

Вырезание блоков

Заголовок блока «тянет» примерно 80 байт (без транзакций). Генерация блоков — каждые 10 минут, то есть:80байт×6×24×365=4.2MB в год. Закон Мура полагает прирост в 1.2Гб за год, то есть необходимое дисковое пространство — не проблема.


8. Упрощенная проверка платежей

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

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

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


9. Комбинирование и разделение суммы

передавать монеты можно по отдельности, бывает неудобно выполнять отдельную транзакцию для каждого цента. Именно для того, чтобы суммы можно было делить и комбинировать, в транзакции предусмотрено множество входов-выходов. Как правило, имеется или один вход от предыдущей транзакции (бОльшей!), или множество входов скомбинированных малых сумм, и хотя бы два выхода: 1 — для платежа и 1- для возврата сдачи (если она есть).

Транзакция

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


10. Конфиденциальность

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

Конфиденциальность и модели приватности

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


11. Заключение

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

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

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

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

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

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

Такой гибкий механизм согласия позволяет реализовать любые необходимые правила и стимулы!

Схема работы биткоинов

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *