Skip to content

feat(subnet-splitting): do not validate certifications of other subnet - #10970

Draft
pierugo-dfinity wants to merge 1 commit into
masterfrom
pierugo/subnet-splitting/certifier
Draft

feat(subnet-splitting): do not validate certifications of other subnet#10970
pierugo-dfinity wants to merge 1 commit into
masterfrom
pierugo/subnet-splitting/certifier

Conversation

@pierugo-dfinity

@pierugo-dfinity pierugo-dfinity commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

After a subnet split, nodes are still connected under the same P2P network and share the same pools of artifacts. It is only after the orchestrator detects that the split has happened (sees a PostSplit CUP for a different subnet) that it restarts the destination replicas and then the two subnets are strictly separated.

During that short window of time, the source subnet actually executes messages and it is important for the destination nodes not to create/validate any certifications/certification shares during that time.

@github-actions github-actions Bot added the feat label Jul 30, 2026
pull Bot pushed a commit to bit-cook/ic that referenced this pull request Aug 3, 2026
…finity#10936)

This PR implements the halting logic of subnet splitting by adapting
Consensus' `get_status` function, used by block making, block
validation, and batch delivery.

On a `Scheduled` subnet split summary, replicas will halt as they are
about to skip the whole interval and create CUPs for the next summary
height directly.

On a `PostSplit` subnet split summary, the split is done. As a replica's
subnet ID is determined at startup, the source subnet will have it
correct and can continue creating blocks. Though for a short amount of
time, the destination subnet will still have the configured source
subnet ID while the summary indicates the destination subnet ID. In that
case, do not create new blocks (i.e. halt) until the orchestrator
observes this `PostSplit` CUP and restarts the replica (with the correct
destination subnet ID). After they restarted, replicas' subnet ID will
match the one in the summary and should create blocks.

Note: as the two subnets are still connected under the same P2P network
after the split but have different halting conditions, it is expected to
receive artifact invalidation during that time: the destination subnet
will receive non-empty blocks from the source subnet.
Note 2: again, because the two subnets are still connected under the
same P2P network after the split, the source subnet will broadcast
certifications/certification shares for heights above the post-split
summary. These should be ignored by the destination subnet: coming later
in a [separate PR](dfinity#10970).

P.S.: the PR also finds the last summary block at one single place and
passes it around during block making and validation, allowing to remove
some error variants and avoid panics.

---------

Co-authored-by: IDX GitHub Automation <infra+github-automation@dfinity.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant