{"slug": "here-s-half-of-a-trading-key-get-an-order-past-the-other-half", "title": "Here's half of a trading key. Get an order past the other half.", "summary": "Mishmar, a trading-key security project, has launched a testnet challenge in which participants play the hostile bot against a two-party signing scheme that splits each exchange API key between the agent's machine and a separate Mishmar signer service. The system uses two-party ECDSA via Coinbase's open-source cb-mpc for Hyperliquid and two-party FROST (RFC 9591) for Binance, with Mishmar's signer adding its half only to orders it decoded and matched to a signed engine decision. The contest runs 24 seats until 13 December 2026, paying up to $500 in USDC on Arbitrum for fills that bypass the account's limits.", "body_md": "Trading bots and AI agents trade with exchange API keys, and whoever holds the key can trade. So the limits a bot is meant to respect, like order size, exposure or daily loss, usually live in the bot's own code. A bug, a prompt injection, or whoever takes over the bot's machine can trade straight around them.\n\nMishmar is our attempt to make those limits hold even when the bot is hostile. We're running a testnet challenge to find out whether they do: you play the hostile bot, and we pay if you get a trade past the limits. This post is the attack surface.\n\nEach agent trades with its own key on each exchange account. The exchange sees an ordinary key and checks ordinary signatures, but the private key never exists in one place. It's split between two signers: the agent's, on the machine the agent runs on, and Mishmar's, in a separate signer service. The two halves are generated together, in two rounds of messages, and never combined.\n\n| Venue | What the venue checks | How the two halves sign | \n|---|---|---|\n| Hyperliquid | ECDSA over secp256k1 | Two-party ECDSA, from Coinbase's open-source cb-mpc | \n| Binance | Ed25519 | FROST (RFC 9591), with two parties | \n\nMost of the signers' exchange happens ahead of time, so an allowed order costs no extra round trip. On Hyperliquid the two signers run three of the protocol's four messages for a batch of future orders; each prepared slot is used once and thrown away, because using one twice would give the key away. On Binance, Mishmar hands out its first-round FROST commitments in advance. Market orders are bounded from the exchange's order book before they go out; an exit leaves as a true market order.\n\n**Mishmar's signer** adds its half only to an order or a cancel that it decoded itself, from the bytes, and that matches a decision the engine signed. The engine itself holds no signing secret.\n\n**The agent's signer** signs only what its own agent proposed, checked against the bytes: the same market and side, a size no larger, a limit price within 1% and never on the wrong side.\n\nIn the challenge you control the agent's side completely, so its checks protect nothing. Patch the signer, skip it, write your own. The claim under test is the other half: only orders the rules allow get Mishmar's half.\n\nA seat comes with:\n\nFour rules apply to the account:\n\nInside them you can trade as much as you like.\n\n| Prize | Class | What counts | \n|---|---|---|\n| $500 | Ghost order | A fill on the exchange with no allowed decision behind it in the ledger | \n| $250 | Past a limit | An allowed order whose fill lands 2% or more past a blocking limit, valued at the fill price | \n| $250 | Skipped approval | A fill of $510 or more that nobody approved | \n\nProof is the signed ledger plus the exchange's fills. The first report of each root cause wins, paid in USDC on Arbitrum; every valid finding also gets a year of Pro and a credit in the write-up. Market orders can slip by up to 1%, so a fill less than 2% past a line doesn't count, and neither does a position that drifts past a cap because the market moved.\n\nIf we were attacking it, we'd look where two parts of the system have to agree:\n\n24 seats, open until 13 December 2026, 23:59 UTC. Keys go out as seats are confirmed. Rules and sign-up: [mishmar.io/contest](https://mishmar.io/contest?ref=writeup)\n\nHow a trading key is split, in full: [docs.mishmar.io](https://docs.mishmar.io/concepts/how-a-trading-key-is-split/)\n\nMishmar", "url": "https://wpnews.pro/news/here-s-half-of-a-trading-key-get-an-order-past-the-other-half", "canonical_source": "https://dev.to/ishai_mishmar/heres-half-of-a-trading-key-get-an-order-past-the-other-half-3e34", "published_at": "2026-11-13 08:10:27+00:00", "updated_at": "2026-11-13 08:21:14.385883+00:00", "lang": "en", "topics": ["ai-agents", "ai-safety", "ai-infrastructure"], "entities": ["Mishmar", "Hyperliquid", "Binance", "Coinbase", "cb-mpc", "Arbitrum", "FROST"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/here-s-half-of-a-trading-key-get-an-order-past-the-other-half", "markdown": "https://wpnews.pro/news/here-s-half-of-a-trading-key-get-an-order-past-the-other-half.md", "text": "https://wpnews.pro/news/here-s-half-of-a-trading-key-get-an-order-past-the-other-half.txt", "jsonld": "https://wpnews.pro/news/here-s-half-of-a-trading-key-get-an-order-past-the-other-half.jsonld"}}