Skip to content
/ exonum Public
forked from exonum/exonum

An extensible open-source framework for creating private/permissioned blockchain applications

License

Notifications You must be signed in to change notification settings

xfireon/exonum

Repository files navigation

Exonum

Тут будет короткое описание

About

Более подробное описание

Build dependencies

System Libraries

Linux

Для debian based систем понадобятся следующие пакеты:

$ apt install build-essential git libsodium-dev libleveldb-dev libssl-dev

macOS

Прежде всего необходимо установить и настроить homebrew согласно его инструкции. После чего установить следующие пакеты:

$ brew install libsodium leveldb openssl

В принципе данную инструкцию можно использовать и для любых linux-based дистрибутивов, если заменить homebrew на linuxbrew

Rust

В проекте используется нестабильная ветка, для управления которой существует утилита rustup. Для того, чтобы установить ее и заодно нужный для сборки проекта toolchain достаточно выполнить следующую команду:

$ curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly

На данный момент гарантировано все работает на nightly версии от 08 января, для того, чтобы перейти на ее использование, нужно в корне проекта выполнить команду:

rustup override set nightly-2017-01-08

Чтобы отменить переназначение версии в той же самой директории выполните:

rustup override unset

Build instruction

Сам проект поделен на три части, каждая из которых находится в собственной директории:

  • exonum - ядро
  • sanbox - тестовые приложения
  • timestamping, land_title, digital_rights, cryptocurrency - демонстрационные приложения

Пример команды для сборки exonum:

$ cargo build --manifest-path exonum/Cargo.toml

Сборка тестовых приложений:

Смотри репозитории cryptocurrency-demo или timestamping-demo

Развертка тестовой сети

Вручную на примере cryptocurrency

Для начала нужно собрать бинарник криптовалюты, проще всего это сделать при помощи cargo install, при необходимости добавив ключик --force

cd cryptocurrency
cargo install --force

Далее в первую очередь нужно сгенерировать конфигурацию тестовой сети, в которой параметр N - это количество узлов в тестовой сети.

$ cryptocurrency generate -o /tmp/exonum N

В результате в каталоге /tmp/exonum/validators/ будет создано N файлов с конфигурацией узлов. Для запуска m узла применяется команда вида, где ключ -d указывает куда узел будет сохранять свою базу данных. Файлы с конфигурацией можно редактировать, главное, чтобы конфигурация консенсуса у всех узлов была одинаковой: она влияет на формирование genesis блока.

$ cryptocurrency run -c /tmp/exonum/validators/m.toml -d /tmp/exonum/db/0

Для получения более подробной информации можно вызвать help

$ cryptocurrency --help

Автоматически (FIXME возможно уже скоро будет не актуально)

Для быстрого разворачивания тестовой сети применяется supervisord, который можно установить следуя инструкции на сайте. Чтобы развернуть сеть в первую очередь нужно собрать бинарник cryptocurrency и сделать так, чтобы путь до него содержался в $PATH. Для автоматизации рутины по созданию конфигурации supervisord был написан скрипт testnetctl.sh. Чтобы он корректно работал нужно задать в переменной окружения TESTNET_DESTDIR путь до каталога с тестовой сетью.

Например вот так:

$ export TESTNET_DESTDIR="/tmp/exonum"

После чего с помощью скрипта создать и запустить конфигурацию supervisord.

$ ./testnet/testnetctl.sh enable

Конфиги для запуска тестовых сетей находятся в каталоге ./testnet/supervisord/etc/conf.d/.

Чтобы завести cryptocurrency_backend в первую очередь нужно сгенерировать ему начальную конфигурацию командой

cryptocurrency generate -o /tmp/exonum/cryptocurrency_backend 4 -p 4400

После чего можно запускать бэкенд криптовалюты:

cd /tmp/exonum
supervisorctl start cryptocurrency_backend:*

Более подробную информацию о командах можно найти в man supervisorctl

Генерация транзакций (FIXME нуждается в полной переработке в рамках отдельного крейта)

В состав тестовой сети включена утилита для генерации потока транзакций, которая называется tx_generator. Для своей работы она пользуется тем же самым конфигурационным файлом, что и cryptocurrency, в утилите можно задавать суммарное количество транзакций, количество транзакций, передаваемых за один раз, частоту отправки новых транзакций и размер транзакции в байтах.

Пример, демонстрирующий работу генератора:

$ tx_generator run cryptocurrency -c /tmp/exonum/validators/1.toml -t 100 -d 256 -x 10 1000

Утилита запускает ноду валидатора под номером 1 и генерирует 1000 транзакций, размером в 256 байт каждая, отсылаея их пиру под номером 0 из конфига пачками по 10 штук каждые 100 миллисекунд.

Оценка производительности сети

TODO

About

An extensible open-source framework for creating private/permissioned blockchain applications

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.4%
  • Other 0.6%