Astrix full-node y sus bibliotecas auxiliares.
Invitamos a desarrolladores y entusiastas de blockchain a colaborar, probar y optimizar nuestra implementación de Rust. Cada línea de código aquí es una oportunidad para contribuir al movimiento blockchain de código abierto, dando forma a una plataforma diseñada para la escalabilidad y la velocidad sin comprometer la descentralización.
Sus comentarios, contribuciones e informes de problemas serán fundamentales para hacer evolucionar este código base y continuar su madurez como un nodo confiable en la red Astrix.
Instalar requisitos previos generales
sudo apt install curl git build-essential libssl-dev pkg-config
Instale Protobuf (requerido para gRPC)
sudo apt install protobuf-compiler libprotobuf-dev # Required for gRPC
Instale la cadena de herramientas clang (requerida para las compilaciones RocksDB y 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
Instale la cadena de herramientas de óxido
Si ya tiene Rust instalado, actualícelo ejecutando: rustup update
Instalar paquete wasm
cargo install wasm-pack
Instalar objetivo wasm32
rustup target add wasm32-unknown-unknown
Clonar el repositorio
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Instale Git para Windows o una distribución alternativa de Git.
Instale Protocol Buffers y agregue el directorio bin
a su Path
Instalar LLVM-15.0.6-win64.exe
Agregue el directorio bin
de la instalación de LLVM ( C:Program FilesLLVMbin
) a PATH
establezca la variable de entorno LIBCLANG_PATH
para que apunte también al directorio bin
IMPORTANTE: Debido a problemas de configuración de dependencia de C++, es posible que la instalación de LLVM AR
en Windows no funcione correctamente al cambiar entre WASM y la compilación de código nativo de C++ (compilaciones nativas RocksDB+secp256k1
frente a WASM32 de secp256k1
). Desafortunadamente, configurar manualmente la variable de entorno AR
también confunde la cadena de herramientas de compilación de C++ (no debe configurarse para nativos, pero sí para objetivos WASM32). Actualmente, la mejor manera de solucionar este problema es la siguiente: después de instalar LLVM en Windows, vaya al directorio de instalación bin
de destino y copie o cambie el nombre LLVM_AR.exe
a AR.exe
.
Instale la cadena de herramientas de óxido
Si ya tiene Rust instalado, actualícelo ejecutando: rustup update
Instalar paquete wasm
cargo install wasm-pack
Instalar objetivo wasm32
rustup target add wasm32-unknown-unknown
Clonar el repositorio
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Instale Protobuf (requerido para gRPC)
brew install protobuf
Instale llvm.
La instalación XCode predeterminada de llvm
no admite objetivos de compilación WASM. Para compilar WASM en MacOS, necesita instalar llvm
desde homebrew (en el momento de escribir este artículo, la versión de llvm para MacOS es 16.0.1).
brew install llvm
NOTA: Homebrew puede utilizar diferentes ubicaciones de instalación del barril según su configuración. Por ejemplo:
/opt/homebrew/opt/llvm
-> /opt/homebrew/Cellar/llvm/16.0.1
/usr/local/Cellar/llvm/16.0.1
Para determinar la ubicación de instalación, puede usar el comando brew list llvm
y luego modificar las rutas a continuación en consecuencia:
% brew list llvm
/usr/local/Cellar/llvm/16.0.1/bin/FileCheck
/usr/local/Cellar/llvm/16.0.1/bin/UnicodeNameMappingGenerator
...
Si tiene /opt/homebrew/Cellar
, entonces debería poder usar /opt/homebrew/opt/llvm
.
Agregue lo siguiente a su archivo ~/.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
Vuelva a cargar el archivo ~/.zshrc
source ~ /.zshrc
Instale la cadena de herramientas de óxido
Si ya tiene Rust instalado, actualícelo ejecutando: rustup update
Instalar paquete wasm
cargo install wasm-pack
Instalar objetivo wasm32
rustup target add wasm32-unknown-unknown
Clonar el repositorio
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
Rust WebAssembly (WASM) se refiere al uso del lenguaje de programación Rust para escribir código que se puede compilar en WebAssembly, un formato de instrucción binaria que se ejecuta en navegadores web y NodeJ. Esto permite un desarrollo sencillo utilizando los lenguajes de programación JavaScript y TypeScript conservando al mismo tiempo los beneficios de Rust.
Los componentes WASM SDK se pueden crear a partir de fuentes ejecutando: - ./build-release
: cree un paquete de lanzamiento completo (incluye versiones de lanzamiento y depuración para destinos web y nodejs) - ./build-docs
- cree documentación de TypeScript - ./build-web
- lanzamiento de compilación web - ./build-web-dev
- desarrollo de compilación web - ./build-nodejs
- lanzamiento de compilación de nodejs - ./build-nodejs-dev
- desarrollo compilación de nodejs
IMPORTANTE: no utilice compilaciones dev
en producción. Son significativamente más grandes, más lentos e incluyen símbolos de depuración.
cd cli
cargo run --release
Ejecute un servidor http dentro de la carpeta wallet/wasm/web
. Si no tiene una vez, puede usar lo siguiente:
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
El servidor http básico funcionará en el puerto 4000 de forma predeterminada, así que abra su navegador web y cargue http://localhost:4000
El marco es compatible con los principales navegadores de escritorio y móviles.
Iniciar un nodo de red 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
=
están bien, arg=value
y arg = value
se analizan correctamente..
o =
requerirá citar el valor, es decir, addpeer = ["10.0.0.1", "1.2.3.4"]
.Por ejemplo:
utxoindex = false
disable-upnp = true
perf-metrics = true
appdir = "some-dir"
netsuffix = 11
addpeer = ["10.0.0.1", "1.2.3.4"]
Pase el indicador --help
para ver todos los argumentos posibles
cargo run --release --bin astrixd -- --help
El subsistema wRPC está deshabilitado de forma predeterminada en astrixd
y se puede habilitar mediante:
Protocolo JSON:
--rpclisten-json = < interface:port >
# or use the defaults for current network
--rpclisten-json = default
Protocolo de Borsh:
--rpclisten-borsh = < interface:port >
# or use the defaults for current network
--rpclisten-borsh = default
Nota al margen:
Astrix Node integra un subsistema wRPC opcional. wRPC es una implementación RPC de alto rendimiento, plataforma neutral, centrada en Rust y enmarcada en WebSocket que puede utilizar codificación de protocolo Borsh y JSON.
La mensajería del protocolo JSON es similar a JSON-RPC 1.0, pero difiere de la especificación debido a las notificaciones del lado del servidor.
La codificación Borsh está destinada a la comunicación entre procesos. Cuando se utiliza Borsh, tanto el cliente como el servidor deben construirse a partir de la misma base de código.
El protocolo JSON se basa en estructuras de datos de Astrix y es independiente de la versión de la estructura de datos. Puede conectarse al punto final JSON utilizando cualquier biblioteca WebSocket. Los clientes RPC integrados para JavaScript y TypeScript capaces de ejecutarse en navegadores web y Node.js están disponibles como parte del marco Astrix WASM.
El inicio de sesión en astrixd
y simpa
se puede filtrar por:
La base de código actual admite una simulación de red completa en proceso, construyendo un DAG real en tiempo virtual con retraso virtual y tiempo de validación de evaluación comparativa (después de la generación de la simulación).
Para ver los comandos disponibles
cargo run --release --bin simpa -- --help
El siguiente comando ejecutará una simulación para producir 1000 bloques con un retraso de comunicación de 2 segundos y 8 BPS (bloques por segundo) mientras intenta llenar cada bloque con hasta 200 transacciones.
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
La creación de perfiles de montón en astrixd
y simpa
se puede realizar habilitando la función y el perfil heap
usando el argumento --features
cargo run --bin astrixd --profile heap --features=heap
Producirá el archivo {bin-name}-heap.json
en la raíz del directorio de trabajo, que puede ser inspeccionado por dhat-viewer.
Ejecute pruebas unitarias y la mayoría de las pruebas de integración.
cd astrix-node
cargo test --release
// or install nextest and run
Usando el siguiente
cd astrix-node
cargo nextest run --release
cd astrix-node
cargo bench
El inicio de sesión en astrixd
y simpa
se puede filtrar por:
Definiendo la variable de entorno RUST_LOG
Agregando el argumento --loglevel como en el siguiente ejemplo:
(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
En este comando configuramos el loglevel
en INFO
.