STABLE HOP mark

Arc Hackathon · DeFi

FX payments that wait for the right rate.

STABLE·HOP locks USDC on Arc and settles a EUR invoice only when Pyth confirms the payer's limit.

The problem

A cross-currency invoice forces a bad choice.

01

Pay now

Accept today's rate even when it breaks the budget.

02

Wait manually

Keep the recipient uncertain while someone watches FX.

03

Trust a desk

Hand control and custody to a centralized intermediary.

The product

One payment product. Three useful surfaces.

01PayRate-conditioned settlement on Arc
02ConvertMento FX on Celo
03RequestPayment link or QR

Rate-protected Pay

The payment executes only when every rule passes.

1

Fund

One transaction locks native USDC on Arc. No approval.

2

Verify

A fresh signed Pyth EUR/USD update reaches the contract.

3

Settle

The recipient receives the exact current USDC value.

4

Refund

Unused USDC returns to the payer. Expired payments unwind.

Contract proof

The rules live onchain, not in our backend.

if (priceAge > 30 minutes) revert;
if (currentRate > maxRate) revert;

recipientUsdc = euroAmount × currentRate;
refund = maxUsdc - recipientUsdc;

sendNative(recipient, recipientUsdc);
sendNative(payer, refund);
0admin keys
30mmaximum price age
10/10Foundry tests passing

Why Arc

Arc makes programmable dollars feel like a payment product.

USDC

One unit of account

The payment and network fees use the same dollar asset.

EVM

Inspectable rules

A compact Solidity contract controls every settlement condition.

Pyth

Market-triggered action

Signed FX data turns a passive escrow into programmable money.

STABLE·HOP

We built the missing payment primitive for rate-sensitive commerce.

Next: more invoice currencies, CCTP funding, automated settlement, and a production audit.