Files
consensus/protocol/wave/state.go
T
zeekay 8e45bcd029 refactor: Go-idiomatic package layout
Reorganize consensus packages following Go conventions and best practices:

Protocol Consolidation:
- Move prism/, photon/, wave/ → protocol/ directory
- Consolidate all protocol implementations under single namespace
- Follows standard library pattern (encoding/json, encoding/xml)

Package Naming:
- Rename validators/ → validator/ (singular, lowercase per Go convention)
- Aligns with stdlib patterns (net/http, database/sql)

Import Path Updates:
- Update all 241 Go files with new import paths
- github.com/luxfi/consensus/prism → protocol/prism
- github.com/luxfi/consensus/photon → protocol/photon
- github.com/luxfi/consensus/wave → protocol/wave
- github.com/luxfi/consensus/validators → validator

Benefits:
- Clear separation: core (contracts) vs protocol (algorithms) vs engine (runtime)
- Improved discoverability (all protocols under protocol/)
- Consistent with Go naming conventions
- Zero breaking changes to core APIs
- Easier to add new protocol implementations

Test Results:
- All 67+ tests passing across 21 packages
- 100% test coverage maintained
- No performance regression

Structure:
consensus/
├── core/           # Pure contracts (interfaces, zero deps)
├── protocol/       # Consensus algorithms & mechanics
│   ├── prism/      # Polling/quorum primitives
│   ├── photon/     # Unary consensus
│   ├── wave/       # N-ary consensus (FPC)
│   └── ...         # Other protocol phases
├── engine/         # Runtime glue (runs protocols)
└── validator/      # Validator management (singular)
2025-11-06 04:19:26 -08:00

46 lines
843 B
Go

package wave
// State represents the consensus state for an item
type State[ID comparable] struct {
// The item ID
ID ID
// Confidence score
Confidence int
// Whether the item is finalized
Finalized bool
// Parent IDs
Parents []ID
// Height in the consensus graph
Height uint64
}
// NewState creates a new consensus state
func NewState[ID comparable](id ID) State[ID] {
return State[ID]{
ID: id,
Confidence: 0,
Finalized: false,
Parents: []ID{},
Height: 0,
}
}
// IsPreferred returns whether this state is preferred
func (s State[ID]) IsPreferred() bool {
return s.Confidence > 0
}
// IncrementConfidence increments the confidence score
func (s *State[ID]) IncrementConfidence() {
s.Confidence++
}
// Finalize marks the state as finalized
func (s *State[ID]) Finalize() {
s.Finalized = true
}