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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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%