Interchain Messaging Facility (ICMF)
ICMF is a solution for enabling communication between different blockchains. It operates without the need for user intervention. Messages, which can be any form of data, are encoded as GTV and transmitted through special transactions to the receiving chains. It enables chains to securely and reliably notify a target chain about transactions that have occurred on a source chain while ensuring the validity of the involved blocks.
Imagine a scenario where a user desires to transfer an asset from one chain, let's call it Chain A, to another, Chain B. With ICMF, this process becomes streamlined. The user initiates a transaction on Chain A, signaling the asset transfer. The relevant information about this transaction is then broadcasted through a message on a predefined topic that Chain B is actively listening to.
This mechanism is analogous to leaving a notification in a mailbox. The sender chain embeds a message indicator in its block header, alerting the receiver chain that there's a message to retrieve. The receiver chain, in turn, actively checks for new messages at its own pace.
For each message sent by a chain at a specific height, the hash of the message body gets included in the block header of the sender's chain at that particular height. These hashes are grouped based on their respective topics. Upon retrieval of messages, the receiver chains not only fetch the messages themselves but also the corresponding block headers and witnesses from the relevant block heights where the messages were transmitted.
Subsequently, the receiver chain follows a two-step validation process. Initially, it verifies the block headers' authenticity by checking the signatures within the witness data. Following this, the receiver chain validates the messages by comparing the message bodies to the associated hashes present in the block header.
Interchain Confirmation Facility (ICCF)
ICCF is a mechanism that enables cross-chain communication and confirmation between different blockchains using a client. It allows a user to prove that a transaction has taken place on one blockchain and has been anchored through multiple levels of anchoring chains, and then present this proof to the target blockchain.
ICCF operates based on a multi-step verification process:
Transaction verification on the source chain (S): ICCF verifies that the transaction has been confirmed within a block on the source chain.
Cluster anchoring chain verification: ICCF checks that the block from the source chain has been anchored in the cluster anchoring chain of the cluster where the source chain (S) is running.
System anchoring chain verification: ICCF then validates that the block in the cluster anchoring chain (from step 2) has also been anchored in the system anchoring chain.
Once these verifications are successfully completed, ICCF generates a proof that the transaction has occurred and has been securely anchored. This proof can then be presented to the target chain (T) for further action.