25 tokenized equity markets
Every print,
settled onchain.
Ponstocks is a trading terminal for tokenized shares. A real order book with price-time priority, a ticket that quotes the same rules the engine executes, and settlement that lands in a vault only you can withdraw from.
- Matching
- Price-time priority
- Fees
- 6 / 10 bps maker-taker
- Settlement
- EIP-712, onchain
Real market prices · synthetic depth · local chain · not audited
How a trade works
Three steps, and you can audit every one of them
- 01
Deposit into the vault
Approve the exact amount — never an unlimited allowance — then deposit. The vault tracks what is available and what is locked against working orders, separately. There is no admin path to a customer balance, and withdrawals cannot be paused.
TradingVault.deposit() - 02
Sign the order
Orders are EIP-712 typed data signed in your wallet: market, side, price, quantity, nonce, expiry. Signing authorises that order and nothing else. The engine matches with strict price-time priority and integer arithmetic.
Order(address maker, bytes32 marketId, …) - 03
Settle onchain
Fills are batched, checked against the oracle for staleness and deviation, and settled into the vault. Settlement status is tracked apart from order status — a filled order whose transaction is still pending is reported as exactly that.
OrderSettlement.batchSettle()
Architecture
What is under the terminal
Six workspaces: the web terminal, an API, a matching engine, a router, shared domain types and the contracts. No mock stands in for a component that a venue would need.
- Matching
- Deterministic CLOB · price-time priority · integer arithmetic · atomic FOK · self-trade prevention
- Order types
- Market · Limit · Stop-market · Stop-limit — with GTC, IOC, FOK, post-only and slippage caps
- Fees
- 6 bps maker · 10 bps taker, capped at 100 bps inside the contract
- Routing
- Best execution across the internal book and external quote sources, gas- and fee-aware
- Custody
- Available and locked held apart · no admin drain function · withdrawals never pausable
- Settlement
- EIP-712 orders, batched · PENDING → SUBMITTED → CONFIRMED, reconciled after restart
- Guards
- Oracle staleness and deviation · per-market pause · replay and overfill protection
- Tests
- 181 unit tests across the workspaces · 27 contract tests
Disclosure
What is real, and what is not
A venue that is vague about this is telling you something. Here is the line, in the same detail we keep it in the code.
Working today
- Real last price, session high and low, volume and the full OHLCV chart, from a market-data provider through this app’s own API
- A real matching engine — not a UI fixture — behind an API with private WebSocket channels
- Wallet connect, challenge-signature sessions, and deposits and withdrawals that move real tokens
- EIP-712 signed orders settled onchain into a vault, with the oracle guard rejecting stale prices
- Order preview, confirmation, modify, cancel and cancel-all executed against real book depth
Still simulated
- Depth and prints are generated around the real mark and labelled SYNTHETIC — no free equities feed carries level-2 or time-and-sales
- The price oracles deployed alongside the vault are mocks, labelled as such in the source
- External venues can quote but never settle — nothing outside the internal book touches the chain
- Deployed to a local chain only. The contracts have unit tests, not an audit