Protocol overview

Zero-knowledge.
Across chains.

Inkk is designing a bridge that checks cross-chain actions with cryptographic proofs, so you reveal less about yourself to move value from one chain to another.

See how it works, step by step v

The bridge, in plain English

Concept animation

Follow the note.

One example, four steps. Walk through the intended bridge flow. Nothing is sent.

Deposit recorded01 / 04

The idea

Start on the source chain.

A little more detail

Source record100 USDC · example

One idea to remember

Prove the rules hold.
Keep the private inputs private.

Picture proving that a sealed envelope holds the right document without opening it in front of everyone. That's the goal. A real zero-knowledge proof needs a precisely written statement and cryptographic verification; the envelope is only the intuition.

Commitment

A public fingerprint.

Points to a private note and has to bind it exactly. It's a reference, not an encrypted copy of the note.

Proof

A checkable statement.

Shows that the rules written into the circuit hold, without publishing the private inputs (the witness).

Nullifier

A spend marker.

Lets the protocol refuse a note that was already used. Across chains, this needs one shared design.

Who can see what?

Someone watching the blockchain

Note secrets
Transfer amount
Verification data

Zero-knowledge protects the witness behind a proof. Transparent payouts, public inputs and network metadata each need their own privacy analysis.

What exists today

Development status

ComponentStatusRole
Inkk interfaceAvailableCoin and network selection, live quotes, swap creation and status tracking.
Quote & order serviceConnected · SWAP.MYQuotes, swaps, deposit addresses and status come from SWAP.MY, a third-party service, through Inkk's server, which keeps the API key secret.
ZK bridge backendNot builtOrchestration and settlement for the protocol described on this page.
Circuits & proving stackNot specifiedThe proof system, its parameters and the circuits will be documented with the implementation.
Source & destination contractsNot deployedNo contract addresses, bytecode or verifier versions exist yet.
$INKK buybacksPlannedInkk's revenue share from swaps is planned for buybacks. Not active yet.

Target architecture

Commit → prove → settle

  1. 01Source chainDeposit or lock eventCommitment tree
  2. 02Proving layerPrivate witnessPublic statement
  3. 03DestinationAuthenticated source stateProof & replay checks

This is a reference design, not a description of something running. Before a bridge accepts value it has to define custody, supported chains, finality rules, fees and how assets exist on the destination.

1. Establish the source state

After an eligible deposit or lock, a source contract records a commitment. The commitment root only counts once the source chain has reached the required finality. How the destination verifier comes to trust that root is a separate security decision.

2. Construct the proof

The client builds a proof from its private note and the note's membership path in the commitment tree. The circuit enforces ownership and value rules. Whether proving happens in the browser or on a server, and how a lost witness is recovered, are implementation choices still to be made.

3. Authorize settlement on the destination

The destination checks the proof, its public inputs, the accepted source root and the spend marker. Only when all of them pass can the settlement mechanism release or issue value.

Notes & commitments

A note is your private record of a position in the protocol. A commitment is the public, cryptographic stand-in for that note. A sound construction binds every field the circuit uses, with unambiguous encoding, domain separation and enough secret randomness.

Illustrative only. Not a production circuit.
C = Commit(protocol_version, source_domain,
           asset_id, value, owner_secret, randomness)

Public record:      C
Private witness:    note fields + membership path
Still to be chosen: the commitment function and its encoding

A note is not your wallet's seed phrase. How notes are stored, backed up, encrypted and recovered needs its own design. Publishing a commitment proves nothing about a deposit on its own, and it doesn't hide a transparent deposit transaction.

What the proof must establish

"I know a valid, authorized note in an accepted source state, and this destination action follows the protocol's spending rules."
Private witness (intended)Public statement (to be defined)
Note secrets and randomnessProtocol, circuit and verifier versions
Membership pathAccepted source root and source domain
Ownership witnessDestination domain and the action it authorizes
Value and asset data, where the design allowsSpend marker and any amounts or assets settled in public

The final circuit has to constrain every field that affects authorization or value: range checks, conservation of value, fees, domain separation and binding to the recipient and action. A proof establishes only what the circuit actually encodes. It can't make up for a missing constraint.

Nullifiers and replay protection

A nullifier marks a note as spent without revealing the note's secrets. The protocol must stop a note being spent twice on any destination it can reach. Separate nullifier lists per chain aren't enough if the same note could be redeemed on two chains independently; notes need to be bound to one destination, or spends need one consistent authorization across chains.

Cross-chain settlement

A valid proof about a note doesn't prove the source chain has finalized. The bridge has to authenticate source state on its own and refuse stale, forged or reorganized roots.

State transport
How roots reach the destination: light-client proofs, consensus proofs, a messaging protocol or an attestation system.
Asset model
Lock and mint, burn and release, or liquidity-based settlement. Inkk hasn't chosen one yet.
Failure recovery
What happens when proving, transport or execution fails, including retries that can never settle twice.
Finality
Supported chains, confirmation rules, reorganization handling and the conditions that halt the bridge.

