AuxPoW (Merged Mining)
Status: Built, not yet activated on mainnet. Active on testnet from block 1000.
AuxPoW allows Tidecoin blocks to be secured by proof-of-work submitted on a parent chain (Litecoin, scrypt). Chain ID is 8. Upon activation, Tidecoin transitions from standalone YespowerTIDE mining to accepting AuxPoW-bundled scrypt solutions, and the activation simultaneously enables multi-scheme signatures, witness v1, OP_SHA512, and strict PQ signature validation.
This page describes the protocol. Pool setup and operator workflows belong in Mining / AuxPoW Integration and Mining Pool Operator Guide.
Activation state
| Network | AuxPoW state |
|---|---|
| Mainnet | Built, not active. nAuxpowStartHeight is disabled. |
| Testnet | Active from block 1000. |
| Regtest | Active from genesis. |
What AuxPoW proves
An AuxPoW block carries evidence that a parent-chain proof-of-work committed to the Tidecoin block hash. Tidecoin verifies:
- The Tidecoin block has the AuxPoW version flag when AuxPoW data is present.
- AuxPoW is not used before the activation height.
- The chain ID encoded in the block version matches Tidecoin chain ID
8. - The parent coinbase commits to the Tidecoin block hash.
- The merkle branches link the commitment to the parent block.
- The parent block hash satisfies the Tidecoin target.
The parent chain does not need to validate or even know about Tidecoin.
Block-version rules
Tidecoin encodes AuxPoW metadata in block version bits:
| Field | Meaning |
|---|---|
| AuxPoW flag | Marks that AuxPoW data is serialized with the header/block. |
| Chain ID bits | Encode Tidecoin AuxPoW chain ID 8. |
| Strict chain ID | Enforced on mainnet, testnet, and regtest. |
Blocks with AuxPoW data but no AuxPoW flag, or an AuxPoW flag with missing data, are invalid. Blocks with chain ID bits set without AuxPoW are invalid under strict chain ID checks.
Commitment structure
Merged mining commits the Tidecoin block hash into the parent coinbase using
the AuxPoW commitment marker 0xfabe6d6d. The AuxPoW data then provides:
| Component | Purpose |
|---|---|
| Parent coinbase transaction | Contains the AuxPoW commitment. |
| Coinbase merkle branch | Proves the coinbase transaction is in the parent block. |
| Chain merkle branch | Supports multiple auxiliary chains in one parent coinbase. |
| Chain index | Identifies Tidecoin’s position in the auxiliary chain merkle tree. |
| Parent block header | Provides the scrypt proof-of-work hash. |
RPC surface
| RPC | Scope | Purpose |
|---|---|---|
createauxblock | Node RPC | Create an AuxPoW candidate for an explicit payout address. |
submitauxblock | Node RPC | Submit serialized AuxPoW for a candidate hash. |
getauxblock | Wallet RPC | Wallet-assisted create/submit flow using wallet-derived payout scripts. |
For exact arguments and result fields, see RPC Reference.
AuxPoW as the upgrade gate
AuxPoW activation is also the consensus gate for Tidecoin’s broader post-AuxPoW ruleset:
| Feature | Before AuxPoW | At and after AuxPoW |
|---|---|---|
| Proof-of-work | YespowerTIDE | Scrypt via parent AuxPoW proof |
| Signature schemes | Falcon-512 only | Falcon-512, Falcon-1024, ML-DSA-44/65/87 |
| Falcon verification | Legacy-compatible mode | Strict mode |
| Witness/script | Existing witness rules | Witness v1 / P2WSH-512 and OP_SHA512 |
| Difficulty adjustment | Periodic retarget | Per-block averaging-window retarget |
Rejection reasons
The validation path uses explicit reject reasons for common AuxPoW failures:
| Reason | Meaning |
|---|---|
auxpow-missing | AuxPoW flag is set but AuxPoW data is absent. |
auxpow-unexpected | AuxPoW data is present without the AuxPoW flag. |
auxpow-pre-activation | AuxPoW appeared before the activation height. |
auxpow-chainid | Chain ID is missing, misplaced, or not Tidecoin’s chain ID. |
auxpow-invalid | The AuxPoW merkle/commitment check failed. |
auxpow-parent-pow | The parent proof-of-work hash does not satisfy the target. |
Source of truth
| Source | What it defines |
|---|---|
src/auxpow.h / src/auxpow.cpp | AuxPoW object, merkle checks, chain index checks. |
src/primitives/pureheader.h | AuxPoW version flag and chain ID bit layout. |
src/validation.cpp | Activation-height checks and block/header rejection reasons. |
src/rpc/auxpow_miner.cpp | Candidate creation and AuxPoW submission flow. |
See also: Activation Status, Proof-of-Work, Mining / AuxPoW Integration, RPC Reference.