The solo machine cannot currently process timeouts because it does not have a consensus state associated with the timeout height until after processing the timeout. Core IBC assumes a consensus state exists in state for the timeout height, but solo machines stores the consensus state in the client state.
We should add a function GetTimestampAtHeight to the client state function which returns the timestamp at a given consensus state height.
Splitting PR recommendation
PR 1
Add the GetTimetstampAtHeight to each client state + unit tests
[x] 06-solomachine
[x] 07-tendermint
[x] 09-localhost
PR 2
Modify connection keeper GetTimestampAtHeight to use the client state interface function. See if it is possible to write a test for solo machines to send a successful timeout msg
Summary
The solo machine cannot currently process timeouts because it does not have a consensus state associated with the timeout height until after processing the timeout. Core IBC assumes a consensus state exists in state for the timeout height, but solo machines stores the consensus state in the client state.
We should add a function
GetTimestampAtHeight
to the client state function which returns the timestamp at a given consensus state height.Splitting PR recommendation
PR 1
Add the
GetTimetstampAtHeight
to each client state + unit testsPR 2
Modify connection keeper
GetTimestampAtHeight
to use the client state interface function. See if it is possible to write a test for solo machines to send a successful timeout msgFor Admin Use