Exonum происходит от слова «экзонумия» (exonumia). Экзонумия — это ценные предметы, традиционно имеющие хождение на рынке.
Мы назвали нашу платформу Exonum, потому что с ее помощью вы можете создавать, обменивать и хранить любую ценность — любые цифровые активы.
Exonum оптимизирован для компьютеров на Linux, macOS и Windows.
Exonum распространяется под лицензией Apache 2.0. Вы можете свободно разрабатывать с Exonum почти все что угодно — просто не забудьте сослаться на The Bitfury Group / Exonum.
Мы просим размещать все вопросы к техподдержке в Gitter или Stackoverflow. Там мы отвечаем на вопросы и хотели бы разделить полученные знания со всем сообществом разработчиков. Если у вас нетехнический вопрос, связаться с представителем Exonum можно через контактную форму на сайте.
Да! Exonum подходит для работы со смарт-контрактами. Как и на других платформах для смарт-контрактов, смарт-контракты в Exonum реализуют бизнес-логику, которую в любой момент можно добавить к блокчейну. Если говорить о скорости обработки транзакций, у смарт-контрактов Exonum высочайшая производительность, они способны обрабатывать до 5000 транзакций в секунду с задержкой всего лишь 0,5 секунд, а в отдельных случаях — до 15000 транзакций в секунду.
Создавать смарт-контракты в Exonum можно на языках программирования Rust и Java.Написанные на языке Rust контракты встраиваются прямо в код узлов блокчейна. Этот способ гарантирует безопасное использование памяти и обеспечивает оптимизацию смарт-контрактов по скорости. Написанные на Java контракты могут быть добавлены в любое время после запуска блокчейна. Но для безопасности вашему системному администратору нужно будет проверять все смарт-контракты, созданные на Java, перед их публикацией.
Пока нет первого (генезис) блока, блокчейн использует файл конфигурации. Если генезис-блок уже сформирован, блокчейн считывает конфигурацию оттуда.
В принципе на основе Exonum можно создать нескольких модулей, одновременно обращающихся к сервисам (наподобие смарт-контрактов). Но пока для этого разработчикам нужно будет полностью реализовывать все высокоуровневные взаимодействия между такими сервисами.
Команда Exonum открыта к сотрудничеству с сообществом разработчиков. Мы написали contribution guide для тех, кто хочет участвовать в разработке.
В документации есть наша дорожная карта.
Для хеширования сериализованных транзакций Exonum использует алгоритм SHA-256, а для цифровой подписи — Ed25519. Exonum использует библиотеку libsodium для вычисления хеша на полных узлах и sha.js для легких клиентов.
Сообщения между узлами шифруются с помощью протокола Noise.
Перед созданием транзакции анкоринга валидаторы приходят к соглашению о том, какую транзакцию анкоринга считать последней в цепи анкоринга. Такая транзакция называется «последней предположительно верной транзакцией» (Latest Expected Correct Transaction (LECT)). Каждый валидатор записывает информацию о том, какую транзакцию он выбрал, в блокчейн Exonum. Как только результаты LECT совпадают у 2/3 + 1 валидаторов, они создают новое предположение о транзакции анкоринга. Если по крайней мере 2/3 + 1 валидатор согласен с предложением выбрать эту транзацкцию анкоринга, они начинают создавать новую транзакцию анкоринга и подписывают ее входы. Когда новая транзакция анкоринга создана и подписана по крайней мере 2/3+1 валидатором, ее выходы тратятся на изменение (выходы с оставшимся балансом для создания новой биткоин-транзакции) LECT, так что никакая другая транзакция с таким же входом не может быть создана.
Новая транзакция попадает в так называемый пул неподтвержденных транзакций (область памяти). Узел-лидер предлагает блок (Proposal) и транслирует его всем узлам в сети. Валидаторы голосуют за предложенный блок, рассылая сообщения Prevote. Сообщение Prevote означает, что валидатор изучил блок и ему известны все транзакции в блоке.
Как только валидатор получает сообщения Prevote от более чем 2/3 всех валидаторов в сети, он исполняет транзакции из предложенного блока и рассылает сообщение Precommit всем остальным валидаторам. Сообщение Precommit содержит результат применения предложенных транзакций в виде хеша нового состояния хранилища данных (хеш состояния). Это сообщение подтверждает, что его отправитель готов передать новый блок в блокчейн, но ждет подтверждения остальных валидаторов сети. Наконец новый блок отправляется в блокчейн, если валидатор получает более 2/3 сообщений Precommit, содержащих такой же хеш состояния.
Скорость обработки транзакций больше зависит от сервера, на котором запущен Exonum, чем от сетевого оборудования. Достичь производительности в 5000 транзакций в секунду несложно. Например, во время бенчмаркинга криптовалютных сервисов использовалось оборудование со следующими характеристиками:
● Сеть — пропускная способность 1 Мбайт с пингом между узлами ~100 мс;
● Процессор — двухъядерный, 3 ГГц;
● RAM — 1–2 Гбайт;
● HDD — 30 Гбайт (7200 оборотов в минуту);
● Количество узлов в сети — 4–7.
Подходящим облачным аналогом такого оборудования может быть сервер Amazon EC2 t2.small.
Но со времени последнего бенчмаркинга в Exonum произошли существенные изменения, и в ближайшем будущем будут проведены новые испытания.
В Exonum есть сервис анкоринга, который делает невозможным изменение истории транзакций. Суть сервиса в том, что хеш всего состояния блокчейна периодически публикуется в общедоступном источнике (блокчейне Bitcoin). Чтобы записать новую транзакцию в блокчейн Bitcoin, нужно заплатить, в биткоинах.
ICO на базе Exonum пока не реализован. В принципе, технически возможно размещать Exonum-токены на биржах, но реализовывать эту возможность нужно при помощи сторонних разработчиков
Можно написать сообщение на нашем сайте в разделе «Партнёрам», и мы свяжемся с вами.
Мы сделали Exonum максимально гибким. Вы можете создать в Exonum свой блокчейн, чтобы хранить токены или криптовалюты или создать эксклюзивный (permissioned) блокчейн без них. На всякий случай мы написали инструкцию, как создать свою собственную криптовалюту в блокчейне Exonum.
Наша команда создает базовое решение, которое технические специалисты могут использовать для разработки собственного специализированного программного обеспечения. Вместе с тем мы изучаем варианты использования платформы Exonum, и включаем общие элементы в ядро фреймворка.
Национальное агентство государственного реестра Республики Грузия в тестовом режиме использует блокчейн Exonum в своем земельном кадастре. Блокчейн-реализация существенно снизит время отклика сервиса и операционные расходы и позволит проводить аудит в режиме реального времени.
Правительственная система электронных торгов арестованным имуществом Украины (СЕТАМ) переводится на Exonum для применения блокчейна. Блокчейн-система будет хранить записи об арестованном имуществе, реестр участников аукционов и протоколы аукционов. Это повысит доверие граждан к системе и обеспечит высокий уровень защиты.
Bitfury использует Exonum для поддержки информационной системы в которой проводится предварительная классификация поставщиков в Казахстане. Блокчейн-приложение регистрирует все ключевые события по рассмотрению и внесению поставщиков в список квалифицированных потенциальных поставщиков (выпуск документов, аудит и т. д.). В приложении реализована возможность контролировать должное исполнение утвержденных процедур и правил.
В компании Aricent был реализован пилотный проект для увеличения эффективности их процессов разработки программного обеспечения (DevOps). По результатам внутреннего исследования компании, внедрение блокчейна Exonum привело к значительному ускорению цикла разработки продукта (примерно на 34%).
Bitfury Group заключила соглашение с Insilico Medicine, Inc. о разработке оригинальных решений для медицинских приложений с использованием технологии блокчейн. Цель проекта — разработка решений на основе блокчейна и искусственного интеллекта, которые будут управлять медицинскими данными — собирать, распространять, отслеживать и проверять их.
Exonum использует особые структуры данных (деревья Merkle и Merkle Patricia), обеспечивающие контроль на стороне клиента (см. наш легкий клиент). К тому же мы предлагаем сервис анкоринга, который периодически сохраняет хеш состояния блокчейна Exonum в блокчейн Bitcoin. Это предотвращает сговор владельцев узлов с целью изменения истории данных. Наконец у нас есть собственный встроенный алгоритм консенсуса BFT, а используемый нами язык программирования Rust меньше подвержен ошибкам.
Будучи закрытым блокчейном, Exonum обеспечивает достаточно высокую скорость операций, сравнимую с общедоступными блокчейнами. В то же время благодаря анкорингу закрытый блокчейн Exonum гарантирует фактически такой же уровень безопасности, как и общедоступные блокчейны.
В основе алгоритма консенсуса Exonum (BFT) лежит математическое доказательство, а значит, его функционирование не нуждается в экономическом вознаграждении. В результате Exonum не требует майнинга и не зависит от обменного курса любой из криптовалют. Все это обеспечивает предсказуемую стоимость операции в блокчейне Exonum в любое время.
Платформа Exonum гибка и подстраивается под нужды пользователя. Например, система позволяет настраивать некоторые относящиеся к консенсусу параметры (таймауты и др.).