From e29182529a2e65a4d70903628e52b0b5f0d9658c Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 5 Nov 2025 12:48:36 +0100 Subject: [PATCH] Oracleless intents for same-chain swaps --- src/lib/config.ts | 2 +- src/lib/libraries/intent.ts | 6 ++++-- src/lib/screens/IssueIntent.svelte | 25 ++++++++++++++++++------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/lib/config.ts b/src/lib/config.ts index 0d97def..def9fb7 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -211,7 +211,7 @@ export const polymerChainIds = { optimismSepolia: optimismSepolia.id } as const; -export type Verifier = "wormhole" | "polymer"; +export type Verifier = "wormhole" | "polymer" | "samechain"; export function getCoin( args: diff --git a/src/lib/libraries/intent.ts b/src/lib/libraries/intent.ts index 894226e..aaeb269 100644 --- a/src/lib/libraries/intent.ts +++ b/src/lib/libraries/intent.ts @@ -82,9 +82,11 @@ export class Intent { inputs.push([inputTokenId, inputAmounts[i]]); } + const sameChain = inputTokens[0].chain === outputToken.chain; + const outputSettler = COIN_FILLER; - const outputOracle = getOracle(verifier, outputToken.chain)!; - const inputOracle = getOracle(verifier, inputChain)!; + const outputOracle = sameChain ? outputSettler : getOracle(verifier, outputToken.chain)!; + const inputOracle = sameChain ? outputSettler : getOracle(verifier, inputChain)!; // Get the current epoch timestamp: const currentTime = Math.floor(Date.now() / 1000); diff --git a/src/lib/screens/IssueIntent.svelte b/src/lib/screens/IssueIntent.svelte index 911b78f..74e91aa 100644 --- a/src/lib/screens/IssueIntent.svelte +++ b/src/lib/screens/IssueIntent.svelte @@ -234,13 +234,24 @@ -
- Verified by - -
+ {#if outputToken.chain === inputTokens[0].chain} +
+ Verified by + +
+ {:else} +
+ Verified by + +
+ {/if}
Exclusive For