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 ツールチェーンをインストールする
すでに Rust がインストールされている場合は、 rustup update
実行して更新します。
wasm-packをインストールする
cargo install wasm-pack
wasm32ターゲットをインストールする
rustup target add wasm32-unknown-unknown
リポジトリのクローンを作成する
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Git for Windows または代替の Git ディストリビューションをインストールします。
プロトコル バッファーをインストールし、 Path
にbin
ディレクトリを追加します。
LLVM-15.0.6-win64.exeをインストールする
LLVM インストールのbin
ディレクトリ ( C:Program FilesLLVMbin
) を PATH に追加します。
LIBCLANG_PATH
環境変数もbin
ディレクトリを指すように設定します
重要: C++ の依存関係構成の問題により、WASM とネイティブ C++ コード コンパイル (ネイティブRocksDB+secp256k1
とsecp256k1
の WASM32 ビルド) を切り替えるときに、Windows での LLVM AR
インストールが正しく機能しない可能性があります。残念ながら、 AR
環境変数を手動で設定すると、C++ ビルド ツールチェーンも混乱します (ネイティブに対して設定すべきではなく、WASM32 ターゲットに対して設定する必要があります)。現時点でこれに対処する最善の方法は次のとおりです。Windows に LLVM をインストールした後、ターゲットのbin
インストール ディレクトリに移動し、 LLVM_AR.exe
をコピーするか名前をAR.exe
に変更します。
Rust ツールチェーンをインストールする
すでに Rust がインストールされている場合は、 rustup update
実行して更新します。
wasm-packをインストールする
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をインストールします。
llvm
のデフォルトの XCode インストールは、WASM ビルド ターゲットをサポートしません。 MacOS 上で WASM を構築するには、homebrew からllvm
インストールする必要があります (この記事の執筆時点では、MacOS の llvm バージョンは 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 ツールチェーンをインストールする
すでに Rust がインストールされている場合は、 rustup update
実行して更新します。
wasm-packをインストールする
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 プログラミング言語を使用して、Web ブラウザーおよび NodeJ で実行されるバイナリ命令形式である WebAssembly にコンパイルできるコードを記述することを指します。これにより、Rust の利点を維持しながら、JavaScript および TypeScript プログラミング言語を使用した簡単な開発が可能になります。
WASM SDK コンポーネントは、以下を実行することでソースからビルドできます。 - ./build-release
- 完全なリリース パッケージをビルドします (Web ターゲットと Nodejs ターゲットのリリース ビルドとデバッグ ビルドの両方を含みます) - ./build-docs
- TypeScript ドキュメントをビルドします - ./build-web
- Web ビルドのリリース - ./build-web-dev
- 開発 Web ビルド - ./build-nodejs
- Nodejs ビルドのリリース - ./build-nodejs-dev
- 開発用のnodejsビルド
重要: 運用環境では開発dev
を使用しないでください。これらは大幅に大きく、速度が遅く、デバッグ シンボルが含まれています。
cd cli
cargo run --release
wallet/wasm/web
フォルダー内で http サーバーを実行します。一度も持っていない場合は、次を使用できます。
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
Basic-http-server はデフォルトでポート 4000 で機能するため、Web ブラウザを開いて 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
両方とも正しく解析されます。.
または=
では、値を引用符で囲む必要があります (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 は、Borsh および JSON プロトコル エンコーディングを使用できる、高性能、プラットフォーム中立、Rust 中心の WebSocket フレーム化 RPC 実装です。
JSON プロトコル メッセージングは JSON-RPC 1.0 に似ていますが、サーバー側の通知により仕様とは異なります。
Borsh エンコーディングはプロセス間通信を目的としています。 Borsh を使用する場合は、クライアントとサーバーの両方を同じコードベースから構築する必要があります。
JSON プロトコルは Astrix データ構造に基づいており、データ構造のバージョンに依存しません。任意の WebSocket ライブラリを使用して JSON エンドポイントに接続できます。 Web ブラウザおよび Node.js で実行できる JavaScript および TypeScript 用の組み込み RPC クライアントは、Astrix WASM フレームワークの一部として利用できます。
astrixd
およびsimpa
へのログインは、次のいずれかでフィルタリングできます。
現在のコードベースは、完全なインプロセス ネットワーク シミュレーションをサポートしており、仮想遅延とベンチマーク検証時間 (シミュレーション生成後) を使用して仮想時間にわたって実際の DAG を構築します。
使用可能なコマンドを確認するには
cargo run --release --bin simpa -- --help
次のコマンドは、通信遅延 2 秒、BPS (1 秒あたりのブロック数) で 1000 個のブロックを生成するシミュレーションを実行し、各ブロックに最大 200 個のトランザクションを埋めようとします。
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
astrixd
およびsimpa
でのヒープ プロファイリングは、 --features
引数を使用してheap
機能とプロファイルを有効にすることで実行できます。
cargo run --bin astrixd --profile heap --features=heap
workdir のルートに{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
に設定します。