Развертывание универсального контракта

Универсальный контракт относится к контактам CosmWasm и не содержит функциональных особенностей dex модуля Sei.

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

1. Сборка контракта Cosmwasm

Соберите образ контракта. Обратите внимание, что следующие команды запускаются в директории контракта, поэтому необходимо убедиться, что seid есть в переменной $PATH:

cargo build
docker run --rm -v "$(pwd)":/code --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry cosmwasm/rust-optimizer:0.12.5

2. Предложение сообществу на загрузку контракта

Обратите внимание, что на локальной машине и в блокчейне sei-devnet-1 вы можете пропустить шаг 2 и шаг 3, а сохранить wasm контракт напрямую в блокчейн:

seid tx wasm store $CONTRACT_WASM_BINARY -y --from=$ACCOUNT_NAME --chain-id=$CHAIN_ID --gas=10000000 --fees=10000000usei --broadcast-mode=block

Вернитесь в репозитарий sei-chain и подайте заявку в гаверненс блокчейна для загрузки wasm контракта.

seid tx gov submit-proposal wasm-store artifacts/$CONTRACTNAME.wasm \
 --from $(seid keys show -a $ACCOUNT_NAME) \
 --run-as $(seid keys show -a $ACCOUNT_NAME) \
 --title "<Enter title proposal title for uploading of wasm contract>" \
 --description "<Enter description of proposal and contract>" \
 --chain-id sei-chain \
 --instantiate-everybody "false" \
 --instantiate-only-address $(seid keys show -a $ACCOUNT_NAME) \
 --broadcast-mode=block \
 --gas=500000 \
 --fees=10000000usei

Ссылка на руководство https://docs.cosmwasm.com/tutorials/governance/#submit-proposal для более детального изучения процесса установки и исполнения контракта.

3. Голосование за предложенный контракт

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

4. Создание контракта

После того, как ваше предложение будет одобрено, вы можете создавать контракт в блокчейне. Обратите внимание, что в пример ниже $CONTRACT_ID равно 1, а $LABEL может быть любым именем контракта:

В фигурных скобках '{}' указываются параметры, которые вы передаете для создания контракта. В нашем примере контракт не получает никаких параметров, поэтому фигурные скобки пустые. Для любого другого настоящего контракта скорей всего понадобятся некоторые параметры. Например, чтобы создать контракт на Vortex, необходимы следующие параметры в скобках (реальные значения могут отличаться от представленных ниже):

После этого вы должны получить примерно такой ответ:

Из ответа вы можете увидеть, что ваш контракт был создан по адресу: sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff. Вам понадобится этот адрес для любого дальнейшего взаимодействия с контрактом.

5. Выполнение контракта

В этом примере мы посылаем оракулу команду UpdatePrice для обновления цены токена:

6. Запрос контракта

В этом примере мы посылаем сообщение ораклу GetPrice для получения цены токена:

Last updated