Skip to content

feat(actpool): activate the blacklist removal at Zanzibar - #5020

Merged
envestcc merged 2 commits into
iotexproject:masterfrom
envestcc:fix/activate-blacklist-removal-at-zanzibar
Sep 24, 2026
Merged

envestcc merged 2 commits into
iotexproject:masterfrom
envestcc:fix/activate-blacklist-removal-at-zanzibar

Conversation

@envestcc

@envestcc envestcc commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

Problem

#4861 added BlackListRemoval together with a node-configurable BlackListRemovalHeight, defaulting to MaxUint64. 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

  • remove BlackListRemovalHeight from node config
  • source the removal height from genesis ZanzibarBlockHeight
  • pass the genesis height to both actpool admission and execution protocol registration
  • cover behavior immediately before and at the fork height
  • preserve the unscheduled-fork behavior with an explicit MaxUint64 test case

TestNet 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

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

codecov Bot commented Sep 19, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 75.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 62.62%. Comparing base (436e4d1) to head (4fb6fa6).
⚠️ Report is 352 commits behind head on master.

Files with missing lines Patch % Lines
chainservice/builder.go 0.00% 1 Missing ⚠️

❌ 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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@envestcc
envestcc force-pushed the fix/activate-blacklist-removal-at-zanzibar branch from 4fb6fa6 to b8bcc3a Compare September 20, 2026 04:48
@sonarqubecloud

Copy link
Copy Markdown

@guo guo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Zanzibar-gated blacklist removal wiring and fork-boundary behavior. Both actpool admission and execution use the genesis fork height; CI is green.

@envestcc
envestcc merged commit 6e0928c into iotexproject:master Sep 24, 2026
6 of 7 checks passed
@envestcc
envestcc deleted the fix/activate-blacklist-removal-at-zanzibar branch September 24, 2026 11:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants