«Управление сложностью - это суть компьютерного программирования».
- Брайан Керниган

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

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

Существуют хорошо известные программные стеки, такие как модель OSI для сети или (старая школа) стек LAMP для веб-сервисов. Но что касается стеков для DLT / блокчейнов, пока нет хорошей модели, которая может затруднить обсуждение и сравнение различных решений DLT.

Итак, чтобы перейти к сути, вот наше предложение по стеку DLT:

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

  • Уровень приложения. Этот уровень описывает приложение с бизнес-логикой высокого уровня, которое может быть таким же простым, как кошелек, или более сложным, например, смарт-контрактом в цепочке.
  • Уровень платформы. Этот уровень описывает API и интерфейсы, которые служат шлюзом для приложений, взаимодействующих с «машиной».
  • Машинный уровень. Этот уровень описывает часть Ledger DLT. Это физический механизм и структура, которые могут обновляться внешними участниками по мере добавления в реестр. Обратите внимание, что это не буквально аппаратная машина, а скорее ее симуляция (например, виртуальная машина Ethereum).
  • Уровень согласования: этот уровень описывает распределенную часть DLT. Поскольку система распределена, должен быть способ достижения консенсуса для разрешения конфликтов. Для блокчейнов без разрешения примерами этого могут быть: PoW, PoS.

Используя эту нотацию, вот быстрый пример сравнения моделей Radix и Ethereum DLT:

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