Semux Light Core
Команда UNO-labs представляет Semux Light Core — библиотеку, написанную на языке C++, для работы с аккаунтами и подписью транзакций в сети Semux. Библиотека является альтернативным решением основного клиента Semux-core (написан на Java) и может применяться для реализации легких кошельков, а также при разработке сервисов и децентрализованных приложений (dApps).
Отличительными чертами Semux Light Core является скорость работы, простота использования и кроссплатформенность. Библиотека может быть скомпилирована под различные платформы (например, x86, x86–64, ARM и ARM64) и операционные системы (Linux, Windows, macOS, Android и iOS). Также библиотека компилируется в WebAssembly, что позволяет ее использование внутри браузера и в проектах Node.js.
В дальнейшем мы надеемся получить с помощью сообщества проекта Semux обвязки библиотеки Semux Light Core под распространенные языки программирования, такие как Java, Python, Ruby, Dart и др. Это даст возможность использования единой кодовой базы в самой ответственной секьюрной части (с минимальными издержками на сопровождение) различных проектов в экосистеме Semux, что существенно понижает точку входа для новых разработчиков.
Для чего это нужно
Основная идея в том, что вы можете безопасно работать с приватными ключами и аккаунтами Semux на своем компьютере, ноутбуке, телефоне или собственном сервере, но при этом:
- во-первых, вам уже не придется устанавливать к себе фулл-ноду и скачивать гигабайты блокчейна для полной синхронизации (а как известно, размер блокчейна не уменьшается, а только растет и представьте, сколько места он будет занимать через 10–20 лет).
- во-вторых и одновременно с первым, вы не рискуете своими приватными ключами, подключаясь к узлу или серверу в сети Semux, т.к. в сеть вы передаете только уже подписанные транзакции и больше ничего.
Структура проекта
Библиотека Semux Light Core имеет модульную структуру и состоит из следующих основных блоков:
- GpCore — низкоуровневая библиотека, реализует общие утилиты и типы С++, в том числе работа с памятью, обработка исключительных ситуаций, дебаг-логгер, потоки и т.п.
- Libsodium — широко известная криптографическая библиотека, реализующая функции шифрования, подписи и хеширования. Библиотека работает с безопасной памятью и предоставляет функции для генерации непредсказуемых данных, подходящих для создания секретных ключей.
- Utf8proc — библиотека для нормализации юникода.
- GpCryptoCore — ядро, безопасно реализующее все необходимые нам криптографические функции.
- Semux Light Core — ядро, реализующее работу с ключами и подпись транзакций непосредственно в блокчейне Semux.
Для сборки проекта используются компиляторы QMake и EMSCRIPTEN. Процесс сборки довольно сложен, поэтому мы создали докер-образ, содержащий скрипт для сборки проекта https://github.com/uno-labs/UnoLabsBuild. Скрипт автоматически подгружает все зависимости и выполняет сборку для Linux и Web Assembly.
Готовые сборки под различные платформы и операционные системы можно найти в разделах релизы в Semux Light Core и Semux Light Core Wasm.
Проект находится под лицензией MIT.
Насколько это безопасно
Мы постарались сделать библиотеку как можно более безопасной, для этого используются методы работы с защищенной памятью и надежный генератор псевдослучайных чисел. Насколько это важно и ответственно, можно проиллюстрировать примером из недавнего прошлого, когда пользователи ряда биткоин-кошельков столкнулись с кражей средств со своих аккаунтов из-за уязвимости в SecureRandom.
Мы используем безопасные методы, строгую проверку типов, защиту от переполнения и всевозможную обработку исключительных ситуаций.
Тем не менее, обратите внимание, что в настоящий момент наша библиотека выпущена в альфа версии и ей еще подлежит пройти проверку и тщательное тестирование.
Основные функции Semux Light Core
- Генерация случайных мнемонических фраз;
- Создание или восстановление HD-аккаунта на основе мнемонической фразы;
- Импорт приватного ключа;
- Генерация адресов — случайных пар ключей;
- Получение последовательности пар ключей (HD-адресов) для HD-аккаунта;
- Поиск производных HD-адресов в HD-аккаунте;
- Поиск non-HD-адресов (импортированных или сгенерированных);
- Формирование сообщения о транзакции;
- Подписание сообщений о транзакциях;
- Подписание любых сообщений.
Справочно: в Semux используется криптография на эллиптических кривых Ed25519, а для хеширования используются функции Blake2B, SHA256 и RIPEMD-160. Кроме того, Semux Light Core реализует стандарты bip32, bip39 и bip44.
Подробная документация доступна по ссылке https://light-core-wasm.readthedocs.io/en/latest/index.html
Демо https://testnet.semux.top/wasm/
Примеры использования для C++ https://github.com/uno-labs/UnoSemuxLightCore/tree/master/Examples
Использование в Node.js:
- https://gist.github.com/dinc334/300186d8322c783d5283e1f969c53e66
- https://github.com/tell-1c/semux-light-core-test — генерация SEM-аккаунтов с подбором красивого адреса.
Обсудить с разработчиками, задать вопросы и получить консультацию можно на нашем сервере в Дискорде. Ждем ваших отзывов.
Друзья, изучайте блокчейн-технологии и присоединяйтесь к разработке в Semux!