Architecture

MOA‑Fi follows the KISS (Keep It Simple, Stupid) principle in protocol design, based on the belief that simplicity leads to greater robustness, security, and ease of maintenance.

As part of this philosophy, we've minimized reliance on trusted third parties and external infrastructure. The protocol consists of a streamlined suite of on‑chain contracts on Solana, complemented by lightweight off‑chain relayers—used solely to forward CCTP attestations, as Circle’s CCTP does not provide native relayer infrastructure.

By keeping the architecture lean and minimizing trust assumptions, MOA‑Fi ensures a more secure, auditable, and resilient system for cross‑chain yield sourcing.

Components

The entire protocol consists of two core contracts:

  • Withdraw Requester (on Solana)

  • Endpoint (on a supported EVM chain)

Note: There exists an individual Endpoint contract on every chain that MOA‑Fi supports.

Off‑chain components include a relayer service that broadcasts user transactions once Circle signs an attestation. This is a permissionless service; anyone can run their relayer on MOA‑Fi.

Deposit Flow

1

Step

User approves Circle's message transmitter.

2

Step

User calls depositForBurnWithHook() on the TokenMessenger contract with hook data containing relevant deposit information.

Note: Any insufficient hook data could result in permanent loss of funds. So, please consider using the MOA‑Fi frontend for hook data generation till the launch of the SDK.

3

Step

Your funds will be transferred into an EVM vault. Please wait for a minute for the relayers to complete the transaction.

4

Step

Relayers have no control over user funds and act only as a transaction forwarder by paying the necessary gas costs on the chain where the vault exists.

Withdrawal Flow

1

Step

The withdraw flow is stateless. When initiating a withdrawal request, the protocol does not validate any parameters and sends a CCTP message optimistically.

2

Step

User requests a withdrawal on the WithdrawRequester program, specifying the target vault details and the amount of vault shares to withdraw.

3

Step

This sends a CCTP message to the Endpoint contract.

4

Step

A relayer will submit the attestation to the Endpoint contract, which will withdraw the funds from the vault and send the USDC back to the user's wallet on Solana.

Users can always deposit and withdraw funds to and from Solana. Since the protocol uses CCTP, there's no bridging slippage or other losses.