Documentation
ยถ
Overview ยถ
Package consensus provides a clean, single-import interface to the Lux consensus system. This is the main SDK surface for applications using Lux consensus.
For VM-related types (State, Message, Fx), use github.com/luxfi/vm
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.
Index ยถ
Constants ยถ
const ( // Decision outcomes DecideUndecided = types.DecideUndecided DecideAccept = types.DecideAccept DecideReject = types.DecideReject // Vote types VotePreference = types.VotePreference VoteCommit = types.VoteCommit VoteCancel = types.VoteCancel // Block status StatusUnknown = types.StatusUnknown StatusProcessing = types.StatusProcessing StatusRejected = types.StatusRejected StatusAccepted = types.StatusAccepted // VM states Unknown = interfaces.Unknown Starting = interfaces.Starting Syncing = interfaces.Syncing Bootstrapping = interfaces.Bootstrapping Ready = interfaces.Ready Degraded = interfaces.Degraded Stopping = interfaces.Stopping Stopped = interfaces.Stopped )
Constants re-exported for convenience
Variables ยถ
var ( // GenesisID is the ID of the genesis block GenesisID = types.GenesisID // Common errors ErrBlockNotFound = types.ErrBlockNotFound ErrInvalidBlock = types.ErrInvalidBlock ErrInvalidVote = types.ErrInvalidVote ErrNoQuorum = types.ErrNoQuorum ErrAlreadyVoted = types.ErrAlreadyVoted ErrNotValidator = types.ErrNotValidator ErrTimeout = types.ErrTimeout ErrNotInitialized = types.ErrNotInitialized ErrUnknownState = errors.New("unknown state") )
Variables re-exported for convenience
var ( GetNetworkID = consensuscontext.GetNetworkID GetValidatorState = consensuscontext.GetValidatorState WithContext = consensuscontext.WithContext FromContext = consensuscontext.FromContext )
Context accessor functions re-exported from context package
var ( SingleValidatorParams = config.SingleValidatorParams LocalParams = config.LocalParams TestnetParams = config.TestnetParams MainnetParams = config.MainnetParams DefaultParams = config.DefaultParams XChainParams = config.XChainParams )
Parameter presets for convenience
Functions ยถ
func GetConfig ยถ added in v1.22.1
func GetConfig(nodeCount int) config.Parameters
GetConfig returns consensus parameters based on the number of nodes
Types ยถ
type Certificate ยถ added in v1.22.0
type Certificate = types.Certificate
Type aliases for clean single-import experience
type Chain ยถ added in v1.22.0
Type aliases for clean single-import experience
type Config ยถ
Type aliases for clean single-import experience
func DefaultConfig ยถ added in v1.22.0
func DefaultConfig() Config
DefaultConfig returns the default consensus configuration
type Engine ยถ
Engine types
func NewChainEngine ยถ
func NewChainEngine() Engine
NewChainEngine creates a new chain consensus engine with default config
func NewDAGEngine ยถ
func NewDAGEngine() Engine
NewDAGEngine creates a new DAG consensus engine with default config
func NewPQ ยถ added in v1.22.0
NewPQ creates a new post-quantum consensus engine (placeholder for future)
func NewPQEngine ยถ
func NewPQEngine() Engine
NewPQEngine creates a new PQ consensus engine with default config
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. |
|
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 |
|
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 |
|
dag
Package dag provides DAG consensus functionality
|
Package dag provides DAG consensus functionality |
|
enginemock
Package coremock provides mock implementations for core consensus
|
Package coremock provides mock implementations for core consensus |
|
enginetest
Package enginetest provides test utilities for consensus engines
|
Package enginetest provides test utilities for consensus engines |
|
enginetest/coretest
Package coretest provides test utilities for consensus engine core
|
Package coretest provides test utilities for consensus engine core |
|
interfaces
Package interfaces provides consensus engine interfaces.
|
Package interfaces provides consensus engine interfaces. |
|
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. |
|
test
Package examples demonstrates integration between consensus and node packages
|
Package examples demonstrates integration between consensus and node packages |
|
networking
|
|
|
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 |
|
protocol
|
|
|
chain
Package chain provides basic blockchain primitives and interfaces.
|
Package chain provides basic blockchain primitives and interfaces. |
|
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. |
|
nebula
Package nebula provides DAG consensus mode.
|
Package nebula provides DAG consensus mode. |
|
nova
Package nova provides linear blockchain consensus mode.
|
Package nova provides linear blockchain consensus mode. |
|
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
|
|
|
bag
Package bag provides multiset data structures for vote collection and counting.
|
Package bag provides multiset data structures for vote collection and counting. |
|
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 |