Signed and encrypted locally
EIP-712 orders bound to one chain, one contract and one epoch. Timelock encryption to the drand threshold network, which publishes a key every 3 seconds. The scheme is pluggable; Shutter was evaluated.
Confidential execution for onchain markets
Your order stays unreadable to everyone, Kasumi included, until its batch closes. Then it clears at one price that anyone can check.

Scroll to walk into the slab霞 kasumi, haze
This is your order, sealed.
Side, size, price and wallet are unreadable to everyone, the relay included, until its epoch closes.
Your browser signs the order and encrypts it. The relay receives a ciphertext, its hash and a salted commitment.
Public: nothing about the order
Illustration: A blank white slab tied with an orange ribbon, floating in violet fog above the seaThe epoch closes. The relay fixes the batch as a Merkle root before any key exists, so no order can be added later.
Public: order count and root
Illustration: A round vault door shut in a violet cliff, mist at its baseThe drand network publishes the round signature that opens every ciphertext in the batch at once.
Public: all orders in the batch
Illustration: A key made of white light cutting through fog over a canyonA deterministic auction finds the single price that trades the most volume, closest to the oracle.
Public: clearing price and result hash
Illustration: Brass scales standing level on a snowy plateau, a glowing cube in each panThe settlement contract re-checks every signature, limit and nonce, then moves tokens atomically.
Public: every transfer
Illustration: A sunlit plaza where rows of white slabs stand open like doors and two figures exchange a parcel
Kasumi protects intent before the trade. It is not a mixer, a privacy coin or an anonymity tool, and it does not hide what settles.
Hidden from the relay too. Encryption happens in your browser.
Settlement is transparent on purpose. That is what makes execution verifiable.
Four parts, each checkable without trusting the one before it.
EIP-712 orders bound to one chain, one contract and one epoch. Timelock encryption to the drand threshold network, which publishes a key every 3 seconds. The scheme is pluggable; Shutter was evaluated.
Every accepted ciphertext gets a signed inclusion receipt. If the published root leaves your order out, the receipt is proof of censorship.
A uniform-price batch auction in integer arithmetic. The Rust matcher and an independent TypeScript reference produce identical result hashes for every fixture.
The matcher only proposes a price and fills. Signatures, limits, minimum fills, nonces, oracle bounds and batch membership are verified again onchain.
const client = new KasumiClient({ relayUrl });
const { markets } = await client.config();
const order = await client.buildOrder({
owner: account.address,
market: markets[0],
side: SIDE_BUY,
baseAmount: 120n * 10n ** 18n,
limitPrice: toProtocolPrice("332.60", 18, 6),
});
// Signed, then encrypted, in this process.
const sealed = await client.signAndSeal(order, (typedData) =>
account.signTypedData(typedData),
);
const receipt = await client.submit(sealed.envelope);
// After the epoch closes.
const check = await client.verifyInclusion(receipt);{
"protocolVersion": 1,
"scheme": 1,
"epochId": 48392,
"ciphertext": "0x2d2d2d2d2d424547…",
"ciphertextHash": "0x9f3a…c21e",
"orderCommitment": "0x5be1…90d7"
}No ticker, side, size, price or wallet. The relay rejects any envelope that carries an extra field.
