verify: a row for sink 1.5.0, and why 1.4.0 cannot have one - #53
Merged
Merged
Conversation
Sinks 1.4.0 (`0xeC9f701C…`) and 1.5.0 (`0x061b6e70…`) had no manifest row and read
UNVERIFIED on Blockscout. Both are verified now; 1.5.0 gets the row.
🔴 The note that had blocked it for two days was WRONG, and believing it is what
kept the row unwritten: "its constructor changed shape again for the derived quote
hop". The shape is IDENTICAL to 1.2.0/1.3.0 — the same eight arguments. What
changed is two VALUES, and both are why a copied row fails with a bytecode
mismatch that reads like a compiler-settings problem:
- the burn token is 0xEDF52618… , a later test token, NOT the 0xD21C10dC… that
the 1.1.0-1.3.0 sinks burn. Both are live;
- the bps pair is 5000/7000 (the B2 numbers, whose floor is an IMMUTABLE), not
8000/8000.
The row's hex was not derived from any of that. It was read off the bytes actually
deployed — the last 256 bytes of the CREATE3 payload's `creationCode` argument in
`broadcast/09_DeployBuybackBurnSink.s.sol/1439/run-1789026244612.json` — and
`cast abi-encode` of the row reproduces it byte for byte. (The 1.4.0 deploy's tail
is identical: only the code differs.)
⛔ 1.4.0 deliberately has NO ROW, and that is not an oversight to fix later.
It was built from ee3289b, BEFORE 88293f3 added the derived quote hop: its
creation code is 19,173 bytes against this tree's 20,405, so the whole 1.4.0
payload is SMALLER than today's code alone. This manifest compiles from the
WORKING TREE, so a row for it could never pass from `main` — it would turn a green
gate red for ever and teach a reader to ignore it, which is the one thing this
file's own header warns about. It IS verified, from its own revision, and the
comment carries the recipe (`git worktree add --detach … ee3289b`, then
verify-blockscout.sh against that root with the same constructor hex).
Proven: both addresses read `is_verified: true` on Blockscout, and a manifest pass
reports `0 still waiting`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sinks 1.4.0 (
0xeC9f701C…) and 1.5.0 (0x061b6e70…) had no manifest row and read UNVERIFIED on Blockscout. Both are verified now; 1.5.0 gets the row.🔴 The note that blocked this for two days was wrong
It said "its constructor changed shape again for the derived quote hop". It did not. The shape is identical to 1.2.0/1.3.0 — the same eight arguments. What changed is two values, and both are why a copied row fails with a bytecode mismatch that reads like a compiler-settings problem:
0xD21C10dC…0xEDF52618…(a later test token; both live)minBurnBps/burnBpsThe row's hex was not derived from any of that. It was read off the bytes actually deployed — the last 256 bytes of the CREATE3 payload's
creationCodeargument inbroadcast/09_DeployBuybackBurnSink.s.sol/1439/run-1789026244612.json— andcast abi-encodeof the row reproduces it byte for byte. (The 1.4.0 deploy's tail is identical; only the code differs.)⛔ 1.4.0 deliberately has no row
Not an oversight to fix later. It was built from
ee3289b, before88293f3added the derived quote hop:The whole 1.4.0 payload is smaller than today's code alone. This manifest compiles from the working tree, so a row for it could never pass from
main— it would turn a green gate red for ever and teach a reader to ignore it, which is exactly what this file's own header warns about.It is verified, from its own revision, and the comment carries the recipe (
git worktree add --detach … ee3289b, thenverify-blockscout.shagainst that root with the same constructor hex).Checked
is_verified: trueon Blockscout (BuybackBurnSink,v0.8.26+commit.8a97fa7a)--- pass 1: 0 still waiting on the Blockscout indexer ---bash -nclean; the new row'scast abi-encodeoutput compared byte-for-byte against both deploys🤖 Generated with Claude Code