Zum Hauptinhalt springen

Aus dem Quellcode bauen

Diese Anleitung führt Sie durch das Bauen der qorechaind-Binärdatei aus dem Quellcode und behandelt sowohl den Community-Build (Open-Core) als auch den vollständigen proprietären Build.

Voraussetzungen

AbhängigkeitMindestversionHinweise
Go1.26+Für alle Builds erforderlich
CGOAktiviert (CGO_ENABLED=1)Für PQC- und SVM-FFI-Bridges erforderlich
Rust-ToolchainNeueste stabile VersionErforderlich, um libqorepqc und libqoresvm zu kompilieren
Make3.81+Build-Automatisierung
Git2.xQuellcode-Checkout

Überprüfen Sie Ihre Umgebung:

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

Jeder Aufruf von go build, go test und go run muss CGO_ENABLED=1 gesetzt haben. Die PQC- und SVM-Module verwenden FFI-Bridges, die cgo erfordern.

Native Bibliotheken

QoreChain hängt von zwei in Rust gebauten nativen Bibliotheken ab, die zur Laufzeit geladen werden.

libqorepqc (Post-Quantum-Kryptografie)

Die PQC-Bibliothek bietet die Generierung, Signierung und Verifizierung von ML-DSA-87-Schlüsseln (Dilithium-5) über eine C-kompatible FFI-Schnittstelle.

cd rust/qorepqc
cargo build --release

Die kompilierte Bibliothek wird in lib/{os}_{arch}/ abgelegt:

PlattformBibliotheksdateiVerzeichnis
macOS arm64libqorepqc.dyliblib/darwin_arm64/
Linux amd64libqorepqc.solib/linux_amd64/
Linux arm64libqorepqc.solib/linux_arm64/

libqoresvm (SVM-Laufzeitumgebung)

Die SVM-Bibliothek stellt die BPF-Programmausführungsumgebung für das x/svm-Modul bereit.

cd rust/qoresvm
cargo build --release

Die Ausgabe folgt derselben lib/{os}_{arch}/-Konvention wie oben (libqoresvm.dylib unter macOS, libqoresvm.so unter Linux).

Den Bibliothekspfad festlegen

Die nativen Bibliotheken müssen zur Laufzeit auffindbar sein. Legen Sie die passende Umgebungsvariable für Ihre Plattform fest:

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

Tipp: Fügen Sie den Export zu Ihrem Shell-Profil (~/.bashrc, ~/.zshrc) hinzu, damit er über Sitzungen hinweg bestehen bleibt.

Open-Core-Architektur

QoreChain folgt einem Open-Core-Modell:

  • Community-Build — Enthält die vollständigen Modulschnittstellen, CLI-Befehle, Protobuf-Definitionen und Nachrichtentypen für jedes QoreChain-Modul (x/pqc, x/ai, x/reputation, x/qca, x/svm, x/crossvm usw.). Keeper für proprietäre Module verwenden Stub-Implementierungen, die sichere Standardwerte oder No-op-Antworten zurückgeben. Dies ermöglicht es Drittanbieter-Tools, Wallets und Indexern, mit allen QoreChain-APIs zu integrieren, ohne proprietären Code zu benötigen.
  • Vollständiger (proprietärer) Build — Aktiviert die vollständigen Keeper-Implementierungen hinter dem Build-Tag proprietary. Dies umfasst die echte KI-Anomalieerkennungslogik, die PRISM-Konsensparameter-Abstimmung, die fortgeschrittene Reputationsbewertung und alle produktionsreifen Funktionen.

Beide Builds erzeugen denselben Binärnamen qorechaind und stellen identische CLI-Befehle sowie gRPC/REST-Endpunkte bereit. Der Unterschied liegt im Laufzeitverhalten der Keeper-Logik hinter diesen Schnittstellen.

Community-Build

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

Dies kompiliert alle öffentlichen Modulschnittstellen mit Stub-Keepern für proprietäre Funktionen. Die resultierende Binärdatei ist voll funktionsfähig für:

  • Den Betrieb eines Validator-Knotens
  • Das Übermitteln und Abfragen von Transaktionen
  • Die Interaktion mit den VMs EVM, CosmWasm und SVM
  • Den Aufbau von Drittanbieter-Integrationen und -Tools
  • Lokale Entwicklung und Tests

Vollständiger Build (proprietär)

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

Das Flag -tags proprietary aktiviert die vollständigen Keeper-Implementierungen, die nicht Teil des öffentlichen Quellbaums sind.

Tests ausführen

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

Das Flag -count=1 deaktiviert das Test-Caching und sorgt jedes Mal für einen sauberen Durchlauf. Einzelne Paket-Tests können wie folgt ausgeführt werden:

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

Führen Sie die Rust-Bibliothekstests separat aus:

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

Build-Verifizierung

Überprüfen Sie nach einem erfolgreichen Build die Binärdatei:

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

Der Befehl init sollte ohne Fehler eine Genesis-Datei und eine Knotenkonfiguration in ~/.qorechaind/ erstellen. Das obige Beispiel initialisiert gegen das qorechain-diana-Testnet — für das Mainnet ersetzen Sie --chain-id qorechain-vladi, das Live-Netzwerk, das mit der Chain-Version v3.1.85 läuft.

Docker-Build

Für containerisierte Builds wird im Repository-Root ein Dockerfile bereitgestellt:

docker build -t qorechaind:latest .

Das Docker-Image übernimmt die gesamte Kompilierung der nativen Bibliotheken und die Pfadkonfiguration automatisch. Siehe die Anleitung Quickstart zum Betrieb eines Knotens mit Docker Compose.

Fehlerbehebung

cgo: C compiler not found

Installieren Sie die Xcode-CLI-Tools (macOS) oder build-essential (Linux)

cannot find -lqorepqc

Bauen Sie zuerst die Rust-Bibliotheken und setzen Sie LD_LIBRARY_PATH / DYLD_LIBRARY_PATH

undefined: sonic.*

Stellen Sie sicher, dass go.sum aktuell ist: go mod tidy

signal: killed during build

Erhöhen Sie den verfügbaren Arbeitsspeicher (häufig bei Docker mit niedrigen Limits)

PQC tests fail with size mismatch

Überprüfen Sie, ob Sie pqcrypto v0.5.0+ verwenden (ML-DSA-87: pubkey=2592, privkey=4896, sig=4627 bytes)