Вот что говорится в документации Ethereum к Oraclize :
Во-первых, в наиболее распространенном случае транзакция, выполняющая функцию смарт-контракта, транслируется пользователем. Функция содержит специальную инструкцию, которая манифестирует Oraclize, который постоянно отслеживает блокчейн Ethereum на наличие такой инструкции, запроса данных.
Во-вторых, в соответствии с параметрами такого запроса Oraclize будет получать или вычислять результат, строить, подписывать и транслировать транзакцию с результатом. В конфигурации по умолчанию такая транзакция будет выполнять функцию __callback, которая должна быть помещена в смарт-контракт ее разработчиком: по этой причине эта транзакция упоминается в документации как транзакция обратного вызова Oraclize.
Какая инструкция выполняется? Какие сообщения передаются при вызове oraclize_query
функции?
"Особая" инструкция и одно и oraclize_query
то же? Насколько я понимаю, oraclize_query
это запрос данных, да?
Другие ответы не касаются того, что такое «специальная» инструкция и т. Д.
РЕДАКТИРОВАТЬ: я узнал в комментариях к вопросу, предложенному другими, чтобы быть оригинальным, где ответы таковы, что он действительно работает так, как я предложил (часть событий была тем, в чем я не был уверен)
Я не совсем уверен в этом, но это мое предположение о том, как все работает под капотом:
когда вызывается oraclize_query, он публикует событие с данными о том, какой запрос и т. д.
oraclize отслеживает блокчейн и фильтрует эти события
узнав ответ, они отправляют его контракту, который его запросил, используя функцию __callback (реализуется запрашивающей стороной)
По этой причине для доставки ответа требуется несколько блоков.
Я попытался подтвердить эти предположения, взглянув на код , но запутался в нем.
Шучжэн
Крук
Шучжэн
Крук
Шучжэн
Крук
Шучжэн