Технический обзор: блокчейн без доверия немасштабируем

4
ПОДЕЛИТЬСЯ

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

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

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

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

Это можно сделать один раз, а затем постоянно наблюдать за состоянием учётной записи любого человека в мире. Можно следить за каждой транзакцией или добавить её в журнал записей и просто «переделывать» журнал для одной учётной записи, когда нужно подтвердить из него транзакцию. Или же можно перезагружать и перезапускать журнал каждый раз, когда нужно что-то подтвердить.

Всё это значит, что независимо от способа управления, в системе без какого-либо доверия на каждый платёж в мире нужно тратить пропускную способность и мощность ЦПУ. Возьмём такой пример: в 2017 году 1,66 млрд человек совершили покупки онлайн — это максимум 10% от всех покупок в мире. Получается, что просто для того чтобы купить что-то, каждый пользователь блокчейна должен получать и обрабатывать данные 16 млрд транзакций в год.

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

Конечно, можно работать с данными таким образом, чтобы подтверждать не все транзакции, а только те, которые нужны пользователю. Но невозможно угадать, с кем придётся взаимодействовать в будущем. Рано или поздно пользователю понадобятся данные, которые не были подтверждены. И тут ему опять придётся довериться чужим результатам. Или же… подтвердить эти данные.

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

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

Не существует блокчейнов, которые абсолютно не требуют доверия

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

Но это ещё не всё. В уайтпэйпере Биткойна Сатоши Накамото утверждает:

Если большая часть мощности ЦПУ контролируется честными узлами, то самая честная цепочка будет расти быстрее всех остальных и опередит все конкурентные цепочки.

Участникам просто необходимо доверять большей части мощности ЦПУ или любому другому большинству в блокчейне. Все майнеры — это доверенные посредники, а это не очень-то хорошо. Из-за этого возникает возможность атаки 51%, и это не просто теория. В 2018 году хакеры 9 раз успешно атаковали основные блокчейны и украли миллионы долларов.

В блокчейнах с доверием нет смысла

Есть ещё один способ управлять блокчейном, не подвергаясь атаке 51%. Это приватный блокчейн, который принадлежит одной компании и расположен на её серверах. И да, в этом случае компания и является доверенным посредником.

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

  • Не нужно работать с не-доверенными узлами;
  • Если это более-менее хорошая компания, то узлы гарантировано используют одно и то же программное обеспечение (если нет, то откуда уверенность в том, что их программное обеспечение для блокчейна хорошее?);
  • Если они могут доверять собственным узлам, то им не нужны «пожирающие энергию» майнеры;
  • Компания имеет финансовую мотивацию поддерживать безопасность ваших данных, а блокчейн — не имеет, если в нём не создаётся валюта.

Если есть доверие к узлам, то блокчейн не нужен. В этом случае абсолютно любая технология цифрового хранения данных будет более эффективна, чем блокчейн. Скорость записи в сеть Биткойна — 1 блок/10 мин. При среднем размере блока в 1 МБ это меньше, чем скорость дискет из 1980-х гг.

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

В реальности аспекты надёжности, о которых так часто говорят сторонники блокчейнов, уже много раз подводили пользователей:

  • Неизменяемость. Атака 51% позволяет хакерам вносить изменения в блокчейн (только в 2018 году было совершено 9 успешных подобных атак на основные блокчейны, включая Bitcoin Gold, что принесло злоумышленникам $18 млрд), и для некоторых сетей осуществить её достаточно просто;
  • Надёжность/невозможность атак DDoS. Как мы уже видели неоднократно на примере криптокотиков и похожих случаев в сети ETH, DDoS-атака возможна не только в случае непредвиденного слишком частого использования протокола, она ещё и «встраивается» в протокол вместе с возможностью вписывать код в транзакции («контракты»);
  • Отсутствие доверия уже описано выше;
  • Анонимность мы рассмотрели в предыдущей статье Общество блокчейна: какие обещания нарушает блокчейн.

