Build1 distinct publisher2 min readPublished
According to a developer's write-up, six contracts satisfy the EXTCODESIZE(owner) > 0 firmness check on an on-chain order book and still pull their depth, each run as a real testnet transaction.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
The mismatch is exact. EXTCODESIZE greater than zero confirms bytecode sits at an address and says nothing about what that bytecode is permitted to do [4]. A firmness guarantee is a claim about capability, whether this owner can remove its own resting depth, and the opcode answers a question about presence instead [2]. That is a different error from the well-known constructor case; the direction is flipped, so that instead of gating who may act, the check promises a third party that depth is stuck [6].
Two of the escapes are worth reading closely because they beat the defenses a careful team would reach for. The first defense is scanning the owner contract's bytecode for a cancel path. Technique four beats it by not containing one: once its order is resting, the contract calls a shared permissions registry and grants a plain wallet the right to cancel on its behalf, so the withdrawal fires through selectors that appear nowhere in the audited code [10]. The second defense is checking that the order still exists on the book. Technique five beats that, because it never cancels; reduceOrder shrinks the quote in place and refunds the freed escrow, collapsing an advertised 1,000,000-unit level to a minimum-size stub while the order id survives [11]. If the promise is that the depth cannot be withdrawn, a reduce falsifies it without tripping any cancel detector.
By the developer's account, where an escape did fail, it failed at execution rather than at classification, and that gap is the whole argument. The guarantee is made while the order rests, and at rest all six read FIRM [17]. A signal that misclassifies at the moment a taker decides is not rescued by a later transaction that fails against one particular pool. That is why a wrong answer here is worse than none: it launders liquidity that may not be there through a number people have chosen to trust [19].
Ranked by verification strength, evidence, and original report placement.
An on-chain resting order carries an Order.owner field that is readable by anyone.
The intended guarantee is that if a resting order's owner is a contract with no cancel function, the order cannot be withdrawn, and this can be proven before trading against it.
The common check is owner.code.length > 0 (EXTCODESIZE > 0), read as meaning the owner is a contract and therefore the quote is firm.
EXTCODESIZE > 0 confirms that code exists at an address but tells you nothing about what that code can do.
The author built six contracts that all pass the EXTCODESIZE(owner) > 0 check and still get their resting depth out, deployed each to a public testnet, and executed the escapes as real transactions.
This failure differs from the classic constructor footgun; the direction is flipped, from asking whether an address is an EOA to gate access, to asking whether it is a contract in order to promise a third party that depth cannot be withdrawn.
Follow any of these and your For You feed starts watching them — no settings page required.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed and code-backed, but single-source and testnet-only
The claim set is unusually concrete for a blog post: it includes Solidity for each technique, exact forbidden selectors, a named network and chain ID, and candid reporting that two of six escapes did not fully complete. That internal specificity is strong. It is nonetheless a single self-reported source with no independent replication and results confined to a testnet, which caps the evidence score.
Testnet PoC only; no production adoption evidence
The only observed deployment is the author's proof-of-concept on the Somnia Shannon testnet. The sources do not establish how widely the vulnerable EXTCODESIZE firmness check is used in production, nor any uptake of the proposed EXTCODEHASH attestation fix, so real-world adoption cannot be measured without inferring facts not present.
Mild framing overstatement, corrected in the body
The headline and dek state that six contracts 'still withdraw their order,' whereas the body discloses that two of six did not complete a full withdrawal (S4's cancel was refused, S6 ran out of gas). The author corrects this honestly and argues classification-at-rest reads FIRM for all six regardless, so the overstatement is limited to framing rather than substance.
Individual developer advocating a specific fix
The author is an individual developer publishing on dev.to who advocates a particular remedy (EXTCODEHASH attestation plus a static selector scan). This creates a reputational and solution-advocacy incentive, but there is no named commercial product or paid promotion evident, so the biasing incentive is moderate rather than strong.
Coherent and specific, but uncorroborated single source
Confidence in the assessment is moderate: the source is internally consistent, technically detailed, and candid about limitations, which supports the core mechanism claim, but the entire cluster is one self-reported write-up with no independent verification and testnet-only scope.
invest
Kyber's DTSP defence is a website disclaimer and a two-word distinction1 distinct publisher
build
337 green tests, zero signed transactions: what an MCP server proved about agent testing1 distinct publisher
invest
A code review just made HKMA stablecoin compliance an on-chain question1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 26, 2026