Unbonding pausing waits for uninvolved consumer chains #1727
Labels
S: NewThings
Work towards your business objectives with new products, features, or integrations
source: modelling
To indicate an issue found while modelling, e.g. in Quint.
type: bug
Issues that need priority attention -- something isn't working
Problem
For unbondings from validator V, we currently pause an unbonding from V,
even if we have received VSCMatured (VSCM) packets from all consumers that V is opted in on.
Specifically, it is because we wait for VSCM packets from ALL consumers, even ones that V is not even opted in on.
This means ANY consumer chain not responding with a VSCM (even a tiny opt in chain with a single validator) will pause ALL unbondings on the hub.
Less importantly, we also send VSCPackets to ALL consumers if there is an unbonding, even if for a given consumer that unbonding doesn't affect any validator that is currently validating on that chain, which means we send more VSCPackets than necessary.
Closing criteria
Problem details
The current PSS implementation sends VSCPackets for updates to a chain if either
a) the new validator set for this chain and the last one we sent to this chain are different; or
b) there were any unbondings during the epoch.
interchain-security/x/ccv/provider/keeper/relay.go
Line 242 in beb67d6
Notice that b) means we send VSCPackets to all consumers if we have any unbondings during the block, in particular we even send VSCPackets to consumers that may not even have any validators opted in that had an unbonding happen.
Together with unbonding pausing (when unbonding, we wait for a VSCMaturedPacket from all consumers acknowledging that the unbonding is ok to go ahead), this means that e.g. unbondings from validators that aren't even opted in on any consumer could still be paused by ANY consumer not replying with a VSCMaturedPacket in time.
More code details
Notice that here we check whether there are any unbondings from the block
interchain-security/x/ccv/provider/keeper/relay.go
Line 242 in beb67d6
these are set in a hook upon unbondings, see here
interchain-security/x/ccv/provider/keeper/hooks.go
Line 70 in beb67d6
and further above all consumer chains are simply added here
interchain-security/x/ccv/provider/keeper/hooks.go
Line 38 in beb67d6
The text was updated successfully, but these errors were encountered: