Sari la conținutul principal

Compilare din sursă

Acest ghid vă parcurge procesul de compilare a binarului qorechaind din sursă, acoperind atât build-ul comunitar (open-core), cât și build-ul proprietar complet.

Cerințe preliminare​

DependințăVersiune minimăNote
Go1.26+Necesar pentru toate build-urile
CGOActivat (CGO_ENABLED=1)Necesar pentru punțile FFI PQC și SVM
Toolchain RustUltima versiune stabilăNecesar pentru compilarea libqorepqc și libqoresvm
Make3.81+Automatizarea build-ului
Git2.xPreluarea (checkout) sursei

Verificați mediul de lucru:

go version # go1.26.x or later
rustc --version # stable toolchain
cargo --version
echo $CGO_ENABLED # must be 1
pericol

Fiecare invocare go build, go test și go run trebuie să aibă CGO_ENABLED=1 setat. Modulele PQC și SVM folosesc punți FFI care necesită cgo.

Biblioteci native​

QoreChain depinde de două biblioteci native construite în Rust, care sunt încărcate la runtime.

libqorepqc (Criptografie Post-Cuantică)​

Biblioteca PQC oferă generare de chei, semnare și verificare ML-DSA-87 (Dilithium-5) printr-o interfață FFI compatibilă C.

cd rust/qorepqc
cargo build --release

Biblioteca compilată este plasată în lib/{os}_{arch}/:

PlatformăFișier bibliotecăDirector
macOS arm64libqorepqc.dyliblib/darwin_arm64/
Linux amd64libqorepqc.solib/linux_amd64/
Linux arm64libqorepqc.solib/linux_arm64/

libqoresvm (Runtime SVM)​

Biblioteca SVM oferă mediul de execuție a programelor BPF pentru modulul x/svm.

cd rust/qoresvm
cargo build --release

Rezultatul urmează aceeași convenție lib/{os}_{arch}/ ca mai sus (libqoresvm.dylib pe macOS, libqoresvm.so pe Linux).

Setarea căii bibliotecii​

Bibliotecile native trebuie să poată fi găsite la runtime. Setați variabila de mediu corespunzătoare platformei dvs.:

macOS:

export DYLD_LIBRARY_PATH=$(pwd)/lib/darwin_arm64:$DYLD_LIBRARY_PATH

Linux:

export LD_LIBRARY_PATH=$(pwd)/lib/linux_amd64:$LD_LIBRARY_PATH
info

Sfat: Adăugați exportul în profilul shell-ului (~/.bashrc, ~/.zshrc) pentru ca acesta să persiste între sesiuni.

Arhitectura Open-Core​

QoreChain urmează un model open-core:

  • Build-ul comunitar — Conține interfețele complete ale modulelor, comenzile CLI, definițiile protobuf și tipurile de mesaje pentru fiecare modul QoreChain (x/pqc, x/ai, x/reputation, x/qca, x/svm, x/crossvm etc.). Keeperii pentru modulele proprietare folosesc implementări stub care returnează valori implicite sigure sau răspunsuri no-op. Acest lucru permite instrumentelor terțe, portofelelor și indexatoarelor să se integreze cu toate API-urile QoreChain fără a necesita cod proprietar.
  • Build-ul complet (proprietar) — Activează implementările complete ale keeperilor din spatele tag-ului de build proprietary. Acesta include logica reală de detectare a anomaliilor prin AI, ajustarea parametrilor de consens PRISM, scorarea avansată a reputației și toate funcționalitățile de nivel producție.

Ambele build-uri produc același nume de binar qorechaind și expun comenzi CLI și endpoint-uri gRPC/REST identice. Diferența constă în comportamentul la runtime al logicii keeperilor din spatele acestor interfețe.

Build-ul Comunitar​

CGO_ENABLED=1 go build -o qorechaind ./cmd/qorechaind/

Aceasta compilează toate interfețele publice ale modulelor cu keeperi stub pentru funcționalitățile proprietare. Binarul rezultat este complet funcțional pentru:

  • Rularea unui nod validator
  • Trimiterea și interogarea tranzacțiilor
  • Interacțiunea cu VM-urile EVM, CosmWasm și SVM
  • Construirea integrărilor și instrumentelor terțe
  • Dezvoltare și testare locală

Build-ul Complet (Proprietar)​

CGO_ENABLED=1 go build -tags proprietary -o qorechaind ./cmd/qorechaind/

Flag-ul -tags proprietary activează implementările complete ale keeperilor, care nu fac parte din arborele de surse public.

Rularea Testelor​

CGO_ENABLED=1 go test ./... -count=1

Flag-ul -count=1 dezactivează cache-ul testelor, asigurând o rulare curată de fiecare dată. Testele pentru pachete individuale pot fi rulate cu:

CGO_ENABLED=1 go test ./x/pqc/... -count=1 -v
CGO_ENABLED=1 go test ./x/ai/... -count=1 -v
CGO_ENABLED=1 go test ./x/svm/... -count=1 -v

Rulați separat testele bibliotecilor Rust:

cd rust/qorepqc && cargo test
cd rust/qoresvm && cargo test

Verificarea Build-ului​

După o compilare reușită, verificați binarul:

./qorechaind version
./qorechaind init test-node --chain-id qorechain-diana

Comanda init ar trebui să creeze un fișier genesis și o configurație de nod în ~/.qorechaind/ fără erori. Exemplul de mai sus inițializează pe testnet-ul qorechain-diana — pentru mainnet, înlocuiți cu --chain-id qorechain-vladi, rețeaua live care rulează versiunea de chain v3.1.97.

Build Docker​

Pentru build-uri containerizate, un Dockerfile este furnizat la rădăcina repository-ului:

docker build -t qorechaind:latest .

Imaginea Docker gestionează automat compilarea tuturor bibliotecilor native și configurarea căilor. Consultați ghidul Quickstart pentru rularea unui nod cu Docker Compose.

Depanare​

cgo: compilatorul C nu a fost găsit

Instalați Xcode CLI tools (macOS) sau build-essential (Linux)

nu se găsește -lqorepqc

Compilați mai întâi bibliotecile Rust și setați LD_LIBRARY_PATH / DYLD_LIBRARY_PATH

nedefinit: sonic.*

Asigurați-vă că go.sum este actualizat: go mod tidy

signal: killed în timpul build-ului

Măriți memoria disponibilă (frecvent în Docker cu limite reduse)

Testele PQC eșuează cu nepotrivire de dimensiuni

Verificați că folosiți pqcrypto v0.5.0+ (ML-DSA-87: pubkey=2592, privkey=4896, sig=4627 bytes)