Skip to content

chaincfg: fix CSN block download on custom signets - #445

Open
kcalvinalvin wants to merge 1 commit into
utreexo:mainfrom
kcalvinalvin:2026-10-06-custom-signet-ttl
Open

kcalvinalvin wants to merge 1 commit into
utreexo:mainfrom
kcalvinalvin:2026-10-06-custom-signet-ttl

Conversation

@kcalvinalvin

@kcalvinalvin kcalvinalvin commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

On a custom signet, CSNs synced headers but never downloaded a block.

CustomSignetParams set the default signet's TTL state for every challenge. A CSN with TTL state requests TTLs from its sync peer before downloading each block below the TTL state's height, which is 294,687 for the default signet. Bridge nodes on a custom signet shorter than that have no TTL state, so they log "Error retrieving ttls" and send nothing back. The CSN disconnects its sync peer after three minutes without progress and tries the next one. A bridge whose chain passes that height serves TTLs from its own chain, which fail verification against the default signet's roots, and the CSN disconnects it.

Set the TTL state only for the default challenge, the same way the AssumeUtreexo point and checkpoints are set. The default signet's TTL state is unchanged.

Validation: go test ./chaincfg ./netsync, golangci-lint run

On a custom signet, CSNs synced headers but never downloaded a block.

CustomSignetParams set the default signet's TTL state for every
challenge. A CSN with TTL state requests TTLs from its sync peer
before downloading each block below the TTL state's height, which is
294,687 for the default signet. Bridge nodes on a custom signet
shorter than that have no TTL state, so they log "Error retrieving
ttls" and send nothing back. The CSN disconnects its sync peer after
three minutes without progress and tries the next one. A bridge
whose chain passes that height serves TTLs from its own chain, which
fail verification against the default signet's roots, and the CSN
disconnects it.

Set the TTL state only for the default challenge, the same way the
AssumeUtreexo point and checkpoints are set.
@kcalvinalvin
kcalvinalvin force-pushed the 2026-10-06-custom-signet-ttl branch from 8cdae90 to 07ca965 Compare October 7, 2026 08:25
@kcalvinalvin kcalvinalvin changed the title chaincfg: set the signet TTL state only for the default challenge chaincfg: fix CSN block download on custom signets Oct 7, 2026
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