Тут будет короткое описание
Более подробное описание
Для debian based систем понадобятся следующие пакеты:
$ apt install build-essential git libsodium-dev libleveldb-dev libssl-dev
Прежде всего необходимо установить и настроить homebrew согласно его инструкции. После чего установить следующие пакеты:
$ brew install libsodium leveldb openssl
В принципе данную инструкцию можно использовать и для любых linux-based дистрибутивов, если заменить homebrew на linuxbrew
В проекте используется нестабильная ветка, для управления которой существует утилита 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
Сам проект поделен на три части, каждая из которых находится в собственной директории:
- exonum - ядро
- sanbox - тестовые приложения
- timestamping, land_title, digital_rights, cryptocurrency - демонстрационные приложения
$ cargo build --manifest-path exonum/Cargo.toml
Смотри репозитории cryptocurrency-demo
или timestamping-demo
Для начала нужно собрать бинарник криптовалюты, проще всего это сделать при помощи 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
Для быстрого разворачивания тестовой сети применяется 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
В состав тестовой сети включена утилита для генерации потока транзакций, которая называется 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