Order book
Buy and sell outcome shares, manage orders and withdraw available collateral.
What a share is#
On the order book — "the board" in the interface, RinoExchange in the contracts — you buy and sell outcome shares. A share of an outcome pays exactly 1 USDG if that outcome wins and 0 if it does not. Shares are positions in an ERC-1155-style outcome contract: one full set of shares across every outcome is worth exactly one USDG, so a full set can always be minted for 1 USDG and merged back into 1 USDG.
Prices are written in cents: a share at 60c is a claim on 1 USDG that costs 0.60 USDG. A price is the ratio of the two amounts in an order; the contract never divides, it cross-multiplies, so there is no tick size to round to.
Orders are signatures#
Nothing is "placed" on chain. An order is a typed-data signature (EIP-712) over the maker, the outcome, the amounts, an expiry, a nonce, a fee cap and a role — maker-only, taker-only, or either. Signing costs nothing and moves nothing. What moves money is a fill: a transaction that presents two crossing orders to the exchange, which checks both signatures and settles the pair.
Filling is permissionless. There is no operator gate on settlement, and the contract says there never will be. A matching service exists to cross orders automatically; with no matcher running, you sign yours, hand it to a counterparty, and either side sends the fill. Up to sixteen maker orders can be matched against one taker order in a single transaction.
The venue's headline capability is that two buyers of opposite legs are a trade: if a bid for YES and a bid for NO add up to at least 1.00, their combined cash mints a complete set and nobody needed to hold inventory first. The contract chooses between three settlement paths — complementary (same leg, opposite sides), mint (both buying opposite legs) and merge (both selling opposite legs) — from the two orders alone.
Collateral and withdrawal#
Cash for the book is deposited into the exchange contract and is spendable on fills and withdrawable at will. Ordinary template pauses do not block withdrawals. Permanent emergency retirement freezes cash and share withdrawals before moving their backing to a migration contract. This balance is never added to your pool positions in the interface.
An order you have signed remains fillable until it expires, is filled, or is cancelled. Cancellation is a transaction, sent by the maker, that marks the order cancelled and burns its nonce; the interface cannot cancel anything by deleting a row, and says so. Nonces can also be invalidated in bulk, and a maker can pause their own orders for up to thirty days.
An expiry of zero means the order never expires. Expiries are compared against the chain's clock, not your browser's; the interface signs against the chain's time for that reason.
Fees#
The taker pays; the maker pays nothing, in every class, always. The taker fee is
C · r · p · (1 − p) · (1 − d)
where r is the market's class rate, p the fill price as a probability, and d the tier discount. The kernel p(1 − p) vanishes at both ends of the price range, so a fee can never exceed the prize at 99c the way a flat percentage of notional would. The taker's signed fee cap makes a fill revert rather than charge more than the taker agreed to; the discount applied is the lower of the one at signing and the one at fill. Makers are paid a rebate out of the taker fee their fill generated. See Fees.
Limits#
- The smallest fill is 0.001 shares.
- Trading stops at the market's cut-off; a fill after it reverts.
- Redemption of winning shares after resolution does not require a listing or respect ordinary template pauses; permanent emergency retirement blocks it.
What the interface shows#
On a local development stack with the exchange deployed, the market page offers a toggle between the pot and the board, a plain explanation of both, the best price showing on each leg, an order ticket that asks for an amount in money and derives the shares, a resting-order list with a cancel control, and a book panel for depositing and withdrawing collateral. On every other stage the toggle is absent because the exchange address is absent.
