Summary
Currently the SV2 extended channel implementation uses a fixed 6/6 extranonce split: 6-byte pool prefix (server_id[2] + channel_id[4]) and 6-byte proxy search space, within the 12-byte coinbase extranonce slot.
This works well for most cases (2^48 combinations is plenty), but a downstream proxy requesting min_extranonce_size > 6 will be rejected with unsupported-min-extranonce-size.
Proposed Enhancement
- Make the extranonce prefix length configurable (e.g., pool config or dynamic based on
min_extranonce_size from proxy)
- Allow shorter pool prefixes (e.g., 2-4 bytes) to give proxies more search space when requested
- Consider making the total extranonce slot size configurable (currently hard-coded at 12 bytes via
EXTRANONCE1_SIZE + EXTRANONCE2_SIZE)
Context
Priority
Low — the fixed 6/6 split covers all realistic use cases. This is a future improvement for spec completeness.
Summary
Currently the SV2 extended channel implementation uses a fixed 6/6 extranonce split: 6-byte pool prefix (
server_id[2] + channel_id[4]) and 6-byte proxy search space, within the 12-byte coinbase extranonce slot.This works well for most cases (2^48 combinations is plenty), but a downstream proxy requesting
min_extranonce_size > 6will be rejected withunsupported-min-extranonce-size.Proposed Enhancement
min_extranonce_sizefrom proxy)EXTRANONCE1_SIZE + EXTRANONCE2_SIZE)Context
build_coinbase_transaction()viaEXTRANONCE_SEPARATORcoinbase_tx_prefix + extranonce_prefix + proxy_extranonce + coinbase_tx_suffixPriority
Low — the fixed 6/6 split covers all realistic use cases. This is a future improvement for spec completeness.