A relayer can carry messages and pay gas, but must never be able to change the recipient, amount or destination. If settlement relies on a signer set or an operator, that trust assumption has to be stated plainly.

Privacy model

The aim is to disclose as little as possible while keeping everything independently checkable. Any privacy claim has to name the observer it holds against and follow from the circuit and transaction flow that are actually deployed.

ObserverWhat they can see
Public blockchain observerTransparent deposits and payouts show addresses, assets, amounts and timing. A proof doesn't erase those records.
VerifierThe proof and every public input. A private witness doesn't mean the public inputs are hidden.
Relayer or backendRequests, IP addresses and routing data, unless the design specifically prevents it.
SWAP.MY, which carries out swapsThe coins, networks and amount of every quote and swap, plus your receiving and refund addresses. Requests reach SWAP.MY through Inkk's server, so SWAP.MY does not get your IP address from Inkk.
Inkk's serverPasses each request to SWAP.MY and sees your IP address while doing so. It keeps no accounts and stores no swaps, and it never holds funds. Cloudflare hosts it and sees requests as any web host does.
Your browserRemembers the reference of your latest swap so you can resume it. The page loads its fonts from Google Fonts.

An external exchange service doesn't shield balances, doesn't produce Inkk proofs and doesn't hide transfers from itself. Private balances or selective disclosure would need extra mechanisms that are actually built. Routing through a privacy-focused asset doesn't by itself mean a shielded transfer happened.

Security & trust boundaries

  • Circuit correctness. Constraints, public inputs and witness handling get an independent review.
  • Verifier consistency. The deployed verifier is pinned to reviewed circuits and published parameters.
  • Value safety. Conservation is proven, and double spends, cross-domain replays and recovery paths are tested.
  • Operator powers. Upgrade keys, pause controls, signer roles and custody assumptions are published.
  • User safety. Networks, recipient binding, fee limits and expiry are checked before any deposit is accepted.

Nothing here claims an audit, a trusted-setup ceremony, production proving performance or a mainnet deployment. Those claims need published artifacts behind them.

Live

Interface API

The endpoints the app calls on Inkk's own server, which checks each request and passes it to SWAP.MY. They cover the exchange lifecycle only; none of them generates Inkk proofs.

GET /api/config

Whether swaps are switched on, and who carries them out.

GET /api/currencies

Every coin and network SWAP.MY supports.

POST /api/quote

A live, floating-rate quote for a route. Body: the coins and networks, amount, receiving address, optional memo/tag and refund address. Creates nothing.

POST /api/orders

Creates the swap with SWAP.MY and returns its one-time deposit address (and memo/tag when the network needs one).

GET /api/orders/{id}

The swap's latest status, amounts, addresses and transaction links.

POST /api/rpc

A read-only Solana relay for "Send with Phantom": balances, token accounts and a recent blockhash. It can't send anything; Phantom sends the one transfer you approve.

  • The SWAP.MY API key stays on the server.
  • Quotes are estimates; the final amount is set when your deposit is confirmed.
  • Creating a swap is never retried automatically.
  • SWAP.MY validates both addresses before a swap exists.
  • The only deposit address ever shown is the one SWAP.MY returns for your swap.
  • The swap reference (and the recovery link that holds it) opens the swap's details, so keep it private.

The Inkk economy

Where the fee goes

SWAP.MY charges a fee on each swap. It is shown in every quote and already included in the amount you receive, and Inkk adds nothing on top. As a SWAP.MY partner, Inkk receives a share of that fee for each completed swap.

$INKK buybacks

The plan is to put all of Inkk's revenue share toward buying back $INKK. Swap amounts and network fees are never revenue. Buybacks aren't active: the treasury, the execution rules and public reporting all have to exist first, and holding $INKK earns nothing on its own.

There is no cashback. An earlier version of this page described one; it was never switched on.

Engineering roadmap

  1. InterfaceAvailable.
  2. Execution serviceConnected: swaps are carried out by SWAP.MY.
  3. Protocol specificationFinalize the proof statement, custody model, state authentication and cross-chain replay rules.
  4. ImplementationBuild the bridge backend, circuits, verifier and recovery paths.
  5. TestnetPublish contracts and artifacts; test finality, conservation of value and failed-settlement recovery.
  6. Review & releaseIndependent security review, resolved findings, documented operator controls and explicit launch conditions.

No launch date is promised. This page changes as reviewable code and deployments exist.

Background & references

For a general introduction to zero-knowledge proofs, read Zcash: What are zk-SNARKs? For circuit concepts, see the Circom documentation. These explain the techniques; Inkk isn't affiliated with either project and doesn't inherit their security.