{"steps":[{"n":1,"who":"deployer","title":"A fresh chain","detail":"USDG, an NVDA stock token, a Chainlink-shaped feed at $180, the pool, the vault, the stealth registry and settler, and the recycler, deployed from the compiled bytecode. Nine contracts.","events":[],"reads":{"chain":"in-process EVM, chain id 4663"}},{"n":2,"who":"lender","title":"Lenders fill the USDG side","detail":"A lender supplies 5,000 USDG to the vault so there is always room to borrow. It earns the borrow rate.","tx":"block 15","gas":"95542","events":["Supplied(lender: lender, amount: 5000000000)"],"reads":{}},{"n":3,"who":"borrower","title":"Deposit: 2 NVDA, in the open","detail":"The stock opens an ordinary public position. Anyone can read it.","tx":"block 18","gas":"73697","events":["Deposited(borrower: borrower, amount: 2000000000000000000)"],"reads":{"collateral":"2 NVDA","worth":"360.00 USDG"}},{"n":4,"who":"borrower","title":"Borrow: 180 USDG, to nowhere","detail":"180 USDG against 360 of collateral is 50 % LTV, the cap. The wallet receives nothing: the loan is queued as nine fixed pieces (one 100, eight 10s), each a note only the borrower can spend, for the next hourly round.","tx":"block 19","gas":"725032","events":["Borrowed(borrower: borrower, amount: 180000000, round: 498117, pieces: 9)"],"reads":{"borrower wallet":"0.00 USDG","ltv":"50.0 %","liquidation":"$144.00","pieces queued":"9"}},{"n":5,"who":"relayer","title":"The round closes: nine pieces join the pool","detail":"An hour later anyone settles the round. The pieces are paid in commitment order, not borrower order, next to everyone else's. The chain sees nine deposits from the vault; it does not see a 180.","tx":"block 21","gas":"1496547","events":["Deposited(depositor: vault, owner: borrower, commitment: 0xbdc5…64cc, label: 0x7f57…fcc5, value: 10000000, index: 0)","Deposited(depositor: vault, owner: borrower, commitment: 0x3f4a…f666, label: 0x9a2f…c31a, value: 10000000, index: 1)","Deposited(depositor: vault, owner: borrower, commitment: 0xe318…334d, label: 0x6f0d…5104, value: 10000000, index: 2)","Deposited(depositor: vault, owner: borrower, commitment: 0xc31c…558e, label: 0x3096…2262, value: 10000000, index: 3)","Deposited(depositor: vault, owner: borrower, commitment: 0xc986…ad8a, label: 0x52d6…6f75, value: 10000000, index: 4)","Deposited(depositor: vault, owner: borrower, commitment: 0xac6f…836c, label: 0xbf06…f51b, value: 100000000, index: 5)","Deposited(depositor: vault, owner: borrower, commitment: 0x77eb…c181, label: 0x2e81…2ff8, value: 10000000, index: 6)","Deposited(depositor: vault, owner: borrower, commitment: 0x52a7…4be9, label: 0x3492…9efa, value: 10000000, index: 7)","Deposited(depositor: vault, owner: borrower, commitment: 0x9b6f…6ee8, label: 0x1ef5…a123, value: 10000000, index: 8)","RoundSettled(round: 498117, pieces: 9, value: 180000000)"],"reads":{"pool balance":"180.00 USDG","tree root":"0x6d83…0a63"}},{"n":6,"who":"screener","title":"The screener approves the deposits","detail":"The approval service checks where each deposit came from and publishes the root of the approved labels. A withdrawal must prove its label is in there.","tx":"block 22","gas":"44537","events":["ApprovalRoot(root: 0xd14c…12a9)"],"reads":{"approval root":"0xd14c…12a9"}},{"n":7,"who":"relayer","title":"Spend: 60 USDG to a fresh address, by proof","detail":"The borrower proves it owns an unspent, approved note and withdraws 60 to a brand-new address. The relayer submits it and keeps 0.25, so the fresh address never needed gas. The 40 of change is a new note. Nothing on chain ties this address to the position.","tx":"block 23","gas":"220865","events":["Withdrawn(recipient: fresh address, relayer: relayer, nullifierHash: 0xdd0a…6e77, newCommitment: 0x0bb4…cca4, value: 60000000, fee: 250000, index: 9)"],"reads":{"fresh address":"59.75 USDG","relayer":"0.25 USDG","nullifier spent":"yes"}},{"n":8,"who":"merchant","title":"A merchant publishes a stealth meta-address","detail":"Two public keys in the ERC-6538 registry. Every payment to it will land at a different one-time address.","tx":"block 24","gas":"158191","events":["StealthMetaAddressSet(registrant: merchant, schemeId: 1, stealthMetaAddress: 0x7374…3662)"],"reads":{"meta-address":"st:eth:0x03623ad821e69…"}},{"n":9,"who":"fresh address","title":"Pay: 5 USDG to a one-time address","detail":"The fresh address signs an x402 payment (an EIP-3009 authorization) to the settler, with a nonce that commits to the one-time address it derived. Anyone can submit it; it can only land there. The settler announces it (ERC-5564) with the ephemeral key and a view tag.","tx":"block 25","gas":"112733","events":["Announcement(schemeId: 1, stealthAddress: 0xF2Ce…aDeF, caller: relayer, ephemeralPubKey: 0x0271…6533, metadata: 0x95e7…4b40)","Settled(from: fresh address, stealthAddress: 0xF2Ce…aDeF, value: 5000000)"],"reads":{"one-time address":"5.00 USDG","fresh address":"54.75 USDG"}},{"n":10,"who":"merchant","title":"The merchant finds it and sweeps it","detail":"Scanning announcements with its viewing key, the merchant recognises the address (view tag matched), computes its private key and sweeps with a signed transfer. Nobody else could.","tx":"block 26","gas":"76788","events":[],"reads":{"merchant":"5.00 USDG"}},{"n":11,"who":"fresh address","title":"Return: the leftovers go back into the pool","detail":"What the fresh address has left is recycled: a signed transfer to the recycler, whose nonce commits to the new note and the relayer's 0.10 fee, becomes a new deposit of the owner's. The relayer submits it; the address never held gas.","tx":"block 27","gas":"271230","events":["Deposited(depositor: recycler, owner: fresh address, commitment: 0x7d0a…41f4, label: 0x188f…9194, value: 54650000, index: 10)","Recycled(from: fresh address, submitter: relayer, value: 54750000, fee: 100000, commitment: 0x7d0a…41f4)"],"reads":{"fresh address":"0.00 USDG","pool balance":"174.65 USDG"}},{"n":12,"who":"second fresh address","title":"Repay, from another fresh address","detail":"Half the debt is repaid by an address the position has never seen. The chain reads: 2 NVDA, 90 USDG owed, and nothing about where 180 went.","tx":"block 30","gas":"42942","events":["Repaid(borrower: borrower, payer: second fresh address, amount: 90000000)"],"reads":{"debt now":"90.00 USDG","ltv":"25.0 %"}}],"ms":1259,"chainId":4663}