LCPoA — универсальный как PoW, экономичный как PoS

Всем привет!

Мы — команда разработки блокчейн платформы IZZZIO (читается как “иззио”). На текущий момент мы активно разрабатываем приватные и ограниченные блокчейн-решения под задачи заказчиков, и работаем по классической модели заказ-проектирование-разработка.

Мы бы не хотели начинать наше знакомство с рекламных постов, поэтому их не будет. Сегодня мы хотим подробнее рассказать об одной из наших технологий — алгоритме консенсуса, который мы называем LCPoA.

Пример работы основного фильтра LCPoA

LCPoA (Limited Confidence Proof of Activity, рус. Доказательство активности с ограниченным доверием) — гибридный алгоритм консенсуса сети блокчейн, состоящий из двух технических элементов:

  1. Proof of Activity — принцип, основанный на решении задачи, схожей с задачей принципа Proof of Work, но со значительно сниженной сложностью, благодаря которому решение задачи занимает от долей секунды до нескольких минут
  2. Limited Confidence(“Ограничение доверия”) — система автоматического создания “контрольных точек” в блокчейн сети

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

Для этой задачи мы разработали алгоритм LCPoA. Он прост в имплементации, и в работе. Ему требуется минимальное количество вычислительных ресурсов, а в качестве защиты он использует синхронизированный по всему миру ресурс — время.Создание блоков в сети теперь привязывается к известной всем компьютерам (с определенной погрешностью) величине — текущему времени по гринвичу. Это позволило:

В основе алгоритма лежит схожая с PoW задача: подбор хеша блока, путём перебора дополнительного значения nonce в блоке. В качестве nonce, мы используем текущую метку времени (unix timestamp) — количество миллисекунд, прошедших с начала 1 января 1970 года. Такой метод позволяет легко перепроверять информацию о том, сколько времени было потрачено на создание блока. В связке с ограничением добавления блоков младше, например, одной секунды, это обеспечивает одновременно простую для решения на любом устройстве, но достаточно продолжительную для защиты сети задачу.

В качестве защиты от атаки 51%, и других атак, позволяющих перезаписывать цепочку, мы использовали простой алгоритм, который позволяет создавать “контрольные точки”, или “точки невозврата” в сети. Этот алгоритм, по факту, запрещает перезапись блоков цепи, которые старше определенного заданного возраста. Например, при заданном пороге — 5 минут, будет возможна перезапись блоков, появившихся не позднее 4 минут 59 секунд. Остальные блоки проходят “архивацию”, и делают попытки перезаписи всей цепочки — невозможными.

Подобный способ защиты от атак 51% мы также применяем и для любых других алгоритмах консенсуса в сети.

Подробнее с LCPoA можно ознакомится в документе с описанием алгоритма

https://docs.google.com/document/d/1KHeG4iUZFk2fj32-4kVnbx_3KsIQqM_xDMpzlctGRSc/edit?usp=sharing

а также на нашем сайте

izzz.io

Автор алгоритма: Недобыльский Андрей Олегович