# Развертывание смарт-контрактов
Убедитесь в выполнении требований для развертывания смарт-контракта.
# Требования
- Кошелёк: Создайте кошелёк с помощью Keeper Wallet или WX Network.
Примечание: Сохраните сид-фразу кошелька для отправки транзакций.
- Токены: Получите токены WAVES для оплаты комиссии за транзакции за развертывание каждого скрипта:
- Для сети Mainnet: Приобретите 0.001 WAVES через доступные способы пополнения кошелька.
- Для сети Testnet: Приобретите 0.001 WAVES через Faucet.
- Для сети Stagenet: Приобретите 0.001 WAVES через Faucet.
# Руководство
Выполните шаги инструкции для необходимого типа смарт-контракта:
# Запуск dApp
- Создайте скрипт вашего dApp-приложения:
// Пример скрипта: {-# STDLIB_VERSION 8 #-} {-# CONTENT_TYPE DAPP #-} {-# SCRIPT_TYPE ACCOUNT #-} @Callable(i) func checkStorageUntouchedByAlias(accountAlias: String) = { let alias = Alias(accountAlias) let res = if isDataStorageUntouched(alias) then { unit } else { throw("Хранилище данных было изменено этим псевдонимом") } ([], res) }
- Отправьте транзакцию Set Script, указав:
- Вашу сид-фразу в переменной
seedPhrase
. - Скрипт вашего dApp-приложения в переменной
rideScript
.// Пример форматирования: rideScript := ` {-# STDLIB_VERSION 8 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ACCOUNT #-} let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8' let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' match tx { case o: Order => sigVerify(o.bodyBytes, o.proofs[0], cooperPubKey ) && (o.assetPair.priceAsset == BTCId || o.assetPair.amountAsset == BTCId) case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey ) } `
# Запуск смарт-аккаунта
- Создайте скрипт вашего смарт-аккаунта:
// Пример скрипта: {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ACCOUNT #-} let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8' let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' match tx { case o: Order => sigVerify(o.bodyBytes, o.proofs[0], cooperPubKey ) && (o.assetPair.priceAsset == BTCId || o.assetPair.amountAsset == BTCId) case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey ) };
- Отправьте транзакцию Set Script, указав:
- Вашу сид-фразу в переменной
seedPhrase
. - Скрипт вашего смарт-аккаунта в переменной
rideScript
.// Пример форматирования: rideScript := ` {-# STDLIB_VERSION 8 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ACCOUNT #-} let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8' let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' match tx { case o: Order => sigVerify(o.bodyBytes, o.proofs[0], cooperPubKey ) && (o.assetPair.priceAsset == BTCId || o.assetPair.amountAsset == BTCId) case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey ) }
# Запуск смарт-ассета
- Создайте скрипт вашего смарт-ассета:
// Пример скрипта: {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} func trueReturner () = { true } trueReturner()
- Выберите подходящий вариант в зависимости от вашей цели:
# Создание смарт-ассета
Отправьте транзакцию Issue, указав:
- Вашу сид-фразу в переменной
seedPhrase
. - Скрипт вашего смарт-ассета в переменной
rideScript
.// Пример форматирования: rideScript := ` {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} func trueReturner () = { true } trueReturner() `
# Добавление скрипта ассета
Отправьте транзакцию Set Asset Script, указав:
- Вашу сид-фразу в переменной
seedPhrase
. - ID вашего ассета в переменной
assetID
. - Скрипт вашего смарт-ассета в переменной
rideScript
.// Пример форматирования: rideScript := ` {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} func trueReturner () = { true } trueReturner() `