OTC
OTC is for trading directly with someone you know, or one person you pick: your ghost signs an offer, you send it as a link, and they take it from one of their ghosts. The trade settles in one transaction through GhostOTC, a small contract with no owner, no fee and no upgrade path. Nothing is posted before it settles: no order book, no quote anyone else can read.
Making an offer
- 1Pick the ghost and the two legs
Open OTC under Private and press Make an offer. Pick the ghost that sells, what it sells (USDG or a stock it holds) and how much, then what it wants back and how much. The sheet shows what both legs are worth at market prices.
- 2Choose who can take it
Anyone with the link, or one address only: paste it and the contract refuses every other taker. Then how long the offer stays open: an hour, a day or a week.
- 3Sign, then send the link
The ghost allows Permit2 to move that token once, if it never has, then signs the offer: a Permit2 transfer of what it sells whose witness is the whole offer. The offer itself is not sent anywhere. The link (
ghostdex.app/app/otc#o=…) carries the offer and the signature after the #, so no server reads it.
Taking an offer
Open the link: the sheet shows both legs, who made it, until when, and the price against the market. Pick the ghost that pays (it must hold what the maker asks for). It approves GhostOTC for exactly that amount, then sends one transaction: the maker's tokens go to your ghost and yours go to theirs, or nothing moves at all.
Cancelling
Until someone takes it, your offer waits under Your offers with Copy link and Cancel. Cancelling uses the offer's Permit2 nonce, so the signature can never be used again. An offer also ends at its deadline, and works only once.
Before it settles, an offer exists only in your tab and in the link. Once it settles, the trade is public like any trade: two ghosts and the amounts they swapped. Whoever holds the link can take an open offer, so send it only to the person it is for, or name their address.
The contract
| Contract | Address |
|---|---|
| GhostOTC | 0x2DdFb6221A7b6D9846Db1623ccC4A7b15b92C0C7 |
| Permit2 (Uniswap) | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
- GhostOTC has one function that moves anything,
fill, and it moves only what a maker signed, to the taker, against what the maker asked for, in the same transaction. - No owner, no pause, no fee, no upgrade. Verified on Sourcify. Tested against the real Permit2 on a Robinhood Chain fork (eight tests), not audited.