a scatter gather chain abstraction first wallet. a form of unified tokens wallet.
Metu is an iOS smart wallet application designed to abstract away the complexities of multi-chain interactions using EIP-7702 and Intent-Based Architectures. It allows users to control their funds across multiple blockchains using a single, secure identity (Passkey) and a unified user interface, treating the entire crypto ecosystem as a single synchronous network.
Metu isn't another wallet wrapper; it's a Universal Intent Execution Engine running on iOS. We didn't want to build a "multi-chain wallet" where users manually bridge and swap. We wanted a synchronous, unified experience where the user just executes an action and the protocol figures out the rest/ sources the funds.
RouteComposer & The Global Accumulator Complex cross-chain actions are orchestrated by the RouteComposer (found in our Compose package). It breaks down a user's high-level intent into a DAG of chain-specific actions.
The "Global Accumulator": This is our deterministic smart contract that acts as a clearinghouse. It is bound to a unified token account to validate intents globally. When you want to bridge-and-swap, the Accumulator is the target recipient on the destination chain. It receives the funds + a signed message payload instructing it what to do next.
To achieve this, we had to get creative with EIP-7702 and a custom Global Accumulator architecture.
Cross-Chain Pairing: Across + Li.Fi We built a specialized routing pipeline that pairs Across V3 with Li.Fi:
Li.Fi serves as our aggregation layer. It scans DEXs and bridges to find the optimal swap routes and calldata. Across V3 provides the settlement speed. Because Across uses intent-based bridging (resolvers front capital), we can execute "fast exits" where the resolver fills the user's request on the destination chain almost instantly.
The Flow: Source: RouteComposer uses Li.Fi to swap Token A → Bridge Token (if needed). Bridge: We initiate an Across V3 deposit with a custom message payload targeting our Accumulator. All participating chains i.e fund sources execute this payload. Destination: The Accumulator receives the funds + message from the sources, validates the intent hash, and accumulates incoming funds until it is certain all participating chains has deposited. If output token is needed, the accumulator executes a lifi action on the destination and forwards the accumulated funds to the target.
ENS as a Primitive We didn't stop at a resolver on a text field. ENS is baked into the validation logic as a first-class citizen. We implemented a custom ENSService that performs just-in-time resolution during the intent construction phase.
Tech Stack Language: 100% Swift (No React Native). UI: SwiftUI with a reactive, component-driven architecture. State Management: Observation framework (Swift 5.9+). Modules: We structured the app into distinct packages (RPC, AA, Compose, Account) to keep the "crypto plumbing" strictly separated from the UI logic.

