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 UNI/LINK prices.

the offer you signexample
signer
0x7a3f…c19d
give
up to16,642UNI
receive
filled at5,801.40LINK
may fill
anyone
what you holdthe offer, settled
48 h · realReal hourly UNI/LINK prices from the week of 2026-08-12, drawn as they came in. The offer over them is an example.
filled at hour 24 · 5,801.401 UNI = 0.346618 LINK
Someone filled it at the rate you signed. You hold LINK 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,808

Fill one offer

an executor
  • from your allowance120,520
  • from escrow127,794
  • with a callbackwhyThe executor borrows your tokens, sells them elsewhere, and repays inside the same call. They need no money of their own.135,179

Fill twenty at once

an executor
  • one pair, per offer58,022
  • mixed pairs, per offer65,704
  • the twenty-first offermarginalWhat one more offer adds to a batch already running. This number decides whether a thin margin is worth taking.53,435
  • with callbacks, per offer+518 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.57,367

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,963 gas. These three cost the gas and pay nothing.

  • the offer expired

    Costs 13,711 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,406 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,949 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 sink’s destination9.85 DAI1% of the 984.91 DAI you sign, which is 9.85 DAI. The contract books it to the sink you chose. A sink has one destination, fixed for good, and a separate claim pays all of it there later. Nobody calls it during a fill.
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.
6Gas100 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. ⁦127,794 gas × 783,379 gwei = 100 PLS ≈ $0.00112⁩
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 100 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 100 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,508.76 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 sink’s destination9.85 DAI
the solver17.08 DAIafter gas
gas100 PLS0.001115 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. Three things nobody can do, and where to check each.

  • Nobody can change what you receive.

    Your price is in the offer you sign. Payment is computed from it, your named fee comes out, you get the rest. Rounding favors 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.

    Fee is rate + sink in your signed offer. No rate: nothing charged. We take no share, add none. A sink has one destination and one lowest rate, fixed for good. The owner can add a sink, never change or remove one. Nothing later reaches a signed offer.

    where to check_quote charges i.feeRate and books it to i.feeTo, which _termsOk requires to be a registered sink whose minRate is at most i.feeRate. claim pays feeSinks[i.feeTo].destination. Commit 3961c2a deleted protocolShare, feePolicy, setFees and setFeePolicy.
  • There is no pause and no upgrade.

    No switch reaches your money. Owner powers: send tokens that belong to nobody, and add a sink an offer may name. No owner function spends an allowance you gave.

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

Two paid reviews (security, economics) tried to break the above. Security findings fixed. One economics finding open by design; its test asserts the attack still works. One of eleven measured, accepted, written limits.

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.