diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aaceb351..1722f2e48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Relayer +* [\#474](https://github.com/cosmos/relayer/pull/474) Fix validator set mismatch when updating IBC client. * [\#456](https://github.com/cosmos/relayer/pull/456) Fix bug which incorrectly set the timeout on a transfer. * [\#455](https://github.com/cosmos/relayer/pull/455) Set default client parameter to allow governance to update the client if expiry or misbehaviour freezing occurs. diff --git a/relayer/ibc-client.go b/relayer/ibc-client.go index bd0727e85..9987b6240 100644 --- a/relayer/ibc-client.go +++ b/relayer/ibc-client.go @@ -108,8 +108,10 @@ func (c *Chain) InjectTrustedFields(dst *Chain, header *tmclient.Header) (*tmcli // inject TrustedHeight as latest height stored on counterparty client h.TrustedHeight = cs.GetLatestHeight().(clienttypes.Height) - // query TrustedValidators at Trusted Height from srcChain - trustedHeader, err := c.GetLightSignedHeaderAtHeight(int64(h.TrustedHeight.RevisionHeight)) + // NOTE: We need to get validators from the source chain at height: trustedHeight+1 + // since the last trusted validators for a header at height h is the NextValidators + // at h+1 committed to in header h by NextValidatorsHash + trustedHeader, err := c.GetLightSignedHeaderAtHeight(int64(h.TrustedHeight.RevisionHeight) + 1) if err != nil { return nil, fmt.Errorf( "failed to get trusted header, please ensure header at the height %d has not been pruned by the connected node: %w",