Блокчейн. От Византии до консенсуса

Это изображение имеет пустой атрибут alt; его имя файла - Permissioned.png
  • Введение в распределенную систему
  • Проблема византийских генералов
  • Что такое консенсус
  • Разрешенный и невыявный блокчейн
  • Централизованный, децентрализованный и распределенный
  • Различные слои в блокчейн-системе
  • Блокчейн против технологии распределенного реестра

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

  • Неизменный
  • Прозрачный
  • Децентрализованный

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

Введение в распределенную систему

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

  • Параллелизм
  • Нет глобальных часов
  • Независимый сбой

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

Нет глобальных часов В распределенной системе каждый участник или машина имеет равный вес при принятии решения о том, что правильно, а что нет. Машина А может полагать, что сейчас 11:13 а.m., в то время как машина Б может полагать, что это 11:14 а.m. Сетевая задержка может еще больше усложнить ситуацию, даже если две машины имеют одинаковое время локально, они не будут знать, сколько времени потребовалось сети для передачи данных, поэтому всегда возникает случайный шум, когда машина должна подтвердить время от своего соседа. В распределенной системе нет единого источника истины.

Независимый сбой Скажем, машине A могут потребоваться данные от машины B для продолжения ее работы, поэтому ей нужно связаться с машиной B и дождаться ответа. Однако машина B может выйти из строя (например, выключиться из-за перегрева), а сеть может произвольно задерживаться или даже отключаться. Проектировщик системы должен тщательно проектировать для обработки связи и реагирования на сбои, чтобы гарантировать, что система остается нетронутой.

Проблема византийских генералов

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

  • Есть 3 генерала, генералЫ A, B и C
  • Генералы должны атаковать своего противника одновременно, иначе они могут рискнуть провалом.
  • У генералов нет эффективного способа мгновенно общаться
    • Поэтому им нужно отправить курьера другим для передачи сообщения.
  • Генералы должны достичь консенсуса, прежде чем атаковать
    • Они должны подтвердить, что другие генералы будут атаковать в то же время.

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

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

Из приведенной выше истории мы можем сделать вывод, что:

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

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

Что такое консенсус

Нетрудно понять, что такое консенсус, если вы можете понять проблему византийских генералов. Согласно википедии:Проблема консенсуса требует согласия между несколькими процессами (или агентами) для одного значения данных. Некоторые процессы (агенты) могут выходить из строя или быть ненадежными в других отношениях, поэтому протоколы консенсуса должны быть отказоустойчивыми или устойчивыми. Процессы должны каким-то образом выдвигать свои кандидаты, общаться друг с другом и договариваться о единой консенсусной ценности. Те, кто участвует в децентрализованной сети, делают это, используя децентрализованные серверы, называемые узлами. Чтобы участвовать в блокчейн-сети, каждый из этих узлов должен договориться о предвзятом наборе правил (называемом «Механизм консенсуса») для достижения соглашения. Используя эти механизмы, мы можем решить проблему византийских генералов. Консенсус изучается с 1970-х годов. Некоторые заметные результаты включают в себя:

Существует множество различных вариаций / соображений

механизмов консенсуса: Нет сбоев против разрешенных сбоев

  • Сбой сбоя: неисправный узел перестает предпринимать какие-либо шаги в какой-то момент
  • Византийская неудача:
    • Неисправный узел может вести себя произвольно
    • Отбрасывать, подделывать сообщения
    • Отправка несогласованных сообщений

Синхронный vs Асинхронный

  • Синхронный: привязка по времени, необходимому для всех операций
  • Асинхронный: без привязки

Детерминированный vs вероятностный

  • Детерминированный: Всегда приводит к правильному результату (согласие, действительность)
  • Вероятностный: корректность только с высокой вероятностью

Точное соглашение vs Приблизительное соглашение

  • Точное соглашение: Все узлы согласны на точно идентичное значение (выход)
  • Приблизительная договоренность:
    • Узлы договариваются о примерно равных значениях
    • Идентичные по лимиту, как → ∞ времени

Лидеры против лидеров

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

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

Разрешенный и невыявный блокчейн

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

Частный vs публичный блокчейн Частный блокчейн означает, что блокчейн находится в частной сети. (Например, вы развернули свой частный Ethereum на своем компьютере для изучения смарт-контракта.) Он изолирован, и другие не могут видеть или присоединяться к вашей сети. Члены сети должны быть приглашены, а затем проверены стартером сети или конкретными правами и ограничениями для участия в сети, чтобы получить доступ к частной сети блокчейн. Публичный блокчейн полностью открыт, и любой может участвовать или присоединиться к сети, чтобы внести свой вклад. Примеры публичного разрешенного блокчейна включают токены, такие как Ripple или EOS, где нормальный участник имеет меньше привилегий по сравнению с классифицированным участником, таким как Unique Node List (для Ripple) или Block Producer (для EOS). Публичный блокчейн без разрешения включает в себя токены, такие как Bitcoin или Ethereum. Пример частного разрешенного блокчейна включает в себя запуск собственного Hyperledger или Ethereum на вашем ноутбуке. Компании также могут запускать свой частный блокчейн внутри компании.

Блокчейн консорциума Последний тип — блокчейн консорциума, где есть группа участников (скорее всего ТНК), формирующих сеть (представьте себе это как некую «интрасеть») и только они могут присоединиться и использовать сеть. Примеры блокчейна консорциума включают R3,HyperLedgerLinux Foundation и QuorumJP Morgan.

Централизованный, децентрализованный и распределенный

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

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

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

Различные слои в блокчейн-системе

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

Блокчейн против технологии распределенного реестра

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

Ссылка

1. Лампорт, Лесли и др. «Проблема византийских генералов». ACM Transactions on Programming Languages and Systems (TOPLAS), vol. 4, no. 3, 1982, pp. 382–401., doi:10.1145/357172.357176. 2. Консенсус (информатика). (2020, 2 февраля). Взято из https://en.wikipedia.org/wiki/Consensus_(computer_science) 3. Fischer, Michael J., et al. «Невозможность распределенного консенсуса с одним ошибочным процессом». Журнал ACM (JACM), том 32, No 2, 1985, стр. 374–382., doi:10.1145/3149.214121. 4. Лампорт, Лесли. «Парламент, заоременный неполный рабочий день». ACM Transactions on Computer Systems (TOCS), vol. 16, no. 2, 1998, pp. 133–169., doi:10.1145/279227.279229. 5. «Технические вопросы и ответы». Технические вопросы и ответы — XRP Ledger Dev Portal, xrpl.org/technical-faq.html. 6. «Что такое производители блоков?» ЭОСИО, eos.io/faq/what-are-block-producers/. 7. Бутерин, Виталик. «Значение децентрализации». Средний, Средний, 6 февраля 2017 г., medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274.

Источник