В апреле этого года, после нескольких лет успешного развития платформы Waves Enterprise и ее использования в различных проектах мы решили выпустить её open-source версию, чтобы расширить охват потенциальных пользователей платформы. Мы сохранили в ней почти всю функциональность и классные фичи: это контейнеризированные смарт-контракты на любом языке, поддержка трех разных консенсусов, возможность обмена конфиденциальными данными и не только. Убрали только поддержку ГОСТ-криптографии, TLS и PKI. В этом посте мы сравним наш блокчейн с известными аналогами, расскажем, как развернуть его самостоятельно и настроить мониторинг. В итоге вы получите готовую блокчейн-песочницу для экспериментов и разработки децентрализованных приложений на любом языке программирования. Платформа Waves Enterprise начала развиваться в 2018, и за это время на ее основе разработали немало проектов для различных отраслей. Цифровая платформа распределенного реестра Федеральной налоговой службы России. Изначально создавалась для выдачи кредитов малому и среднему и бизнесу в рамках государственной поддержки в условиях пандемии. Сейчас на базе этой платформы создаются и эксплуатируются новые сервисы. Распределенная система управления денежными средствами и B2B-сервис для работы с самозанятыми в Альфа-Банке. Федеральная платформа дистанционного электронного голосования. Эта платформа применяется в регионах России; кстати, ее на Хабре анализировали независимые наблюдатели. Сервис блокчейн-голосований WE.Vote. NFT-маркетплейс Raritet.io. Системы отслеживания цепи поставок, учета данных пациентов, трансграничных платежей, токенизации займов и другие пилоты. Подробней обо всех проектах можно почитать у нас на сайте. Они были развернуты, в основном, в приватных блокчейн-сетях, но использовали те же наработки, что легли в основу open-source версии. Поэтому ее легко можно применять и для каких-то собственных проектов — технологии обкатаны уже не раз. Далее мы сравним Waves Enterprise с другими open-source блокчейнами и перейдем к технической части статьи. Для начала мы свели в одну таблицу значимые характеристики известных блокчейнов, чтобы сравнить их с Waves Enterprise. Все они поддерживают open source. Хотя кое-где есть пробелы, большую часть информации найти удалось и общую картину оценить можно. Пункты, где информация отсутствует, отмечены как N/A.  Waves Enterprise Waves Ethereum Hyperledger Fabric Solana Hedera NEAR Тип сети Permissioned Public Public Permissioned Public Permissioned Public Пропускная способность, TPS 2000 150 15 3000 50000 10000 1000000 Консенсусы LPoS, PoA, CFT PoS PoS PoW, PoS, PBFT, Raft PoH PoS, HCS, Hashgraph DCA PoS Язык смарт-контрактов Любой RIDE Solidity Go, JS Rust, C, C++ Solidity Rust, AssemblyScript SDK Java, Kotlin, JS Java, Kotlin TS, JS, Go, Python, PHP, Swift Node.js, Java, Go Rust, JS, C#, Swift, Java, Python, Go Java, JS, Go, C#, PHP Rust, JS, AssemblyScript Экосистема (мосты, оракулы, интеграция) Waves, Oracle Contract DeFi, Dex, GameFi Lending, DeFi, Dex, Marketplace, Wallet, GameFi Lending, Dex, DeFi,  Marketplace, Wallet Lending, DeFi, Dex, Marketplace, Wallet (streaming, social, Web3.0, browser) N/A Wallet, P2E, DAO, DeFi, Education, Dex, Marketplace, Web3.0, Dev platform, IDO Интерфейсы REST, gRPC REST, gRPC JSON-RPC CLI, REST, Node.js JSON-RPC REST, gRPC N/A Минимальные системные требования 2 vCPU, 4 ГБ RAM, 50 ГБ SSD 2 vCPU, 4 ГБ RAM, 50 ГБ SSD Intel NUC 7th gen или выше, 4–8 ГБ RAM, 2 ТБ SSD 4 ГБ RAM, Ubuntu Linux 14.04/16.04 LTS  (64-bit) или Mac OS 10.12 24-thread 2.8 GHz CPU, 128 ГБ RAM, 500 ГБ PCIe Gen3 x4 NVMe SSD 48-thread Intel Xeon Silver CPU, 256 ГБ DDR4 RAM, 5 ТБ NVMe SSD 16-thread Intel i7/Xeon, 8 ГБ DDR4, 500 ГБ SSD Многие другие проекты уже обросли большим количеством надстроек и связанных сервисов. Опенсорс Waves Enterprise только недавно начал свой путь: у платформы всё впереди. Здесь также стоит пояснить, почему в таблице так сильно различаются показатели пропускной способности. «Сферической транзакции в вакууме», по которой принято измерять пропускную способность, не существует. Публичные сети здесь имеют схожий профиль нагрузки, поэтому их сравнение вполне допустимо, но с приватными сетями методика становится намного сложнее. В рамках одной транзакции может происходить не только перевод токенов, а много других полезных действий, которые будут транзакцию утяжелять. Кроме того, во многих сетях гигантские цифры достигаются в результате симуляции — по сути, нагрузочного теста, методика которого также не раскрывается. Для Waves Enterprise мы привели значение, полученное при реальном тестировании на обычном трансфере токенов. Возможно, мы посвятим пропускной способности блокчейнов одну из будущих статей; пишите в комментариях, если интересно. Вынесем важные пункты из таблицы для каждой сети и добавим дополнительные особенности. Waves Enterprise:  поддержка смарт-контрактов на любом языке программирования; поддержка PoA консенсуса, который является одним из самый стабильных, предсказуемых и производительных; сети Waves Enterprise уже 3 года, она работает стабильно, и опенсорс-версия основана на тех же технологиях; низкий порог вхождения в майнинг как по требованиям к оборудованию, так и по балансу токенов (на данный момент около $2000); защита permissioned-сети в виде авторизованного доступа и защищенного реестра докер-контрактов. Waves:  низкий порог вхождения в майнинг по требованиям к оборудованию; богатая экосистема. Ethereum:  богатая экосистема; высокая стоимость транзакций. Hyperledger Fabric:  отсутствие публичной сети; техническая сложность развертывания Hyperledger Fabric; длительность и сложность внедрения. Solana: богатая экосистема; высокая пропускная способность; высокий порог входа для ноды с точки зрения оборудования; на текущем этапе развития нередко встречаются просадки производительности вплоть до остановки сети. Hedera: собственный консенсус; высокая пропускная способность; проблемы со стабильностью публичной сети. NEAR:  богатая экосистема; высокая пропускная способность; rainbow bridge для связи с Ethereum; требуется иметь баланс токенов на сумму около $1000000, чтобы стать валидатором сети. Общие отличия понятны, теперь перейдем именно к Waves Enterprise. Развернуть платформу в локальном режиме несложно. В результате вы получите сеть из трех нод, где можно будет протестировать основные функции: отправка транзакций; прием данных из блокчейна; установка и вызов смарт-контрактов; передача конфиденциальных данных между нодами; тестирование мониторинга ноды при помощи InfluxDB и Grafana. Системные требования: CentOS 6/7 (x64); Debian 8/9/10 (x64); Red Hat Enterprise Linux 6/7 (x86); Ubuntu 18.04 (x64) (для серверов). Ubuntu 18.04+ (x64); macOS Sierra и выше (для рабочих станций). Docker Engine и Docker Compose 2+ vCPU, 4 ГБ RAM, 50 ГБ SSD Взаимодействовать с платформой можно как через клиентское приложение, так и через интерфейсы gRPC и REST API. Для удобства работы через REST API в дистрибутив встроен Swagger, который позволяет формировать и отправлять запросы прямо в браузере. Для выполнения команд на ОС Linux могут потребоваться права администратора. Создайте рабочую директорию и поместите в нее файл docker-compose.yml. Этот файл вы можете скачать из официального репозитория Waves Enterprise, выбрав последний релиз платформы, либо в терминале при помощи утилиты wget. Не забудьте далее подставить номер последней доступной версии из репозитория: Откройте терминал и перейдите в директорию с файлом docker-compose.yml. Запустите Docker-контейнер для развертывания платформы, подставив используемую версию платформы: После развертывания вы получите сообщение: INFO [launcher] WE network environment is ready! Информация о всех нодах сети доступна в файле ./credentials.txt и выглядит примерно так: node-0blockchain address: 3Nzi7jJYn1ek6mMvtKbPhehxMQarAz9YQvFpublic key: 7cLSA5AnvZgiL8CnoffwxXPkpQhvviJC9eywBKSUsi58keystore password: OEtrVSL9gzjO87jYx-gIoQkeypair password: JInWk1kauuZDHGXFJ-rNXQAPI key: we node-1blockchain address: 3Nxz6BYyk6CYrqH4Zudu5UYoHU6w7NXbZMspublic key: VBkFFQmaHzv3YMiWLhh4qsCn4prUvteWsjgiiHEpWEpkeystore password: FsUp3xiX_NF-bQ9gw6t0sAkeypair password: Qf2rBgBT9pnozLPOkO1yYwAPI key: we node-2blockchain address: 3NtT9onn8VH1DsbioPVBuhU4pnuCtBtbsTrpublic key: 8YkDPLsek5VF5bNY9g2dxAthd9AMmmRyvMPTv1H9iEpZkeystore password: T77fAroHavbWCS6Uir2oFgkeypair password: bELB4EU1GDd5rS-RId_6pAAPI key: we Теперь можно запустить готовую конфигурацию через команду При успешном запуске нод и сервисов вы получите сообщение: Creating network "platf_we-network" with driver "bridge"Creating node-2       ... doneCreating postgres     ... doneCreating node-0       ... doneCreating node-1       ... doneCreating auth-service ... doneCreating crawler      ... doneCreating data-service ... doneCreating frontend     ... doneCreating nginx-proxy  ... done После запуска контейнеров клиент платформы будет доступен в браузере локально по адресу 127.0.0.1 или localhost. Интерфейс REST API ноды располагается по адресу 127.0.0.1/node-0 или localhost/node-0. По умолчанию для локального nginx-сервера платформы предоставляется порт 80:80. Если у вас этот порт занят другим приложением, укажите доступный порт в параметре ports секции nginx-proxy в файле docker-compose.yml. Например, чтобы клиент и REST API стали доступны по адресу 127.0.0.1:81 или localhost:81, нужно указать Остановить запущенные ноды можно командой: Для нод блокчейн-сети можно подключить мониторинг через InfluxDB и Grafana. Предварительно  не забудьте остановить запущенные контейнеры через предыдущую команду. Теперь важно определить, планируете ли вы использовать Docker Compose. Если да, то пропускайте этот шаг. Если нет, то вам нужно отдельно установить Docker-образ Grafana: И Docker-образ InfluxDB: Перейдите в директорию ./configs/nodes/node-0 и с правами администратора откройте файл конфигурации ноды node.conf. В конце файла добавьте параметры сервисов мониторинга: Если вы работаете с Docker Compose, откройте файл docker-compose.yml и добавьте параметры развертывания сервисов мониторинга (полный листинг docker-compose.yml можно найти у нас в документации). Запустите свою блокчейн-платформу и войдите в клиентское приложение Grafana. Для этого запустите контейнеры платформы при помощи команды docker-compose up -d и дождитесь завершения развертывания. Затем откройте клиент Grafana, доступный на порте 3000: http://127.0.0.1:3000/login Для аутентификации в клиенте используйте данные, установленные в подкатегории environment раздела services: grafana файла docker-compose.yml: Подключите базу данных платформы к Grafana. Для этого нажмите на вкладку Configuration (Конфигурация) и перейдите в категорию Data Sources (Источники данных). Добавьте новый источник данных, нажав на кнопку Add Data Source, и из предложенного списка выберите InfluxDB. Теперь настройте базу данных, используемую платформой. Секция HTTP, поле URL:http://influxdb:8086 Секция InfluxDB Details: введите данные, установленные в подкатегории environment раздела services: influxdb: файла docker-compose.yml: Нажмите Save & Test. При успешном подключении базы данных появится сообщение «Data source is working». Осталось настроить визуализацию данных в Grafana. Для этого нажмите на + (Добавить) на левой панели клиента и перейдите на вкладку Import (Импортировать). В окно Import via panel json (Импортировать через json панели) вставьте файл json, содержащий параметры визуализации данных. Нажмите Load (Загрузить). В окне Options выберите желаемое имя панели, либо оставьте название sandbox, установленное по умолчанию. Нажмите Import (Импортировать). Теперь вы сможете просматривать показатели вашей демо-платформы на созданной панели. Перейдите во вкладку Dashboard/Manage и выберите панель sandbox, чтобы открыть её. Помимо open-source версии, существует и лицензируемая версия платформы, которая используется в ряде проектов. Отличается платная версия важными для корпоративного использования дополнительными функциями — поддержка криптографии в соответствии с ГОСТ, TLS и PKI. Все остальные фичи есть и там, и там: контейнеризированные смарт-контракты, обмен конфиденциальными данными, поддержка трех вариантов консенсуса (LPoS, PoA, CFT), анкоринг, а также криптография Waves (Curve25519, Blake2b256 и Keccak256) по умолчанию. Если вам интересно подробней узнать о какой-либо из этих фичей или о других сторонах платформы Waves Enterprise, напишите об этом в комментариях.