There are three IBC related softwares, ibc_contracts, ibc_plugin_eos and ibc_plugin_bos, There are currently multiple major versions for all these three software repositories and between major versions maybe incompatible, so the three repositories need to use the correct major version number to coordinate their work. For specific compatibility combinations, please refer to README.md
chain_plug->chain().abort_block()
and chain_plug->chain().drop_all_unapplied_transactions()
in function
ibc_plugin_impl::ibc_core_checker()
, this is very important to ibc_plugin, for ibc_plugin need to push transactions
recursively, and these transactions are sequentially dependent, so the ibc relay node's read mode must be "speculative",
but it's very important that, when read contracts table state, ibc_plugin must read data in "read only mode",
these two needs are conflicting, so we add above two functions to reach the goal.