prove.cash
signed swap offers · pulsechain

Name your rate.The marketcomes to you.

prove.cash is an order book for swaps on PulseChain. You post an offer at your rate. It stays open until someone takes it. No pool price, no slippage, no transaction from you.

It fills at your rate or better, or not at all. You can let the rate fall over time to a floor: the least you will accept. You can also let it fill in parts.

How it works

An example signed offer, drawn over real LINK/AAVE prices.

the offer you signexample
signer
0x7a3f…c19d
give
up to3,092LINK
receive
filled at311.833AAVE
may fill
anyone
what you holdthe offer, settled
48 h · realReal hourly LINK/AAVE prices from the week of 2026-08-12, drawn as they came in. The offer over them is an example.
filled at hour 29 · 311.8331 LINK = 0.111922 AAVE
Someone filled it at the rate you signed. You hold AAVE now, so the green line follows the market.
You sign this. You send nothing.Costs 1 signature and 0 transactions
  • You receive at least what you asked for

    The contract holds whoever fills your offer to the number you signed, and rounds in your favour. If you add a fee, the app raises the amount you sign to cover it. You still receive what you asked for.

  • Anyone can fill it

    No allowlist, no bond, no registration. Whoever fills your offer pays the gas. They keep whatever the market gives above the number you signed.

  • Posting costs no gas

    Your browser does a moment of work to post it. No gas, no transaction, no sign-up.

how

How it works

  • you

    Sign the offer

    Take up to this much of one token, deliver at least this much of another, inside this window. That is the whole commitment.

  • the board

    Carries the offer

    The offer travels over a message board, not the chain. Posting costs your browser a moment of work. No transaction, no gas, no account.

  • anyone

    Fills it

    No allowlist, no bond, no registration. Whoever fills it is the executor. They pay the gas and the number you signed, and keep whatever the market gives above that.

What you sign depends on your token

There are five ways your tokens can move at the fill. The app reads your token and picks the cheapest one it supports, so the choice is not yours to get wrong.

  • EIP-30092 signaturesThe token can move on a signature alone. You never send a transaction, and nothing is approved in advance.
  • EIP-2612 permit2 signaturesTwo signatures. Your tokens stay in your wallet until the moment someone fills.
  • Permit22 signatures, 1 tx onceApprove Permit2 once. Its address is the same on every chain, and its code cannot change. Every offer after that is two signatures, and your token needs no special support.
  • an allowance1 tx, onceApprove the contract once. Every offer after that is one signature.
  • escrow1 txDeposit up front. It costs a transaction, and in exchange the offer is funded, so an executor can trust it on sight.
custody

Where your tokens sit.

An offer is only as strong as what backs it.

  • authorization

    funded at fill

    The tokens stay in your wallet. Your signed authorization moves them into the contract at the moment of the fill.

    you spend
    Costs 2 signatures and 0 transactions
    off switch
    validBeforeYour signature moves the tokens at the moment of the fill, and it is tied to this one offer. Its expiry is part of the signature. A cancel on chain ends it at once.
  • escrow

    in escrow

    The tokens sit in the contract, committed to this one offer, until you withdraw them.

    you spend
    Costs 1 signature and 1 to 2 transactions
    off switch
    withdraw · 1 txOne withdraw returns your money and ends the offer. No cooldown, no unlock step, no window to miss. An offer you never funded is different: somebody else can fund it from money already parked in your name. Cancel the ones you do not want.
  • permit2

    funded at fill

    The tokens stay in your wallet. Your signed Permit2 transfer moves them into the contract at the moment of the fill, once and once only.

    you spend
    Costs 2 signatures and at most 1 transaction
    off switch
    deadlineA Permit2 transfer works once and expires with the offer. No standing allowance to us survives it. Your one approval goes to Permit2 itself, at an address we cannot move. A cancel on chain ends the offer at once.
  • permit

    in wallet

    The tokens stay in your wallet under an allowance. A second signature sets that allowance, so you send no transaction. You can still spend the tokens before the fill, and then the fill fails.

    you spend
    Costs 2 signatures and 0 transactions
    off switch
    cancel · 1 txA permit is an allowance set by a signature, so it costs no transaction. It is still an allowance. Revoking it does not end the offer, because your signed permit sets it again at the next fill. Cancel is the off switch. A stranger who spends your permit first cannot stop the fill.
  • approval

    in wallet

    The tokens stay in your wallet under an allowance. You can spend them before the fill, and then the fill fails.

    you spend
    Costs 1 signature and at most 1 transaction
    off switch
    cancel · 1 txRevoking the approval happens on the token, where the contract cannot see it. It stops a fill but does not cancel the offer. Approve that token again later and the offer comes back to life. Only cancel ends it, and it costs one transaction.
in escrow · the contract holds themfunded at fill · signed for this offer onlyin wallet · spendable elsewherecancellingA cancel is one transaction. It cannot undo a fill that landed in an earlier block. Deleting the post is not a cancel: the signature outlives the post.
cost

The whole bill.

Measured gas, not estimates. Posting is free. Whoever fills your offer pays the rest.

The usual case. The receiving balance already holds some of the token.

Post an offer

you
  • sign it and put it on the boardproof of workThe board asks your browser for a moment of work instead of money. No gas, no transaction, no sign-up.0

Fund it with escrow

you
  • deposit, so the offer is fundedfirst touchFunding an empty escrow is always a first touch, so it has no warm price. It is optional: an allowance costs nothing up front.124,790

Fill one offer

an executor
  • from your allowance117,824
  • from escrow125,098
  • with a callbackwhyThe executor borrows your tokens, sells them elsewhere, and repays inside the same call. They need no money of their own.132,591

Fill twenty at once

an executor
  • one pair, per offer57,349
  • mixed pairs, per offer65,030
  • the twenty-first offermarginalWhat one more offer adds to a batch already running. This number decides whether a thin margin is worth taking.52,870
  • with callbacks, per offer+504 creditBorrowing inside a batch costs a little extra on every offer. The figure is the difference: one more offer with a callback, less one more without. It is too small to see on these bars.56,682

On mainnet a warm fill costs a fraction of a cent. The executor pays it, and keeps whatever the market gives above the number you signed.

solvers

A stranger pays your gas. Here is what they get for it.

Nobody pays a stranger’s gas out of kindness. You are the maker. Whoever fills your offer is the solver. They earn the gap between what the market pays and the number you signed. That is their whole income, and this is what it costs them to chase it.

what they lose

A solver pays gas for every offer they try, and learns afterwards which ones filled. A fill costs 62,481 gas. These three cost the gas and pay nothing.

  • the offer expired

    Costs 13,327 gas

    The offer expired between the moment they priced it and the moment the block landed. The contract refuses it before any token moves, so this is the cheap one.

  • somebody else was faster

    Costs 14,070 gas

    Another solver filled the same offer first. This is normal on an open board: two solvers reading it will overlap, and the slower one pays for the duplicate.

  • the maker took it back

    Costs 76,376 gas

    The offer was good when the solver checked it. Then the maker pulled the money out before the block landed. This is the only failure somebody can arrange on purpose, and each attempt costs the maker a transaction. An offer that was never good is caught before anything is sent, and costs nothing.

what they earn

What is left over, and nothing else. We charge them no fee and give them no rebate, no priority and no queue. They pay the gas. They pay the number you signed. They keep whatever is left. Your fee comes out of the number you signed, not out of the solver’s share. If nothing is left, they lose the gas.

why that is safe for you

  • They cannot earn more by giving you less.

    Your price is in the signature. The contract charges the solver that number, whatever the market does. They can earn more only by finding a better price, never by passing you a worse one.

  • Anyone can be one.

    No allowlist, no bond, no registration, no stake. A solver is any address that sends the transaction. Nobody can be shut out, and nobody can be locked in.

  • Competition is what fills your offer.

    Solvers do not bid your price down. You set it. They compete on how thin a margin they will accept. The thinner it gets, the more offers fill at the rate their makers wanted.

split

Where the money goes

One fill

open a step for the arithmetic
1You sell89,782,234 WPLSThe solver pulls 89,782,234 WPLS from your wallet, about $1,000. Your signature allows it. You send no transaction.
2PulseX pool1,007.10 DAIThe solver sells your tokens here. At the price on screen the swap is worth 1,007.10 DAI. The pool keeps 0.29%, and a trade this size moves the price by 0.219%. So 1,001.99 DAI comes out, and the next four ribbons divide it.
2PulseX keeps5.11 DAIThe pool’s 0.29%, plus what a trade this size leaves behind in the reserves. It is the solver’s cost of turning one token into another, and it touches nothing you signed. Of that cut, 0.704971 DAI goes to the PulseX buy-and-burn and is destroyed as PLSX (7/29). We read that from the verified pair source and have not yet checked it against a mint on chain.
3You receive975.06 DAIWhat lands in your wallet: 975.06 DAI. It is the 984.91 DAI the offer asks at this moment, less your fee at 1%. Nothing else comes out of it, and it is never below the number you typed.
4The address you named9.85 DAI1% of the 984.91 DAI you sign, which is 9.85 DAI. The contract sets it aside for the address you named. Nobody calls that address during a fill. A separate claim pays it out later, and whoever sends that claim pays its gas.
5The solver17.08 DAIWhat the solver walks away with: 17.08 DAI. It is the sale proceeds, less what they paid you, less gas. Nothing on chain computes it, and it is the one number that decides whether anyone fills at all.
6Gas98.0 PLSThe solver pays it in PLS, a third asset. It does not grow with your trade, which is why there is a smallest trade worth filling. The gas count comes from the contract’s own tests. The gas price is the slider above, and the sum shows what it does to the margin. ⁦125,098 gas × 783,379 gwei = 98.0 PLS ≈ $0.00109⁩
settles to a persona feegas, paid by the solvercannot profitably fill

