Полный узел Astrix и его вспомогательные библиотеки.
Мы приглашаем разработчиков и энтузиастов блокчейна к сотрудничеству, тестированию и оптимизации нашей реализации Rust. Каждая строка кода здесь — это возможность внести свой вклад в движение блокчейнов с открытым исходным кодом, формируя платформу, предназначенную для масштабируемости и скорости без ущерба для децентрализации.
Ваши отзывы, вклад и отчеты о проблемах будут неотъемлемой частью развития этой кодовой базы и продолжения ее зрелости в качестве надежного узла в сети Astrix.
Установите общие предварительные условия
sudo apt install curl git build-essential libssl-dev pkg-config
Установите Protobuf (требуется для gRPC)
sudo apt install protobuf-compiler libprotobuf-dev # Required for gRPC
Установите набор инструментов clang (требуется для сборок RocksDB и WASM secp256k1).
sudo apt-get install clang-format clang-tidy
clang-tools clang clangd libc++-dev
libc++1 libc++abi-dev libc++abi1
libclang-dev libclang1 liblldb-dev
libllvm-ocaml-dev libomp-dev libomp5
lld lldb llvm-dev llvm-runtime
llvm python3-clang
Установите набор инструментов ржавчины
Если у вас уже установлен Rust, обновите его, запустив: rustup update
Установить васм-пак
cargo install wasm-pack
Установить цель wasm32
rustup target add wasm32-unknown-unknown
Клонировать репозиторий
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Установите Git для Windows или альтернативный дистрибутив Git.
Установите буферы протокола и добавьте каталог bin
в свой Path
Установите LLVM-15.0.6-win64.exe.
Добавьте каталог bin
установки LLVM ( C:Program FilesLLVMbin
) в PATH.
установите переменную среды LIBCLANG_PATH
, чтобы она также указывала на каталог bin
ВАЖНО: Из-за проблем с настройкой зависимостей C++ установка LLVM AR
в Windows может работать некорректно при переключении между WASM и собственной компиляцией кода C++ (собственные сборки RocksDB+secp256k1
и WASM32 secp256k1
). К сожалению, установка переменной среды AR
вручную также сбивает с толку цепочку инструментов сборки C++ (ее не следует устанавливать для встроенных приложений, но следует устанавливать для целевых объектов WASM32). В настоящее время лучший способ решить эту проблему заключается в следующем: после установки LLVM в Windows перейдите в целевой каталог установки bin
и скопируйте или переименуйте LLVM_AR.exe
в AR.exe
.
Установите набор инструментов ржавчины
Если у вас уже установлен Rust, обновите его, запустив: rustup update
Установить васм-пак
cargo install wasm-pack
Установить цель wasm32
rustup target add wasm32-unknown-unknown
Клонировать репозиторий
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Установите Protobuf (требуется для gRPC)
brew install protobuf
Установите ЛВМ.
Установка llvm
в XCode по умолчанию не поддерживает цели сборки WASM. Чтобы собрать WASM на MacOS, вам необходимо установить llvm
из homebrew (на момент написания версия llvm для MacOS — 16.0.1).
brew install llvm
ПРИМЕЧАНИЕ. Homebrew может использовать разные места установки бочонков в зависимости от вашей конфигурации. Например:
/opt/homebrew/opt/llvm
-> /opt/homebrew/Cellar/llvm/16.0.1
/usr/local/Cellar/llvm/16.0.1
Чтобы определить место установки, вы можете использовать команду brew list llvm
, а затем соответствующим образом изменить пути ниже:
% brew list llvm
/usr/local/Cellar/llvm/16.0.1/bin/FileCheck
/usr/local/Cellar/llvm/16.0.1/bin/UnicodeNameMappingGenerator
...
Если у вас есть /opt/homebrew/Cellar
, вы сможете использовать /opt/homebrew/opt/llvm
.
Добавьте следующее в ваш файл ~/.zshrc
:
export PATH= " /opt/homebrew/opt/llvm/bin: $PATH "
export LDFLAGS= " -L/opt/homebrew/opt/llvm/lib "
export CPPFLAGS= " -I/opt/homebrew/opt/llvm/include "
export AR=/opt/homebrew/opt/llvm/bin/llvm-ar
Перезагрузите файл ~/.zshrc
source ~ /.zshrc
Установите набор инструментов ржавчины
Если у вас уже установлен Rust, обновите его, запустив: rustup update
Установить васм-пак
cargo install wasm-pack
Установить цель wasm32
rustup target add wasm32-unknown-unknown
Клонировать репозиторий
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Rust WebAssembly (WASM) — это использование языка программирования Rust для написания кода, который можно скомпилировать в WebAssembly — двоичный формат инструкций, который работает в веб-браузерах и NodeJ. Это позволяет упростить разработку с использованием языков программирования JavaScript и TypeScript, сохраняя при этом преимущества Rust.
Компоненты WASM SDK можно собрать из исходных кодов, запустив: - ./build-release
- сборку полного пакета выпуска (включает как выпускные, так и отладочные сборки для целей веб-сайта и nodejs) - ./build-docs
- сборку документации TypeScript - ./build-web
- выпуск веб-сборки - ./build-web-dev
- веб-сборка разработки - ./build-nodejs
- выпуск сборки nodejs - ./build-nodejs-dev
- разработка nodejs строить
ВАЖНО: не используйте dev
сборки в продакшене. Они значительно больше, медленнее и содержат символы отладки.
cd cli
cargo run --release
Запустите http-сервер внутри папки wallet/wasm/web
. Если у вас его нет, вы можете использовать следующее:
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
Базовый HTTP-сервер по умолчанию будет работать через порт 4000, поэтому откройте веб-браузер и загрузите http://localhost:4000.
Фреймворк совместим со всеми основными настольными и мобильными браузерами.
Запустить узел основной сети
cargo run --release --bin astrixd
# or with UTXO-index enabled (needed when using wallets)
cargo run --release --bin astrixd -- --utxoindex
cargo run --release --bin astrixd -- --configfile /path/to/configfile.toml
# or
cargo run --release --bin astrixd -- -C /path/to/configfile.toml
=
в порядке, arg=value
и arg = value
анализируются правильно..
или =
потребует цитирования значения, т.е. <аргумент CLI> = «<значение>».addpeer = ["10.0.0.1", "1.2.3.4"]
.Например:
utxoindex = false
disable-upnp = true
perf-metrics = true
appdir = "some-dir"
netsuffix = 11
addpeer = ["10.0.0.1", "1.2.3.4"]
Передайте флаг --help
, чтобы просмотреть все возможные аргументы.
cargo run --release --bin astrixd -- --help
Подсистема wRPC по умолчанию отключена в astrixd
и ее можно включить с помощью:
Протокол JSON:
--rpclisten-json = < interface:port >
# or use the defaults for current network
--rpclisten-json = default
Протокол Борша:
--rpclisten-borsh = < interface:port >
# or use the defaults for current network
--rpclisten-borsh = default
Примечание:
Astrix Node интегрирует дополнительную подсистему wRPC. wRPC — это высокопроизводительная, нейтральная к платформе, ориентированная на Rust реализация RPC на основе WebSocket, которая может использовать кодирование протоколов Borsh и JSON.
Обмен сообщениями по протоколу JSON аналогичен JSON-RPC 1.0, но отличается от спецификации из-за уведомлений на стороне сервера.
Кодировка Борша предназначена для межпроцессного взаимодействия. При использовании Borsh и клиент, и сервер должны быть построены на одной и той же базе кода.
Протокол JSON основан на структурах данных Astrix и не зависит от версии структуры данных. Вы можете подключиться к конечной точке JSON, используя любую библиотеку WebSocket. Встроенные клиенты RPC для JavaScript и TypeScript, способные работать в веб-браузерах и Node.js, доступны как часть платформы Astrix WASM.
Вход в astrixd
и simpa
можно фильтровать по следующим критериям:
Текущая кодовая база поддерживает полное моделирование сети в процессе, создавая фактическую группу DAG в виртуальном времени с виртуальной задержкой и временем сравнительной проверки (после генерации моделирования).
Чтобы просмотреть доступные команды
cargo run --release --bin simpa -- --help
Следующая команда запустит симуляцию для создания 1000 блоков с задержкой связи 2 секунды и 8 BPS (блоков в секунду), пытаясь заполнить каждый блок до 200 транзакциями.
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
Профилирование кучи в astrixd
и simpa
можно выполнить, включив функцию и профиль heap
с помощью аргумента --features
.
cargo run --bin astrixd --profile heap --features=heap
Он создаст файл {bin-name}-heap.json
в корне рабочего каталога, который можно просмотреть с помощью dhat-viewer.
Запуск модульных и большинства интеграционных тестов.
cd astrix-node
cargo test --release
// or install nextest and run
Использование ближайшего
cd astrix-node
cargo nextest run --release
cd astrix-node
cargo bench
Вход в astrixd
и simpa
можно фильтровать по следующим критериям:
Определение переменной среды RUST_LOG
Добавление аргумента --loglevel, как в следующем примере:
(cargo run --bin astrixd -- --loglevel info,astrix_rpc_core=trace,astrix_grpc_core=trace,consensus=trace,astrix_core=trace) 2>&1 | tee ~/astrix-node.log
В этой команде мы устанавливаем уровень loglevel
INFO
.