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.
Integrates IBC support for Wasm contracts. 🎉
Entry points
Wasm contracts can implement the following entry points to become an IBC port assigned automatically:
wasm.<contract-address>
Channel lifecycle
A contract can receive/send packets via channels.
See IBC flow
Handshake start:
OnChanOpenInit
,OnChanOpenTry
,pub fn ibc_channel_open
Handshake confirmation:
OnChanOpenAck
,OnChanOpenConfirm
pub fn ibc_channel_connect
Close:
OnChanCloseInit
,OnChanCloseConfirm
pub fn ibc_channel_close
Packet lifecycle
Packets transport data on the application level. See [IBC flow](https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#packet-flow--handling]
pub fn ibc_packet_receive
pub fn ibc_packet_ack
pub fn ibc_packet_timeout(
New IBC messages
TransferMsg
- start an ICS-20 transfer using the cosmos-sdk IBC/transfer moduleSendPacket
- send an IBC data package on an existing channelCloseChannelMsg
- initiate close procedure for an existing IBC channelCredits
This PR contains also a lot of work and feedback from @ethanfrey and @webmaster128 👏