No seal, no tape: DutchBud receipts close the evil-node trade hole

posted in: Uncategorized | 0

Fake regional trades stopped by a banking ledger seal

Last week we described how PolitiCap regional nodes pull software and data instead of receiving pushes. That closed one class of risk: unowned hosts never get our deploy keys.

It left another open. What if the local operator turns hostile and simply inserts fake fills into the regional database, then lets the trade batch upload ship them to the hub?

The answer is the same spine that already moves money on the 3DN family stack: the DutchBud ledger. Every syndicated fill must carry a banking receipt. No seal, no accept.

The attack in one picture

Regional node SQL: fake fills in outbox DutchBud ledger no receipt? REJECT Hub tape only sealed Owning the node box ≠ minting money. Banking stays in the banking perimeter.
Figure 1. Fake outbox rows die at the ledger gate. The hub never promotes them to settled tape.

If an operator controls the regional host, they control the local MySQL and the node API key. Signing with a key that lives on the same box does nothing — they can forge anything the box would sign. The only durable proof is a receipt minted where money already lives: DutchBud’s closed-loop ledger of virtual credits (dibs).

How a real fill travels now

Trade match, ledger seal, batch with receipt, hub verify

  1. Match — MarketMaker or Broker crosses on the regional API (local tape).
  2. Seal — DutchBud records the notional legs and returns ledger_ref + ledger_code (HMAC bound to symbol, quantity, price, parties, reference).
  3. Outbox — only rows with both fields are queued for batch upload. Unsigned inserts are ignored for syndication.
  4. Hub ingest — for each batch line the hub asks DutchBud to verify and consume the receipt once. Mismatch, missing seal, or replay → reject.
Honest path match → DutchBud seal → outbox(ref,code) → hub verify+consume → trust=ledger Fraud path SQL invent fill → outbox without seal → batch skip / hub reject → no syndicated row reuse old receipt on new fake → already_consumed → reject alter qty on real receipt → bind_mismatch → reject
Figure 2. Happy path vs common fraud attempts. Minting remains a banking-role power.

Trust perimeter

Minting stays on the banking role — the highest trust perimeter in our fintech stack. Regional nodes may request a seal through the internal banking API the way production already seals MarketMaker capital; they cannot invent a valid ledger_code without that perimeter.

The hub does not mint either. It only verifies. That keeps infrastructure honest: managed hosting edges can be less trusted than the money plane without breaking multi-city markets.

Claim Who can fake it on a hostile node What the hub does
Outbox row Operator Ignore without receipt
Node API batch Operator with node key Verify each line with DutchBud
DutchBud receipt Only banking perimeter Accept once, bind fields, consume
Two sockpuppets who really pay Real money movement Different controls (standing, limits)

Why this fits digital sovereignty

3DN builds infrastructure and compute for operators who want control without chaos. Regional markets are a form of digital sovereignty: a city can run its edge, but it cannot rewrite the family money story by editing a local table.

Pull closed the deploy channel. Ledger receipts close the fake-tape channel. The net is tighter — not because we trust every box, but because we stopped asking boxes to be banks.

Read the companion architecture piece: Pull, don’t push: how PolitiCap regional nodes update themselves.

Engineering continues in production: expand-only migrations, GitLab-tracked APIs, and ops metrics for software version and hello age. Schema version on the dashboard is next; money was the sharper edge.

Leave a Reply

Your email address will not be published. Required fields are marked *