Оракулы для блокчейнов. Обзор платформы Exonum. Спикер: Алексей Сидоров
В данном докладе Core Developer проекта Exonum представит основную информацию об оракулах в Блокчейн, а также ознакомит с самой платформой Exonum.
Сначала разграничим понятия приватный и публичный Блокчейн:
Публичный Блокчейн - сеть, в создании блоков которой, могут принимать участия любые узлы и на сегодняшний день это происходит путем майнинга
Приватный Блокчейн - сеть с набором заранее оговоренных узлов, которые могут подписывать блоки
Exonum - это фреймфорк для разработки приватных блокчейнов, написанный на Rust.
слайд
Rust
Rust - язык программирования, написанный компанией Mozilla. Данный язык, как и C++, компилируется в нативный код и обладает схожим синтаксисом, при этом у него есть некоторые особенности, например концепции заимствования и владения, которая позволяет забыть о таких распространенных ошибках, как висящие указателях, поскольку данными в определенный момент времени может владеть лишь одна сущность.
Консенсус
Exonum использует алгоритм консенсуса, устойчивого к византийскому поведению. Алгоритм может гарантированно поддерживать целостность данных и корректное выполнения транзакций даже в случае выхода из строя до ⅓ узлов из-за неисправностей или других возможных причин, при этом не требуется майнинг блоков.
Теперь разберем понятие Анкоринг
Анкоринг - процедура, при которой в общедоступный биткоин-блокчейн высылаются хеши блоков, что позволяет верифицировать данные, даже если Exonum-блокчейн прекратит функционировать.
Стоит отметить, что в Exonum есть поддержка для написания тонких клиентов
Тонкий клиент - читает заголовки блоков и взаимодействует с набором pre commit, который может валидировать.
Помимо этого, можно построить доказательство Меркла не только для транзакций, как в сети Биткоин, но и для других данных. В результате, пользователь может запросить через API у Exonum свои данные и получить их вместе с доказательством и быть уверенным, что в Блокчейн они записаны верно.
Оракулы блокчейна
Обратимся к истории и расшифруем значение слова «Оракул» - оракулами в Древней Греции называли жрецов, которые общались с Богами и доносили их волю простым смертным людям. Переданные слова считались истинными и не подвергались сомнению.
В реалиях Блокчейн технологии «Оракул» - источник внешних данных для сети, связь с внешним миром.
Каким должен быть Оракул:
- Это должен быть согласованный источник данных
- Достоверный
- Децентрализованный
Типы оракулов
- В первом случае нет гарантии достоверности предоставленных данных
- Oraclize - сеть, в которой данные подписываются криптографической подписью
- Оракул с открытым исходным кодом может гарантировать достоверность источника, но не данных, поскольку источник единичный
- В случае с использованием множества источников, есть возможность отфильтровать недостоверные данные
- Один оракул может перестать функционировать, по этой причине целесообразнее использовать сеть оракулов
Оракулы: другие реализации
- В сети Эфириум есть оракул btc relay, который позволяет из смарт-контрактов сети видеть текущее состояние биткоина. Учитывая тот факт, что заголовок биткоин блока защищен Proof of Work, подделать данные практически невозможно (необходимо завладеть 51% мощностей), по этой причине оракул btc relay принимает данных от любых источников и их можно считать достоверными
- Augur - рынок предсказаний. Основная идея сервиса заключается в том, что если предсказания пользователей сбываются, то они получают эфир и дополнительные баллы репутации. Оракулы в такой системе действуют следующим образом - создают мультисиг транзакцию с данными и если с транзакцией согласны большинство участников сети, которые проверяют эти данные, то транзакция исполняется и данные попадают в Augur.
- В сети Hyperledger Fabric используется один оракул, который из внешнего источника берет данные и транслирует в Блокчейн Fabric
Оракулы в Exonum
Поскольку Exonum - приватный Блокчейн, то существует определенное количество валидаторов, которых логично использовать как сеть оракулов.Это значит, что каждый валидатор обращается за внешними данными, после чего создает транзакции с ними, далее транзакции попадают в мемпул и подтверждаются в виде блоков. В результате формируется общее видение - статус, которым могут пользоваться другие сервисы Exonum.
Рассмотрим на конкретном примере
Алгоритм вычисления времени
Почему время F+1
Схема демонстрирует узлы валидаторов, часть из которых - византийцы.
Разберем возможные ситуации:
- В первом случае византийцы сговорились и решили постить 3000 год, поскольку число византийцев F, то F+1 время по условию задачи точно не византийское
- Во втором случае - византийцы постят разное время, прошлое и будущее, в этом случае они точно не повлияют на F+1 время
- Если запостили время, которое оказывается между двумя временами - то, данное время устраивает по условиям точности
Следовательно, во всех случаях время F+1 - точное, что и требовалось доказать.
Приведем еще один пример - оракул Биткоин, который используется в Анкоринге
Более подробную информацию о проекте можно узнать из официальный источников