Venues

Polymarket

Buy Yes or No on any Polymarket event from a Deposit Wallet nobody has seen before, one market per wallet.

umbra-trade.vercel.app
A Polymarket event in Umbra Trade: the event title, its chance, the odds chart over one month, the outcomes, and on desktop the ticket beside it.
Umbra Trade workflow illustration — not a live balance or transaction receipt.
A Polymarket event in Umbra Trade: the event title, its chance, the odds chart over one month, the outcomes, and on desktop the ticket beside it.
Umbra Trade workflow illustration — not a live balance or transaction receipt.
You tradeAny outcome on Polymarket's book: Yes/No and multi-outcome events
The walletA Polymarket Deposit Wallet for a fresh signer key, one market per wallet
Funded withUSDC, credited as pUSD by Polymarket's bridge
Codepackages/venues/src/polymarket, apps/web/src/features/polymarket

Set up

Polymarket's official TypeScript SDK runs in its own Web Worker whose only network is the sealed fetch. The Deposit Wallet's address is known before it exists (it is derived from the signer), so Polymarket's bridge can give it a deposit address before it is deployed; the wallet is deployed and approved gasless through Polymarket's relayer on its first trade. The builder secret that authorises those relayer calls stays on the gateway, which signs only Deposit Wallet calls.

Funding

One standard amount of ZEC goes to a NEAR Intents deposit address, with a fresh shielded refund address.

NEAR delivers USDC to the wallet's Polymarket bridge address: on Polygon, or on Arbitrum or Base when NEAR has no Polygon route at that moment.

The bridge credits pUSD to the Deposit Wallet. The wallet is ready when the bridge reports it complete.

Trading

A Polymarket event on a phone: the odds chart and the pinned Yes and No buttons above the dock.
Umbra Trade workflow illustration — not a live balance or transaction receipt.
The Polymarket ticket sheet on a phone: Buy, Market, the Yes and No prices, an amount on the keypad, and the button to fund a private wallet.
Umbra Trade workflow illustration — not a live balance or transaction receipt.
  • Buy or sell any outcome at market (fill-and-kill, within two ticks of the estimate) or with a limit (good till cancelled); cancel open orders; redeem winning shares after the market resolves.
  • One market per wallet. Adding to a position or selling it stays on the wallet that holds it; a new market takes a ready wallet that has never traded, or asks you to fund one.
  • No builder code on orders (packages/venues/src/polymarket/account.ts).

Coming home

Send home cancels open orders, redeems resolved shares, sells the rest at market and brings any Perps money back first. The pUSD then leaves through a one-time bridge withdrawal that pays a NEAR deposit address in USDC on Polygon, and NEAR swaps it to ZEC at a fresh shielded address. Under 1 pUSD stays behind as dust. If NEAR refunds the trip home, the money returns to the Deposit Wallet as USDC on Polygon; the next Send home sends it through the wallet's own bridge address, back into pUSD, and out with the rest (the bridge takes $2 or more).

Not in NEAR's confidential mode

This is the one swap Umbra Trade can't make confidential: the bridge pays out an inexact amount, which needs a flexible-input quote, and 1Click offers no confidential mode for those. NEAR's record pairs that payout with the fresh shielded address it goes to.

Public on purpose

Each wallet's relayer calls (creating it, its approvals, redeeming, moving pUSD into Perps, the trip home) are attributed to Umbra Trade's builder profile. Polymarket can tell these come from Umbra Trade users, and when, not which one.

On this page