ARCRYPT logo
Preview closed · Alpha next · Devnet

ARCRYPT

Sealed-bid auctions on Solana, built to kill front-running

Scroll
02Who's behind it

Created by an Oxford electrical engineering undergraduate

badam3000
Oxford, Electrical Engineering
03The problem

We solved an open problem in cryptography

On a public blockchain, a bid is never private. The instant it lands, bots read it and front-run you. Rivals see your ceiling before you've finished typing it. What should be an auction becomes a leak, one bid at a time.

04How it works

Encrypted from the first click to the last reveal

Three pieces of cryptography work together so that a bid amount is never visible in plaintext, anywhere, at any point. Not to other bidders, not to validators, not to us. As far as we know, nobody has combined MPC-computed auctions with encrypted, Umbra-shielded bid escrows before. That combination is what ARCRYPT actually is.

Step 1 of 5

Fund a shielded balance

You move USDC into an Umbra encrypted token account. From the outside, it's just a balance, nobody can see what's inside it.

Solana program

Owns auction state, settlement, and every instruction that moves an asset or a fee.

Umbra

A shielded pool ARCRYPT CPIs into so escrow balances stay hidden, not just encrypted.

Arcium MPC

Compares bids as ciphertext, split across independent nodes so no one node sees a full bid.

Under the hood

The actual CPI handoff between ARCRYPT and Umbra

ARCRYPT SIDEUMBRA SIDEARCIUM MXEANCHOR PROGRAMCLIENTCPICPIplace_encrypted_bidupdate internal bid ledgerbid =Enc_ARCRYPT(amount)depositdecrypted amountmoves to vault_addressderived ETAplace_encrypted_bidbid, ETAsubmit_encrypted_bidtemp.bid = bidtemp.ETA = ETAdeposit_callbacksubmit_encrypted_bid(bid,ETA)place_biddeposit(bid,vault_address, ETA)depositbid, vault_address, ETAbid = Enc_UMBRA(amount)createPlaceBid(bid, ETA)auto crankerplaceEncryptedBid(bid, ETA)startAutomatically register an UmbraEncrypted Token Account (ETA)and fund itEnc_UMBRA() = encrypted so only Umbra’s MXE can decrypt it. Enc_ARCRYPT() = encrypted so only ARCRYPT’s MXE can decrypt it.
Step 1 of 9

Register and fund

The client automatically registers an Umbra Encrypted Token Account (ETA) and funds it. This shielded balance is what every bid draws from.

05The SDK

A super simple SDK

TSauction.ts
1import { createAuction } from "@arcrypt/sdk";
2 
3createAuction({
4auctionType: "Vickrey",
5assetKind: "Fungible",
6minBidSol: "1.5",
7durationSecs: 3600,
8});
TSbid.ts
1import { createPlaceBid } from "@arcrypt/sdk";
2 
3createPlaceBid({
4auctionPk,
5bidAmountSol: "2.5",
6});
7 
8// sealed. nobody sees this until it wins.
06The app

Placing a sealed bid

arcrypt.bid/bid?auctionPk=7xKk...9Qm2
← Back to auctions
Time left
02:15:17
Live
Vickrey
Genesis Vault #001
Sealed until settlement, second-price auction

One-of-one access pass to the alpha program. Winner is revealed on settlement, along with the second-highest bid. Every other bid stays sealed.

Bids submitted
7
Min bid
50 USDC
Creator
7xKk...9Qm2
250.00USDC
One item, one bid. Sealed, nobody sees this number until the auction resolves.

Refresh, refund, or reclaim depending on auction state.

Live

DAO treasury proposals

arcrypt.bid/auction?panel=governance
DAO proposal

Governance proposal

Pick a realm, load treasury accounts, and prepare a sealed-auction proposal in one place.

Liquidate treasury NFT #4 via sealed auction
9WzD...AWWM
3rDE...k9Lp · 4 ATAs
Proposal description preview
Auction the treasury's 1/1 NFT via sealed bid. Reserve stays sealed until settlement. Check it out here: arcrypt.bid/bid?auctionPk=<filled after creation>
08Applications

Not tokens. Items.

Platforms like crafts.dev already do fungible token raises well, a pool of buyers, a pool of tokens, everyone gets a slice. That model breaks down the moment there's only one of something. ARCRYPT is a different mechanism entirely: one asset, one winner, no order book, no shared pool, built specifically for single-item sales.

A house. A graded trading card. A single .sol domain. The kind of sale where there's only one of the thing, and a fair price only shows up if nobody can see the other bids. The rails to list these already exist on Solana. The sealed sale doesn't, yet.

Sealed single-item sales: an NFT, a rare in-game item, anything with exactly one or a handful of winners at the end, for a single item or a limited number of prizes. The winners and price are the only things anyone ever sees.

Plug straight into Realms governance: propose a sealed liquidation, vote, settle. No public reserve price to give away before the vote even passes.

Same circuits, off-chain settlement, for procurement and deals that were never going to be public anyway.

Where real-world assets could plug in

Each rail needs its own asset adapter, but the settlement rails already exist on Solana. Every card below is one item, one sale, one winner.

01/041 of 1
Homebase
Single tokenized property, sealed
02/041 of 1
Collector Crypt
Single graded card, sealed
03/041 of 1
Credix
Lenders sealed-bid the rate, lowest wins
04/041 of 1
Bonfida SNS
Premium .sol domain drops, sealed
09Status

The preview is over. Alpha is next.

The protocol works end to end on devnet. Alpha is where it gets used, broken, and hardened before mainnet.

AlphaDevnet · program live
status.log
[OK] Anchor program: auctions, escrow, settlement
[OK] Arcis circuits: private bid ranking
[TODO] Umbra CPI: sealed, shielded escrow
[TODO] Devnet redeployment
[TODO] Mainnet deployment
[TODO] Public marketplace / discovery UI
[TODO] Third-party asset adapters
10Source available