Architecture overview
kUSDT has parts on three kinds of system: smart contracts on two EVM chains, covenants on Kaspa L1, and off-chain services run by the bridge operators. The user’s apps sit on the user’s device.
- Deposit. A user deposits USDT into a vault, from the web app or any EVM wallet.
- Read. Each of the 5 signers reads vault events and Kaspa state from its own nodes.
- Sign. Signers send their signatures to the coordinator.
- Mint. The coordinator submits mint transactions to BridgeMint on Kaspa.
- Release and refund. The coordinator submits release and refund transactions to the vaults.
- Use kUSDT. Users send kUSDT, swap in KasPool, add liquidity and burn to redeem, all as Kaspa L1 transactions.
- Pause. The monitor checks backing against supply, mints against deposits and releases against burns, from its own nodes. The guardian key can pause both vaults and BridgeMint, and do nothing else.
- Configure. The vault owner sets each vault’s parameters within hard bounds, its signer set and its guardian.
- Status. The coordinator serves status to the web app.
The pieces in one table
Section titled “The pieces in one table”| Part | Runs on | Trusted with |
|---|---|---|
kUSDT covenant family: KCC20, TokenSeed, BridgeMint |
Kaspa L1 | The token itself. BridgeMint is the only issuer |
KasPool covenant family: Pool, Position |
Kaspa L1 | The pool’s KAS and kUSDT reserves |
KusdtVault, one per chain |
Ethereum, BNB Chain | All locked USDT; pays out only with 3 of 5 signatures, within a daily allowance |
| Signers (5, independent) | Each on its own machine, with its own Kaspa node and EVM RPCs | One Kaspa Schnorr key and one EVM ECDSA key each |
| Coordinator | Bridge server | Nothing that moves funds. It collects signatures, submits transactions and serves status |
| Monitor and guardian | Monitoring server | One key that can pause the vaults, the minter and the pool, and nothing else |
| Vault owner | An AccessManager whose admin is a Safe (mainnet; 48-hour delays) | Vault parameters within hard bounds, and the vault’s signer set |
| Web app and wallet | The user’s device | The user’s keys. They pin each deployment |
Components describes each part in detail, and Communication describes every message between them.
Design choices
Section titled “Design choices”- Kaspa L1 only. Every Kaspa-side rule runs in Kaspa’s script engine. See Kaspa L1, not a layer 2.
- A federation, rate-limited on both sides. Kaspa nodes cannot verify Ethereum or BNB Chain, so 5 signers attest to deposits and burns. Both sides cap what a bad quorum could move per day. Zero-knowledge light-client verification is the planned upgrade, not part of v1.
- The coordinator is not trusted. Each signer checks every request against its own nodes. Anyone may submit a correctly signed mint or release.
- The payout is fixed at burn time. A burn commits to the payout chain and address, so a release cannot be redirected.
- Standard token code. kUSDT’s
KCC20actor is the unmodified reference, so existing KCC-20 wallets and indexers work with it.