State transitions
Send fungible tokens
A successful fungible token send has two state transitions depending if the transfer is a movement forward or backwards in the token's timeline:
-
Sender chain is the source chain, i.e a transfer to any chain other than the one it was previously received from is a movement forwards in the token's timeline. This results in the following state transitions:
- The coins are transferred to an escrow address (i.e locked) on the sender chain.
- The coins are transferred to the receiving chain through IBC TAO logic.
-
Sender chain is the sink chain, i.e the token is sent back to the chain it previously received from. This is a backwards movement in the token's timeline. This results in the following state transitions:
- The coins (vouchers) are burned on the sender chain.
- The coins are transferred to the receiving chain through IBC TAO logic.
Receive fungible tokens
A successful fungible token receive has two state transitions depending if the transfer is a movement forward or backwards in the token's timeline:
-
Receiver chain is the source chain. This is a backwards movement in the token's timeline. This results in the following state transitions:
- The leftmost port and channel identifier pair is removed from the token denomination prefix.
- The tokens are unescrowed and sent to the receiving address.
-
Receiver chain is the sink chain. This is a movement forwards in the token's timeline. This results in the following state transitions:
- Token vouchers are minted by prefixing the destination port and channel identifiers to the trace information.
- The receiving chain stores the new trace information in the store (if not set already).
- The vouchers are sent to the receiving address.