Search projects, hackathons, sponsors and tech

    ← All projects

    Shielder

    Traders don't blow up on the trade. They blow up on the top-up after. Shield refuses that top-up.

    Demo

    About

    Open the demo link. It analyses a real Hyperliquid mainnet trader's public history — not ours, not a mock — and replays their worst session. They were down $1,302. They added another $13,894. Fifty-seven minutes later that session was down $53,485, and it ended at minus $117,089. Then it shows what Shield would have done: released $3,750, the limit that trader's own numbers imply, leaving $10,144 out of reach. It also says plainly that it could not have undone the loss. It could only have kept that money out of the session. That is the whole product. Traders don't lose their money to hacks. They lose it in the ten minutes after a red session, sending one more deposit to win it back. Every wallet ever built will sign that deposit, and no exchange can credibly be the one to refuse it — an exchange holding your money against your own stated wish owns a liability, so it builds an appeals path, and an appeals path is exactly what destroys a commitment device. So Shield is a contract with nobody to ask. ShieldVault.sol is deployed and immutable on HyperEVM testnet at 0xDaA8B6a85391d54397c3847F006a49A16d0F37b3 — no owner, no proxy, no upgrade path, including for us. You set rules while calm: a protected floor, a rolling 24-hour release limit, a loss trigger. Tightening any of them takes effect in the same block. Weakening one waits 24 hours and must be confirmed again tomorrow, and any tightening in between cancels it, so tilt cannot pre-load an escape. v3 adds a risk ladder — NORMAL, REDUCED, LOCKED — where the drawdown that moves you down a rung is private. The chain holds a salted hash of it; the plaintext exists only inside a Chainlink confidential workflow. A verifier can move you down the ladder, never up, and only to a rung you wrote yourself. Everything in the demo is real and checkable. The trader is a public mainnet account. The contract is deployed. The loss that fires the rule is a genuine Hyperliquid testnet loss. scripts/verify-trader.ts re-derives the headline number straight from Hyperliquid's own API and tells you whether it agrees. Honest limits, stated up front: the vault is on testnet, the Privy release evidence is on v1 rather than v3, and The Graph has no HyperEVM testnet entry so the live Substreams rows come from a Sepolia twin of the same bytecode. All of that is in the repo rather than left for a judge to find.

    How it's made

    Contract. ShieldVault.sol v3 at 0xDaA8B6a85391d54397c3847F006a49A16d0F37b3 on HyperEVM testnet (chain 998), immutable, one contract holding many vaults keyed by authority address. Money leaves through five gated paths only. 64 Foundry tests, including 6 regressions pinning three defects our own review found in v1 and fixed in v2, and 15 for the v3 ladder. 70 more tests on the server and client. Chainlink CRE — Best Confidential Workflow. handlerInTee from @chainlink/cre-sdk with [{ tee: "nitro", regions: ["us-west-2"] }]. Two secrets are read in-enclave via runtime.getSecret: the verifier key, and — the one that makes this a confidential application rather than confidential plumbing — the user's private risk ladder, the trailing drawdown at which their own reload budget shrinks. The chain holds only keccak256(thresholds ‖ salt). The enclave recomputes that hash, fetches the venue's fills over the TeeRuntime HTTP overload, and emits exactly {tier, ladderHash, nonce, expiry}: no threshold, no dollar figure. On chain that verdict moved a live vault down its ladder. The evidence transcript includes two negative controls — breaking the verifier secret kills the run before any HTTP call, withholding the ladder secret stops the CLI outright — which is what converts "a secret is present" into "the secret is load-bearing". The Graph — Composable products. substreams-evm/ builds five modules composed on The Graph's foundational ethereum-common@v0.3.3, whose index_events is the declared blockFilter for both maps. The standards leverage is measurable rather than asserted: our entire EVM package is 268 lines of Rust in one file, we never wrote a log scanner or a block index, and the diff between the HyperEVM manifest and the Sepolia manifest is six substantive lines driving those same 268 lines across two unrelated chains. All three packages are published and resolve by name — substreams gui shield-evm-behavioral-memory-sepolia@v0.1.0 runs the pipeline with no clone. The Shield server consumes it live: /api/health reports source.mode "substreams" and the vault is discovered from the stream by store_vault_registry with no RPC log scan. Privy — Best Financial Flow. The embedded wallet is the vault's authority, not a login: the contract reverts for every other address. Created with createOnLogin "users-without-wallets". The financial flow is a $5.00 release from the vault into a Hyperliquid perps account in a single transaction, through Circle's CoreDepositWallet to the HyperCore system address, signed by the wallet itself. Structurally, Privy is where the funnel earns the ask — the wallet is not requested until the user has seen their own reload history, the replay of their worst session, and the plan Shield proposes from it. Rest of the stack. Bun server: indexer (Substreams or a labelled RPC fallback), behaviour engine, policy, EIP-712 verdict relayer. React + Vite app. The onboarding analysis runs on the hosted URL with no backend at all, because server/hyperliquid.ts has no imports and uses only global fetch, so it drops into a Vercel function with no keys, no chain access and no state — about 1.3s for an arbitrary mainnet address.