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
        • API ноды
        • Клиентские библиотеки
        • Безопасное подписание транзакций
        • Смарт-контракты
        • Инструменты разработчика
        • Биржа и торговля
        • Чат разработчиков
        • Ресурсы
      waves_logo Docs

          # Разработка приложений на блокчейне Waves: обзор

          Экосистема Waves предоставляет множество инструментов, продуктов и компонентов, которые помогут интегрировать ваше приложение с блокчейном. Этот раздел поможет сориентироваться.

          Прежде чем начать, рекомендуем ознакомиться с основными понятиями:

          • Аккаунт
          • Токен (ассет)
          • Транзакция

          # API ноды

          REST API ноды Waves — основной интерфейс для взаимодействия с блокчейном. Node REST API позволяет:

          • отправить на блокчейн подписанную транзакцию;
          • получать данные об аккаунтах, токенах, транзакциях, блоках и т. д.;
          • валидировать транзакции, использовать различные утилиты и многое другое.

          Вы можете использовать API пула публичных нод, предоставляемых командой Waves, или запустить собственную ноду и включить на ней REST API. На своей ноде вам будут дополнительно доступны приватные методы API, такие как подписание транзакции от имени аккаунтов из кошелька ноды и инструменты отладки.

          Обратите внимание: API ноды не дает возможности подписывать транзакции от имени произвольных аккаунтов. Для этого используйте клиентские библиотеки.

          Документация Node REST API в главе «Нода»

          Все API Waves

          # Клиентские библиотеки

          Библиотеки для разных языков программирования предоставляют функции для работы с блокчейном Waves: подписания транзакций и биржевых ордеров, взаимодействия с Node REST API, генерации ключей аккаунта. Библиотеки отличаются по своим возможностям.

          Список библиотек

          # Безопасное подписание транзакций

          Чтобы подписать транзакцию — например, вызов функции dApp или перевод средств, — необходим закрытый ключ аккаунта. Однако, если ваше приложение отправляет транзакции от имени разных пользователей, у вас нет доступа к их закрытым ключам. Владение закрытым ключом или секретной фразой позволяет делать что угодно от имени аккаунта, поэтому запрашивать их у пользователя не следует. Пользователям настоятельно рекомендуется никому не сообщать секретную фразу и закрытый ключ, и пользователи не доверяют сайтам и приложениям, которые требуют эти данные.

          Решение проблемы — получать подпись пользователя отдельно для каждого действия от его имени. Для этого необходим интерфейс с приложением-кошельком, которое безопасно хранит ключи аккаунта на устройстве пользователя и по запросу стороннего приложения генерирует подпись транзакции. Перед подписанием пользователь может посмотреть детали транзакции, подтвердить или отклонить ее.

          Следующие инструменты предоставляют такие интерфейсы:

          • Keeper Wallet API — использует расширение Keeper Wallet, установленное в браузере пользователя. Keeper — один из наиболее безопасных способов управления ключами, однако необходимость его установки может стать барьером для новых пользователей. Кроме того, Keeper недоступен в мобильных браузерах.
          • Waves Signer — TypeScript/JavaScript-библиотека, которая работает в любом браузере. Signer позволяет подключать сторонние библиотеки-провайдеры подписи и предоставляет унифицированный интерфейс для взаимодействия с ними. Сейчас доступны провайдеры для кошельков WX Network, Keeper Wallet, Ledger и MetaMask. В приложение достаточно добавить инициализацию соответствующих библиотек, а затем использовать одни и те же функции Signer для получения подписи. Signer также обеспечивает наиболее комфортный пользовательский опыт, взаимодействие пользователя с провайдером происходит в iframe.

          # Смарт-контракты

          Протокол Waves предусматривает три типа смарт-контрактов:

          • dApp — приложение, функции которого можно вызвать с помощью транзакции вызова скрипта. Вызываемые функции могут принимать платежи в пользу dApp и выполнять различные действия на блокчейне. Кроме того, dApp-скрипт может содержать функцию-верификатор, которая разрешает или отклоняет транзакции и ордера, отправляемые аккаунтом, в зависимости от выполнения заданных условий.
          • Смарт-аккаунт разрешает или отклоняет транзакции или ордера, отправляемые от имени аккаунта.
          • Смарт-ассет разрешает или отклоняет транзакции с участием ассета.

          Смарт-контракты Waves представляют собой скрипты на языке Ride. Ride — функциональный язык программирования, основанный на выражениях, созданный Waves специально для выполнения скриптов на блокчейне, с акцентом на безопасность и простоту разработки. Подробнее о Ride в главе «Ride».

          # Инструменты разработчика

          Онлайн-среда Waves IDE оптимально подходит для начала разработки на блокчейне Waves. Кроме поддержки Ride, Waves IDE предоставляет также возможность создавать аккаунты, подписывать и отправлять транзакции, содержит библиотеку примеров.

          Все инструменты

          # Биржа и торговля

          Купить или продать токены (ассеты), выпущенные на блокчейне Waves (кроме NFT; также временно недоступна торговля смарт-ассетами), можно на бирже WX Network , которая разработана сторонней командой из сообщества и является частью экосистемы Waves.

          Чтобы продать или купить токены, нужно отправить ордер (заявку на покупки или продажу) на матчер — движок биржи. Управлять ордерами можно с помощью API матчера .

          Популярная JavaScript/Python/PHP-библиотека CCXT для торговли криптовалютами и получения рыночных данных поддерживает WX Network, однако в ней доступны только торговые пары из рекомендованного списка .

          Для торговли произвольными ассетами используйте клиентские библиотеки, см. примеры в разделе Как купить или продать токены.

          # Чат разработчиков

          Общайтесь с другими разработчиками и задавайте вопросы в группе разработчиков Waves в Telegram.

          # Ресурсы

          • Waves Lessons : практическое руководство и учебные пособия по работе с блокчейном Waves
          • Mastering Web3 with Waves : практический курс
          • Инал Карданов. Книга Waves
          • Awesome Waves : коллекция замечательных вещей для разработки на блокчейне Waves
          Практические руководства
          Практические руководства