Fix maybe issues related to frozen height of tendermint client. #1040
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
In the development of near-ibc, we encountered two significant issues concerning the handling of the frozen height in the Tendermint client.
The first issue arises in the
try_from
function withinimpl TryFrom<RawTmClientState> for ClientState
. When the client is frozen, this function returns anErr
, leading to a failure in the decode function of thetendermint_proto
crate. Consequently, if the client becomes frozen, it becomes impossible to restore the client state using thedecode
function fromtendermint_proto
, rendering the client state irreparable.The second issue is found in the
from
function ofimpl From<ClientState> for RawTmClientState
. This function incorrectly sets the frozen height toSome(...)
even when the originalclient state
has it asNone
. This appears to be a straightforward oversight.The modifications in this pull request have been applied in
near-ibc v1.0.2
. Given that implementations external to the Tendermint client already check for a frozen client state, the current solution functions effectively. However, I believe it is important to highlight these issues inibc-rs
for further attention and resolution.PR author checklist:
unclog
.docs/
).Reviewer checklist:
Files changed
in the GitHub PR explorer.