Documentation
¶
Overview ¶
Package consensus provides advanced consensus mechanisms for blockchain systems, featuring AI-powered validation and quantum-secure networking.
Overview ¶
The Lux consensus package implements multiple consensus engines with AI integration, supporting Chain (linear), DAG (parallel), and PQ (post-quantum) consensus algorithms. It features dynamic AI-managed consensus through the Photon→Quasar flow and shared hallucinations across network nodes.
Architecture ¶
The consensus system is organized into several key components:
- ai/ AI consensus agents and models
- engine/ Consensus engine implementations (chain, dag, pq)
- protocol/ Consensus protocols (photon, quasar)
- core/ Core interfaces and types
- utils/ Utilities (qzmq for quantum-secure messaging)
- examples/ Progressive tutorial examples
AI Consensus ¶
The AI consensus system allows machine learning models to participate in consensus:
// Create AI model for block validation
model := ai.NewSimpleModel("block-validator")
// Create consensus agent
agent := ai.New(nodeID, model, quasarEngine, photonEngine)
// AI proposes decision following Photon→Quasar flow
decision, err := agent.ProposeDecision(ctx, blockData, context)
AI agents can use various model types:
- SimpleModel: Feedforward neural network
- LLMModel: Large language model integration
- NeuralModel: Custom neural architectures
- EnsembleModel: Combination of multiple models
Consensus Engines ¶
Multiple consensus engines are available:
// Chain consensus (linear blockchain) chainEngine := chain.NewEngine(db, validators) // DAG consensus (parallel processing) dagEngine := dag.NewEngine(config) // Post-quantum consensus pqEngine := pq.NewEngine(quantumConfig)
Each engine implements the core consensus.Engine interface and can be hot-swapped at runtime for dynamic consensus algorithm selection.
Photon→Quasar Flow ¶
The Photon→Quasar consensus flow provides fast, quantum-secure finalization:
- Photon Phase: Emit proposals at light speed
- Wave Phase: Amplify through network via QZMQ
- Focus Phase: Converge on best options using AI
- Prism Phase: Refract through DAG for validation
- Horizon Phase: Finalize with quantum certificate
Example:
// Photon emits proposal proposal, err := photon.Emit(blockData) // Quasar validates through DAG cert, err := quasar.Finalize(proposal)
Quantum-Secure Networking ¶
All network communication uses QZMQ (Quantum-Secure ZeroMQ) with post-quantum cryptography:
// Create quantum-secure publisher
pub, err := qzmq.NewPublisher(config)
// Messages signed with Dilithium, encrypted with Kyber
err = pub.Send(qzmq.Message{
From: nodeID,
Data: proposalData,
Type: qzmq.TypeConsensus,
})
QZMQ provides:
- Dilithium signatures (post-quantum)
- Kyber encryption (quantum-resistant)
- Forward secrecy
- Replay protection
Shared Hallucinations ¶
AI agents share "hallucinations" (model states) across the network for distributed learning and consensus:
// Update shared hallucination agent.AddTrainingData(example) // Synchronize with network err := agent.SyncSharedMemory(ctx) // Get hallucination hallucination, exists := agent.GetSharedHallucination(id)
Shared hallucinations enable:
- Distributed model training
- Consensus on AI decisions
- Evolutionary model improvement
- Byzantine fault tolerance
Cross-Chain Integration ¶
The consensus system integrates with the Lux DEX for cross-chain operations:
import "github.com/luxfi/dex/pkg/lx" // Use production bridge bridge := lx.NewCrossChainBridge(config) // Wrap with AI validation adapter := NewAIBridgeAdapter(bridge, agent, nodeID) // Process cross-chain payment with AI consensus result, err := adapter.ProcessAIPayment(ctx, request)
Performance ¶
Benchmark results (Apple M1 Max):
Operation Latency Throughput ───────────────── ───────── ──────────── Model Inference 1.5 μs 666K ops/sec Consensus Vote 529 ns 1.9M ops/sec Feature Extract 37 ns 27M ops/sec Sigmoid 5.6 ns 179M ops/sec Photon Emit 245 ms 4 proposals/sec Full Consensus 200-300 ms 3-5 blocks/sec
Examples ¶
Progressive tutorial examples are provided in examples/:
01-simple-bridge Cross-chain bridge basics 02-ai-payment AI payment validation 03-qzmq-networking Quantum-secure messaging 04-grpc-service gRPC API integration 05-python-client Python integration 06-nodejs-client TypeScript integration 07-ai-consensus Dynamic AI consensus
Each example includes runnable code, comprehensive tests, and detailed documentation.
See examples/README.md for the complete learning path.
Testing ¶
The package includes extensive tests:
- Unit tests (co-located with source)
- Integration tests (test/integration/)
- Benchmarks (benchmarks/)
- Example tests (in examples/ subdirectories)
Run tests:
go test ./... # All tests go test -v ./ai/ # AI package tests go test -bench=. ./ai/ # Benchmarks go test -tags=integration ./... # Integration tests
Documentation ¶
Additional documentation:
- README.md Project overview
- LLM.md AI assistant knowledge base
- REFACTORING_FINAL.md Recent refactoring summary
- EXAMPLES_COMPLETE.md Tutorial system overview
- paper/ Academic whitepaper
- examples/README.md Learning path guide
Security ¶
Security features:
- Post-quantum cryptography (Dilithium, Kyber)
- Quantum-secure networking (QZMQ)
- Byzantine fault tolerance
- Cryptographic consensus proofs
- Forward secrecy
- Replay attack protection
Contributing ¶
See CONTRIBUTING.md for development guidelines.
License ¶
Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved. See LICENSE for details.
Engine factory functions Package consensus provides the Lux consensus implementation.
Index ¶
Constants ¶
const ( // CurrentCodecVersion is the current codec version CurrentCodecVersion = codec.CurrentVersion )
Export constants
Variables ¶
var ( GetTimestamp = consensuscontext.GetTimestamp GetChainID = consensuscontext.GetChainID GetNetID = consensuscontext.GetNetID GetNetworkID = consensuscontext.GetNetworkID GetValidatorState = consensuscontext.GetValidatorState GetSubnetID = consensuscontext.GetNetID // GetSubnetID is an alias for GetNetID for backward compatibility WithContext = consensuscontext.WithContext FromContext = consensuscontext.FromContext GetNodeID = consensuscontext.GetNodeID WithIDs = consensuscontext.WithIDs WithValidatorState = consensuscontext.WithValidatorState )
Export functions from context
var ( // Codec is the consensus codec Codec = codec.Codec )
Export variables
Functions ¶
func Config ¶
func Config(nodes int) config.Parameters
Config returns default consensus parameters for different network sizes
Types ¶
type Engine ¶
type Engine interface {
// Start starts the engine
Start(context.Context, uint32) error
// Stop stops the engine
Stop(context.Context) error
// HealthCheck performs a health check
HealthCheck(context.Context) (interface{}, error)
// IsBootstrapped returns whether the engine is bootstrapped
IsBootstrapped() bool
}
Engine is the main consensus engine interface
func NewChainEngine ¶
func NewChainEngine() Engine
NewChainEngine creates a new chain consensus engine
func NewPQEngine ¶
func NewPQEngine() Engine
NewPQEngine creates a new post-quantum consensus engine
type ValidatorState ¶
type ValidatorState = consensuscontext.ValidatorState
ValidatorState provides validator information
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
bench
command
Package main provides the bench CLI tool for consensus benchmarking
|
Package main provides the bench CLI tool for consensus benchmarking |
|
checker
command
Package main provides the checker CLI tool for consensus health checking
|
Package main provides the checker CLI tool for consensus health checking |
|
consensus
command
Package main provides the main consensus CLI tool
|
Package main provides the main consensus CLI tool |
|
params
command
Package main provides the params CLI tool for viewing consensus network parameters
|
Package main provides the params CLI tool for viewing consensus network parameters |
|
server
command
|
|
|
sim
command
Package main provides the sim CLI tool for consensus simulation
|
Package main provides the sim CLI tool for consensus simulation |
|
Package context provides consensus context for VMs
|
Package context provides consensus context for VMs |
|
Package core provides core consensus interfaces and contracts.
|
Package core provides core consensus interfaces and contracts. |
|
appsender
Package appsender defines the AppSender interface for application-level messaging
|
Package appsender defines the AppSender interface for application-level messaging |
|
block
Package block provides block interfaces for consensus
|
Package block provides block interfaces for consensus |
|
coremock
Package coremock provides mock implementations for testing
|
Package coremock provides mock implementations for testing |
|
interfaces
Package interfaces defines core consensus interfaces
|
Package interfaces defines core consensus interfaces |
|
tracker
Package tracker provides consensus tracking utilities
|
Package tracker provides consensus tracking utilities |
|
verify
Package verify provides verification utilities
|
Package verify provides verification utilities |
|
Package engine houses the three consensus engines: chain, dag, and pq.
|
Package engine houses the three consensus engines: chain, dag, and pq. |
|
chain
Package chain implements linear consensus protocol.
|
Package chain implements linear consensus protocol. |
|
chain/block/blockmock
Package blockmock is a generated GoMock package.
|
Package blockmock is a generated GoMock package. |
|
chain/block/blocktest
Package blocktest provides test utilities for blocks
|
Package blocktest provides test utilities for blocks |
|
chain/chainmock
Package chainmock provides mock implementations for testing
|
Package chainmock provides mock implementations for testing |
|
chain/chaintest
Package chaintest provides test utilities for chains
|
Package chaintest provides test utilities for chains |
|
chain/syncer
Package syncer provides state synchronization for blockchain engines
|
Package syncer provides state synchronization for blockchain engines |
|
core/coremock
Package coremock provides mock implementations for core consensus
|
Package coremock provides mock implementations for core consensus |
|
core/coretest
Package coretest provides test utilities for consensus engine core
|
Package coretest provides test utilities for consensus engine core |
|
dag
Package dag provides DAG consensus functionality
|
Package dag provides DAG consensus functionality |
|
dag/vertex/vertexmock
Package vertexmock provides mock implementations for DAG vertices
|
Package vertexmock provides mock implementations for DAG vertices |
|
enginetest
Package enginetest provides test utilities for consensus engines
|
Package enginetest provides test utilities for consensus engines |
|
pq
Package pq implements the post-quantum consensus engine that combines classical and quantum-resistant consensus mechanisms.
|
Package pq implements the post-quantum consensus engine that combines classical and quantum-resistant consensus mechanisms. |
|
Package examples demonstrates integration between consensus and node packages
|
Package examples demonstrates integration between consensus and node packages |
|
networking
|
|
|
benchlist
Package benchlist is DEPRECATED.
|
Package benchlist is DEPRECATED. |
|
router
Package router is DEPRECATED.
|
Package router is DEPRECATED. |
|
router/routermock
Package routermock provides mock implementations for message routing
|
Package routermock provides mock implementations for message routing |
|
sender/sendermock
Package sendermock provides mock implementations for message sending
|
Package sendermock provides mock implementations for message sending |
|
sender/sendertest
Package sendertest provides test utilities for message sending
|
Package sendertest provides test utilities for message sending |
|
tracker
Package tracker is DEPRECATED.
|
Package tracker is DEPRECATED. |
|
tracker/trackermock
Package trackermock provides mock implementations for connection tracking
|
Package trackermock provides mock implementations for connection tracking |
|
protocol
|
|
|
field
Package field orchestrates DAG finality via distributed state reduction.
|
Package field orchestrates DAG finality via distributed state reduction. |
|
flare
Package flare finalizes DAG cuts via a cascading accept protocol.
|
Package flare finalizes DAG cuts via a cascading accept protocol. |
|
focus
Package focus accumulates confidence by counting β consecutive successes.
|
Package focus accumulates confidence by counting β consecutive successes. |
|
horizon
Package horizon houses DAG order-theory predicates.
|
Package horizon houses DAG order-theory predicates. |
|
photon
Package photon chooses a K-sized committee each round.
|
Package photon chooses a K-sized committee each round. |
|
prism
Package prism provides DAG geometry: frontiers, cuts, and refractions.
|
Package prism provides DAG geometry: frontiers, cuts, and refractions. |
|
quasar
Package quasar provides post-quantum overlay: dual BLS + ring certificates.
|
Package quasar provides post-quantum overlay: dual BLS + ring certificates. |
|
ray
Package ray finalizes linear chains through single-threaded consensus.
|
Package ray finalizes linear chains through single-threaded consensus. |
|
wave
Package wave computes per-round thresholds and drives a poll.
|
Package wave computes per-round thresholds and drives a poll. |
|
wave/fpc
Package fpc implements Fast Probabilistic Consensus thresholds.
|
Package fpc implements Fast Probabilistic Consensus thresholds. |
|
test
|
|
|
codec
Package codec provides encoding/decoding for consensus types
|
Package codec provides encoding/decoding for consensus types |
|
uptime
Package uptime provides uptime calculation functionality
|
Package uptime provides uptime calculation functionality |
|
uptime/uptimemock
Package uptimemock provides mock implementations for uptime tracking
|
Package uptimemock provides mock implementations for uptime tracking |
|
validatorsmock
Package validatorsmock is a generated GoMock package.
|
Package validatorsmock is a generated GoMock package. |
|
Package version provides version information
|
Package version provides version information |