Conversation
iotexproject#4861 added BlackListRemoval plus a BlackListRemovalHeight node-config field defaulting to MaxUint64, so the removal has never been active. This schedules it on the Zanzibar fork. The height now comes from genesis instead of node config. The predicate Config.IsBlackListedFunc builds is not confined to actpool admission: chainservice wires it into the execution protocol, where the EIP-7702 authorization check consults it during block execution. It is therefore consensus-critical, and leaving the height operator-settable meant two nodes configured differently would validate SetCode authorizations differently and fork. Reading it from genesis removes that possibility. BlackListRemovalHeight is dropped from Config; IsBlackListedFunc takes the height as a parameter, and both call sites (actpool.NewActPool, which already receives the genesis, and chainservice's execution protocol registration) pass g.ZanzibarBlockHeight. No behaviour change on TestNet, whose config sets an empty blackList -- the predicate short-circuits before any of this matters. On MainNet, where the 29-entry default blacklist applies, the 13 removal entries stay blacklisted until a mainnet Zanzibar height is scheduled. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
❌ Your project check has failed because the head coverage (62.62%) is below the target coverage (85.00%). You can increase the head coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #5020 +/- ##
===========================================
- Coverage 74.83% 62.62% -12.22%
===========================================
Files 378 503 +125
Lines 31624 50260 +18636
===========================================
+ Hits 23666 31474 +7808
- Misses 6747 15052 +8305
- Partials 1211 3734 +2523 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
4fb6fa6 to
b8bcc3a
Compare
|
guo
left a comment
There was a problem hiding this comment.
Reviewed the Zanzibar-gated blacklist removal wiring and fork-boundary behavior. Both actpool admission and execution use the genesis fork height; CI is green.



Problem
#4861 added
BlackListRemovaltogether with a node-configurableBlackListRemovalHeight, defaulting toMaxUint64. As a result, the removal list has never activated by default.The blacklist predicate is also passed to the execution protocol and used by the EIP-7702 authorization check during block execution. Letting operators configure the removal height can therefore make nodes validate the same authorization differently.
Change
BlackListRemovalHeightfrom node configZanzibarBlockHeightMaxUint64test caseTestNet behavior is unchanged because its blacklist is empty. On MainNet, the 13 removal entries remain blacklisted until Zanzibar and are removed starting at block 53155801.
Testing
CGO_ENABLED=1 go test ./actpool ./chainservice -count=1make lintmake fmt(the branch itself is clean; the command also reports five pre-existing formatting differences on master)make test: the changedactpoolpackage passes under the race detector; the previously unrelated API test failures have since been addressed by fix(api): serialize tracer Stop against GetResult #4973 and test(api): wait for asynchronous log streaming #5021