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