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
Windows용 Git 또는 대체 Git 배포판을 설치합니다.
프로토콜 버퍼를 설치하고 Path
에 bin
디렉터리를 추가합니다.
LLVM-15.0.6-win64.exe 설치
LLVM 설치의 bin
디렉터리( C:Program FilesLLVMbin
)를 PATH에 추가합니다.
bin
디렉터리도 가리키도록 LIBCLANG_PATH
환경 변수를 설정합니다.
중요: 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
WASM(Rust WebAssembly)은 Rust 프로그래밍 언어를 사용하여 웹 브라우저 및 NodeJ에서 실행되는 바이너리 명령 형식인 WebAssembly로 컴파일할 수 있는 코드를 작성하는 것을 의미합니다. 이를 통해 Rust의 이점을 유지하면서 JavaScript 및 TypeScript 프로그래밍 언어를 사용하여 쉽게 개발할 수 있습니다.
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
wallet/wasm/web
폴더 내에서 http 서버를 실행합니다. 한 번도 없다면 다음을 사용할 수 있습니다.
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
basic-http-server는 기본적으로 포트 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
모두 올바르게 구문 분석됩니다..
또는 =
값을 인용해야 합니다(예: 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 엔드포인트에 연결할 수 있습니다. 웹 브라우저 및 Node.js에서 실행할 수 있는 JavaScript 및 TypeScript용 내장 RPC 클라이언트는 Astrix WASM 프레임워크의 일부로 사용할 수 있습니다.
astrixd
및 simpa
로그인은 다음 중 하나로 필터링할 수 있습니다.
현재 코드베이스는 가상 지연 및 벤치마킹 검증 시간(시뮬레이션 생성 후)을 사용하여 가상 시간에 걸쳐 실제 DAG를 구축하는 전체 프로세스 내 네트워크 시뮬레이션을 지원합니다.
사용 가능한 명령을 보려면
cargo run --release --bin simpa -- --help
다음 명령은 시뮬레이션을 실행하여 통신 지연이 2초이고 BPS(초당 블록 수)가 8인 블록 1000개를 생성하는 동시에 각 블록을 최대 200개의 트랜잭션으로 채우려고 시도합니다.
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
--features
인수를 사용하여 heap
기능 및 프로필을 활성화하면 astrixd
및 simpa
에서 힙 프로파일링을 수행할 수 있습니다.
cargo run --bin astrixd --profile heap --features=heap
dhat-viewer에서 검사할 수 있는 작업 디렉터리의 루트에 {bin-name}-heap.json
파일이 생성됩니다.
단위 및 대부분의 통합 테스트 실행
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
로 설정합니다.