send_tx
methods should work with any transactions, including non-IBC transactions
#2314
Closed
5 tasks
Milestone
Summary
The
send_tx
methods onChainHandle
should not fail when non-IBC transactions are submitted.Problem Definition
Currently the
send_tx
methods determine whether a list of transactions are committed successfully to a chain is by doing the following:IbcEvent
.IbcEvent
s match the number of transactions.The problem is that not every transaction is IBC-related. If a non-IBC message is submitted, there is no
IbcEvent
to exract from the TX response, even when the transaction is committed successfully. This result in thesend_tx
methods keep waiting forIbcEvent
s until the timeout has reach, and then returning error.This has been an issue in #1979, in which the upgrade chain transaction is not an IBC message and does not produce any
IbcEvent
on succeed. As a result, thesend_tx
transaction failed even when the chain is upgraded successfully.The same issue happens in #1981, in which there is a need to submit a
MsgRegisterCounterpartyPayee
transaction, which is a non-IBC message.Generally, the same limitation probably also applies to all non-IBC messages, such as local token transfer, staking tokens, token swaps, calling smart contracts, etc. Although Hermes does not currently perform any of such transactions, it is an overly specialized limitation that should not be there.
It is also not practical to consider case-by-case which non-IBC message should be supported by
send_tx
methods. After all, the type signature ofsend_tx
shows that it acceptsVec<Any>
, and it does not make sense that theAny
value is subtly restricted to an arbitrary subset of messages that are difficult to change.Proposal
#2303 works on the fix to allow the transaction to succeed based only on TX response. The response is only converted after the fact into
IbcEvent
s.Acceptance Criteria
The
send_tx
methods should work with non-IBC messages.For Admin Use
The text was updated successfully, but these errors were encountered: