Зависимости внутри контрактов

Чтобы убедиться в детерминистском подходе к разработке контракта, во время регистрации контракта в DEX модуле мы просим разработчиков указывать какие еще зависимости есть в их контрактах. Контракт А считается зависимым от контракта В, если ответе на любой из вызовов контракта А могут содержаться данные о выставленных/отмененных ордерах в контракте В. Например, бессрочному фьючерсному контракту может понадобиться размещение ордеров в другом спотовом контракте во время внутреннего процесса размещения заявки, чтобы выполнить условия хеджирования при помощи покупки/продажи базового актива. В этом случае в бессрочном контракте должно присутствовать описание зависимости от спотового контракта. Синтаксис командной строки для регистрации такого контракта с зависимостями должен быть следующим:

seid tx dex register-contract [contract address] [code id] \
    [need hook] [need order matching] [dependency1,dependency2,...]

В приведенном выше примере бессрочного/спотового контрактов, предполагается, что если адрес бессрочного контракта sei14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sh9m79m, а адрес спотового контракта sei1fzm6gzyccl8jvdv3qq6hp9vs6ylaruervs4m06c7k0ntzn2f8faq8un0p6, то командная строка с информацией о регистрации контракта будет выглядеть следующим образом:

seid tx dex register-contract sei14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sh9m79m \
    1 true true sei1fzm6gzyccl8jvdv3qq6hp9vs6ylaruervs4m06c7k0ntzn2f8faq8un0p6

Обратите внимание, что регистрация контракта является операцией вида UPSERT (UPDATE or INSERT), поэтому регистрация одного и того же контракта несколько раз будет только обновлять регистрационную информацию.

Замыкание зависимостей

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

Last updated