# Развертывание смарт-контрактов
Убедитесь в выполнении требований для развертывания смарт-контракта.
# Требования
- Кошелёк: Создайте кошелёк с помощью Keeper Wallet или WX Network.
Примечание: Сохраните сид-фразу кошелька для отправки транзакций.
- Токены: Получите токены WAVES для оплаты комиссии за транзакции за развертывание каждого скрипта:
- Для сети Mainnet: Приобретите 0.001 WAVES через доступные способы пополнения кошелька.
- Для сети Testnet: Приобретите 0.001 WAVES через Faucet.
- Для сети Stagenet: Приобретите 0.001 WAVES через Faucet.
# Руководство
Выполните шаги инструкции для необходимого типа смарт-контракта:
# Запуск dApp
- Создайте скрипт вашего dApp-приложения:
// Пример скрипта: {-# STDLIB_VERSION 3 #-} {-# SCRIPT_TYPE ACCOUNT #-} {-# CONTENT_TYPE DAPP #-} let answersCount = 20 let answers = ['Точно', 'Да - определенно', 'Можете быть уверенны!', 'Мне кажется, да', 'Мой ответ - нет', 'Мои источники говорят - нет', 'Сомневаюсь']. func getAnswer (question,previousAnswer) = { let hash = sha256(toBytes((question + previousAnswer))) let index = toInt(hash) answers[(index % answersCount)] } func getPreviousAnswer (address) = match getString(this, (address + '_a')) { case a: String => a case _ => address } @Callable(i) func tellme (question) = { let callerAddress = toBase58String(i.caller.bytes) let answer = getAnswer(question, getPreviousAnswer(callerAddress)) WriteSet([DataEntry((callerAddress + '_q'), question), DataEntry((callerAddress + '_a'), answer)]) };
- Отправьте транзакцию Set Script, указав:
Вашу сид-фразу в переменной
senderPrivateKey
.Скрипт вашего dApp-приложения в переменной
txScript
.Примечание: Используйте
\n" +
для корректного форматирования многострочного скрипта.// Пример форматирования: var txScript = "{-# STDLIB_VERSION 3 #-}\n" + "{-# SCRIPT_TYPE ACCOUNT #-}\n" + "{-# CONTENT_TYPE DAPP #-}\n" + "let answersCount = 20\n" + "let answers =\n" + "['Точно',\n" + "'Да - определенно.',\n" + "'Можете быть уверенны!',\n" + "'Мне кажется, да',\n" + "'Мой ответ - нет', \n" + "'Мои источники говорят - нет',\n" + "'Сомневаюсь']\n" + "func getAnswer (question,previousAnswer) = {\n" + "let hash = sha256(toBytes((question + previousAnswer)))\n" + "let index = toInt(hash)\n" + "answers[(index % answersCount)]\n" + "}\n" + "func getPreviousAnswer (address) = match getString(this, (address + '_a')) {\n" + "case a: String => a\n" + "case _ => address\n" + "}\n" + "@Callable(i)\n" + "func tellme (question) = {\n" + "let callerAddress = toBase58String(i.caller.bytes)\n" + "let answer = getAnswer(question, getPreviousAnswer(callerAddress))\n" + "WriteSet([DataEntry((callerAddress + '_q'), question), DataEntry((callerAddress + '_a'), answer)])\n" + "}";
# Запуск смарт-аккаунта
- Создайте скрипт вашего смарт-аккаунта:
// Пример скрипта: {-# 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, указав:
Вашу сид-фразу в переменной
senderPrivateKey
.Скрипт вашего смарт-аккаунта в переменной
txScript
.Примечание: Используйте
\n" +
для корректного форматирования многострочного скрипта.// Пример форматирования: var txScript = "{-# STDLIB_VERSION 6 #-}\n" + "{-# CONTENT_TYPE EXPRESSION #-}\n" + "{-# SCRIPT_TYPE ACCOUNT #-}\n" + "let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8'\n" + "let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'\n" + "match tx {\n" + "case o: Order =>\n" + "sigVerify(o.bodyBytes, o.proofs[0], cooperPubKey ) && \n" + "(o.assetPair.priceAsset == BTCId || o.assetPair.amountAsset == BTCId)\n" + "case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey )\n" + "}";
# Запуск смарт-ассета
- Создайте скрипт вашего смарт-ассета:
// Пример скрипта: {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} func trueReturner () = { true } trueReturner()
- Выберите подходящий вариант в зависимости от вашей цели:
# Создание смарт-ассета
Отправьте транзакцию Issue, указав:
Вашу сид-фразу в переменной
senderPrivateKey
.Скрипт вашего смарт-ассета в переменной
txScript
.Примечание: Используйте
\n" +
для корректного форматирования многострочного скрипта.// Пример форматирования: var txScript = "{-# STDLIB_VERSION 6 #-}\n" + "{-# CONTENT_TYPE EXPRESSION #-}\n" + "{-# SCRIPT_TYPE ASSET #-}\n" + "func trueReturner() = {\n" + "true\n" + "}\n" + "trueReturner()";
# Добавление скрипта ассета
Отправьте транзакцию Set Asset Script, указав:
Вашу сид-фразу в переменной
senderPrivateKey
.ID вашего ассета в переменной
assetId
.Скрипт вашего смарт-ассета в переменной
script
.Примечание: Используйте
\n" +
для корректного форматирования многострочного скрипта.// Пример форматирования: var script = "{-# STDLIB_VERSION 6 #-}\n" + "{-# CONTENT_TYPE EXPRESSION #-}\n" + "{-# SCRIPT_TYPE ASSET #-}\n" + "func trueReturner() = {\n" + "true\n" + "}\n" + "trueReturner()";