go-blockchain/consensus/errors.go
Claude b1a0e9637b
feat(consensus): validate block major version for HF1
Adds expectedBlockMajorVersion and checkBlockVersion, called from
ValidateBlock before timestamp validation. Block version must match
the fork era: HF0->0, HF1->1, HF3->2, HF4+->3.
Tests cover both mainnet and testnet fork schedules including
boundary heights.

Co-Authored-By: Charon <charon@lethean.io>
2026-03-16 20:40:11 +00:00

39 lines
2 KiB
Go

// Copyright (c) 2017-2026 Lethean (https://lt.hn)
//
// Licensed under the European Union Public Licence (EUPL) version 1.2.
// SPDX-License-Identifier: EUPL-1.2
package consensus
import "errors"
// Sentinel errors for consensus validation failures.
var (
// Transaction structural errors.
ErrTxTooLarge = errors.New("consensus: transaction too large")
ErrNoInputs = errors.New("consensus: transaction has no inputs")
ErrTooManyInputs = errors.New("consensus: transaction exceeds max inputs")
ErrInvalidInputType = errors.New("consensus: unsupported input type")
ErrNoOutputs = errors.New("consensus: transaction has no outputs")
ErrTooFewOutputs = errors.New("consensus: transaction below min outputs")
ErrTooManyOutputs = errors.New("consensus: transaction exceeds max outputs")
ErrInvalidOutput = errors.New("consensus: invalid output")
ErrDuplicateKeyImage = errors.New("consensus: duplicate key image in transaction")
ErrInvalidExtra = errors.New("consensus: invalid extra field")
// Transaction economic errors.
ErrInputOverflow = errors.New("consensus: input amount overflow")
ErrOutputOverflow = errors.New("consensus: output amount overflow")
ErrNegativeFee = errors.New("consensus: outputs exceed inputs")
// Block errors.
ErrBlockTooLarge = errors.New("consensus: block exceeds max size")
ErrBlockMajorVersion = errors.New("consensus: invalid block major version for height")
ErrTimestampFuture = errors.New("consensus: block timestamp too far in future")
ErrTimestampOld = errors.New("consensus: block timestamp below median")
ErrMinerTxInputs = errors.New("consensus: invalid miner transaction inputs")
ErrMinerTxHeight = errors.New("consensus: miner transaction height mismatch")
ErrMinerTxUnlock = errors.New("consensus: miner transaction unlock time invalid")
ErrRewardMismatch = errors.New("consensus: block reward mismatch")
ErrMinerTxProofs = errors.New("consensus: miner transaction proof count invalid")
)