Четыре уровня блокчейна

Четыре уровня блокчейна

Недавний взлом DAO поставил под сомнение скорость и агрессивность, с которой сообщество Blockchain (и, в частности, Ethereum) продвинулось вперед в приложениях Blockchain. Среди множества призывов к размышлениям особенно убедительным оказался  призыв Джои Ито к многоуровневому подходу к проектированию блокчейнов (по иронии судьбы опубликованный непосредственно перед взломом).

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

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

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

  • Физический уровень: фактическая среда, которая передает биты, будь то спектр беспроводной связи, кабельное волокно или телефонные линии.
  • Сетевой уровень: управляет адресацией и маршрутизацией пакетов между различными физическими маршрутизаторами, чаще всего IP.
  • Транспортный уровень: управляет состоянием необработанного соединения, чаще всего TCP.
  • Сеансовый уровень: управляет состоянием соединения более высокого уровня, например HTTP.
  • Уровень приложений: там, где находятся реальные приложения, например, поиск в Google, Facebook и т. Д.

Эта многоуровневая конструкция означает, что TCP / IP работает как по беспроводной сети LTE, так и по оптоволокну. (Этот момент немного сложнее на стороне приложения в стеке, но в основном все еще сохраняется: вы можете запускать Facebook через HTTP / 2 так же хорошо, как и через HTTP / 1.1.)

блокчейн

Разложение биткойн-слоя

Итак, как может выглядеть такая многоуровневая декомпозиция для приложений Blockchain? Вот одно предложение:

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

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

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

Почему четыре слоя вместо одного?

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

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

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

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

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

Прежде чем двигаться дальше, я хотел бы признать, что эта связь между свойствами и слоями не является строгой и что разные свойства и слои не являются полностью независимыми. Тем не менее, они достаточно различны, чтобы требовать отдельного изучения для лучшего понимания. (Обратите внимание, что взаимозависимость уровней верна и для Интернета; HTTP работает на TCP / IP, потому что он обеспечивает надежное соединение, но не на UDP.)

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

На каком слое живет криптовалюта?

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

  • Уровень майнинга: биткойны и эфир создаются и / или передаются по мере создания и добавления действительных блоков в реестр. Валюта либо генерируется из самой сети («из воздуха»), либо берется из транзакций, содержащихся в блоке («транзакционные сборы»). Валюта используется для стимулирования майнеров к хэшированию блоков.
  • Семантический уровень: биткойны и эфир могут передаваться между узлами на семантическом уровне путем создания действительных транзакций, подписанных держателями криптовалюты, или путем создания смарт-контрактов, которые переносят криптовалюту между учетными записями. Здесь криптовалюта используется как средство сбережения и платежное средство.
    Поскольку Ethereum — это виртуальная машина общего назначения, вы также можете создавать альтернативные криптовалюты на семантическом уровне, которые будут использоваться на уровне приложений. Например, так работали токены DAO. Эти альтернативные криптовалюты существуют только на семантическом и прикладном уровнях.

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

Работа со слоями

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

Первое предложение: ограничение на майнинг монет

Позвольте мне закончить пост предложением, основанным на этом разбиении на слои, которое может помочь повысить безопасность и гибкость блокчейнов.

Как упоминалось выше, существующие криптовалюты живут как на уровне майнинга, так и на семантическом уровне стека цепочки блоков.

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

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

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

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

Узел, который желает опубликовать транзакцию t, но не имеет монет для майнинга, которые можно потратить на публикацию, присоединит соответствующий контракт t ‘, в котором говорится: «Передайте n монет пользователя узлу, который прикрепляет достаточно монет для майнинга, чтобы позволить как t, так и t». будет опубликован». Затем майнер, у которого есть монеты для майнинга, может взять t и t ‘ , внести достаточное количество монет для майнинга в блок и опубликовать их вместе, чтобы получить n пользовательских монет.

Рейтинг