Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Алексей Сидоров, Вячеслав Кукушкин (разработчик...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Алексей Сидоров, Вячеслав Кукушкин (разработчики Exonum). Оракулы для Exonum

Доклад на шестом, предновогоднем, митапе сообщества блокчейн-разработчи­ков Санкт-Петербурга
#spblockchain #spb #blockchain #meetup

Avatar for Dmitri Plakhov

Dmitri Plakhov

December 25, 2017
Tweet

More Decks by Dmitri Plakhov

Other Decks in Programming

Transcript

  1. Оракул блокчейна У нас есть смарт контракт, который распределяет подарки

    ровно в 23 55 по Москве. (Новогодняя лотерея криптокотиков). Время в блоках у блокчейнов весьма неточное. Каким образом мы можем узнать согласованное точное время для выполнения смарт контракта?
  2. Типы оракулов 1. Простой оракул, который берет информацию из источника

    данных и отправляет ее в блокчейн, в этом случае нет доверия ни к оракулу ни к источнику данных. 2. Oraclize: некоторая сеть, которая берет информацию из источника и как-то организует доказательство, что данные по пути не изменились. Есть небольшое доверие к оракулу, но нет доверия к данным. 3. Оракул с открытым кодом, который берет информацию из какого-то источника. Есть доверие оракулу, нет доверия источнику данных. 4. Оракул с открытым исходным кодом, тянущий инфу из многих источников разом и сам выбирающий "средний" ответ. 5. Сеть оракулов
  3. Оракул времени на Exonum Вводные: алгоритм консенсуса, в котором лишь

    некоторая часть узлов валидаторов создают блоки, то оракулы можно запускать в качестве обычных сервисов Exonum. Результат: 1) сеть оракулов, каждый из которых пользуется своим источником данных и у каждого валидатора свое представление о внешних данных 2) возможность использовать математический аппарат для определения достоверности данных. В случае оракула времени, каждый валидатор Exonum имеет собственный источник точного времени и при достижении новой высоты формирует транзакцию, в которой он записывает сколько времени у него. При исполнении этой транзакции, каждый узел сравнивает полученное время с временами на других узлах и вычисляет точное время.
  4. Алгоритм вычисления времени Требования к времени 1. Надежное к византийскому

    поведению 2. Детерменировано 3. Относительно точное (погрешность +- 1 минута) 4. Монотонное (не должно прыгать назад) Вычисление консенсусного времени 1. Число валидаторов это N, а f это число византийцев (f = N / 3) 2. Берем времена валидаторов 3. Сортируем от самого нового до старого 4. Любое время от f + 1 до 2 * f + 1 не является явно византийским, если византийцев меньше f 5. Из практических соображений нужно брать время f + 1 узла, как наиболее актуальное, соблюдая требование монотонности 6. Оценка погрешностей, сравнения с другими.
  5. Анкоринг Имеющийся в Exonum анкоринг пользуется данными из Bitcoin. Каждый

    валидатор опрашивает узел Bitcoin и узнает у него о последней непотраченной анкорящей транзакции, эту информацию он постит в виде Exonum транзакции, которая записывает эту информацию в блокчейн. Таким образом на каждый момент времени можно точно знать какую последнюю транзакцию видит каждый из валидаторов. И если последняя совпадает у 2/3+1 из них, то можно считать, что эти данные согласованы и смело пользоваться этой транзакцией как входной для следующей.