# Библиотеки для работы с VIZ
Для разработки приложений зачастую используют уже готовые библиотеки. Наличие библиотеки для конкретного языка программирования зависит от наличия заготовок для работы с криптографией, большими числами и траспортными протоколами (http/ws). Так как VIZ исторически эволюционировал из Graphene, то большинство библиотек для таких блокчейн систем, как EOS/Steem/Golos — подходят и для VIZ. Отличительной особенностью является формат общения с нодой (структура json-rpc), порядок и наименование параметров при описании операции, формат сложных данных в бинарном виде (например формат ассетов VIZ и SHARES отличается от нового формата SMT в Steem).
Несмотря на разный синтаксис — основа для взаимодействия с VIZ одна: криптография для ключей и подписи сообщений, проверка подписи по данным и публичному ключу, формирование транзакций, взаимодейстие с нодой.
Каждый разработчик может поднять свою ноду для взаимодействия с VIZ, но для начинающих разбираться существуют публичные ноды:
Ниже перечислины основные библиотеки VIZ, которые поддерживают большинство API запросов к ноде и формирование транзакций.
# JavaScript
Фаворит для разработки приложений библиотека viz-js-lib (opens new window). В нем есть поддержка всего что нужно как для серверного (nodejs), так и для пользовательского (js в браузерах) взаимодействия с VIZ:
- Создание и кодирование ключей;
- API-запросы;
- Формирование транзакций;
- Упрощенный конструктор транзакций для операций;
- Функции обратного вызова для запросов;
Документация viz-js-lib на английском языке (opens new window) доступна на GitHub. Примеры для часто использумых операций смотрите в разделе Примеры кода.
# Python
Библиотека thallid-viz (opens new window) от ksantoprotein поддерживает как API запросы, так и формирование транзакций. В наличии множество примеров (opens new window) с разными операциями.
Библиотека viz-python-lib (opens new window) поддерживает большинство необходимого, но отсутствуют примеры и документация (библиотека пока недоделана).
# PHP
После перехода на адаптированные библиотеки BigNumber и Elliptic Curve стало доступным использовать криптографию без сборки secp256k1 для PHP и включения поддержки GMP (opens new window).
Библиотека viz-php-lib (opens new window) поддерживает JsonRPC, работу с ключами, формирование транзакций, шифрование сообщение через shared key (совместимое с viz-js-lib), присутствуют примеры, поддержка PSR-4 и установка без дополнительных зависимостей (all-in-one).
Библиотека php-graphene-node-client с поддержкой VIZ (opens new window), установка которого возможна через Composer.
# GO
Библиотека viz-go-lib (opens new window) отлично подходит для API запросов и изучения формирования транзакций. К сожалению документации по библиотеке нет, как и примеров с отдельными операциями.
# Swift
Библиотека viz-swift-lib (opens new window) — библиотека на Swift, установка которой возможна через Swift Package Manager (opens new window).
# Dart
Криптографическая библиотека viz_dart_ecc (opens new window) — позволяет формировать публичный ключ из приватного, подписывать данные, верифицировать подпись.
Библиотека viz-transaction (opens new window) — позволяет формировать и подписывать транзакции для блокчейна VIZ (библиотека не содержит методов для трансляции транзакции блокчейн-ноде, для этого нужно использовать любые другие библиотеки для http/ws протокола).
# Другое
Если вы не нашли требуемый язык программирования, то можно обратить внимание на существующие библиотеки для EOS и Steem. Чтобы модифицировать их и получить поддержку VIZ достаточно проверить формат json-rpc запросов, поменять chain_id (в VIZ он равен 2040effda178d4fffff5eab7a915d4019879f5205cc5392e4bcced2b6edda0cd
— это префикс для подписи сырых транзакций) и настроить конструктор операций.
- C# Ditch (opens new window) — быстрая и простая библиотека на C# использующая .NET стандарта 2.0;
- Elixir API wrapper (opens new window) — библиотека на Elixir для API-запросов;
- viz-php-control-panel (opens new window) — контрольная панель для VIZ с демо-приложением в виде медиа-платформой на PHP (стоит обратить внимание на класс для выполнения JSON-RPC запросов viz_jsonrpc.php (opens new window)).