Источник

4 КОММЕНТАРИИ

  1. «Конечно, можно использовать уже полную базу данных, которая принадлежит кому-то ещё, то есть доверенному посреднику…»
    Это просто манипулирование терминами, без погружения в предметную область.
    Имеем блокчейн — нет доверия. Пользуемся чужим — появляется доверие.

    Во-первых. Когда мы используем блокчейн, мы все равно доверяем майнерам — в том, что они не воспользуются атакой 51%. То есть, какой-то элемент доверия все равно есть.
    Во-вторых. Очень важно понять, что обмануть пользователя, который использует SPV-кошелек, могут только МАЙНЕРЫ. Владелец обычной фулл-ноды не может обмануть правильно реализованный SPV-кошелек. Этот момент часто пропускают. Особенно его игнорируют критики Биткоина. 🙂

    Важен не элемент наличия/отсутствия доверия. Важна вероятность обмана пользователя.

    Рассмотрим варианты.
    1. Пользователь использует свой блокчейн.
    Майнеры могут обмануть через атаку 51%. Для этого достаточно, чтобы в руках злоумышленника было больше половины мощностей.
    2. Пользователь использует SPV-кошелек.
    Точно так же, как и в первом случае, майнеры могут обмануть атакой 51%.
    Еще появляется вариант, когда майнер, используя свои мощности, выпустит неправильный блок и с помощью этого захочет обмануть SPV-клиента. Но, чтобы такая атака была успешной, в руках злоумышленника должны быть почти 100% всей мощности и 100% всех фулл-нод. Иначе его атака провалится на первой же фулл-ноде.
    Вероятность такой атаки ничтожна. Она ничтожна даже по сравнению вероятности атаки 51%.

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

  2. «Получается, что просто для того чтобы купить что-то, каждый пользователь блокчейна должен получать и обрабатывать данные 16 млрд транзакций в год.»
    Автор написал эти строки и, наверно, сам ужаснулся и решил, что для читателей этого будет достаточно.
    И дальше никаких расчетов не делал. А зря.
    А удивительное то рядом. 🙂 При нынешнем развитии технологий это все РЕАЛЬНО.
    1.Закачка
    16млрд. транзакций в год — 44 млн. транзакций в сутки.
    0.5кб одна транзация * 44млн = 22 млн. КБ. или 22ГБ в сутки.

    При 100мб сети интернет мы имеем закачку на уровне 10мб/сек. В 1 минуту- 600мб или 0,6гб

    22гб/0,6=37мин. То есть хватает 37 минут компьютеру, чтобы закачать такой объем инфомации. В среднем на час 37/24=1,5мин. Компьютер будет отвлекаться на это 1.5мин. каждый час. Всего-то.

    2.Обработка процессором
    44 млн. транзакций/24/60/60= 510 транзакций в секунду.

    На данный момент в блокчейне Биткоина примерно 400млн. транзакций. Проверка всего блокчейна на моем компьютере занимает где-то 5 часов. То есть мой компьютер на данный момент обрабатывает:
    400млн/5/60/60 = ~22 тыс. транзакций в секунду.
    510/22000= 0,02. Процессор будет тратить на проверку транзакций где-то 2% своей мощности.

    Вывод о невозможности масштабирования блокчейна взят из воздуха. И ничем не обоснован. 🙂

    • Гениальный комментарий, выше всяких похвал, правда

      Как насчет того, что при проверке блокчейна на компьютере, он не вычисляет все созданные ХЭШИ для всех блоков, а лишь подтверждает их легитимность? Где расчеты для самого важного — создания и подтверждения ХЭШЕЙ?
      Ваш компьютер ничего не обрабатывает, он лишь проверяет легитимность блокчейна в целом, а это один из самых простых процессов

      • Речь шла об обычных пользователях. Они не создают ХЕШИ блоков, им достаточно проверить легитимность блокчейна. Созданием хешей блоков занимаются майнеры.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here