What the executor pays, over the window

The offer opens above what the pool pays today and falls until it closes: from 1,005.17 DAI down to 964.65 DAI over 24h 0m. Both are amounts you sign. Take the fee out of the closing number and you have the floor you typed. The dashed lines are the same offer with no fee and with a two per cent fee: one typed number, three signed amounts. Each dot is where that offer meets the market in the week drawn here, after gas. Another week puts the dots somewhere else.
24 real hours of WETH/WBTCReal hourly prices, not a simulation: 24 hours of WETH/WBTC, from hour 0 of the sampled week. The moves are real, but the pair is not the one you chose: none of the tokens on this page is in that series. Draw another week to see the shape change.
984.91 DAI$984.91 · 12h 0m in
0% · 3h 36m1% · 4h 24m2% · 5h 36m
profitable12h 0m
A solver keeps 17.08 DAI here, after 98.0 PLS of gas.Your offer at 12h 0m pays you 975.06 DAI, which is 20.06 DAI above your floor.
fillsArithmetic, not a term of the offer: the moment the curve falls below what the market pays now, less gas. The market pays 1,001.99 DAI, so the offer has to reach 1,001.99 DAI. That moment moves when the market or gas moves, and nobody knows the market will hold.now
break-even sizeThe smallest trade a solver still fills, at this moment and this market. Gas is fixed at 98.0 PLS, while the spread grows with the size. Below this size, gas eats the margin. It uses the same moment and market as the bar below, so the two agree.5,392.55 WPLS
SpreadWhat the market pays, less what you receive: ⁦1,001.99 DAI − 975.06 DAI = 26.93 DAI⁩. It splits three ways and no further. Only your fee rate moves the first boundary. Only gas moves the second.26.93 DAI2.69% of the trade
the address you named9.85 DAI
the solver17.08 DAIafter gas
gas98.0 PLS0.001092 DAI

You pay the fee, out of the amount you sign. A higher fee makes the offer fill later. That is all a fee costs you.

limits

What nobody can do to you

You signed something. Here are three things it lets nobody do, and where each one is written down.

  • Nobody can change what you receive.

    Your price is in the offer you sign. The contract works out the whole payment from that number, takes the fee you named out of it, and pays you the rest. Where the arithmetic has to round, it rounds towards you.

    where to check_quote rounds the gross up with _ceilDiv, rounds the fee down out of it, and pays you the rest.
  • There is no fee to us, and no switch to add one.

    The fee is two numbers in the offer you sign: a rate, and where it goes. Name nowhere and nothing is charged. We take no share of it and add none of our own. The code that could charge one is deleted, so no owner can switch it on. A fee to us would need a different contract at a different address, and your signature is bound to this one. Nothing decided later reaches an offer you already signed.

    where to check_quote charges i.feeRate and books it to i.feeTo, and claim pays it out from there. Commit 3961c2a deleted feeSink, feeFloorRate, protocolShare, feePolicy, setFees and setFeePolicy.
  • There is no pause and no upgrade.

    No switch anywhere reaches your money. The owner can choose where tokens that belong to nobody are sent. That is the entire list. No owner function can spend an allowance you gave.

    where to checksetDefaultProceeds and transferOwnership are the only owner-gated functions.

Two people were paid to try to break the above: a security review and an economics review. Every finding from the security review is fixed. One economics finding stays open by design, and its own test asserts that the attack still works. It is one of eleven limits we measured, accepted and wrote down.

Sign one and see.

Give us an address and we mark the tokens it has already moved on this chain. Pick one and the app opens with it selected. You still set your price, and you see every cost before you sign anything.

Or start with any of these.

Wrapped PulsePulseXHEXTest PulseXTest HEXTest USD CoinTest Tether USDTest Wrapped BitcoinTest Wrapped Ether
No email, no sign-up, no account. A lookup sends the address to a server we run and reads its public history. It asks for no signature, and your key never leaves your wallet.