81 lines
1.9 KiB
Markdown
81 lines
1.9 KiB
Markdown
<!--
|
|||
order: 4
|
|||
-->
|
|||
|
|||
# Messages
|
|||
|
|||
In this section we describe the processing of the IBC messages and the corresponding updates to the state.
|
|||
|
|||
## ICS 02 - Client
|
|||
|
|||
### MsgCreateClient
|
|||
|
|||
A light client is created using the `MsgCreateClient`.
|
|||
|
|||
```go
|
|||
type MsgCreateClient struct {
|
|||
ClientID string
|
|||
ClientType string
|
|||
ConsensusState ConsensusState
|
|||
Signer AccAddress
|
|||
}
|
|||
```
|
|||
|
|||
This message is expected to fail if:
|
|||
|
|||
- `ClientID` is invalid (not alphanumeric or not within 10-20 characters)
|
|||
- `ClientType` is not registered
|
|||
- `ConsensusState` is empty
|
|||
- `Signer` is empty
|
|||
- A light client with the provided id and type already exist
|
|||
|
|||
The message creates and stores a light client with the given ID and consensus type,
|
|||
stores the validator set as the `Commiter` of the given consensus state and stores
|
|||
both the consensus state and its commitment root (i.e app hash).
|
|||
|
|||
### MsgUpdateClient
|
|||
|
|||
A light client is updated with a new header using the `MsgUpdateClient`.
|
|||
|
|||
```go
|
|||
type MsgUpdateClient struct {
|
|||
ClientID string
|
|||
Header Header
|
|||
Signer AccAddress
|
|||
}
|
|||
```
|
|||
|
|||
This message is expected to fail if:
|
|||
|
|||
- `ClientID` is invalid (not alphanumeric or not within 10-20 characters)
|
|||
- `Header` is empty
|
|||
- `Signer` is empty
|
|||
- A Client hasn't been created for the given ID
|
|||
- the header's client type is different from the registered one
|
|||
- the client is frozen due to misbehaviour and cannot be updated
|
|||
|
|||
The message validates the header and updates the consensus state with the new
|
|||
height, commitment root and validator sets, which are then stored.
|
|||
|
|||
## ICS 03 - Connection
|
|||
|
|||
## ICS 04 - Channels
|
|||
|
|||
### MsgChannelOpenInit
|
|||
|
|||
A channel handshake is initiated by a chain A using the `MsgChannelOpenInit`
|
|||
message.
|
|||
|
|||
```go
|
|||
type MsgChannelOpenInit struct {
|
|||
PortID string
|
|||
ChannelID string
|
|||
Channel Channel
|
|||
Signer sdk.AccAddress
|
|||
}
|
|||
```
|
|||
|
|||
This message is expected to fail if:
|
|||
|
|||
## ICS 20 - Fungible Token Transfer
|