# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
This site has an agentic ask interface you may use to query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.sidepit.com/index.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

---

# About Sidepit

The official documentation for Sidepit users, trading agents, and API builders.

## Read these docs with an agent

Start with the [documentation index](https://docs.sidepit.com/llms.txt), then fetch the linked Markdown pages. For the complete documentation in one response, use [llms-full.txt](https://docs.sidepit.com/llms-full.txt). If a page's HTML does not expose its content, append `.md` to the page URL or use its Markdown URL from the index.

For the deposit address and Jacket #8, read [Fund and Lock Bitcoin](https://docs.sidepit.com/use-sidepit/beta/onboarding/lock-bitcoin.md#verify-the-deposit-address) and follow its verification instructions. If you cannot retrieve a required source, report that verification is incomplete; do not substitute an address from chat or memory.

## A better way to trade

Sidepit is an electronic exchange for hedging and speculating on the U.S. dollar price of Bitcoin. It trades dated, Bitcoin-margined **forwards** and settles in satoshis.

An exchange should concentrate competing interest and discover a price. Sidepit does that without selling priority to the fastest wire. Its **DLOB — one-second deterministic auctions** give orders a shared second, then let the best price win.

Traders compete on price and risk. Not proximity.

## The market

* **Hedgers** use USDBTC to manage the future dollar value of Bitcoin.
* **Speculators** take a view on Bitcoin's dollar price.
* **Liquidity providers** price that flow and compete for the spread.

Sidepit quotes the market in satoshis per future U.S. dollar. The same quote can be shown as forward USD/BTC, today's dollars, spot, JPY, or another user-defined view. Start with [Forward Price](/trader-education/future-price).

## How it works

1. A Native SegWit Bitcoin address becomes the Sidepit account.
2. Bitcoin locked from that address becomes trading balance.
3. Signed orders enter DLOB one-second deterministic auctions.
4. Fills update positions, P\&L, margin, and balance.
5. Daily mark-to-market settles the account in satoshis.

The exchange publishes market data, orders, fills, rejections, account state, and signed-action outcomes through an open protocol. Humans can trade directly or authorize a separate agent identity to execute for the same account.

## See the live exchange

No account or credentials are required to read production:

```sh
git clone --recurse-submodules https://github.com/sidepit/Public-API
cd Public-API
python3 -m venv python-client/.venv
python-client/.venv/bin/pip install -r python-client/requirements.txt
python-client/.venv/bin/python examples/quickstart.py
```

The first read returns the exchange state, active dated forward, live quote, contract size, margins, and expiry.

Start with [Onboarding](/use-sidepit/beta/onboarding), continue to [Trading](/use-sidepit/beta/trading), or open the [Public API repository](https://github.com/sidepit/Public-API) for agent and client instructions.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-d1f96836f2a9a78a8df855f21192927030d0fdb5%2Fsidepit-agents.png?alt=media" alt="Sidepit agents connected to the exchange"><figcaption><p>Agents are trading.</p></figcaption></figure>


# Who We Are

Sidepit builds fair electronic markets for human and machine traders.

Founder Jay Berg brought more than two decades of Wall Street market-structure experience to a simple problem: electronic exchanges turned physical proximity and infrastructure speed into a source of priority. Sidepit changes the rule that rewards that race.

Its patented Distributed Limit Order Book runs **DLOB — one-second deterministic auctions**. Within a shared second, participants compete on price rather than arrival measured in microseconds.

The production ProofNet exchange extends that market structure with a Bitcoin-native account model. A Bitcoin address is the account, an owner can authorize a narrow trading identity for an AI agent, and every owner unlock returns to the same address.

The investor thesis is straightforward: agents are becoming market participants, but inference speed cannot win a latency race against colocated infrastructure. Sidepit gives them a venue where better pricing and risk logic can matter instead. The same property benefits every trader without privileged physical access.

We are building the exchange, public protocol, reference clients, and operational evidence needed to make that claim inspectable rather than aspirational.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-6515140bd220fe1462908062ac61cd1f8130b6b0%2Fsidepit-army-of-traders.png?alt=media" alt="We&#x27;re building an army of good, hard-working traders"><figcaption><p>One fair second. No race. No head start.</p></figcaption></figure>


# The Sidepit Story

Sidepit began with a market-structure observation: modern exchanges turned the path to the matching engine into part of the product. Traders competed not only on price and judgment, but on fiber length, colocation, and specialized hardware.

Jay Berg's experience in traditional trading pits pointed to a different model. A pit concentrated interest, exposed competition, and let price—not a hidden microsecond edge—decide who traded. Sidepit's Distributed Limit Order Book translates that principle into software through **DLOB — one-second deterministic auctions**.

The result is a free market on top of the free market, once a second. DLOB captures and prices the speed advantage before the underlying order book discovers the asset price. That eliminates MEV and HFT as sources of matching priority.

The project then moved from mechanism to a complete exchange:

* dated Bitcoin-margined USDBTC forwards;
* signed public NNG/protobuf transactions;
* live market, order, rejection, margin, and account-operation surfaces;
* Bitcoin-address account identity;
* protocol-enforced trading-agent delegation; and
* an owner-signed unlock lifecycle back to the same address.

ProofNet put that system into production on real Bitcoin. The current exchange can answer the operational question that matters after every signed action: what happened? A request has a public ID, pending is distinct from terminal truth, and unlock progress carries the Bitcoin transaction ID when available.

That technical story supports the larger one. AI agents are a new class of trader, but they should not need the fastest wire to compete. Sidepit takes the speed advantage out of the match. Humans and agents compete on price and risk.

The definitions behind that market structure are collected in [Sidepit Primitives](/appendix/sidepit-primitives).

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-d1f96836f2a9a78a8df855f21192927030d0fdb5%2Fsidepit-agents.png?alt=media" alt="Sidepit agents connected to the exchange"><figcaption><p>Agents are trading through separate, revocable identities while owners keep control of Bitcoin.</p></figcaption></figure>


# Patent

Sidepit's Distributed Limit Order Book is patented technology for ordering transactions and forming a fair electronic market.

The production expression is **DLOB — one-second deterministic auctions**. Signed transactions enter shared one-second epochs, are deterministically sequenced, and then meet a central limit order book where price outranks speed within the epoch.

For implementation details, use the [public protocol](/users-and-agents/api/wire-protocol). For company or licensing inquiries, contact <info@sidepit.com>.


# Whitepaper

Sidepit's original white paper, **“Fair Price Discovery via Decentralized Exchange,”** by Yehuda Jay Berg, documents the market-structure thesis that preceded the production ProofNet exchange.

[Read the original white paper](https://docsend.com/view/vui4iujtmukvudn6). It is historical context, not an operating specification.

For concise current definitions of price discovery, DLOB, execution risk, and the live CEX Echo implementation, read [Sidepit Primitives](https://github.com/sidepit/docs-gitbook/tree/docs/proofnet-r2-production/readme/sidepit-primitives.md).

The current operating sources are:

* [Current release](https://gist.github.com/jaybny/0603ac93fbd75f1fde661265d8a4c2ec)
* [Public API and agent skills](https://github.com/sidepit/Public-API)
* [Public protobuf contract](https://github.com/sidepit/Public-API-Data)
* [Current Sidepit documentation](https://docs.sidepit.com)

Historical research explains the lineage. The current protocol and live exchange state govern implementation details.


# Start Here

Start using the live Sidepit ProofNet exchange.

Sidepit ProofNet is live on mainnet Bitcoin. Access remains beta-code gated, and every amount you fund or trade is real.

The complete customer journey is:

1. Request beta access at [app.sidepit.com](https://app.sidepit.com).
2. Connect a UniSat **Native SegWit** address beginning `bc1q`. This public address becomes your Sidepit ID.
3. Fund that Sidepit ID first, then use **LOCK** to move its confirmed balance into the exchange.
4. Trade in the web app, or authorize a separate trading-only agent.
5. The account owner can request an unlock back to the same Sidepit ID.

{% hint style="danger" %}
Never send Bitcoin from an external wallet or exchange directly to Sidepit's deposit/lock address. First send it to your own connected Sidepit ID, then use LOCK. This is how the exchange identifies the account to credit.
{% endhint %}

Before funding, read the [risk disclosure](/legal/risk-disclosure-statement), the current [contract specifications](/use-sidepit/beta/trading/contract-specifications), and the [margin and execution fee guide](/use-sidepit/beta/trading/margin).

If you are using an AI agent, keep the human account key and seed words out of the agent, chat, terminal, logs, and support messages. Follow [Authorize a Trading Agent](/use-sidepit/beta/onboarding/authorize-agent).


# ProofNet Overview

What is live in the current Sidepit ProofNet release.

ProofNet is Sidepit's current live, real-Bitcoin proving stage. It combines the exchange engine, browser trading app, public NNG/protobuf protocol, Python SDK, agent skills, and a complete owner-controlled unlock path.

## Product stages

* **Beta — December 2024:** Sidepit opened its original private beta.
* **ProofNet — August 10, 2026:** The current live stage began on real mainnet Bitcoin.
* **Launch — targeted for Q4 2026:** The planned production launch follows ProofNet.

## Live product surface

* Dated Bitcoin-margined USDBTC forwards
* DLOB — one-second deterministic auctions
* Limit, cancel, cancel/replace, and native immediate-or-cancel market orders
* Daily mark-to-market settlement in satoshis
* UniSat account signing
* Protocol-enforced trading-agent authorization and revocation
* Owner-signed explicit or MAX unlock requests
* Public market, order, rejection, position, margin, and account-operation data

## The account has one continuous identity

Your Native SegWit `bc1q` Bitcoin address is the Sidepit ID used from funding through trading and unlock. The exchange learns that public identity from the LOCK transaction input. Bitcoin unlocked from the account returns only to that same address; there is no destination field.

An agent gets a different identity. The owner signs its authorization in UniSat, and the agent then signs orders with its own key while naming the owner's account and its `agent_id`. The protocol rejects attempts by an agent to unlock funds, authorize another agent, or revoke authority.

## Observe, do not infer

Submission means a request was received or queued; it does not mean an order filled or an account operation completed. Sidepit publishes named receipts and outcomes so clients can follow the same public operation or order ID to its result.

For unlocks, the normal path is:

`PENDING → RESERVED → PROCESSING → COMPLETED`

The web app and public account view retain those states across restart. Sidepit does not promise how long the lifecycle will take.


# How Sidepit Works

The technical model behind Sidepit's fair exchange and Bitcoin account boundary.

Sidepit is a Bitcoin-margined forwards exchange with a public signed-message protocol. It combines a central exchange engine with transparent inputs, deterministic auction timing, observable outcomes, and owner-controlled Bitcoin account actions.

## DLOB market structure

**DLOB — one-second deterministic auctions** divide trading into one-second epochs. Signed transactions accepted for an epoch are deterministically sequenced, then matched by a central limit order book.

Within the same epoch, an earlier arrival does not gain priority over a better price. This removes the race for the shortest cable or fastest processor from the matching rule. It does not guarantee a fill or a particular price; liquidity and order instructions still determine the result.

DLOB creates a free market for the speed advantage on top of the free market for the asset, once each second. In this protocol, MEV and HFT do not determine matching priority.

## Signed public protocol

Clients communicate with `api.sidepit.com` over NNG using protobuf messages. Orders and account actions are secp256k1-signed. Market data, auction clocks, orders, fills, rejects, positions, margins, and account-operation records are available through public protocol surfaces.

The canonical public contract is [`sidepit_api.proto`](https://github.com/sidepit/Public-API-Data/blob/main/sidepit_api.proto). Client builders should describe only fields present in that public file.

## Bitcoin account boundary

The connected Native SegWit address is the account. A LOCK transaction must spend from that Sidepit ID so the exchange can recover the account's public identity from the input and credit the correct account.

The owner key controls money movement and agent permissions. A separate delegated key may trade for the account, but cannot perform owner actions. This is enforced when signed transactions are verified, not merely by a user-interface role.

## Account truth

Clients should use server-published state instead of reconstructing balances or positions from memory:

* request/reply provides point-in-time account and market reads;
* feeds provide continuous market, order, fill, rejection, and margin events while the exchange is open;
* deterministic public IDs join each submitted intent to later observations; and
* terminal records override an older pending receipt.

Read [Public API and SDKs](/users-and-agents/api) for the current surface.


# Onboarding

Create, fund, delegate, and recover a Sidepit account without exposing its money key.

You can complete Sidepit onboarding in a desktop browser with the UniSat Chrome extension, a Native SegWit `bc1q` address, beta access, and real mainnet Bitcoin.

## The two-key model

* **Account key:** stays inside the human's UniSat wallet. It controls Bitcoin unlocks and agent authorization or revocation.
* **Trading-agent key:** created and stored locally by the agent. It can trade and cancel for the account, but cannot move Bitcoin or manage agents.
* **Public handoff:** the agent gives the human a 66-character public key. The human confirms the derived agent ID and signs the authorization in UniSat.

Never give an agent, support representative, website form, chat, or terminal command the account private key, WIF, or seed words.

## Onboarding order

1. [Create a Sidepit ID](/use-sidepit/beta/onboarding/create-wallet).
2. [Fund and lock Bitcoin](/use-sidepit/beta/onboarding/lock-bitcoin).
3. Optionally [authorize a trading agent](/use-sidepit/beta/onboarding/authorize-agent).
4. Learn [how to unlock Bitcoin](/use-sidepit/beta/onboarding/unlock-bitcoin) before placing a trade.

{% hint style="warning" %}
ProofNet is a real-money beta. Decide the amount you can afford to risk before copying an address or signing a Bitcoin transaction.
{% endhint %}


# Create a Sidepit ID

Connect a Native SegWit UniSat address as your Sidepit ID.

A Sidepit ID is a Bitcoin address you control. The current web flow requires a UniSat **Native SegWit** mainnet address beginning `bc1q`.

## 1. Request access

Open [app.sidepit.com](https://app.sidepit.com) in a desktop Chrome-compatible browser. ProofNet access remains beta-code gated. Use the access flow provided by Sidepit; do not accept a code or wallet link from an unverified message.

## 2. Install UniSat

Install the official [UniSat Wallet Chrome extension](https://unisat.io/download). Confirm the publisher and URL before installing.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-0625bd9f905c795d68b36a56cda5af513e0ddc2e%2Fimage%20(1)%20(1).png?alt=media" alt="UniSat download page" width="375"><figcaption><p>Install UniSat only from its official distribution page.</p></figcaption></figure>

## 3. Select Native SegWit

Create or import a wallet in UniSat, then select a Native SegWit address type. The address must begin `bc1q`.

<div align="center"><figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-ff3613a58d65d8f10b7380c43f5325cd916fe68e%2FNativeSegwitUni.png?alt=media" alt="Selecting a Native SegWit bc1q address in UniSat"><figcaption><p>The connected bc1q address becomes the Sidepit ID.</p></figcaption></figure></div>

If UniSat creates seed words, back them up privately. Do not photograph, paste, upload, or show them to an AI agent. Sidepit support does not need them.

## 4. Connect the wallet

Choose **Connect Wallet** in the Sidepit app and approve the connection in UniSat. Confirm that the connected full `bc1q` address is the address you intend to use.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-2326b6efd18f4f0d39130e257f103b66f1fe196b%2Fplaceholder-connect-wallet.svg?alt=media" alt="Placeholder for the production Connect Wallet and Native SegWit Sidepit ID flow"><figcaption><p>Screenshot slot: show the current Connect Wallet button, UniSat approval, and full connected Sidepit ID.</p></figcaption></figure>

That address is now your public Sidepit ID. Recording the full public address is safe. Recording or sharing the private key, WIF, or seed words is not.

## Recovery

If you lose the browser extension but retain the seed backup, restore it privately in a compatible wallet and confirm that it reproduces the exact same full `bc1q` Sidepit ID before signing anything.

If you lose every valid copy of the account key and its recovery seed, there is no documented alternate signature path for unlocks, agent authorization, or revocation. Sidepit cannot redirect an unlock to another address. Contact support with public identifiers only, but never provide a seed or private key.


# Fund and Lock Bitcoin

Decide your amount, fund your own Sidepit ID, then LOCK by sweeping it to Sidepit's deposit address.

Putting Bitcoin on Sidepit is two separate actions, in a fixed order:

1. **Fund** — decide how much you want to trade, and send exactly that amount to your **own** Sidepit ID, the connected `bc1q` address you just created.
2. **Lock** — sweep the entire balance of your Sidepit ID to **Sidepit's deposit address**, using UniSat.

The amount decision happens before anything moves — at the funding step, not the LOCK step: LOCK sweeps whatever the Sidepit ID holds.

The order matters because Sidepit identifies your account from the LOCK transaction itself: it credits the account whose Sidepit ID the payment spends from.

{% hint style="danger" %}
Only ever send Bitcoin to Sidepit's deposit address **from your Sidepit ID account**. If funding from an external address or exchange, first send the funds to your Sidepit ID account. A payment sent to the deposit address from anywhere else cannot be matched to your account.
{% endhint %}

## Before you fund

1. Read the live contract with the [Public API quickstart](/users-and-agents/api#keyless-live-check).
2. Treat the published initial margin as an engine minimum per contract, not a recommended deposit.
3. Allow for adverse P\&L, working-order margin, execution fees, and the Bitcoin network fee.
4. Start small. Use a dedicated `bc1q` Sidepit ID holding only the amount you intend to lock.

Sidepit charges an execution fee of **125 sats per contract per side per execution**. At $100,000/BTC that is about **$0.125 per side**. Opening and later closing one contract costs that trader 250 sats before P\&L.

## Step 1: decide the amount, fund your own Sidepit ID

1. Decide how much you want to trade with. That decision is made here — LOCK will sweep everything the Sidepit ID holds.
2. In the connected UniSat wallet, choose **Receive**. Copy and verify the complete Native SegWit `bc1q` Sidepit ID.
3. Send exactly the chosen amount from your external source to that address.
4. Wait until UniSat shows the funds as confirmed.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-22da70b6eacd50534911cd9bea00a8fb08399fe3%2FScreenshot%202024-12-10%20at%2011.38.36.png?alt=media" alt="Funding a connected Native SegWit address" width="375"><figcaption><p>Fund your own Sidepit ID before using LOCK.</p></figcaption></figure>

## Step 2: LOCK — sweep your Sidepit ID to the deposit address

This is where you handle Sidepit's deposit address. Verify it first — see the next section — then:

1. In UniSat, with your connected Sidepit ID selected, choose **Send**.
2. Paste Sidepit's deposit address and verify every character of it.
3. Send the **entire balance** — use Max. The Bitcoin network fee comes out of it.
4. Review, sign, and send.
5. Record the complete public transaction ID.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-e408ea79c26b05be5fa85dfb798ff59ecdbe3a9a%2Fplaceholder-lock.svg?alt=media" alt="Placeholder for the UniSat send from the Sidepit ID to the deposit address"><figcaption><p>Screenshot slot: UniSat Send from the connected Sidepit ID to the verified deposit address.</p></figcaption></figure>

Do not retry an ambiguous send. If anything about the transaction is unclear, inspect the address and transaction ID first.

Advanced users can also LOCK from the terminal client in the open-source [Public API repository](https://github.com/sidepit/Public-API).

## Verify the deposit address

You are about to paste this address into a real Bitcoin transaction, so confirm it against independent public sources first. The deposit address is:

**Sidepit deposit address:**\
[`bc1qn9szw2tfte4m2l7enhentvjpvnque932xr2m03`](https://ordinals.com/address/bc1qn9szw2tfte4m2l7enhentvjpvnque932xr2m03)

Two independent public sources confirm it:

1. **On-chain, via Ordinals.** The deposit wallet holds **Jacket #8** of the Sidepit Jacket collection (the children of the [Sidepit parent inscription](https://ordinals.com/children/f3c5985ee48ceac9af3ff7aaa63626a2a4b1bb9f59a02c5822ca6878afc2ee2ci0), inscribed March 2024). Open [Jacket #8 on ordinals.com](https://ordinals.com/inscription/42713f393a35faaddf5d173cfef61673437c483de9a31f5847f0b3e8bd9df0a5i0) and read the address currently holding it.
2. **In the open-source Python SDK.** The same address is pinned as `PROD_DEPOSIT_ADDRESS` in [`python-client/sidepit_trader/config.py`](https://github.com/sidepit/Public-API/blob/main/python-client/sidepit_trader/config.py) in the public repository.

If this page, the Jacket #8 holder, and the repository constant ever disagree, stop and contact the Sidepit beta operator before sending anything.

{% hint style="warning" %}
Send to this address only from your Sidepit ID — never from an exchange or any other wallet. If Sidepit ever changes the deposit address, Jacket #8 moves with it, so the on-chain pointer stays correct.
{% endhint %}

## Verify account credit

A seen deposit may appear as pending before it is credited. Sidepit does not promise a fixed confirmation count or completion time.

Open the trading app at [app.sidepit.com](https://app.sidepit.com) with your connected wallet and check your account. A pending deposit has been seen but is not yet available margin — wait and check again; do not send again. Once credited, the funds appear in your available margin, subject to margin rules.

If support is needed, provide only the complete public Sidepit ID and Bitcoin transaction ID.


# Authorize a Trading Agent

Give an AI agent a revocable trading identity without giving it the Bitcoin account key.

Delegation separates money authority from trading authority. The account owner keeps the UniSat key. The agent creates a different local key that may place and cancel orders for the account.

The delegated key cannot unlock Bitcoin, authorize another agent, or revoke an agent. Both the SDK and exchange enforce that boundary.

## 1. Prepare the public client

Clone the official repository with its protocol submodule and run the local tests:

```sh
git clone --recurse-submodules https://github.com/sidepit/Public-API
cd Public-API
python3 -m venv python-client/.venv
python-client/.venv/bin/pip install -r python-client/requirements.txt
python-client/.venv/bin/python -m pytest python-client/tests -q
```

Stop if any test fails.

## 2. Mint the agent identity locally

Only after the owner requests it, the agent runs one mint using the owner's complete public Sidepit ID:

```sh
cd python-client
.venv/bin/python -m sidepit_trader.agent_key new \
  --account "$SIDEPIT_ACCOUNT_ID"
cd ..
```

Set `SIDEPIT_ACCOUNT_ID` to the owner's complete public `bc1q` address. Never shorten it for a command, log, or approval screen.

The command writes one new `0600`, write-once agent file and prints public facts only. It must produce:

* a 66-character compressed public key beginning `02` or `03`;
* a derived `bc1q` agent ID different from the account ID; and
* the protected file path without displaying the private key.

Never source, print, paste, upload, overwrite, or transmit the contents of that file.

## 3. The owner authorizes the public key

In [app.sidepit.com](https://app.sidepit.com):

1. Connect the owner account in UniSat.
2. Under **Sidepit Account**, choose **Authorize trading agent**.
3. Paste the agent's 66-character public key.
4. Confirm the derived full agent Sidepit ID exactly matches the agent's public output.
5. Sign the authorization in UniSat.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-d1f96836f2a9a78a8df855f21192927030d0fdb5%2Fsidepit-agents.png?alt=media" alt="Sidepit trading agents connected to the exchange"><figcaption><p>The owner keeps the money key; each agent receives a separate, revocable trading identity.</p></figcaption></figure>

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-90237369cdaa2905c4ee2ced7fa0e27c0964a19b%2Fplaceholder-agent.svg?alt=media" alt="Placeholder for the production Authorize trading agent dialog"><figcaption><p>Screenshot slot: show public-key entry, the complete derived agent Sidepit ID, and the owner-signature step.</p></figcaption></figure>

The account key remains inside the extension. The submitted receipt is not yet proof that the agent is active.

## 4. Verify ACTIVE

The agent checks settled server state with its protected path:

```sh
python-client/.venv/bin/python skills/sidepit-trade/scripts/sidepit_agent.py \
  delegate-status --key-file /absolute/path/to/agent.env
```

Do not trade until the result is `ACTIVE`. If it is `PENDING`, wait and check again rather than resubmitting.

On the wire, an authorized agent signs orders with the owner's `sidepit_id` and its own `agent_id`.

## Revoke or recover an agent

The owner can revoke an active agent from the same web interface. Revocation prevents future trading by that identity but does not erase existing positions or orders.

Losing the agent file does not lose the owner's Bitcoin. Revoke the lost agent ID and authorize a replacement. Any surviving copy can continue trading until the revocation becomes active.


# Unlock Bitcoin

Request and follow an owner-signed Bitcoin unlock from reservation through completion.

Only the account owner can request an unlock. A trading agent cannot perform this action.

Funds return **only** to the same full `bc1q` Sidepit ID that owns the account. There is no destination field to enter or change.

## Submit an unlock

1. Connect the owner Sidepit ID at [app.sidepit.com](https://app.sidepit.com).
2. Under **Sidepit Account**, choose **Unlock funds**.
3. Enter a positive whole number of sats or choose **MAX**.
4. Confirm the complete connected Sidepit ID and amount.
5. Sign inside UniSat.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-26d12f67be7b3f36c2a23792851959b57fd9c9d1%2Fplaceholder-unlock.svg?alt=media" alt="Placeholder for the production Unlock funds dialog and lifecycle history"><figcaption><p>Screenshot slot: show explicit/MAX controls, the full Sidepit ID, lifecycle statuses, and a complete Bitcoin transaction ID.</p></figcaption></figure>

The server validates available margin and duplicate requests. Open positions and working orders can reduce the amount available to unlock. Cancel unwanted orders and reduce exposure deliberately before requesting a larger amount.

## Lifecycle

| Status       | Meaning                                                                                                          | What to do                                                                     |
| ------------ | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `PENDING`    | The signed request was received. It has not yet passed the engine's account and margin rules.                    | Wait for the same operation ID to advance or reject.                           |
| `RESERVED`   | The amount passed validation and has been reserved from the account's available balance and margin exactly once. | This is irrevocable. There is no cancel-unlock operation. Do not resubmit.     |
| `PROCESSING` | The custodian payout is in progress and the lifecycle record carries the Bitcoin transaction ID when available.  | Inspect the complete transaction ID shown by the web app. Do not infer timing. |
| `COMPLETED`  | The on-chain outflow has been folded into account state and the reservation has been retired or reconciled.      | Confirm the wallet receipt and final account state.                            |
| `REJECTED`   | The request did not pass signature, identity, duplicate, or margin checks.                                       | Read the named reject reason before making a new request.                      |

These display states and their operation IDs survive exchange restart. The public protocol exposes them through `AccountOperations.unlock_records`, with reserved value also reflected in `AccountMarginState.pending_unlock`.

Sidepit does not promise a completion time. Refresh the same history row and never create a duplicate because a status has not changed yet.

## If the owner wallet is unavailable

Restore the seed privately in a compatible wallet and verify that it produces the exact same full Sidepit ID. Then reconnect and sign from that address.

If no valid account key or recovery seed remains, there is no documented alternate signing path. Support should receive only public account, operation, and Bitcoin transaction IDs—never seed words, WIFs, or private keys.


# Trading

Trade Sidepit's dated Bitcoin-margined USDBTC forwards.

Sidepit trades dated USDBTC forwards in **DLOB — one-second deterministic auctions**. Prices are integer satoshis per USD, margin and P\&L are in satoshis, and each contract represents the USD exposure published by the active contract.

Before placing an order:

1. Read the active ticker, exchange state, schedule, contract size, price bands, and margins from the exchange. Never reuse a ticker or amount from an old session.
2. Understand the inverse quote: `USD/BTC = 100,000,000 ÷ sats-per-USD`.
3. Review available margin, working orders, current position, and execution fees.
4. Choose limit or market behavior deliberately.

Sidepit charges an **execution fee** of **125 sats per contract per side per execution**. The engine deducts it on every fill and publishes accumulated values in `realized_fees`.

Start with:

* [Contract Specifications](/use-sidepit/beta/trading/contract-specifications) for the current ticker, contract size, margins, schedule, price bands, and expiry;
* [USDBTC](/use-sidepit/beta/trading/usdbtc) for exposure direction;
* [Buy, Sell, and Cancel](/use-sidepit/beta/trading/buy-sell-cancel) for the web workflow;
* [Order Types](/use-sidepit/beta/trading/beta-orders) for limit and market behavior; and
* [Margin and Execution Fee](/use-sidepit/beta/trading/margin) before choosing size.

{% hint style="warning" %}
A queued order is not a fill. Resolve it through the order and rejection views before repeating or replacing it.
{% endhint %}


# Contract Specifications

Read the current USDBTC forward specification from production.

Sidepit contract values are published by the exchange and can change between dated products. The `ACTIVE_PRODUCT` response on port `12125` is the source for the current session.

{% hint style="info" %}
**Interpretation rule:** Sidepit is not a renamed version of an existing crypto exchange. Begin with the contract's published units and lifecycle. Do not fill perceived gaps with perpetual funding rates, continuous 24/7 trading, automatic liquidation, or familiar USD/BTC assumptions. Translate the result into a familiar display only after calculating it in Sidepit's native terms.
{% endhint %}

## This is not a perpetual

USDBTC is a dated, Bitcoin-margined forward. Do not import perpetual-contract assumptions into it.

* **It expires.** The ticker names a dated product with a published expiry. It is not an undated position maintained by a funding rate.
* **There is no perpetual funding-rate payment.** Forward basis is expressed in the traded price.
* **The market has sessions.** Read the published open and close schedule. Sidepit is not a continuously open 24/7 market.
* **The quote is inverse.** Price is integer satoshis per USD, not USD per BTC. A higher Sidepit price means a lower familiar USD/BTC price.
* **The contract carries fixed USD exposure.** `unit_size` states the dollars represented by one contract; P\&L and margin are in satoshis.
* **P\&L is linear in the native quote.** Each one-sat-per-USD move changes one contract by its published `tic_value`, regardless of the price level. USD/BTC is a reciprocal display view.
* **Daily settlement matters.** Open P\&L is marked during the session. At settlement, P\&L folds into the Bitcoin balance and the carried position's average price resets to the settlement mark.
* **Intraday and overnight margin are different.** Maintenance margin supports existing positions during the open session. New exposure carried through settlement must meet the higher initial-margin requirement.
* **There is no intraday liquidation order.** An account short of margin is restricted to trading toward a smaller position. Sidepit does not choose or submit the exit order.
* **A roll is explicit.** Closing one dated ticker and opening another are separate trades with separate prices, expiries, quantities, and execution fees.
* **Expiry does not unlock Bitcoin.** Position settlement and owner-signed Bitcoin unlocks are separate account operations.

See [USDBTC](/use-sidepit/beta/trading/usdbtc) for exposure direction, [Margin and Execution Fee](/use-sidepit/beta/trading/margin) for the session boundary, and [Positions and Settlement](/use-sidepit/beta/trading/position-settlement) for mark-to-market and rolls.

## Live session values

The fields below describe the contract, but the current values come from the public exchange feed. Anyone can read `ACTIVE_PRODUCT` without an account, API key, or trading key. Use the [Public API keyless quickstart](https://github.com/sidepit/Public-API#look-before-you-trust-no-keys-about-2-minutes) to see the live ticker, exchange state, schedule, contract size, margins, price limits, and expiry.

## USDBTC fields

| Field                     | Meaning                                                     |
| ------------------------- | ----------------------------------------------------------- |
| `symbol`                  | Contract family, currently `USDBTC`                         |
| `ticker`                  | Active dated product; query it rather than hardcoding it    |
| `unit_size`               | USD exposure represented by one contract                    |
| `price_quote`             | Integer satoshis per USD                                    |
| `tic_min`                 | Minimum price increment                                     |
| `tic_value`               | Satoshi P\&L change for one contract moving one tick        |
| `price_limit_percent`     | Daily price-band setting                                    |
| `initial_margin`          | Sats required by the current contract's initial-margin rule |
| `maint_margin`            | Sats required by the current maintenance-margin rule        |
| `position_limits`         | Published contract-position limit                           |
| `trading_open_time_zone`  | Session open with time zone                                 |
| `trading_close_time_zone` | Session close with time zone                                |
| `expiration_date`         | Product expiry timestamp                                    |

At the 2026-08-17 production verification, `ACTIVE_PRODUCT` reported `USDBTCU26`, a $500 contract with 200,000 sats initial margin, 100,000 sats maintenance margin, and expiry on 2026-09-24 at 5:00 PM Pacific. These are a dated verification record, not values to reuse for a future order.

## Keyless live check

```sh
git clone --recurse-submodules https://github.com/sidepit/Public-API
cd Public-API
python3 -m venv python-client/.venv
python-client/.venv/bin/pip install -r python-client/requirements.txt
python-client/.venv/bin/python examples/quickstart.py
```

The output includes the named exchange state, active forward, familiar USD/BTC translation, contract exposure, current margins, and expiry. If the exchange is closed, use the next published open rather than treating quiet feeds as a fault.


# USDBTC

USDBTC is a dated forward on the price of U.S. dollars in Bitcoin. It is not a perpetual contract. Sidepit quotes it as **satoshis per USD**, the inverse of the familiar USD-per-Bitcoin quote. See the current [Contract Specifications](/use-sidepit/beta/trading/contract-specifications) before trading.

`USD/BTC = 100,000,000 ÷ Sidepit price`

At 1,000 sats per USD, Bitcoin is $100,000. At 1,250 sats per USD, Bitcoin is $80,000.

## The honest unit

At Sidepit, the contract says exactly what the trade does: **you buy and sell dollar exposure using Bitcoin**. Each contract represents a fixed number of U.S. dollars. Its price is the number of satoshis represented by one dollar. Margin, fees, and P\&L remain in satoshis.

Many Bitcoin derivatives display USD per BTC while settling gains and losses in Bitcoin. That familiar screen hides reciprocal math: an equal move in the displayed USD/BTC price does not represent an equal move in Bitcoin value at every price level.

Sidepit puts the Bitcoin settlement unit directly on the order book. In the native sats-per-USD quote, contract P\&L is linear:

`gross P&L sats = change in sats per USD × contract USD unit × contracts`

Every one-sat-per-USD move has the same satoshi value for the same contract quantity, wherever it occurs in the price range. The familiar USD/BTC number is still available, but it is a view calculated from the native market—not the price being traded.

This is the direct way to hedge or leverage Bitcoin-to-dollar risk. A trader or agent may present the same market as sats per USD, forward USD/BTC, today's USD/BTC, or another currency. The interface can change; the signed order and its economic unit do not.

## Direction

* **BUY USDBTC** adds USD exposure and reduces exposure to a rise in Bitcoin's USD price. A buyer benefits when the Sidepit sats-per-USD price rises, which corresponds to Bitcoin falling in familiar USD/BTC terms.
* **SELL USDBTC** removes USD exposure and increases Bitcoin-price exposure. A seller benefits when the Sidepit price falls, which corresponds to Bitcoin rising in familiar USD/BTC terms.

## One-contract hedge example

Assume the active product's `unit_size` is $500:

1. Buy one contract at 1,000 sats per USD.
2. Later sell one contract at 1,250 sats per USD.
3. Gross P\&L is `(1,250 − 1,000) × $500 = 125,000 sats`.
4. Two one-contract executions cost that trader 250 sats in execution fees.
5. Net of execution fees, before any other effect, the result is 124,750 sats.

The example demonstrates the inverse quote; it is not a forecast or trading recommendation.

## Dated products

The ticker identifies an expiry month and year. Query the active product before every new workflow. Do not assume yesterday's ticker still accepts orders, and do not describe USDBTC as a perpetual product.

Open P\&L is marked during the session. At daily settlement it folds into the Bitcoin balance and the average entry price resets for the carried position.


# Buy, Sell, and Cancel

Place and reconcile orders in the Sidepit web app.

## Place an order

1. Open [app.sidepit.com](https://app.sidepit.com) and connect the correct full Sidepit ID.
2. Confirm that the exchange is open and the displayed dated ticker is the product you intend to trade.
3. Choose **Buy** or **Sell** after reviewing the USDBTC exposure direction.
4. Choose **Limit** or **Market**.
5. Enter a positive whole number of contracts. For a limit order, also enter a positive integer price in sats per USD.
6. Review the USD exposure, current position, available margin, and execution fee before signing.
7. Confirm the signature in UniSat.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-a6efed5fb63fc8d043afaa775ad56208a850ded0%2Fplaceholder-order-entry.svg?alt=media" alt="Placeholder for the production Buy and Sell, Limit and Market order-entry controls"><figcaption><p>Screenshot slot: show the active ticker, Buy/Sell, Limit/Market, price, size, and final order button.</p></figcaption></figure>

Every filled contract costs 125 sats per side per execution. The engine deducts the execution fee whether the order was limit or market.

## Resolve the result

An accepted submission enters the next DLOB one-second deterministic auction. It is not a fill confirmation.

* A limit order may fill, partially fill and rest, or remain open.
* A market order may be `FILLED`, `PARTIAL FILL` with its remainder canceled, or `CANCELED` with no fill.
* A rejected order carries a named `RC_*` code.

Use the orders, fills, and rejection views to resolve the complete public order ID. Never repeat an order merely because the result was not immediate.

## Cancel

Cancel targets a complete open order ID. A cancel is also queued for an auction; verify the resulting order and position state before placing a replacement.

`RC_CDUP` or `RC_CREJ` can mean the target was already filled, canceled, or otherwise gone. Treat the account's published position and open-order state as truth.

## Agents

The official agent workflow adds a durable preview and exact confirmation boundary. See [`skills/sidepit-trade/SKILL.md`](https://github.com/sidepit/Public-API/blob/main/skills/sidepit-trade/SKILL.md). A customer-facing agent should never choose financial exposure or send an order without the human confirming that exact preview.


# Order Types

Sidepit supports limit orders, native immediate-or-cancel market orders, cancellations, and cancel/replace.

## Limit

A limit order carries an explicit positive integer price in sats per USD. It may execute at that price or better. Any unfilled quantity may rest in the order book.

Explicit limit prices at the current price-band edges remain limit orders and can rest. A band-edge price is not a market-order signal.

## Market

A native market order omits the price field or sends protobuf default `price=0`. It has **no user-chosen limit price** and may fill anywhere through the available opposite book within the exchange price band.

In the next DLOB one-second deterministic auction, it sweeps available liquidity on the opposite side. Any unfilled remainder is canceled atomically and never rests.

Terminal outcomes are:

* `FILLED` — the full quantity executed;
* `PARTIAL FILL` — available quantity executed and the remainder was canceled; or
* `CANCELED` — nothing executed because no opposite liquidity was available.

The absence of a resting order is not enough to distinguish these outcomes. Read fills and order state.

## Cancel and cancel/replace

A cancel references the original complete order ID. Cancel/replace cancels that order and submits the replacement instruction through the signed protocol. Both resolve at auction cadence rather than at button-click time.

Stop and trigger orders are not part of the current public order protocol.

## CCXT mapping

The in-repository CCXT adapter advertises `createMarketOrder: true`. Market orders omit price and report `timeInForce: IOC`; limit orders use their explicit price. The adapter is maintained in the [Public API repository](https://github.com/sidepit/Public-API/tree/main/integrations/ccxt) and has not yet been submitted upstream to CCXT.


# Inverse Prices

Sidepit's native price is the amount of Bitcoin paid for one U.S. dollar, expressed as integer satoshis per USD.

`USD/BTC = 100,000,000 ÷ sats-per-USD`

| Sats per USD | Familiar USD per BTC |
| -----------: | -------------------: |
|        1,000 |             $100,000 |
|        1,250 |              $80,000 |
|        2,000 |              $50,000 |

The directions move opposite each other:

* a higher Sidepit price means a lower familiar USD/BTC price;
* a lower Sidepit price means a higher familiar USD/BTC price; and
* a Sidepit bar high is the familiar USD/BTC low for the same interval.

## Linear satoshi P\&L

For one contract, a one-tick move changes P\&L by the contract's published `tic_value` in sats. If `unit_size` is $500 and the minimum tick is one sat per USD, one tick is worth 500 sats per contract.

Convert to familiar USD/BTC at the display edge. Keep order construction, matching, margin, and P\&L reasoning in the exchange's native integer units to avoid double inversion or floating-point rounding.


# Margin and Execution Fee

Sidepit uses shared Bitcoin margin across the account. The active contract publishes initial and maintenance requirements per contract, while the account view publishes current balance, available margin, restriction state, and per-contract margin data.

## Use live values

Do not use a remembered minimum deposit or margin amount. Read the current [Contract Specifications](/use-sidepit/beta/trading/contract-specifications), query `ACTIVE_PRODUCT` for live contract requirements, and query `POSITIONS` for current account state.

* **Initial margin** is the contract's published requirement for adding exposure.
* **Maintenance margin** is the published lower threshold used in ongoing risk checks.
* **Working orders** reserve margin while they remain open.
* **Available margin** is the amount currently available for orders or an owner unlock, subject to the server's final checks.
* **Restricted accounts** may reduce risk but cannot add it.

## Intraday and overnight margin

Sidepit does not liquidate positions while the market is open. During the open session, existing positions are supported by maintenance margin. If available margin falls below zero, the account can trade only toward a smaller position. The trader chooses and submits the exit order.

At daily settlement, open positions are marked to the settlement price and P\&L is folded into the account balance. New exposure carried into the next session must meet the higher initial-margin requirement. A position that has enough margin at 2:00 PM may therefore be short of margin at settlement.

If the account does not meet initial margin at settlement, it becomes restricted. The interval before the next pre-open check is the opportunity to add margin: receive Bitcoin at the Sidepit ID, then LOCK it. Sidepit checks the account again before the next session. If margin passes, the restriction clears. Otherwise, the account remains restricted and may reduce its position when trading resumes.

Unless carrying the position is deliberate, the normal day-trading posture is flat at the close.

## Execution fee

The production constant is:

`execution_fee_sats_per_contract_per_side = 125`

That is **125 sats per contract per side per execution**.

* Buy or sell one contract in one execution: 125 sats.
* Open one contract and later close it: 250 sats for that trader.
* Both counterparties together: 250 sats per matched contract.
* At $100,000/BTC: approximately $0.125 per side and $0.25 for a trader's round turn.

The engine deducts the execution fee on each fill. `PositionMargin.realized_fees` is populated in account state at both account and ticker scope. Execution fees reduce the balance available to support margin.

## Before an order

Review current position, working orders, available margin, maximum possible market-order fill, and execution fee. The server is always the final margin check, so a client estimate does not guarantee acceptance.

To increase the amount available for an unlock, cancel unwanted working orders and reduce exposure deliberately. Once an unlock reaches `RESERVED`, that reservation is irrevocable.


# Positions and Settlement

The account view is the source for current positions, average prices, realized P\&L, execution fees, working-order margin, and available margin. Clients should not reconstruct money state from fills alone.

## During the session

Orders and fills update position and margin state. Execution fees are deducted on every fill and accumulate in `realized_fees`. Open P\&L changes with the current mark.

The point-in-time account response includes:

* `accountstate` for balances, delegates, unlock reservations, and contract margins;
* `orderfills` for recent order outcomes;
* `trader_margin_state` for current available margin and risk position; and
* `accountops` for delegation and unlock receipts and records.

Bots should also consume the continuous order feed and use the server-published margin state rather than a locally recomputed substitute.

<figure><img src="https://954013533-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0IyfR8sDr4geAO23BULo%2Fuploads%2Fgit-blob-ccdff2d7aac8246cbc63a84d22e44d4db4e8c64e%2Fplaceholder-account-state.svg?alt=media" alt="Placeholder for the production account, position, execution fee, and order views"><figcaption><p>Screenshot slot: show available margin, position, execution fees, open orders, and recent outcomes in one account view.</p></figcaption></figure>

## Daily settlement

At daily settlement, open P\&L folds into the Bitcoin balance and the carried position's average price resets to the settlement mark. The position can continue into the next session subject to the current contract and margin rules.

While the market is open, the account view keeps four numbers distinct: opening balance, realized P\&L, unrealized P\&L at the latest mark, and current marked equity. At the close, unrealized P\&L becomes realized, the balance moves by the full session result, and unrealized P\&L returns to zero. The closing view keeps the session P\&L beside the new balance so the trader can see both the result and what the account has now.

Use the session schedule returned by the exchange. Feeds are quiet while closed; that is not, by itself, evidence of lost connectivity.

## Expiry and roll

USDBTC products are dated. Always read the active ticker and expiry in the current [Contract Specifications](/use-sidepit/beta/trading/contract-specifications). Do not submit a stale ticker, and do not assume a position will be automatically unlocked at expiry.

If you intend to exit, flatten exposure and cancel working orders before requesting an owner-signed unlock. Unlock progress is separate from position settlement and has no promised completion time.


# DLOB Auctions

Sidepit's core market structure is **DLOB — one-second deterministic auctions**.

## One-second epochs

During an open session, signed transactions are grouped into one-second epochs. Each epoch has a deterministic transaction sequence, then a central limit order book applies price priority and matching rules.

Within an epoch, arriving a few microseconds earlier does not buy priority over a better price. Participants compete on price and risk decisions rather than physical proximity to the matching engine.

## What DLOB does not guarantee

DLOB removes the continuous speed race from the ordering rule. It does not guarantee:

* that an order will be accepted;
* that liquidity exists;
* that a market order will fill completely;
* that a limit order will fill; or
* that an order is resolved at the moment it is submitted.

## Client rule

A successful network send means **queued** for an auction. Read the order and rejection feeds to learn the result.

Order data can contain multiple messages for one epoch because products are interleaved. A raw client must filter by ticker and drain port `12124` through `more_in_epoch == 0` before acting on the completed book state.

The epoch echo and auction streams are public advanced surfaces for clients that need to observe the deterministic input sequence. See [Public API and SDKs](/users-and-agents/api).


# Public API and SDKs

Start with Sidepit's public protocol, Python SDK, agent skills, and CCXT adapter.

Sidepit exposes live production market data and exchange state without credentials. Trading writes are signed by the client; the exchange does not issue a conventional API key.

The official repository is [sidepit/Public-API](https://github.com/sidepit/Public-API). Its protocol submodule pins the public [`sidepit_api.proto`](https://github.com/sidepit/Public-API-Data/blob/main/sidepit_api.proto).

## Choose a path

| Goal                           | Start here                                                     |
| ------------------------------ | -------------------------------------------------------------- |
| Read the market in two minutes | `examples/quickstart.py`                                       |
| Onboard a human safely         | `skills/sidepit-onboarding/SKILL.md`                           |
| Trade with an authorized agent | `skills/sidepit-trade/SKILL.md`                                |
| Build in Python                | `python-client/sidepit_trader/`                                |
| Speak NNG/protobuf directly    | `Public-API-Data/sidepit_api.proto` and repository `AGENTS.md` |
| Use a CCXT-shaped interface    | `integrations/ccxt/` through the local facade                  |

## Keyless live check

```sh
git clone --recurse-submodules \
  https://github.com/sidepit/Public-API
cd Public-API
python3 -m venv python-client/.venv
python-client/.venv/bin/pip install -r python-client/requirements.txt
python-client/.venv/bin/python examples/quickstart.py
```

Expected output includes a named exchange state, active dated forward, live quote, familiar USD/BTC translation, contract size, margins, and expiry. No account or key is needed.

## Production connection

* Host: `api.sidepit.com`
* Transport: NNG over TCP
* Payloads: protobuf
* Signatures: secp256k1 ECDSA over the serialized `Transaction`
* Native price: integer sats per USD
* Clock: DLOB — one-second deterministic auctions

Feeds publish while the exchange is open and are normally quiet while it is closed. Start every client with `ACTIVE_PRODUCT` on port `12125`; do not hardcode the ticker or schedule.

## Client rule

A successful send means queued, not filled. Resolve orders from the order and rejection surfaces. Resolve account actions from receipts, terminal records, and complete account state.

Market intent is `NewOrder.price` omitted or `0`. It is native immediate-or-cancel: the order sweeps available opposite liquidity in one auction and cancels all unfilled quantity.

Read [Wire Protocol](/users-and-agents/api/wire-protocol) for ports and fields, [Agent Skills](/users-and-agents/api/agents) for the safe human/agent boundary, or [CCXT Integration](/users-and-agents/api/ccxt) for the adapter contract.


# Trading With Agents

Connect a trading agent to Sidepit through the public agent interface.

## Read the documentation

Fetch [llms.txt](https://docs.sidepit.com/llms.txt) for the documentation index and follow its Markdown links. [llms-full.txt](https://docs.sidepit.com/llms-full.txt) contains the complete documentation. If a page's HTML does not expose its content, use the Markdown URL from the index.

For funding, read [Fund and Lock Bitcoin as Markdown](https://docs.sidepit.com/use-sidepit/beta/onboarding/lock-bitcoin.md) and follow its deposit-address verification instructions. If a required source cannot be retrieved, report that verification is incomplete; do not substitute an address from chat or memory.

## Trade with an agent

You do not delegate execution because you are confident you can trust an agent. You delegate when you are no longer confident you can trust yourself to follow the plan.

Markets turn hesitation, impulse, and emotion into bad decisions. An agent gives the strategy a separate executor: one that can act consistently while the owner stays in control of the account.

Sidepit is built for that relationship. Start with [Authorize a Trading Agent](/use-sidepit/beta/onboarding/authorize-agent) to connect one to your account.

## Learn Sidepit before translating it

An agent trained on conventional crypto markets will recognize words such as margin, mark, and reduce-only, then try to complete the picture with perpetual-contract mechanics. That produces confident but incorrect answers. Sidepit is a different market structure with a dated forward, a native sats-per-USD price, scheduled sessions, daily settlement, and no intraday liquidation order.

Read the [Contract Specifications](/use-sidepit/beta/trading/contract-specifications) first. Calculate exposure, P\&L, margin, settlement, and expiry in Sidepit's native terms. Only then translate the result into the interface or currency view the trader prefers.

## Ask for your view

The exchange publishes one market and one account truth. Your agent can render it in the frame you trade: Sidepit price, forward USD/BTC, today's USD/BTC, spot, JPY, or another currency. Ask it for current balance, realized P\&L, unrealized P\&L, marked equity, available margin, and risk by dated contract.

The same interface follows expiry. It keeps each contract separate and shows a roll as two visible legs. See [Forward Price](/trader-education/future-price) for the price relationships.

The machine-readable skills, Python client, examples, and protocol implementation live in the open-source [Sidepit Public API repository](https://github.com/sidepit/Public-API). They are maintained for agents and developers rather than duplicated in this human guide.


# Wire Protocol

Sidepit's current public NNG and protobuf surface.

The canonical contract is [`Public-API-Data/sidepit_api.proto`](https://github.com/sidepit/Public-API-Data/blob/main/sidepit_api.proto). This page describes only fields present in that public file.

## Port map

|    Port | NNG pattern | Public payload or action                             |
| ------: | ----------- | ---------------------------------------------------- |
| `12121` | Push        | Submit signed `SignedTransaction` orders and cancels |
| `12122` | Sub         | `MarketData`: quote, in-progress bar, and depth      |
| `12123` | Sub         | `TxBlockStream`: epoch echo clock                    |
| `12124` | Sub         | `OrderData`: book changes, fills, and margin states  |
| `12125` | Req/Rep     | `RequestReply` queries and signed account actions    |
| `12126` | Sub         | `EpochOrders`: advanced auction stream               |
| `12127` | Sub         | Closed one-minute `EpochBar` values                  |
| `12128` | Sub         | `RejectedTransaction`                                |
| `12129` | Sub         | Full open-order snapshot triggered through `12125`   |

## Identity and signing

`sidepit_id` is the owner's full Native SegWit `bc1q` address. In delegated mode, `agent_id` is the full address derived from the signing agent's compressed public key.

The signing sequence is:

1. populate the complete `Transaction`, including a strictly increasing nanosecond timestamp;
2. serialize it with protobuf;
3. SHA-256 hash the serialized bytes;
4. create a compact 64-byte secp256k1 ECDSA signature and hex-encode it; and
5. wrap it in `SignedTransaction` with `signature_version=0`.

The deterministic order ID is `{sidepit_id}:{timestamp_ns}`. Addresses, order IDs, and Bitcoin transaction IDs are carried in full.

## Order semantics

`NewOrder` contains side, size, price, and ticker. A missing/default `price=0` means native market intent. The engine normalizes it toward the opposite band edge for the sweep, then cancels all residual quantity before it can rest. An explicit nonzero price at a band edge remains a limit and may rest.

Port `12124` can publish more than one `OrderData` message per epoch. Messages identify their ticker, and `more_in_epoch == 0` marks the completed epoch.

## Account and execution fee state

`TraderPositionOrders.accountstate` contains `AccountMarginState`, including balances, `available_margin`, `pending_unlock`, `active_delegates`, and contract margins. `PositionMargin.realized_fees` carries execution fees accumulated by the engine at account and ticker scope.

The production constant is `execution_fee_sats_per_contract_per_side = 125`. It is deducted for every filled contract from each participant on each execution.

## Unlock records

`Transaction.unlock_req` carries explicit or MAX intent. Point-in-time account data exposes receipts and `AccountOperations.unlock_records`, whose public enum includes:

* `UNLOCK_PENDING`
* `UNLOCK_REJECTED`
* `UNLOCK_RESERVED`
* `UNLOCK_PROCESSING`
* `UNLOCK_COMPLETED`

`UnlockRecord` also carries the full operation ID, amount, Bitcoin transaction ID, and status update map. Terminal records and current account state are truth; an old pending receipt cannot override them.

## Rejects

Reject codes are named enum values, including `RC_VERIFY`, `RC_DUP`, `RC_ID`, `RC_BAD`, `RC_MARGIN`, and `RC_DK`. Cancel flows may also produce `RC_CDUP` or `RC_CREJ` when the target is already gone.


# CCXT Integration

Current capabilities and operational boundaries of Sidepit's CCXT adapter.

Sidepit maintains a CCXT-shaped adapter in [`Public-API/integrations/ccxt`](https://github.com/sidepit/Public-API/tree/main/integrations/ccxt). It runs through the repository's optional local REST/WebSocket facade and has not yet been submitted upstream to CCXT.

## Capability contract

* `createOrder: true`
* `createMarketOrder: true`
* market `timeInForce: IOC`
* limit and market orders, cancel, balances, positions, open orders, trades, ticker, depth, bars, and account-scoped order observation
* CCXT Pro watches for ticker, order book, trades, one-minute bars, orders, and account trades

Native market orders omit price so protobuf uses `NewOrder.price=0`. The adapter returns an optimistic `open` status after submission because the next DLOB one-second deterministic auction determines the outcome. Confirm it with `fetchOrder`, `fetchOpenOrders`, `watchOrders`, and rejections.

## Price conversion

Sidepit's native integer price is sats per USD. The adapter exposes unified BTC per USD:

`BTC-per-USD = sats-per-USD × 0.00000001`

Conversion happens once at the adapter boundary.

## Credentials

For delegated trading:

* `apiKey` is the owner's public `bc1q` Sidepit ID;
* `secret` is the restricted agent's signing secret; and
* `options.traderId` is that agent key's derived `bc1q` address.

Never configure the owner's money key as an automated trading secret. Keep the local facade local: the adapter serializes and signs client-side, and the relay should receive signed bytes rather than custody a key.

## Build and smoke test

Follow the current [`integrations/ccxt/README.md`](https://github.com/sidepit/Public-API/blob/main/integrations/ccxt/README.md). The smoke test distinguishes closed-session reads from an explicitly funded live cycle and verifies offline that market wire bytes omit the price field.


# FAQ

## Is Sidepit live?

Yes. ProofNet is a production beta running on real mainnet Bitcoin. Access remains code-gated, and there is no paper-trading venue.

## What trades on Sidepit?

Sidepit trades dated, Bitcoin-margined USDBTC forwards—not perpetual contracts. The contract is quoted in integer satoshis per USD. Read the [Contract Specifications](/use-sidepit/beta/trading/contract-specifications), then query the active ticker, contract size, margins, schedule, and expiry from the public exchange feed.

## Why one-second auctions?

**DLOB — one-second deterministic auctions** remove time priority within the shared second. Better price wins over faster arrival. This changes the competitive axis from infrastructure speed to price and risk judgment.

## Is a queued order filled?

No. A queued order has entered an auction. Use order, fill, and rejection data to resolve its outcome.

## What happens to a market order?

A native market order has no user-chosen limit price. It sweeps available opposite liquidity within the exchange price band in one auction and cancels every unfilled remainder. It never rests.

## What is the execution fee?

Sidepit charges an execution fee of 125 sats per contract per side per execution. The engine deducts it on every fill. A trader opening and later closing one contract pays 250 sats; at $100,000/BTC, that is about $0.25.

## What is my Sidepit account?

Your connected Native SegWit `bc1q` Bitcoin address is your Sidepit ID and account. Fund that address first, then use LOCK. Never send directly from an external wallet or exchange to the deposit/lock address.

## What is Sidepit's deposit address?

It is the exchange address your LOCK transaction pays: `bc1qn9szw2tfte4m2l7enhentvjpvnque932xr2m03`. Send to it **only from your own Sidepit ID** — never from an exchange or any other wallet, because Sidepit credits the account the payment spends from. Funding is: decide how much you want to trade, send exactly that to your own Sidepit ID, then LOCK by sweeping the Sidepit ID's entire balance to the deposit address.

Verify the address against the current holder of [Jacket #8](https://ordinals.com/inscription/42713f393a35faaddf5d173cfef61673437c483de9a31f5847f0b3e8bd9df0a5i0) and `PROD_DEPOSIT_ADDRESS` in the open-source Python SDK's [`python-client/sidepit_trader/config.py`](https://github.com/sidepit/Public-API/blob/main/python-client/sidepit_trader/config.py). If this page, the Jacket #8 holder, and the SDK constant disagree, stop and contact the Sidepit beta operator before sending anything. Follow [Fund and Lock Bitcoin](/use-sidepit/beta/onboarding/lock-bitcoin#verify-the-deposit-address); do not use chat or memory as the source of a deposit address.

## What is Jacket #8?

[Jacket #8](https://ordinals.com/inscription/42713f393a35faaddf5d173cfef61673437c483de9a31f5847f0b3e8bd9df0a5i0) is an inscription in the Sidepit Jacket collection and the on-chain pointer to Sidepit's deposit address. Read its current holder address on ordinals.com and compare it with the address and SDK constant in [Fund and Lock Bitcoin](/use-sidepit/beta/onboarding/lock-bitcoin#verify-the-deposit-address). If Sidepit changes the deposit address, Jacket #8 moves with it.

## Can an AI agent withdraw my Bitcoin?

Not when it uses the supported delegation path. A delegated key can trade and cancel for the owner's account. The protocol prevents it from unlocking funds, authorizing another agent, or revoking an agent.

## What if the agent key is lost?

The owner's Bitcoin key is unaffected. Revoke the lost public agent ID and authorize a replacement. Existing positions and orders remain, and any surviving copy can trade until revocation becomes active.

## What if the owner wallet is lost?

Restore the seed privately and verify that it reproduces the exact same full Sidepit ID. If every valid key and recovery seed is lost, there is no documented alternate signature path for owner actions. Never give support a seed or private key.

## Where do unlocked funds go?

Only to the account's same full Sidepit ID. There is no alternate destination field.

## How long does an unlock take?

Sidepit does not promise a completion time. Follow the same operation ID through `PENDING`, `RESERVED`, `PROCESSING`, and `COMPLETED`, or a named rejection. Once `RESERVED`, the request is irrevocable and cannot be canceled.

## Where should developers start?

Clone the [Public API repository](https://github.com/sidepit/Public-API), read `AGENTS.md`, and run the keyless quickstart. The public protocol contract is [`sidepit_api.proto`](https://github.com/sidepit/Public-API-Data/blob/main/sidepit_api.proto).


# Trading App Glossary

Terms used in Sidepit's production trading and account views.

## Market

**Active forward** — The dated USDBTC product currently selected by the exchange. Never hardcode its ticker.

**Sats per USD** — Sidepit's native price: the number of satoshis represented by one U.S. dollar. `USD/BTC = 100,000,000 ÷ sats-per-USD`.

**Bid / Ask** — Highest displayed buy price and lowest displayed sell price, with available size.

**Last** — Price of the most recent execution.

**Open / High / Low / Close** — Native sats-per-USD bar values. Because the quote is inverse, a Sidepit high is a familiar USD/BTC low.

**Volume** — Contracts executed for the displayed interval or session.

**Open interest** — Outstanding position quantity carried by participants.

**DLOB** — Sidepit's Distributed Limit Order Book: **DLOB — one-second deterministic auctions**. Within an epoch, price outranks speed.

## Orders

**Limit** — An order with an explicit positive integer price. It can execute at that price or better, and unfilled quantity may rest.

**Market** — A native immediate-or-cancel order with no user-chosen limit price. It fills available opposite liquidity within the exchange price band in one auction and cancels all residual quantity.

**Queued** — Sent to an upcoming auction; not yet a fill.

**Resting** — Unfilled limit quantity visible in the order book.

**Filled** — Executed quantity.

**Partial fill** — Some market quantity executed and the immediate-or-cancel remainder was canceled, or some limit quantity executed while residual limit quantity remains.

**Canceled** — Quantity no longer eligible to execute.

**Order ID** — Complete public identifier `{sidepit_id}:{timestamp_ns}`. Do not truncate it in technical records.

## Account

**Sidepit ID** — The owner's complete Native SegWit `bc1q` Bitcoin address. It is the account identity and unlock destination.

**Agent ID** — The complete `bc1q` address derived from an authorized trading agent's public key.

**Locked balance / net locked** — Bitcoin credited through the account's LOCK path, adjusted by on-chain inflows and outflows.

**Available margin** — Current sats available for orders or an owner unlock, subject to the server's final rules.

**Initial margin** — Contract requirement used when adding exposure.

**Maintenance margin** — Published lower margin threshold used by ongoing risk checks.

**Restricted** — Account state in which only risk-reducing activity is accepted. Sidepit does not choose or submit an exit order for the trader.

**Reduce-only** — Trading direction imposed on a restricted account. A long position may sell toward flat; a short position may buy toward flat. An order that increases exposure is rejected.

**Position** — Net contract exposure. For USDBTC, BUY adds USD exposure; SELL increases Bitcoin-price exposure.

**Average price** — Current position's average entry mark. It resets when daily settlement folds P\&L.

**Execution fee** — 125 sats per filled contract per side per execution, deducted by the engine and reported in `realized_fees`.

## Unlock

**PENDING** — Request received but not yet resolved by account and margin rules.

**RESERVED** — Amount reserved from available funds exactly once. The request is now irrevocable.

**PROCESSING** — Custodian payout in progress; a Bitcoin transaction ID is attached when available.

**COMPLETED** — On-chain outflow reconciled with the account reservation.

**REJECTED** — Request failed a named verification, identity, duplicate, or margin check.


# Forward Price

Understand dated forward price, basis, and Sidepit's inverse USDBTC quote.

A forward price is the price agreed today for an exposure dated in the future. Sidepit's USDBTC forward expresses the value of U.S. dollars in Bitcoin at the product's expiry.

## Spot and forward

The spot price describes immediate exchange. A dated forward price also reflects the time remaining to expiry and the market's relative cost or preference for holding Bitcoin and dollars over that interval.

The difference between spot and forward is called the **basis**. As expiry approaches, arbitrage and settlement expectations tend to pull the forward toward the relevant spot reference, though real markets can diverge because of liquidity, financing, risk, and positioning.

## Sidepit's quote

Sidepit quotes the unit the contract actually settles in: integer satoshis per USD. Each contract represents a fixed USD amount, while margin and P\&L remain in Bitcoin.

`Sidepit price = 100,000,000 ÷ familiar USD/BTC`

Examples:

| Familiar USD/BTC | Sidepit sats per USD |
| ---------------: | -------------------: |
|          $50,000 |                2,000 |
|          $80,000 |                1,250 |
|         $100,000 |                1,000 |

A higher Sidepit price means Bitcoin is worth fewer dollars. A lower Sidepit price means Bitcoin is worth more dollars.

P\&L is linear in this native quote: the same one-sat-per-USD move has the same satoshi value for the same contract quantity at every price level. The familiar USD/BTC view is reciprocal, so equal moves in that displayed number do not carry constant Bitcoin value.

## One price, several views

Sidepit publishes the market in its native unit: satoshis per future U.S. dollar. The same price can be shown in whichever frame makes the exposure easiest to read.

* **Forward USD/BTC:** `100,000,000 ÷ Sidepit price`
* **Today's dollars:** multiply the forward USD/BTC value by the U.S. dollar discount factor from now to expiry. With a continuously compounded annual zero rate `r` and year fraction `T`, that is `forward USD/BTC × e^(-rT)`.
* **Another currency:** multiply the chosen dollar view by its current FX rate. A JPY view, for example, uses JPY per USD.

The present-value view is not the spot price. It is the same dated forward expressed in today's dollars. The rate source, observation time, maturity, day-count convention, and any interpolation should travel with the number.

A trader can ask an agent for the view directly: “Show this market as Sidepit price, forward USD/BTC, today's USD/BTC, and JPY/BTC.” The market does not change. Only the lens does.

## Hedging intuition

A Bitcoin holder who wants to preserve a target amount of dollar purchasing power can BUY USDBTC. If Bitcoin falls in USD terms, sats per USD rise and the forward position can gain sats. If Bitcoin rises, that hedge can lose sats while the holder's Bitcoin gains purchasing power.

SELL USDBTC takes the opposite exposure and increases sensitivity to a rise in Bitcoin's USD price.

## Expiry and roll

The ticker identifies the contract and its expiry. A roll is a change from one dated exposure to another, so the old and new tickers, prices, expiries, basis, quantities, and execution fees should remain visible as separate legs. The active product and published schedule determine which contract can trade; they should be read again before every roll.

## P\&L

For a BUY position:

`gross P&L sats = (exit price − entry price) × contract USD unit × contracts`

For a SELL position, reverse the price difference. Then subtract execution fees: 125 sats per contract for each filled side of each execution.

The active contract publishes its USD unit, tick size, tick value, margins, and expiry. Query those values rather than carrying an example into a live decision.


# Risk Disclosure

This Risk Disclosure Statement provides important information about the risks associated with trading Sidepit's Bitcoin-margined USDBTC forwards. By using Sidepit's services, you acknowledge and accept the risks described below. This statement does not disclose all the risks and other significant aspects of trading in cryptocurrency markets. You should carefully consider whether such trading is suitable for you in light of your circumstances and financial resources.

* Market Risk: Cryptocurrency prices are highly volatile and can fluctuate widely due to market demand, global regulatory news, and other factors. There is a significant risk of losing all of your invested capital. You should not speculate with capital that you cannot afford to lose.
* Liquidity Risk: Under certain market conditions, it may be difficult or impossible to exit a position without substantial losses. This may occur, for example, if the market for a particular cryptocurrency moves sharply against your position.
* Technology Risk: Trading on Sidepit involves risks associated with the use of an Internet-based deal execution trading system. These include, but are not limited to, the failure of hardware, software, and Internet connections. The result of any system failure may be that your order is either not executed according to your instructions or not executed at all.
* Regulatory Risk: The regulatory status of cryptocurrency markets and transactions is still unclear or unsettled in many jurisdictions. Changes in regulations or the imposition of new regulations can affect the value and liquidity of cryptocurrencies and your ability to access or use the Sidepit platform.
* Operational Risk: Sidepit seeks to mitigate risks associated with cybersecurity, data protection, and unauthorized access to user accounts. However, no system or platform can be entirely secure against hacking or fraud. Users may be exposed to financial loss if their accounts are compromised.
* Legal Risk: The legality and regulation of cryptocurrency trading and price exposure vary by jurisdiction and may change. Users are responsible for understanding and complying with all laws applicable to their transactions and holdings.
* Execution Risk: Sidepit provides a platform for trading exposure to the price movement of Bitcoin against USD. There is a risk that trades may not execute, may execute only partially, or may execute at prices you did not expect when using an order without price protection, especially when liquidity is thin.
* Counterparty Risk: While Sidepit seeks to provide a transparent and fair trading environment, there is always the risk associated with the failure of the platform or other users to fulfill their obligations.

By using the Sidepit platform, you represent that you have sufficient knowledge, market sophistication, professional advice, and experience to make your own evaluation of the merits and risks of any transaction conducted via Sidepit. Sidepit does not provide investment, legal, or tax advice or make investment recommendations. The Sidepit platform is provided on an "as is" and "as available" basis without representations, warranties, guarantees, or conditions of any kind.

We encourage all users to approach cryptocurrency trading with caution and to only invest funds that they are prepared to lose. The cryptocurrency markets can offer significant rewards but also come with equally significant risks. It's crucial to fully understand these risks and to seek independent advice if necessary.


# Terms of Service

### Introduction

Welcome to Sidepit, a Bitcoin-margined forwards exchange. Our services allow eligible users to trade exposure to the price movements of Bitcoin (BTC) against USD through dated USDBTC products.

### Acceptance of Terms

By accessing or using Sidepit, you agree to be bound by these Terms of Service ("Terms"). If you do not agree to these Terms, you may not access or use our services.

### Service Description

Sidepit offers a platform for users to trade dated USDBTC forwards. Users may take either direction and are responsible for the resulting profit, loss, margin, execution fee, liquidity, and technology risks. The platform uses Sidepit's patented Distributed Limit Order Book technology: DLOB — one-second deterministic auctions.

### User Obligations

* Account Registration: Users may be required to register an account and provide accurate and complete information.
* Compliance: You agree to comply with all applicable laws and regulations in your use of Sidepit and its services.
* Restricted Activities: You are prohibited from engaging in any activity that Sidepit deems to be harmful to its operations, reputation, or other users.

### Intellectual Property

All content, technology, and software on Sidepit, including our patented DLOB technology, are the intellectual property of Sidepit or its licensors. Your use of our services does not grant you any rights to our intellectual property.

### Risk Acknowledgment

You acknowledge that cryptocurrency trading involves significant risk. Sidepit does not guarantee any trading outcome. You are solely responsible for your trading and investment decisions.

### Disclaimer of Warranties

Sidepit provides its services on an "as is" and "as available" basis without any warranties, express or implied, including but not limited to the accuracy, reliability, or availability of the service.

### Limitation of Liability

Sidepit shall not be liable for any direct, indirect, incidental, special, consequential, or exemplary damages resulting from your use of the services.

### Indemnification

You agree to indemnify and hold harmless Sidepit and its officers, directors, employees, and agents from any claims, damages, obligations, losses, liabilities, costs, or debt, and expenses arising from your use of the services.

### Modification of Terms

Sidepit reserves the right to modify these Terms at any time. Your continued use of the services after any such changes constitutes your acceptance of the new Terms.

### Governing Law

These Terms shall be governed by the laws of the State of California, without regard to its conflict of law provisions.

### Contact Information

For any questions or concerns regarding these Terms, please contact us at <support@sidepit.com>.

**Thank you for choosing Sidepit. We are excited to have you join us on this journey to transform cryptocurrency trading.**


# Privacy Policy

### Introduction

This Privacy Policy is designed to inform users of the Sidepit website and platform ("Sidepit", "we", "us", or "our") about how we collect, use, and protect the personal information of those who opt to provide their email addresses for beta access or any other purpose related to our services. Sidepit is committed to ensuring the privacy and security of your personal information.

### Collection of Information

We collect information directly from you when you choose to provide your email address for beta access, updates, or more information about our services. The primary purpose of collecting your email is to provide access to our platform, updates on our services, and other relevant information pertaining to your interest in cryptocurrency trading and speculation.

### Use of Information

#### The information we collect is used to:

* Provide you with beta access to our platform as requested.
* Send updates and information about Sidepit, including new features, opportunities, and services.
* Understand how our platform is being used to improve our services and user experience.
* Communicate with you about your account, if applicable, and respond to inquiries or requests.

### Sharing of Information

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information except in the following cases:

* To comply with legal requirements, such as a law, regulation, warrant, subpoena, or court order.
* To protect our rights, property, or safety, and those of our users or others.
* In connection with a corporate transaction, such as a merger, acquisition, or asset sale.
* Data Security

We implement a variety of security measures to maintain the safety of your personal information. Access to your personal data is restricted to those employees, contractors, and agents who need to know that information to provide services to you and are subject to strict contractual confidentiality obligations.

### Your Choices

You may opt-out of receiving future emails from us by following the unsubscribe link located at the bottom of our emails or by emailing us directly with your request to unsubscribe.

### Changes to this Privacy Policy

We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. You are advised to review this Privacy Policy periodically for any changes.

### Contact Us

If you have any questions about this Privacy Policy, please contact us at <info@sidepit.com>.

**By providing your email address and using our platform, you consent to this Privacy Policy and agree to its terms.**


# Sidepit Primitives

Plain definitions for Sidepit's market structure and first live implementation.

Sidepit is neither a crypto exchange nor a traditional-finance exchange. It is a live, mechanism-designed market protocol grounded in game theory. Its rules are designed so self-interested participants compete on price and risk instead of private infrastructure speed.

The protocol eliminates MEV and HFT as sources of matching priority. Automated traders may participate, but a faster machine does not own the front of the line.

These definitions explain the market structure. The trading pages and public protocol remain the authority for current products, fields, and session values.

## Market structure

**Exchange** — The place where liquidity goes to discover price. It eliminates bilateral counterparty risk by putting common market rules between buyer and seller. It is different from a dealer that publishes its own quote around a price formed elsewhere.

**Price discovery** — The process by which competing orders move a market toward an equilibrium price as new information arrives. It is not merely the last trade, an index, or a price displayed by one dealer.

**Mechanism design** — Choosing the market's rules so individual competition produces the intended market outcome. Sidepit changes the ordering rule itself: participants compete on price and risk rather than on who can reach the matching engine first.

**Speed advantage** — The priority a participant gains by reaching a continuous matching engine sooner. Continuous markets award it privately through shorter wires, colocation, and specialized hardware. DLOB captures that advantage inside a shared second and prices it openly instead of giving it to the fastest machine.

**A free market on top of the free market** — Once each second, DLOB creates a market for the speed advantage above the market for the asset. Speed is priced openly; then the underlying order book discovers price.

**DLOB** — Sidepit's patented Distributed Limit Order Book. DLOB accepts signed transactions into one-second epochs, prices the speed advantage, produces a deterministic sequence, and applies price-priority matching.

**Epoch** — Sidepit's one-second execution window. Transactions accepted for the same epoch share its timing boundary and resolve through one deterministic auction. An epoch is not a guaranteed fill and not a promise that every request completes in one second.

**Execution risk** — Hidden uncertainty while trying to complete a trade, including information leakage, adverse selection, slippage, and an outcome changed by faster participants.

**Liquidity risk** — The visible, priceable trade-off between the price offered and the quantity available. Sidepit does not remove liquidity risk. Its market structure is designed to move competition out of hidden execution speed and into price.

## First live implementation

**Sidepit 1 — Centralized Exchange Echo Protocol** — The first live implementation of the Sidepit market structure. Its centralized engine runs DLOB on real Bitcoin accounts while the public protocol exposes the market's signed inputs and resulting state. The `sp1-cex-echo` repository records this implementation lineage.

**CEX Echo** — The observable path from signed intent to exchange outcome. A client submits a signed action, receives a receipt, and can follow public order, rejection, fill, market, and account-state surfaces instead of treating silence as success.

**ProofNet** — The live Sidepit 1 exchange environment. It trades dated, Bitcoin-margined USDBTC forwards and publishes the active contract and session values through the [Public API](https://github.com/sidepit/docs-gitbook/tree/docs/proofnet-r2-production/appendix/api.md).

**USDBTC** — Sidepit's direct expression of dollar exposure using Bitcoin. Each contract carries the published fixed USD unit; the native price is satoshis per USD, and margin, fees, and P\&L are measured in satoshis. A client or agent may translate that native value into forward USD/BTC, today's dollars, JPY, or another view without changing the signed order.

Continue with [How Sidepit Works](/use-sidepit/beta/l2-overview), [Contract Specifications](/use-sidepit/beta/trading/contract-specifications), or [DLOB Auctions](/use-sidepit/beta/trading/auction-bids).


