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
        • Условия
        • Код Ride
        • Вызов скрипта
        • Узнайте больше
      waves_logo Docs

          # Список как аргумент вызываемой функции

          # Условия

          • dApp использует Стандартную библиотеку версии 4 и выше.
          • Элементы списка относятся к одному из следующих типов:
            • Boolean
            • ByteVector
            • Int
            • String

          Вложенные списки не допускаются в качестве аргументов вызываемой функции (в отличие от функций без аннотации).

          # Код Ride

          Аргумент-список указывается в виде

          arg_name: List[elem_type]
          

          Пример скрипта:

          {-# STDLIB_VERSION 8 #-}
          {-# CONTENT_TYPE DAPP #-}
          {-# SCRIPT_TYPE ACCOUNT #-}
          
          @Callable(i)
          func join(strings: List[String]) = {
             [
                StringEntry(toBase58String(i.caller.bytes), strings[0] + "_" + strings[1] + "_" + strings[2])
             ]
          }
          

          # Вызов скрипта

          Создать и отправить транзакцию вызова скрипта можно с помощью клиентских библиотек.

          # JavaScript

          const { invokeScript, broadcast } = require('@waves/waves-transactions');
          
          // Нода Testnet
          // Для Mainnet можно использовать значение по умолчанию
          const nodeUrl = 'https://nodes-testnet.wavesnodes.com'; 
          const seed = 'insert your seed here';
          
            // Параметры вызова скрипта
          const invParams = {
            dApp: "3MyptFjRHW4CTPNQKdF8mu3izsZEPEdzm8s",
            payment: [],
            call: {
              function: 'join',
              args: [
                {
                  type: 'list',
                  value: [
                    { type: 'string', value: 'alpha' },
                    { type: 'string', value: 'beta' },
                    { type: 'string', value: 'gamma' }
                  ]
                }
              ]
            },
            chainId: 'T' // Для Mainnet можно указать значение 'W' или опустить
          };
          
          // Создание и подписание транзакции вызова скрипта
          const invokeTx = invokeScript(invParams, seed); 
          
          broadcast(invokeTx,nodeUrl).then(resp => console.log(resp));
          console.log('Tx ID: ' + invokeTx.id);
          

          💡 Чтобы вызывать скрипт от имени разных пользователей, используйте библиотеку Signer.

          # Python

          import pywaves as pw
          
          // Нода Testnet; для Mainnet можно опустить
          pw.setNode('https://nodes-testnet.wavesnodes.com/', chain='testnet')
          
          my_address = pw.Address(seed = 'insert your seed here')
          my_address.invokeScript(
            '3MyptFjRHW4CTPNQKdF8mu3izsZEPEdzm8s',
            'join',
            [{"type": "list", "value": [
              { "type": "string", "value": "alpha" },
              { "type": "string", "value": "beta" },
              { "type": "string", "value": "gamma" }
             ]}], [])
          

          # Узнайте больше

          • Вызываемая функция
          • Список
          • Функции списка
          • Как создать и запустить dApp
          Простое голосование
          Смарт-контракты Waves
          Простое голосование
          Смарт-контракты Waves