Noeud complet Astrix et ses bibliothèques auxiliaires.
Nous invitons les développeurs et les passionnés de blockchain à collaborer, tester et optimiser notre implémentation Rust. Chaque ligne de code ici est une opportunité de contribuer au mouvement blockchain open source, en façonnant une plate-forme conçue pour l'évolutivité et la rapidité sans compromettre la décentralisation.
Vos commentaires, contributions et rapports de problèmes feront partie intégrante de l'évolution de cette base de code et du maintien de sa maturité en tant que nœud fiable du réseau Astrix.
Installer les prérequis généraux
sudo apt install curl git build-essential libssl-dev pkg-config
Installez Protobuf (obligatoire pour gRPC)
sudo apt install protobuf-compiler libprotobuf-dev # Required for gRPC
Installez la chaîne d'outils clang (requis pour les versions RocksDB et 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
Installez la chaîne d'outils antirouille
Si Rust est déjà installé, mettez-le à jour en exécutant : rustup update
Installer wasm-pack
cargo install wasm-pack
Installer la cible wasm32
rustup target add wasm32-unknown-unknown
Cloner le dépôt
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Installez Git pour Windows ou une distribution Git alternative.
Installez les tampons de protocole et ajoutez le répertoire bin
à votre Path
Installez LLVM-15.0.6-win64.exe
Ajoutez le répertoire bin
de l'installation de LLVM ( C:Program FilesLLVMbin
) à PATH
définissez la variable d'environnement LIBCLANG_PATH
pour qu'elle pointe également vers le répertoire bin
IMPORTANT : en raison de problèmes de configuration des dépendances C++, l'installation de LLVM AR
sous Windows peut ne pas fonctionner correctement lors du basculement entre WASM et la compilation de code C++ natif (versions natives RocksDB+secp256k1
vs WASM32 de secp256k1
). Malheureusement, la définition manuelle de la variable d'environnement AR
confond également la chaîne d'outils de construction C++ (elle ne doit pas être définie pour les cibles natives mais doit être définie pour les cibles WASM32). Actuellement, la meilleure façon de résoudre ce problème est la suivante : après avoir installé LLVM sur Windows, accédez au répertoire d'installation bin
cible et copiez ou renommez LLVM_AR.exe
en AR.exe
.
Installez la chaîne d'outils antirouille
Si Rust est déjà installé, mettez-le à jour en exécutant : rustup update
Installer wasm-pack
cargo install wasm-pack
Installer la cible wasm32
rustup target add wasm32-unknown-unknown
Cloner le dépôt
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Installez Protobuf (obligatoire pour gRPC)
brew install protobuf
Installez llvm.
L'installation XCode par défaut de llvm
ne prend pas en charge les cibles de build WASM. Pour créer WASM sur MacOS, vous devez installer llvm
à partir d'homebrew (au moment de la rédaction, la version llvm pour MacOS est 16.0.1).
brew install llvm
REMARQUE : Homebrew peut utiliser différents emplacements d'installation de fût en fonction de votre configuration. Par exemple:
/opt/homebrew/opt/llvm
-> /opt/homebrew/Cellar/llvm/16.0.1
/usr/local/Cellar/llvm/16.0.1
Pour déterminer l'emplacement d'installation, vous pouvez utiliser la commande brew list llvm
, puis modifier les chemins ci-dessous en conséquence :
% brew list llvm
/usr/local/Cellar/llvm/16.0.1/bin/FileCheck
/usr/local/Cellar/llvm/16.0.1/bin/UnicodeNameMappingGenerator
...
Si vous avez /opt/homebrew/Cellar
, alors vous devriez pouvoir utiliser /opt/homebrew/opt/llvm
.
Ajoutez ce qui suit à votre fichier ~/.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
Rechargez le fichier ~/.zshrc
source ~ /.zshrc
Installez la chaîne d'outils antirouille
Si Rust est déjà installé, mettez-le à jour en exécutant : rustup update
Installer wasm-pack
cargo install wasm-pack
Installer la cible wasm32
rustup target add wasm32-unknown-unknown
Cloner le dépôt
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Rust WebAssembly (WASM) fait référence à l'utilisation du langage de programmation Rust pour écrire du code pouvant être compilé dans WebAssembly, un format d'instruction binaire qui s'exécute dans les navigateurs Web et NodeJ. Cela permet un développement facile à l'aide des langages de programmation JavaScript et TypeScript tout en conservant les avantages de Rust.
Les composants du SDK WASM peuvent être construits à partir de sources en exécutant : - ./build-release
- créer un package de version complet (inclut à la fois les versions de version et de débogage pour les cibles Web et nodejs) - ./build-docs
- build la documentation TypeScript - ./build-web
- publier la build Web - ./build-web-dev
- build web de développement - ./build-nodejs
- publier la build nodejs - ./build-nodejs-dev
- développement nodejs construire
IMPORTANT : n'utilisez pas de versions dev
en production. Ils sont nettement plus grands, plus lents et incluent des symboles de débogage.
cd cli
cargo run --release
Exécutez un serveur http dans le dossier wallet/wasm/web
. Si vous n'en avez pas une fois, vous pouvez utiliser ce qui suit :
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
Le serveur http de base servira par défaut sur le port 4000, alors ouvrez votre navigateur Web et chargez http://localhost:4000
Le framework est compatible avec tous les principaux navigateurs de bureau et mobiles.
Démarrer un nœud de réseau principal
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
=
conviennent, arg=value
et arg = value
sont tous deux analysés correctement..
ou =
nécessitera de citer la valeur, c'est-à-dire addpeer = ["10.0.0.1", "1.2.3.4"]
.Par exemple:
utxoindex = false
disable-upnp = true
perf-metrics = true
appdir = "some-dir"
netsuffix = 11
addpeer = ["10.0.0.1", "1.2.3.4"]
Passez l'indicateur --help
pour afficher tous les arguments possibles
cargo run --release --bin astrixd -- --help
Le sous-système wRPC est désactivé par défaut dans astrixd
et peut être activé via :
Protocole JSON :
--rpclisten-json = < interface:port >
# or use the defaults for current network
--rpclisten-json = default
Protocole Borsh :
--rpclisten-borsh = < interface:port >
# or use the defaults for current network
--rpclisten-borsh = default
Note latérale :
Astrix Node intègre un sous-système wRPC en option. wRPC est une implémentation RPC hautes performances, neutre en termes de plate-forme, centrée sur Rust et encadrée par WebSocket, qui peut utiliser le codage des protocoles Borsh et JSON.
La messagerie du protocole JSON est similaire à JSON-RPC 1.0, mais diffère de la spécification en raison des notifications côté serveur.
Le codage Borsh est destiné à la communication inter-processus. Lors de l'utilisation de Borsh, le client et le serveur doivent être construits à partir de la même base de code.
Le protocole JSON est basé sur les structures de données Astrix et est indépendant de la version de la structure des données. Vous pouvez vous connecter au point de terminaison JSON à l'aide de n'importe quelle bibliothèque WebSocket. Les clients RPC intégrés pour JavaScript et TypeScript capables de s'exécuter dans les navigateurs Web et Node.js sont disponibles dans le cadre du framework Astrix WASM.
La connexion à astrixd
et simpa
peut être filtrée soit par :
La base de code actuelle prend en charge une simulation de réseau complète en cours, créant un DAG réel sur un temps virtuel avec un délai virtuel et un temps de validation d'analyse comparative (après la génération de la simulation).
Pour voir les commandes disponibles
cargo run --release --bin simpa -- --help
La commande suivante exécutera une simulation pour produire 1 000 blocs avec un délai de communication de 2 secondes et 8 BPS (blocs par seconde) tout en essayant de remplir chaque bloc avec jusqu'à 200 transactions.
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
Le profilage du tas dans astrixd
et simpa
peut être effectué en activant la fonctionnalité et le profil heap
à l'aide de l'argument --features
cargo run --bin astrixd --profile heap --features=heap
Il produira un fichier {bin-name}-heap.json
à la racine du répertoire de travail, qui pourra être inspecté par le dhat-viewer
Exécuter des tests unitaires et la plupart des tests d'intégration
cd astrix-node
cargo test --release
// or install nextest and run
Utiliser le prochain
cd astrix-node
cargo nextest run --release
cd astrix-node
cargo bench
La connexion à astrixd
et simpa
peut être filtrée soit par :
Définition de la variable d'environnement RUST_LOG
Ajout de l'argument --loglevel comme dans l'exemple suivant :
(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
Dans cette commande, nous définissons le loglevel
sur INFO
.