dust
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 3 , 1 5 2 B A NUMBER OFF AN INSTRUMENT, NOT A NUMBER WRITTEN DOWN
A number off an instrumentNot a number written down

08  /  Measured

Every figure here was read off a run.

Nothing on this page is an estimate. The gas is measured inside a real TaxProcessor.dispatch(), and the sizes are the compiler's.

Status

Nothing is deployed. No factory, vault or ledger address exists on any chain, no transaction has been broadcast, and the repository carries no git remote. ./submission/check asserts all three.

04  /  The gas number

108,115, against a ceiling of 1,000,000.

Measured inside a real TaxProcessor.dispatch() on a BSC mainnet fork, as a difference between two runs of that same dispatch: once into the vault, once into the same address carrying a control body that is a single STOP. What is zero is the work done inside that control frame — not its cost. The control leg still bills 93,291 gas for everything outside the frame, the real leg bills 201,406, and the difference is the 108,115 above.

Rule 005  /  the differential, against the ceiling

Each lane runs from zero to Flap’s 1,000,000-gas limit for receive(). Every figure is gas billed inside a real TaxProcessor.dispatch() on a BSC mainnet fork — a measurement, not an estimate.

  1. Dispatch into the control body — the same address carrying a single STOP

    93,291

  2. Dispatch into the vault — the real receive()

    201,406

  3. The difference, and it is the whole claim — what the vault’s own frame costs

    108,115

The third lane is drawn as the subtraction rather than from zero, because that is what it is: the shared cost is the first 93,291 of both legs and cancels, and what is left is the vault’s own frame. What reads as zero in the control leg is the work inside that frame, never the cost of reaching it — which is why the first bar has a length at all. The measurement leaves 891,885 gas of the ceiling unused.

Everything the two legs share — the cold account access, the value stipend, the dispatcher’s own work — is identical and cancels. The control is run twice and the two readings must agree to the gas, or the test reports noise instead of a number; and the same dispatch handed three quarters of the measured gas is required to fail, which is the only evidence that the number is the requirement rather than something a subtraction produced.

The vault’s receive() does immutable period arithmetic, one bucket write, a project snapshot, two counters and one event — no loop, no external call, no transfer, no delegatecall. It reads the cadence from its own copied immutables, so it never calls the ledger to find out what period it is in.

05  /  Bytecode

Runtime size, and the room left.

ContractRuntime bytesHeadroom to EIP-170
DustVault24,334242
DustVaultFactory6,23418,342
DustLedger3,99320,583
DustVaultDeployer2,19722,379
DustLedgerDeployer2,14122,435
DustBeacon79823,778

The factory holds two creation-code deployers rather than embedding both contracts, because a factory carrying both would not fit. Each deployer creates a proxy and initializes it in the same transaction, so no uninitialized proxy ever exists for somebody else to claim.

Build settings are part of the result and all pinned: Solidity 0.8.26, EVM version Cancun, optimizer 200, via-IR. Leaving the EVM version unpinned lets a newer toolchain retarget the bytecode to a fork BNB Chain does not run.

06  /  Rule by rule

Ten rules, one row each.

RuleStatusNote
001Pass, one open itembase and factory inherited unmodified; the UI schema declares VaultMethodSchema[](11) — four read methods and the vault’s seven state-changing entry points, a count a test derives from the source rather than from a hand-written list; the only privileged function in the system is setProject, guardian-only; settlement never loops over participants
001 · commissionNeeds Flap’s decisionthe rule recommends 3% at a 2% tax; this vault credits 30% to a launcher-configured, per-period-snapshotted project address
002Passonly the VaultPortal may create a vault; payload length and address padding checked before decoding; native BNB only; commission measured on chain
003Pass, with disclosurestax arriving in a period funds the next, so no privileged sandwich; the disclosures are Sybil pricing and the unobservable sweep
004Passevery require in our own code is a literal string in both languages; no custom errors declared
005Pass108,115 gas measured inside a real dispatch on a fork
006Pass83 tests — 56 local, 27 on a mainnet fork — of which 3 are stateful invariants at 256 runs each
007N/Anothing calls the AI provider
008N/Ano trigger request or callback; settlement is a permissionless call that pays its caller
009N/A by the rule’s own exceptionboth contracts are beacon proxies, so the rule exempts them; the beacon moves ownership to the Guardian inside its constructor, leaving no window where the deployer holds it
010N/Anative-BNB vault base; the tax token being V3 does not imply a V3 vault base