Long or short Bitcoin, margined and settled in sats. No order book: oracle-priced vault execution. Every fill itemizes to zero. Live on testnet.

Long or short Bitcoin — in sats. Inverse perps. Oracle-priced vault execution, no order book. The ledger is the product. Live on testnet: testnet.hardbasis.com
49
6
61
2,116
GM. Reserve check this morning: status clean, drift zero. Testnet sats are worth nothing. The check is real.
16
Enter a position and its exits in one request. A bracket carries the entry, a stop and a take-profit, and the exits only activate once the entry fills, sized to what actually filled. When one exit fires, the other cancels.
2
2
41
One bitcoin is one hundred million sats. Nobody needs a whole one to start. Count in the unit, save in the unit, think in the unit.
28
GN. The reserve check runs all night. Anyone can read it at testnet.hardbasis.com/por
24
If trading here ever halts, withdrawals do not halt with it. A withdraw key works in every halt mode. Trading can stop. Taking your free balance out does not.
2
3
41
Sending a large withdrawal to an address you have never been paid to before? The server makes you confirm it first, with a token tied to that address and that amount. A wrong-address payout cannot be reversed, so the check lives on the server, not just in the app.
1
39
GN. The engine doesn't sleep. Your stops trigger on the oracle price while you do.
1
1
66
Set a sweep threshold and anything above it in your free balance goes back to your own address automatically after each deposit. Keep on the venue only what you trade with.
1
2
69
If deposits are ever paused during an incident, a deposit that arrives is not lost and not half-booked. It waits on the rail, uncredited, and is booked exactly once when the pause lifts. Refusing to book is safe. Booking in the middle of an incident is not.
2
2
75
Our reserve check is public. testnet.hardbasis.com/por serves the engine's own reconciliation of sats held against sats owed, with the drift in millisats and its history. As I write this: drift zero, status clean. Testnet sats are worth nothing. The check is real.
2
69
A reduce-only order can shrink or close your position. It can never flip it or grow it. Every stop and take-profit here is reduce-only, so a protective order cannot accidentally open the opposite trade.
1
53
Running a bot? Give its key trade scope and nothing else. Keys here carry independent scopes: read, trade, withdraw. A trade key cannot move a single sat off the venue, and a key can only mint keys narrower than itself. A leaked bot key can trade. It cannot withdraw.
51
A withdrawal here moves your sats to escrow, pays, then settles, each step recorded before the next. If anything crashes in between, it resumes where it stopped and the payment goes out exactly once. Never zero times, never twice.
39
Every position here carries its own margin. Funding is paid from it, and if the position is liquidated the loss comes out of it. Nothing reaches into your free balance. One position going wrong cannot drain the sats you left unallocated.
1
60
Your connection drops right after you send an order. Did it go through? Send it again with the same idempotency key and you get the original result back, not a second order. A retry never fills twice.
45
Our ledger is zero-sum by construction. Every movement of sats has a matching other side, and the sum of every balance in the system is recomputed inside each posting. If it is not exactly zero, the posting cannot commit. Drift is not detected later. It is refused.
35
Every state change in our engine is an event, numbered in order, and each one carries a hash of the one before it. Change any past event and every hash after it breaks. The whole history can be replayed from the start and has to produce the same state, byte for byte.
1
44
Running a bot? Arm a timer. If your bot stops refreshing it, from a crash or a dropped connection, the engine cancels your open orders when it runs out. Set it to zero to disarm. A crashed script should never leave live orders behind.
1
2
3
194
Funding here accrues every second and settles hourly. There is no snapshot, so opening a position a moment before the hour earns nothing and costs nothing. You pay or receive for exactly the time you held it. There is nothing to time.
1
1
41
Our testnet runs the same engine with money that is worth nothing, on purpose. Open a position, get liquidated, lose nothing. It is the only honest way to learn what a coin-margined position does when the price moves against your collateral. testnet.hardbasis.com
1
2
46