You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IBC only supports past/future misbehaviour detection for changing the chainID across upgrades given a strict format. That is, if the current chainID is in the revision format, the past/future revision must contain the same chainID base with a revision number less than (past) or greater than (future) to the current one. If the revision number is not a chainID, past/future revisions are not supported (at the moment).
However, the 07-tendermint client also allows arbitrary changing of the chainID, even if it breaks misbehaviour detection. We should increase the strictness of our allowed changing of the chain ID so misbehaviour detection does not become nullified
Within upgrade.go for 07-tendermint, after the height check, we should add the following check:
switch {
caseclienttypes.IsRevisionFormat(cs.ChainID):
// check that the base of the cs.ChainID == base of upgradedClientState.ChainIDoldChainIDBase:=strings.TrimSuffix(chainID, fmt.Sprintf("-%d", clienttypes.ParseChainID(chainID)))
newChainIDBase:=chainID=strings.TrimSuffix(upgradedClientState.ChainID, fmt.Sprintf("-%d", clienttypes.ParseChainID(upgradedClientState.ChainID)))
ifoldChainIDBase!=newChainIDBase {
returnerr
}
casecs.ChainID!= upgradedClientState.ChainID// only allow upgrade from non-revision chainID to a chainID with "-0"ifupgradedClientState.ChainID!=clienttypes.SetRevisionNumber(cs.ChainID, 0) {
returnerr
}
}
For Admin Use
Not duplicate issue
Appropriate labels applied
Appropriate contributors tagged/assigned
The text was updated successfully, but these errors were encountered:
Discussing further with @AdityaSripal, increasing strictness of chainID changing partially breaks the network due to previous behaviour (in earlier releases).
We decided if a chainID goes away from the revision format, misbehaviour detection will no longer be supported. Again, if we supported misbehaviour detection for chains going away from the strict revision format, we would partially break the network
Summary
IBC only supports past/future misbehaviour detection for changing the chainID across upgrades given a strict format. That is, if the current chainID is in the revision format, the past/future revision must contain the same chainID base with a revision number less than (past) or greater than (future) to the current one. If the revision number is not a chainID, past/future revisions are not supported (at the moment).
However, the 07-tendermint client also allows arbitrary changing of the chainID, even if it breaks misbehaviour detection. We should increase the strictness of our allowed changing of the chain ID so misbehaviour detection does not become nullified
Within
upgrade.go
for 07-tendermint, after the height check, we should add the following check:For Admin Use
The text was updated successfully, but these errors were encountered: