Corda - проверка договора с использованием оракулов - PullRequest
0 голосов
/ 20 января 2019

Я просматривал официальную документацию и, проходя через https://docs.corda.net/key-concepts-contracts.html, натолкнулся на следующее утверждение:

Проверка транзакции должна быть детерминированной - договор должен либо всегда принимать, либо всегдаотклонить данную транзакцию.Например, срок действия транзакции не может зависеть от времени, когда проводится проверка.

Насколько я понимаю, это означает, что проверка транзакции должна быть независимой от того, когда транзакция проверялась.

Позже, на той же странице, я увидел следующее:

Иногда срок действия транзакции будет зависеть от некоторой внешней информации, такой как обменный курс.В этих случаях требуется оракул.

Кажется, это противоречит предыдущему утверждению.Если я использую обменные курсы для проверки контракта, не станет ли проверка недетерминированной?

Если я буду использовать обменный курс для EURUSD в качестве одного из параметров для проверки контракта, этот параметр будет изменяться со временем, иобновление состояния, действующее сегодня, может быть недействительным в будущем из-за изменения тарифов.

Есть ли что-то, что я здесь неправильно понял?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Иногда срок действия транзакции зависит от некоторой внешней информации, например, от обменного курса.В этих случаях требуется оракул.

Этот процесс работает следующим образом:

  • Сторона запрашивает внешнюю часть информации
  • Сторона включаетвнешняя часть информации в их транзакции части команды
  • Оракул подписывает транзакцию только в том случае, если внешняя часть информации верна в момент, когда они подписывают

Таким образом, оракулПодпись утверждает, что внешняя часть информации была действительной в то время, когда она была включена , даже если она изменилась с тех пор (например, изменяющийся обменный курс).Таким образом, проверка контракта остается детерминированной.

0 голосов
/ 21 января 2019

Когда вы используете Oracle, это нейтральный узел, который подписывает транзакцию, если она отвечает ее требованиям / проверке.

В самом договоре вы только указываете, что подпись Oracle должна была использоваться для подписания транзакции, она не проверяет недетерминированный факт, подтвержденный оракулом, это может бытьлюбая произвольная информация / факт, т.е. обменный курс.Так что в этом смысле для Contract Validation оно все еще детерминировано.

...