waves_logo Docs
  • Обзор
    Обзор
  • Практические руководства
    • Получение данных из блокчейна
      Получение данных из блокчейна
    • Создание и отправка транзакций
      Создание и отправка транзакций
    • Токенизация
      Токенизация
    • Распространение токена (airdrop)
      Распространение токена (airdrop)
    • Прием платежей
      Прием платежей
    • Обмен токенов
      Обмен токенов
    • Простое голосование
      Простое голосование
    • Список как аргумент
      Список как аргумент
    Практические руководства
  • Смарт-контракты Waves
    Смарт-контракты Waves
  • dApp
    • Создание и запуск dApp
      Создание и запуск dApp
    dApp
  • Cмарт-аккаунт
    • Создание смарт-аккаунта
      Создание смарт-аккаунта
    • [en] Creating and deploying a script manually
      [en] Creating and deploying a script manually
    • [en] Video tutorials
      [en] Video tutorials
    Cмарт-аккаунт
  • Cмарт-ассет
    Cмарт-ассет
  • Инструменты разработчика
    • Waves IDE
      Waves IDE
    • Расширение для VS Code
      Расширение для VS Code
    • Surfboard
      Surfboard
    • Ride REPL
      Ride REPL
    Инструменты разработчика
  • Signer ◆
    Signer ◆
  • Waves API
    • Data Service API
      Data Service API
    • Node REST API 🡥
      Node REST API 🡥
    • Node gRPC Server 🡥
      Node gRPC Server 🡥
    • Blockchain Updates 🡥
      Blockchain Updates 🡥
    Waves API
  • Клиентские библиотеки
    • Waves C#
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Waves C#
    • Gowaves
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Gowaves
    • WavesJ
      • Установка SDK
        Установка SDK
      WavesJ
    • Ts-lib-crypto
      • Установка SDK
        Установка SDK
      Ts-lib-crypto
    • Waves-PHP
      • Установка SDK
        Установка SDK
      Waves-PHP
    • Waves-python
      • Установка SDK
        Установка SDK
      Waves-python
    • Waves-rust
      • Установка SDK
        Установка SDK
      Waves-rust
    Клиентские библиотеки
      • English
      • Русский
      On this page
        • Требования
        • Руководство
      waves_logo Docs

          # Развертывание смарт-контрактов

          Убедитесь в выполнении требований для развертывания смарт-контракта.

          # Требования

          • Кошелёк: Создайте кошелёк с помощью Keeper Wallet или WX Network .

            Примечание: Сохраните сид-фразу кошелька для отправки транзакций.

          • Токены: Получите токены WAVES для оплаты комиссии за транзакции за развертывание каждого скрипта:
            • Для сети Mainnet: Приобретите 0.001 WAVES через доступные способы пополнения кошелька .
            • Для сети Testnet: Приобретите 0.001 WAVES через Faucet .
            • Для сети Stagenet: Приобретите 0.001 WAVES через Faucet .

          # Руководство

          Выполните шаги инструкции для необходимого типа смарт-контракта:

          • dApp.
          • Смарт-аккаунт.
          • Смарт-ассет.

          # Запуск dApp

          1. Создайте скрипт вашего 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)
            }
            
          2. Отправьте транзакцию 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 )
                }
            `
            

          # Запуск смарт-аккаунта

          1. Создайте скрипт вашего смарт-аккаунта:
            // Пример скрипта:
            {-# 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 )
            };
            
          2. Отправьте транзакцию 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 )
                }
            

          # Запуск смарт-ассета

          1. Создайте скрипт вашего смарт-ассета:
            // Пример скрипта:
            {-# STDLIB_VERSION 6 #-}
            {-# CONTENT_TYPE EXPRESSION #-}
            {-# SCRIPT_TYPE ASSET #-}
            
            func trueReturner () = {
                true
            }
            
            trueReturner()
            
          2. Выберите подходящий вариант в зависимости от вашей цели:
          • Создание смарт-ассета.
          • Добавление скрипта для ассета.

          # Создание смарт-ассета

          Отправьте транзакцию 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()
            `
            
          Взаимодействие с нодой
          WavesJ
          Взаимодействие с нодой
          WavesJ