«Еще один шаг к блокчейну»: Bitfury Group представили Exonum 0.2

    По данным аналитических агентств, рынок блокчейн-технологий вырастет с 210 млн долларов в 2016 году до 2,3 млрд долларов к 2021. Среднегодовой рост составит 61,5%. При этом в формировании рынка участвуют как крупные компании (например, IBM, вложившие 200 млн долларов в IoT-проекты, связанные с блокчейном), так и небольшие стартапы, адаптирующие блокчейны под разные нужды.

    Bitfury Group выпускает новую версию открытого фреймворка для разработки блокчейнов Exonum. Exonum 0.2 содержит регулярные исправления, а также некоторые конструктивные доработки. С помощью Exonum компании и правительственные организации могут создавать функциональные блокчейны, которые будут безопасны, прозрачны и контролируемы.

    / Exonum 0.2 Release / Exonum

    В Exonum реализован особый алгоритм византийского консенсуса (мы писали об этом в одном из наших материалов). Он не требует майнинга блоков и работает быстрее — блокчейн обрабатывает 3 тыс. транзакций в секунду.

    Дополнительно Exonum привязывается к биткойн-блокчейну. Сеть высылает в поддерживающий блокчейн хеши блоков, чтобы повысить безопасность. Для атаки на такую сеть потребуется преодолеть механизмы консенсуса для обоих блокчейнов — поддерживающего и закрытого.

    Что нового и изменения


    Релиз Exonum 0.2 содержит внутренние системные доработки, упрощающие работу с фреймворком, и фиксы, которые «закрывают» самые очевидные недостатки.

    Добавлена поддержка RocksDB


    RocksDB представляет собой key — value базу данных с более широкими возможностями по сравнению с LevelDB, которая использовалась в Exonum изначально.

    Мы перешли на RocksDB, потому что она имеет богатый коробочный функционал и хорошо поддерживается разработчиками. Отметим, что сейчас Exonum работает с обеими базами данных, но дальнейшая работа нацелена на внедрение нового функционала с окончательным переходом на RocksDB. Вот некоторые из планируемых дополнений:

    1. Использование семейств столбцов (column families). Они позволят логично разделить базу данных на части (по сути, таблицы), упорядочить ее вид, обеспечить надежное хранение и управление данными. Кроме того, изменения к такой базе могут применяться атомарно, то есть прописываться одновременно в несколько таблиц.

    2. Использование встроенных в RocksDB транзакций — удобное коробочное решение, которое отсутствовало в LevelDB (было реализовано вручную). Транзакции также позволяют атомарно применять изменения к базе данных и имеют интерфейс типа BEGIN/COMMIT/ROLLBACK. Это дает возможность управлять изменениями в случае выявления неполадок, а также править данные и одновременно проверять конфликты.

    Стоит отметить, что настройки базы позволяют в любой момент установить удобный вид параллелизма— пессимистический (строки в источнике данных блокируются, запрещая пользователям модифицировать данные, когда с ними работает другой пользователь) или оптимистический (блокировка не производится, однако приложение определяет, изменялась ли строка).

    3. Резервное копирование данных (см. Backups и Checkpoints) — возможность создания снимка состояния базы данных. При необходимости такие снимки могут быть использованы как для чтения, так и для чтения и записи.

    Резервное копирование может выполняться полностью, а может только для той части данных, которая была изменена после последнего бэкапа. Такая гибкая функциональность значительно облегчает запуск нового узла в системе или обновление данных прежнего узла после «падения».

    4. Сбор статистики — административный функционал, который представляет собой получение динамических характеристик базы данных (объём, скорость работы и др.) в виде истории, и может использоваться для более эффективной настройки, управления и мониторинга системы. В частности, для выбора оптимальных настроек узлов.

    Добавлена поддержка динамических таймаутов


    До текущего релиза таймауты необходимо было фиксировать в конфигурации, и они оставались неизменными при любом состоянии системы. Это приводило к тому, что блоки транзакций принимались в блокчейн с постоянной частотой, и при нулевой загрузке системы происходило «замусоривание» блокчейна пустыми блоками.

    
