
Measured, not nominal: why a protocol must never trust the number it passed to a token
Known formally as The Asset Boundary in the BlazePhoenix whitepaper.
BlazePhoenix Engineering · updated 2026-07-29 · 10 min · written from the deployed bytecode
By Mitra (@Sigmacrit) — anonymous developer of the BlazePhoenix protocol. The code is the résumé.
Abstract in 15 languages · resumo · resumen · 摘要 · 要旨 · ملخص
English — A transfer of 100 does not mean 100 arrived: fee-on-transfer, rebasing and non-conforming tokens break any protocol that credits the requested amount. The general fix is a discipline — measure the balance delta and treat it as the only truth, on intake and on payout.
Português — Transferir 100 não significa que chegaram 100: tokens com taxa na transferência, rebasing e não-conformes quebram qualquer protocolo que credite o valor pedido. A correção geral é uma disciplina — medir o delta do saldo e tratá-lo como a única verdade, na entrada e na saída.
Español — Transferir 100 no significa que llegaron 100: los tokens con comisión en transferencia, rebasing y no conformes rompen cualquier protocolo que acredite el importe solicitado. La solución general es una disciplina: medir el delta del saldo y tratarlo como la única verdad.
Français — Transférer 100 ne veut pas dire que 100 sont arrivés : les tokens à frais de transfert, à rebase et non conformes cassent tout protocole qui crédite le montant demandé. Le correctif général est une discipline : mesurer le delta de solde et le traiter comme seule vérité.
Deutsch — Ein Transfer von 100 heißt nicht, dass 100 ankamen: Fee-on-Transfer-, Rebasing- und nicht konforme Token brechen jedes Protokoll, das den angeforderten Betrag gutschreibt. Die allgemeine Lösung ist eine Disziplin — das Saldo-Delta messen und als einzige Wahrheit behandeln.
Русский — Перевод 100 не значит, что пришло 100: токены с комиссией при переводе, ребейзингом и нестандартные ломают любой протокол, который зачисляет запрошенную сумму. Общее решение — дисциплина: измерять дельту баланса и считать её единственной истиной.
Türkçe — 100 göndermek 100 ulaştı demek değildir: transfer ücretli, rebase yapan ve standart dışı tokenlar, istenen tutarı alacak yazan her protokolü kırar. Genel çözüm bir disiplindir — bakiye farkını ölçmek ve tek gerçek saymak.
العربية — تحويل 100 لا يعني وصول 100: الرموز ذات رسوم التحويل وإعادة التوازن وغير المتوافقة تكسر أي بروتوكول يقيّد المبلغ المطلوب. الحل العام انضباط: قِس فرق الرصيد واعتبره الحقيقة الوحيدة.
हिन्दी — 100 भेजने का मतलब 100 पहुँचे नहीं: फीस-ऑन-ट्रांसफर, रीबेसिंग और गैर-अनुरूप टोकन हर उस प्रोटोकॉल को तोड़ते हैं जो माँगी गई राशि क्रेडिट करता है। सामान्य समाधान एक अनुशासन है — बैलेंस डेल्टा मापें और उसे ही एकमात्र सत्य मानें।
日本語 — 100送っても100届くとは限りません。手数料付き転送・リベース・非準拠トークンは、要求額を計上するプロトコルをすべて壊します。一般解は規律です — 残高差分を計測し、それだけを真実として扱うこと。
中文 — 转出 100 不等于到账 100:转账扣费、rebase 与不合规代币会击垮任何按请求金额入账的协议。通用解法是一条纪律——测量余额差额,并把它当作唯一真相,收款与付款皆然。
한국어 — 100을 보냈다고 100이 도착한 것은 아닙니다: 전송 수수료·리베이싱·비표준 토큰은 요청 금액을 적립하는 모든 프로토콜을 깨뜨립니다. 일반 해법은 규율입니다 — 잔액 델타를 측정하고 그것만을 진실로 취급하기.
Bahasa Indonesia — Mengirim 100 tak berarti 100 tiba: token fee-on-transfer, rebasing dan tak patut merusak protokol mana pun yang mengkredit jumlah yang diminta. Perbaikan umumnya adalah disiplin — ukur selisih saldo dan perlakukan itu sebagai satu-satunya kebenaran.
বাংলা — ১০০ পাঠানো মানে ১০০ পৌঁছানো নয়: ফি-অন-ট্রান্সফার, রিবেসিং ও অ-সঙ্গত টোকেন যেকোনো প্রোটোকল ভাঙে যা চাওয়া পরিমাণ জমা করে। সাধারণ সমাধান একটি শৃঙ্খলা — ব্যালেন্স ডেল্টা মাপুন এবং সেটিকেই একমাত্র সত্য ধরুন।
Filipino — Ang pagpapadala ng 100 ay hindi nangangahulugang 100 ang dumating: sinisira ng fee-on-transfer, rebasing at di-sumusunod na token ang anumang protocol na nagkakredito ng hiniling na halaga. Ang pangkalahatang lunas ay disiplina — sukatin ang delta ng balanse at ituring itong tanging katotohanan.
Almost every integration bug at the asset boundary reduces to one sentence: the protocol believed the number it asked for instead of the number that arrived. The token standard makes that belief feel safe — you call transfer with an amount, the call succeeds, so the amount moved. In practice the standard is a suggestion, and a large family of deployed tokens does not honour it in the way integrators assume.
Four ways the number lies
FEE-ON-TRANSFER. The token deducts a fee inside the transfer, so the recipient receives strictly less than was sent. A protocol that credits the requested amount is now over-credited against real holdings, and every downstream calculation inherits the error. This is not theoretical: a fee-on-transfer token was used to drain roughly half a million dollars from pools whose accounting assumed the nominal figure.
REBASING. Balances change with no transfer at all — the supply is adjusted and every holder's number moves. A protocol that snapshots a balance and assumes it is stable until it acts will be wrong by the time it acts, in either direction.
NON-CONFORMING RETURNS. Widely-held tokens return no boolean at all from transfer, so a naive integration reverts on decoding; and at least one prominent token declares a boolean and returns FALSE on a transfer that in fact succeeded. Checking the return value naively is as broken as not checking it.
REENTRANT HOOKS. Token standards with transfer callbacks hand control to the counterparty in the middle of a movement, so state read before the transfer can be stale by the line after it.
The discipline: the delta is the only truth
The general fix is not a list of token-specific special cases — it is a rule applied uniformly at every boundary: read the balance before, perform the movement, read the balance after, and treat the DIFFERENCE as the amount. Never the argument you passed.
Applied consistently, it removes the whole family at once. Fee-on-transfer stops mattering because the fee is inside the delta. Rebasing stops mattering because the delta is computed across the same window as the movement. A token that lies about its return value is caught because the balance either moved or it did not — and unlike a return value, a balance cannot be faked without capital.
The rule extends to the payout side, which integrators forget more often than the intake side. If a protocol promises a user a minimum output, that promise must be enforced on what the user ACTUALLY RECEIVED, not on the amount the protocol nominally sent. Otherwise a deflationary token quietly slips the user below their own bound while the protocol reports success.
The second-order trap: a guard calibrated on fiction
Here is the failure that survives a naive fix. Suppose the protocol adopts the delta rule for accounting but keeps a safety check — a minimum-output floor, say — that was derived from a quote computed as though no transfer fee existed. The accounting is now correct and the guard is now wrong: it demands an output the token can never deliver, so it rejects a perfectly honest fill. The protocol has traded silent over-crediting for loud denial of service.
The resolution is that a guard must be calibrated on the same measured reality as the accounting. If a fee was OBSERVED during execution — not declared by the caller, not guessed from a list, but measured — the fee-blind component of the floor is the wrong instrument for that trade and must yield to the bounds that are computed from real amounts. The user stays protected by their own explicit minimum and by a floor derived from what genuinely arrived; nothing is relaxed for honest tokens, whose behaviour is unchanged because their measured delta always equals the nominal amount.
Why this is an invariant problem, not a compatibility problem
It is tempting to file all of this under "token compatibility" and maintain an allowlist. That approach fails on contact with reality: the space of misbehaving tokens is open-ended, permissionless, and grows faster than any list. Worse, an allowlist is a claim about the world rather than a property of the code, and claims about the world are exactly what an adversary edits.
The measured-delta rule is different in kind. It is a local, checkable invariant that holds regardless of what the token does, because it observes the outcome rather than trusting the interface. A conservation guard computed on measured reality can then be honest: it compares the real balance change to the real change in what the ledger claims to owe, so a token that behaves strangely produces a rejected transaction rather than a quietly over-credited ledger. That is the difference between a protocol that hopes tokens are well-behaved and one that does not need them to be.
Do not trust this page — reproduce it
Every claim above is checkable against the chain. Start here:
Take any integration and ask what it credits: the amount it passed, or the amount it measured — then run a fee-on-transfer token through it and compare its ledger to the real balance, because the gap between the two IS the bugContracts are verified on every chain we deploy to — addresses in the protocol manifest. Deeper formal treatment: the whitepaper (PDF). Standards cited: EIP-20
Share this article · join the discussion