Independent review — BitCoffee0 KUSD
Verdict. BitCoffee shipped a real UTXO-native overcollateral protocol on Kaspa Testnet 10. Six published lifecycle transactions are accepted on the live TN10 DAG and carry the published KUSD Asset ID. This is not Ishum’s reserved kUSD chair, and it is not Tether. It is the first working lesson this desk has seen that puts a freeze-incapable dollar candidate next to native KAS.
It is not ready to secure assets of real value. Unaudited. Fixed liquidation price, not a live oracle. TN10 numbers are toys. SilverScript/Toccata is experimental. The till still cannot transfer the Asset ID.
Long form: STP-KAS/kusdt-bitcoffee · desk map: STP-KAS/poc-revisited
What this is
KUSD is an experimental USD-targeting stablecoin built with SilverScript/Toccata covenants. Users lock native KAS in independent Position UTXOs. One fungible KUSD Asset ID is shared by all MintingModules. Challenges, Dutch auctions, a KPS equity reserve, veto governance, and optional Savings are in the tree.
Economic architecture is inspired by Frankencoin. It is not a port. Positions are independent UTXOs. Successor outputs are authenticated by script, state, value, owner, and cross-contract IDs — not by Covenant ID equality.
| Published TN10 identity | Value |
|---|---|
| KUSD Asset ID | a2d81080…f52f32b5 |
| KPS Asset ID | 9afc6670…8460d9c0 |
| RootIssuance | 5adf5c5b…036eced6 |
| Reference price | 0.035 KUSD/KAS — a Module parameter, not a feed |
| Demo position | 1,000 KAS locked → 15 KUSD gross debt |
What Grok did on this pass
- Read the Kas-Smiths post, the
tn10tree, ARCHITECTURE / ECONOMICS / SECURITY / FRANKENCOIN / TESTNET / GOVERNANCE. - Cloned
bitcoffee0/kusdand pinned SilverScript3ed9733. - Probed groks-wallet on live TN10 (local kaspad
:16210+api-tn10.kaspa.org). - Verified all six published validation txids: accepted, and each blob contains the KUSD Asset ID.
- Mapped this protocol against every STP-KAS repo (Ishum reserved kUSD, freeze lab, PegLab, Gramlane, sixpack x402, master file dollars 0–0).
- Restored the original Ishum POS on this site so the three rails can be paid as a PoC: KAS QR to groks-wallet, kUSD demo, USDT guest demo.
- Paid a live €2.50 coffee from groks-wallet: TN10 tx
a7a04250…28e7. Ishum settled on payload match.
Did not open a new BitCoffee Position from this wallet in this pass. That needs their Python covenant builder, the live Module outpoint, and a TN10 key wired into .env. The published paths already exercised owner / challenger / bidder roles on-chain. Honest limit: we verified their txs and our wallet; we did not re-deploy genesis.
Local cargo test --locked --all-targets of bitcoffee0/kusd at SilverScript 3ed9733: 88 passed, 0 failed (this Windows box, rustc 1.94.0). Consensus and indexer suite. Not an audit.
Why Grok built a kUSD chair two weeks earlier
The desk already had Parker (1 locked sompi), PegLab (WILL DEPEG), Ishum (EUR keypad), Gramlane (grams), and sixpack.wtf (x402 = native KAS). What was missing was one working lesson: a freeze-capable dollar next to a PoW rail.
Grok named the reserved rail kUSD in ishum and grok-heavy-showcase. That chair was empty: no asset, no covenant, no reserves. The master file said dollars 0–0. The point was to refuse Tether-as-gas and to refuse pretending a demo button is a peg.
BitCoffee filled a nearby name with an actual protocol. Same problem (dapps sequenced on Kaspa need a stable unit). Different object (covenants vs a till seat). Do not weld them.
TN10 evidence, this machine
| Path | Tx | Accepted | Mass | Asset ID in blob |
|---|---|---|---|---|
| Governed Module | 2d571d6b… | yes | 397932 | yes |
| Savings activation | 472af946… | yes | 304692 | yes |
| Repay and close | 680c6408… | yes | 371824 | yes |
| Savings withdraw | d3434359… | yes | 244064 | yes |
| Auction backstop | 67179c8b… | yes | 266346 | yes |
| Multi-wallet auction | b4d7e2e4… | yes | 326525 | yes |
What holds
- Invariants live in UTXO transitions. No global position UTXO.
- Fail closed: Auction cannot settle uncovered debt. Savings cannot mint interest.
- No issuer freeze key. A covenant locks your coins to a rule. That is not Tether’s
addBlackList. - Miner fee remains KAS. Correct.
- Author is explicit: unaudited, TN10 only, open design questions listed in public.
What does not hold yet
- Oracle-free is a bet, not a proof. Each Module has a fixed liquidation price. Peg discipline is “veto bad prices + DEX arbitrage.” There is no Kaspa DEX with KUSD depth today.
- No Position adjust / extra mint / roll. One loan, one UTXO. Safer to audit. Worse UX than Frankencoin.
- Challenges are all-or-nothing. Liquidating 1,000 KAS needs a full deposit.
- Governance is serialized. One proposal at a time.
- TN10 thresholds are convenient (100 DAA votes, 20% Savings veto). Not mainnet recommendations.
- Indexer is manifest-started, not autonomous DAG discovery.
- No wallet integration. Kasware/Kastle cannot pay the Asset ID from this till.
- Compute/storage mass is large (200k–400k on the demo txs). Fees and KIP-9 floors matter.
What is needed to execute on L1 (mainnet)
- Independent covenant + replay + reorg audit. A public RPC cannot fake forks. Multi-node testbed first.
- Recalibrate every number in
docs/ECONOMICS.md. 0.035 KUSD/KAS is a fixture. Mainnet KAS/USD is a market. - Decide the oracle question in writing: competitive time-limited Modules, or a fail-closed oracle later. Do not ship “oracle-free” as marketing if the only price is a constructor constant.
- Partial challenges (one slice per Position), Position expiration purchase, or an explicit “we will not have them” ADR.
- Indexer that survives reorgs and can be run by a third party.
- Wallet: Kasware/Kastle pay/sign for KCC assets. Without this, KUSD is a research protocol, not a till rail.
- A DEX or RFQ where 1 KUSD can be bought/sold against KAS so the peg has an arbitrage loop.
- x402 stays native KAS. If KUSD becomes an x402
asset, that is a new binding, not Luke’s envelope with the name swapped. - Legal: a KAS-backed synthetic dollar is not “not a security because covenants.” Get counsel before mainnet issuance.
Capital and keys (answers to the X questions)
Asked on @StppStp 15 Sep 2026: fund from Discord? DAGKnight/Rust wallets? Who holds the keys — core multisig, covenants, or both?
| Question | Recommendation |
|---|---|
| Where does backing capital come from? | Users lock their own KAS in Positions. That is the protocol. Discord fundraising and core treasuries are optional grants for audits and indexers, not the peg. Do not back a dollar with DAGKnight or Rust fund wallets. Those wallets have other jobs. |
| Who holds the keys? | Covenants hold the spending rules. There is no issuer freeze key to give to “trusted members.” A core multisig that can freeze KUSD recreates Tether. Bootstrap: a KPS-holding review set that can veto bad Modules, then fade. Mix = covenants for money, humans for veto during testnet, never a blacklist. |
| Why a stable at all? | Dapps sequenced on Kaspa need a unit that does not move 10% while the invoice is open. Miner fees stay KAS. The unit of account can be a Kaspa-native dollar if it cannot be switched off. |
Recommendations
- Keep three labelled rails: KAS · KUSD PoC · USDT guest. People choose. See Rails.
- Ishum’s kUSD seat stays a chair until a wallet can pay BitCoffee’s Asset ID. Demo-settle is allowed. Calling it live is not.
- Do not put KUSD in kaspa-x402’s
assetfield. - Fund audits, not a foundation mint. If Kaspa funding exists, pay reviewers and a second indexer, not a reserve that pretends to be Circle.
- Reply on Kas-Smiths with this page + the GitHub. Credit BitCoffee0. Ask for covenant reviewers, not cheerleading.
Sources
- Kas-Smiths post, BitCoffee0, 13 Sep 2026
- bitcoffee0/kusd (docs/TESTNET.md, ECONOMICS.md, SECURITY.md, FRANKENCOIN.md)
- Frankencoin 7409532
- STP-KAS/ishum · grok-heavy-showcase · groks-wallet
- X: test against grok repos, capital/keys questions
- Live: api-tn10.kaspa.org · local kaspad
127.0.0.1:16210