Skip to content

Feat/coinbase rotation#230

Open
average-gary wants to merge 2 commits intostratum-mining:mainfrom
average-gary:feat/coinbase-rotation
Open

Feat/coinbase rotation#230
average-gary wants to merge 2 commits intostratum-mining:mainfrom
average-gary:feat/coinbase-rotation

Conversation

@average-gary
Copy link
Copy Markdown
Contributor

Adds deterministic address derivation for coinbase outputs using HD wallet descriptors via miniscript crate. Each block found gets a fresh address derived from an extended public key.

This is ideal for privacy and QC resistance.

The code checks for /* in the descriptor via has_wildcard(). No wildcard = no rotation

New Config Options

# Only needed if using wildcard descriptor
coinbase_index_file = "/var/lib/pool/coinbase_index.dat"  # Required with wildcard
coinbase_start_index = 0  # Optional, defaults to 0

Existing configs work unchanged. Defaults preserve current behavior and coinbase_index_file = None means no rotation.

Testnet4 Validation

Two blocks mined on testnet4 (Jan 28, 2026):

Many more blocks have been found using this code. Any TN4 block with signature whirly-pool is a result of this rotation feature.

Blog: https://average-gary.github.io/sv2-apps/

@average-gary average-gary force-pushed the feat/coinbase-rotation branch from 35a852a to ebe7773 Compare February 18, 2026 16:38
@average-gary average-gary force-pushed the feat/coinbase-rotation branch 5 times, most recently from d4507b0 to 3684103 Compare March 5, 2026 14:11
@average-gary average-gary force-pushed the feat/coinbase-rotation branch 2 times, most recently from 0b2ccaa to b35b5d9 Compare March 17, 2026 13:05
@average-gary average-gary force-pushed the feat/coinbase-rotation branch from b35b5d9 to cb6de13 Compare March 30, 2026 19:44
Document the new coinbase rotation configuration options in testnet4
config examples for both pool and JD-client.
@average-gary average-gary force-pushed the feat/coinbase-rotation branch from cb6de13 to d6fa26b Compare March 31, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant