Skip to Content
ProtocolConsensus Rules

Consensus Rules

Tidecoin is a Bitcoin Core-derived UTXO chain with post-quantum consensus extensions. The base validation model remains Bitcoin-like: blocks contain transactions, transactions spend UTXOs, scripts authorize spends, proof-of-work orders the chain, and contextual flags decide which rules apply at a given height.

This page ties the consensus surface together. It is not a mining setup guide; mining workflows belong under Mining. It is not the RPC reference; API behavior belongs under Reference.

Fixed block limits

RuleValue
Maximum serialized block size6,000,000 bytes
Maximum block weight6,000,000
Maximum block sigops cost80,000
Coinbase maturity100 blocks
Witness scale factor4

These values are consensus-level constants.

Network activation parameters

NetworkAuxPoW start heightAuxPoW chain IDStrict chain IDTarget spacingRetarget timespan
MainnetDisabled8Yes60 seconds5 days
Testnet1,0008Yes60 seconds5 days
Regtest08Yes60 seconds4 hours

AuxPoW activation is the major consensus boundary. On mainnet the parameter is currently disabled. Testnet and regtest exercise the post-AuxPoW rules.

Pre-AuxPoW ruleset

Before AuxPoW activation, Tidecoin validates blocks under the launch ruleset:

AreaRule
Proof-of-workYespowerTIDE block hash must satisfy the target.
Signature schemesFalcon-512 is the only consensus-allowed PQ signature scheme.
Falcon verificationLegacy-compatible Falcon-512 verification is allowed.
Witness v1 P2WSH-512Not active as the enforced witness-v1 script-hash path.
OP_SHA512Not enabled as the SHA-512 opcode.
AuxPoW dataNot allowed before activation.

Blocks with AuxPoW data or the AuxPoW flag before activation are invalid.

Post-AuxPoW ruleset

At and after nAuxpowStartHeight, Tidecoin enables the post-AuxPoW ruleset:

AreaRule
Proof-of-workScrypt parent proof is validated through AuxPoW.
AuxPoWHeader/block AuxPoW data, chain ID, merkle branches, and parent PoW are checked.
Signature schemesFalcon-512, Falcon-1024, ML-DSA-44, ML-DSA-65, and ML-DSA-87 are allowed.
PQ verificationSCRIPT_VERIFY_PQ_STRICT is active.
Witness v1 P2WSH-512SCRIPT_VERIFY_WITNESS_V1_512 is active.
OP_SHA512SCRIPT_VERIFY_SHA512 is active.
DifficultyPost-AuxPoW retarget rules are used.

The activation is contextual by block height. Historical pre-activation blocks keep their pre-activation script flags.

Script flags

The post-AuxPoW script flag bundle is:

FlagBitConsensus effect
SCRIPT_VERIFY_PQ_STRICT13Reject legacy-only Falcon signatures under strict verification.
SCRIPT_VERIFY_WITNESS_V1_51214Enforce 64-byte witness v1 P2WSH-512 validation.
SCRIPT_VERIFY_SHA51215Enable OP_SHA512.

Validation applies these flags for mempool acceptance against the next block height and for block validation against the block’s actual height.

Scheme gate

Signature scheme availability is height-gated:

Height contextAllowed schemes
Before AuxPoW activationFalcon-512 only
At and after AuxPoW activationFalcon-512, Falcon-1024, ML-DSA-44, ML-DSA-65, ML-DSA-87

The serialized public key carries the scheme prefix. The signature verifier selects the scheme from that prefixed public key.

AuxPoW validation

When a block uses AuxPoW, consensus checks:

  1. AuxPoW flag and AuxPoW data are consistent.
  2. AuxPoW is not used before activation.
  3. Chain ID bits match Tidecoin chain ID 8 when strict chain ID is enforced.
  4. The AuxPoW commitment and merkle branches are valid.
  5. The parent block hash satisfies the target.

Common rejection reasons include auxpow-missing, auxpow-unexpected, auxpow-pre-activation, auxpow-chainid, auxpow-invalid, and auxpow-parent-pow.

Proof-of-work and difficulty

Before AuxPoW, Tidecoin validates YespowerTIDE work. After AuxPoW, Tidecoin validates the scrypt proof carried by the parent block through the AuxPoW structure.

RulePre-AuxPoWPost-AuxPoW
Work sourceTidecoin block hashParent block scrypt hash through AuxPoW
Mainnet target spacing60 seconds60 seconds
Retarget5-day intervalPer-block post-AuxPoW retarget path
Mainnet min difficultyDisabledDisabled

See Proof-of-Work for the full difficulty description.

Monetary policy

Block subsidy starts at 40 TDC. The subsidy is reduced by a factor of four at each subsidy step, and each step’s interval doubles from the initial interval.

NetworkInitial subsidy interval
Mainnet262,800 blocks
Testnet262,800 blocks
Regtest20 blocks

The subsidy calculation uses cumulative doubling intervals and returns zero once the shift would exceed the valid range.

Consensus versus policy

Consensus rules decide whether a block or transaction can be valid on chain. Policy rules decide whether a node will relay or mine a transaction from its mempool. For example, standard transaction weight, standard scriptSig size, P2WSH stack limits, and pre-activation wallet output gating are policy surfaces layered on top of consensus.

Integration code should distinguish:

QuestionUse
Can this transaction appear in a valid block?Consensus rules
Will my node relay or mine this transaction now?Policy rules
Which flags apply to the next block?Active chain height plus consensus parameters
Which flags applied to an old block?That block’s contextual height

Source of truth

TopicSource
Consensus constants../tidecoin/src/consensus/consensus.h
Chain activation parameters../tidecoin/src/kernel/chainparams.cpp
Script flag application../tidecoin/src/validation.cpp
AuxPoW context checks../tidecoin/src/validation.cpp, ../tidecoin/src/auxpow.cpp
PoW switch and retarget rules../tidecoin/src/pow.cpp
Scheme activation gate../tidecoin/src/pq/pq_scheme.h
Subsidy calculation../tidecoin/src/validation.cpp

See also: Activation Status, Network Upgrades, Proof-of-Work, AuxPoW, Scripts.

Last updated on