Например, при установлении таймаута длительностью в одну секунду и нулевой загрузке системы размер одного блока для системы из четырех узлов-валидаторов в среднем составлял 472 байта. За сутки работы «вхолостую» система расходовала 41 мегабайт дискового пространства.

    Жесткая фиксация таймаута приводила к тому, что при слишком низком его значении росла скорость принятия новых блоков. Это увеличивало количество затрачиваемых ресурсов на обработку транзакций для формирования блоков, а также криптографических доказательств при их проверке. Соответственно, при установлении слишком высокого значения таймаута в обработке входящих транзакций возникали задержки, а при большом трафике начинался «застой» необработанных транзакций в пуле.

    В новой реализации были добавлены две новые опции для управления таймаутами:

    • Динамическая (Dynamic) — выбор происходит между минимальным и максимальным значением таймаута в зависимости от загрузки системы.
    • Скользящее среднее (Moving Average) — опция похожа на предыдущую, однако позволяет определять промежуточные значения таймаутов в соответствии с одноимённым правилом.

    Теперь, опираясь на значение таймаута раунда, в котором был принят предыдущий блок, а также на количество транзакций в этом блоке, система подбирает оптимальное значение таймаута для следующего блока. Ожидается, что это сделает управление системой гибким и эффективным, поскольку позволит регулировать ее загрузку.

    В отличие от Exonum, блокчейны на основе консенсуса Proof-of-Work (например, биткойн) имеют встроенный принцип регуляции интервалов между блоками. А именно: в биткойне сложность вычисления нового блока автоматически изменяется таким образом, чтобы скорость принятия блока всегда составляла 1 блок в 10 минут. Таким образом, чем выше скорость принятия блоков, тем выше сложность вычисления и наоборот. В результате интервал принятия нового блока практически не зависит от общей вычислительной мощности сети.

    Внедрено поточное шифрование


    Функционал связан с оптимизацией работы с памятью. Ранее для шифрования данных, которые хранятся в различных участках памяти, необходимо было предварительно скопировать эти данные в оперативную память (RAM), для чего в ней дополнительно выделялось место, соответствующее размеру шифруемых данных. С внедрением возможности шифрования раздробленных данных «на лету», дополнительного копирования в RAM удалось избежать, и, следовательно, увеличить быстродействие системы.

    С полным перечнем изменений вы можете ознакомиться по ссылке. Руководство по работе с платформой есть в базе знаний Exonum. Там же вы найдете пример создания сервисов с кодом и комментариями.



    Минорные релизы Exonum ожидаются раз в месяц. Следующий апдейт назначен на середину октября 2017 года. Следить за новостями о разработке продукта вы можете, оформив подписку, или в нашем блоге. Задать вопросы команде можно в Gitter (наш GitHub).
    Bitfury Group 122,84
    Cофтверные и хардверные решения на Blockchain
    Поделиться публикацией
    Комментарии 6
    • +1
      А больше чем с одним ядром процессора уже научили работать?
      • +1
        В течение ближайших двух месяцев
      • 0
        Дополнительно Exonum привязывается к биткойн-блокчейну. Сеть высылает в поддерживающий блокчейн хеши блоков, чтобы повысить безопасность.

        Можно поподробнее, как организована оплата майнерам? При обработке транзакций биткоина майнер получает понятным образом рассчитанное вознаграждение. А как оно рассчитывается в вашем решении?
        • +2
          Подробнее про консенсус в Exonum, концепцию замков (locks) и применение биткойн-блокчейна для обеспечения безопасности — здесь и здесь.
          • 0
            Transaction fee represents a value in satoshis that is set as a fee for every anchoring transaction. It is advised to be a 2x-3x times bigger than average market fee, in order to be sure that anchoring transaction does not hang if the bitcoin network is spammed.

            Кто оплачивает эту транзакцию?
          • +1
            Exonum разработан как фреймворк для приватных (если точнее, то permissioned regulated) блокчейнов, поэтому в нем в принципе нет майнинга и используется византийский алгоритм консенсуса

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое