Class: cross-chain messaging / omnichain fungible token (OFT). Banked Cycle 234 from a static
lens-mine of canonical LayerZero-Labs/LayerZero-v2 @ 9c741e7f (OFTCore/OFT/OFTAdapter, the
codecs, OAppReceiver/OAppCore, MessagingComposer, MessagingChannel). Closes a real coverage gap:
we had NO banked OFT lens. Applies to any LayerZero OFT trio (native OFT + OFTAdapter + composer).
"The canonical core is audited and saturated - so where did the INTEGRATOR override _debit /
_credit / lzReceive / lzCompose, and does that override preserve supply conservation and
actor-binding?" The protocol enforces almost NO supply conservation itself; it is emergent from
(a) replay protection and (b) integrator-correct overrides + a comment-only "one adapter per mesh"
rule. Yield lives in the overrides, not in re-auditing core.
safeTransferFrom / unlocks via safeTransfer. Conservation is NOT checked
on-chain - it is emergent. RULE: map every mint/unlock site, prove each is gated by a
consume-once message; confirm exactly ONE adapter per mesh and no second mint authority on the
token.uint64;
rate = 10**(localDec - sharedDec); _removeDust truncates on the DEBIT side before accounting,
so default sends/receives are equal and no dust is stranded. RULE: verify dust is removed before
mint/lock; break-tests = fee-after-dust override (inflation/strand), sharedDecimals < 6 with
supply > uint64.max*rate (uint64-cast truncation), token decimals == or < sharedDecimals.lzReceive requires msg.sender==endpoint (OnlyEndpoint) +
peer[srcEid]==origin.sender (OnlyPeer); replay stopped by per-path inboundPayloadHash nonce
consume-once in MessagingChannel. RULE: confirm no override drops endpoint/peer checks, no public
credit path, peers set correctly per live srcEid (a WRONG peer = inflation door).lzCompose is PERMISSIONLESS by protocol design;
guarded only by content-hash + consume-once. The composer MUST itself assert
msg.sender==endpoint, _from==trusted OFT, and bind its action to the message-decoded
composeFrom/amountLD (treat executor msg.sender and extraData as untrusted). RULE: in any
OVaultComposer check all of: endpoint-caller, trusted-_from, action bound to message (not
tx.origin/stored state), composed-action minOut from the message, front-run safety (tokens are
pre-credited), and revert/strand handling.require(received>=minAmountLD). Default quoteOFT enforces NO min on
receive. RULE: check WHICH side the rate-limit is enforced (debit vs credit); src-only limit is
useless vs a bad-peer inbound mint; note _setRateLimits does NOT reset amountInFlight on lower._debit + non-lossless token = high-severity lock-accounting drift.P4 compose actor/value binding (permissionless lzCompose, pre-credited tokens, all safety pushed to
the integrator's composer) tied with P6 adapter lock-accounting drift on a non-lossless inner token.
concrete-earn-v2-cycle214.md (deposit-side
inflation/rounding) on the inner vault - the composer is a fresh-deposit actor.jit-settlement-callback-actor-binding.md and the
LiFi allowlisted-aggregator-callback lens (2026-06-10-cycle210-...).Immediate consumer: dreUSD (Sherlock contest 1259) OFT trio dreShareOFT / Adapter / OVaultComposer -
see the dreUSD pre-flight (PF0-PF5) in ~/bounty/cycles/cycle-234-oft-lens-mine/00-verdict.md. Any
future LayerZero OFT, Stargate, or omnichain-stablecoin target.