# Разработка приложений на блокчейне Waves: обзор
Экосистема Waves предоставляет множество инструментов, продуктов и компонентов, которые помогут интегрировать ваше приложение с блокчейном. Этот раздел поможет сориентироваться.
Прежде чем начать, рекомендуем ознакомиться с основными понятиями:
# API ноды
REST API ноды Waves — основной интерфейс для взаимодействия с блокчейном. Node REST API позволяет:
- отправить на блокчейн подписанную транзакцию;
- получать данные об аккаунтах, токенах, транзакциях, блоках и т. д.;
- валидировать транзакции, использовать различные утилиты и многое другое.
Вы можете использовать API пула публичных нод, предоставляемых командой Waves, или запустить собственную ноду и включить на ней REST API. На своей ноде вам будут дополнительно доступны приватные методы API, такие как подписание транзакции от имени аккаунтов из кошелька ноды и инструменты отладки.
Обратите внимание: API ноды не дает возможности подписывать транзакции от имени произвольных аккаунтов. Для этого используйте клиентские библиотеки.
Документация Node REST API в главе «Нода»
# Клиентские библиотеки
Библиотеки для разных языков программирования предоставляют функции для работы с блокчейном 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