Meta Intents
Omni Account employs an ERC-712 signature envelope to encode complex cross-chain intents into a single signature. This signature contains the cross-chain routes and arbitrary call data to be executed on the destination chain, allowing any intent to atomically execute with the cross-chain transfers once funds hit the target chain. From the user's perspective, this is one interaction for any intent that happens instantaneously, as if they have transacted on the same chain where their assets reside.
Meta Intent Detailed Flow Diagram
- The user interacts with an application / wallet to make a transaction. This Meta Intent is sent to the Orchestrator, which responds with an Order Bundle and any required injected executions.
- The user signs the Order Bundle (and any injected executions), which is posted to the Orchestrator.
- The Orchestrator propagates the signed Order Bundle and the Claim Payload (collectively the “Omni Payload” in the chart) to the solver network (Across Relayers).
- The winning solver fills the Meta Intent via the Across Destination Spokepool and includes arbitrary call data to instruct the Omni Account on the Destination Chain to interact with an onchain application (swap, LP, buy NFT, etc).
- The Destination Spokepool forwards the funds and the arbitrary calldata to the Destination Omni Account.
- Omni Account receives funds and processes the calldata to perform destination chain executions.
- The Across Relayer sends the Claim Payload to the Omni Account on the Origin Chain
- Origin Chain Omni Account releases funds to the Origin Chain Spokepool.
- Across Protocol matches the origin chain deposit event with the destination chain prefill event.
Examples
Below, you can see examples of the two core objects that clients of OmniAccount use. The first is the MetaIntent
, which is used to create the initial intent. The second is the SignedOrderBundle
which is the finalized intent that gets sent to the Orchestrator to be filled by relayers.
const metaIntent: MetaIntent = {
targetChainId: 11155420,
tokenTransfers: [
{
tokenAddress: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',
amount: 2n,
},
],
targetAccount: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
targetExecutions: [],
userOp: {
accountGasLimits:
'0x00000000000000000000000000065576000000000000000000000000000a28cd',
callData:
'0xd9ed0e8f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000041675c099f32341bf84bfc5382af534df5c7461a000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff00000000000000000000000000000000000000000000000000000000000001400000000000000000000000007579ee8307284f293b1927136486880611f20002000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b78f19946b878eeccd0f5dbe1cd99e6f00753827000000000000000000000000000000000000000000000000000000000000038415cca6380000000000000000000000007579ee8307284f293b1927136486880611f2000200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede5100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a90f831363708b32a3f1502165253e0210cf680d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a90f831363708b32a3f1502165253e0210cf680d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000803a5be8cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d0000000000000000000000008a310b9085faf5d9464d84c3d9a7be3b28c9453100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002483da3a338895199e5e538530213157e931bf0600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b78f19946b878eeccd0f5dbe1cd99e6f0075382700000000000000000000000000000000000000000000000000000000000003e4e9ae5c530100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede5100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018467277f95000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000679a196a0000000000000000000000005fd84259d66cd46123540766be93dfe6d43130d70000000000000000000000008a310b9085faf5d9464d84c3d9a7be3b28c9453100000000000000000000000000000000000000000000000000000000000000004e491bc8f3c10e5d54f7325011b39ce9ed48762d60e96b4def69dfcbd70878b70000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede51000000000000000000000000000000000000000000000000000000000000004163865951bec03f8f22858deb66b921c01dde9d74a2862d3489ced8ec1078ab4430d043b131f755774a9b4f38d1a75846bfbe71662ad46c4715d9769bf97ef0f31b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fd84259d66cd46123540766be93dfe6d43130d7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa9604500000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
initCode:
'0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec671688f0b90000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000844fff40e164ae0962cd7626584923f878d00a7679da2f043664b59f8c7fb4858a5d2bdf5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
gasFees:
'0x0000000000000000000000000010c8e00000000000000000000000000010ca32',
nonce:
16516225664291178990882509495406907701463033268145267606555553463177186377728n,
paymasterAndData:
'0x0000000000000039cd5e8aE05257CE51C473ddd10000000000000000000000000000ea6000000000000000000000000000004e20000000679a1bc3000000000000e9e9e384b07af950046c7b162275de1bb2e8aee24f6d4a38e245545cfa2c504a00a6714fa669a9292c039bcb3ffe88591a622de6710bca2f79b594541796be721c',
preVerificationGas: 425387n,
sender: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
signature:
'0x01afb75d71005f82cfb4ef4bb2f2289adf0b24e5f2579e96f8127098d22e904a5c8aa5a07c89ec7a4f5cd76a0b04ebd6c2caebc63d6f2406a11d4f9172b803531c',
},
}
const signedOrderBundle: SignedOrderBundle = {
settlement: {
orchestrator: '0x8a310b9085faF5d9464D84C3d9a7BE3b28c94531',
recipient: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
settlementContract: '0x20038b572633E45F3aB5b1a46CB85D0D241b80D8',
targetChainId: 11155420,
fillDeadline: 1738152417,
lastDepositId:
'105405913354356643216620936582641520508443801435124451135568189572898599948141',
},
acrossTransfers: [
{
originModule: '0xE1058634834E01038CadbaE8208BFfF81B1Ede51',
originAccount: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
targetAccount: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
originChainId: 84532,
initiateDeadline: 1769688298,
maxFee: '0',
depositId:
'105405913354356643216620936582641520508443801435124451135568189572898599948141',
originTransfer: [
{
tokenAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
amount: '2',
},
],
targetTransfer: [
{
tokenAddress: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',
amount: '2',
},
],
userSignature:
'0x2483da3a338895199e5e538530213157e931bf06705444f371ded295663f88c5fdf4136e0c7fc2bc57640d58a808d911846f1d0c77fe0270830a69e4adf71c2b08b5924547bf9aca0d0856b772500d823cd518d51c',
},
],
targetChainExecutions: { executions: [] },
userOp: {
accountGasLimits:
'0x00000000000000000000000000065576000000000000000000000000000a28cd',
callData:
'0xd9ed0e8f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000041675c099f32341bf84bfc5382af534df5c7461a000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff00000000000000000000000000000000000000000000000000000000000001400000000000000000000000007579ee8307284f293b1927136486880611f20002000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b78f19946b878eeccd0f5dbe1cd99e6f00753827000000000000000000000000000000000000000000000000000000000000038415cca6380000000000000000000000007579ee8307284f293b1927136486880611f2000200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede5100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a90f831363708b32a3f1502165253e0210cf680d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a90f831363708b32a3f1502165253e0210cf680d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000803a5be8cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d0000000000000000000000008a310b9085faf5d9464d84c3d9a7be3b28c9453100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002483da3a338895199e5e538530213157e931bf0600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b78f19946b878eeccd0f5dbe1cd99e6f0075382700000000000000000000000000000000000000000000000000000000000003e4e9ae5c530100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede5100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018467277f95000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000679a196a0000000000000000000000005fd84259d66cd46123540766be93dfe6d43130d70000000000000000000000008a310b9085faf5d9464d84c3d9a7be3b28c9453100000000000000000000000000000000000000000000000000000000000000004e491bc8f3c10e5d54f7325011b39ce9ed48762d60e96b4def69dfcbd70878b70000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000e1058634834e01038cadbae8208bfff81b1ede51000000000000000000000000000000000000000000000000000000000000004163865951bec03f8f22858deb66b921c01dde9d74a2862d3489ced8ec1078ab4430d043b131f755774a9b4f38d1a75846bfbe71662ad46c4715d9769bf97ef0f31b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fd84259d66cd46123540766be93dfe6d43130d7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa9604500000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
initCode:
'0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec671688f0b90000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000844fff40e164ae0962cd7626584923f878d00a7679da2f043664b59f8c7fb4858a5d2bdf5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
gasFees:
'0x0000000000000000000000000010c8e00000000000000000000000000010ca32',
nonce:
16516225664291178990882509495406907701463033268145267606555553463177186377728n,
paymasterAndData:
'0x0000000000000039cd5e8aE05257CE51C473ddd10000000000000000000000000000ea6000000000000000000000000000004e20000000679a1bc3000000000000e9e9e384b07af950046c7b162275de1bb2e8aee24f6d4a38e245545cfa2c504a00a6714fa669a9292c039bcb3ffe88591a622de6710bca2f79b594541796be721c',
preVerificationGas: 425387n,
sender: '0xC104087121E4fb804dcAae62DC20A154E4BcB0c5',
signature:
'0x01afb75d71005f82cfb4ef4bb2f2289adf0b24e5f2579e96f8127098d22e904a5c8aa5a07c89ec7a4f5cd76a0b04ebd6c2caebc63d6f2406a11d4f9172b803531c',
},
targetExecutionSignature: '0x',
}
Lazy Deployment Flow Diagram
If Ethereum’s horizontal scaling strategy plays out as expected, the first time a user interacts with an onchain app will likely be their first interaction with a new chain. Therefore, a scalable Chain Abstraction system must enable instant cross-chain intents even if the user does not have an account on the destination chain. Omni Account provides this functionality with a just-in-time deployment flow via the ERC-4337 entrypoint contract. With one signature, the user authorizes the intent and the deployment of the Omni Account. The solver fronts the gas for deployment and fills the intent all in one!
Omni Account enables instant and atomic cross-chain intents, even when the user does not have a Smart Account on the destination chain. When the Relayer fills the Meta Intent, a userOp payload is included, which is handled by a trampoline contract that deploys the account via the ERC-4337 EntryPoint contract.
When the user’s Smart Account is deployed on the new destination chain, the Omni Account Modules are initialized, and the injected execution is executed. This initialization ensures that any assets held on the new chain are also Chain Abstracted and ready to be used on any other network.