Repository navigation
feat(zeronet): add Denim SystemConfig gas parameters task - #808
Conversation
✅ Heimdall Review Status
|
55405c8 to
0ee0f26
Compare
0ee0f26 to
558635c
Compare
Approved review 5522596320 from roger-bai-coinbase is now dismissed due to new commit. Re-request for approval.
jackchuma
left a comment
There was a problem hiding this comment.
Automated review
Reviewed 943d7b3 against main. 2 finding(s) posted inline.
The Zeronet task itself looks correct: it executed at 2026-10-14 18:38:12 UTC, after the 18:00 UTC activation, and the validation file, records, and README agree. Both findings matter only for the later networks that reuse this task directory.
Residual risk: for future networks, the newGasLimit * 10 == oldGasLimit check (UpdateDenimGasParams.s.sol:59) only works if that network's live gas limit is divisible by 10. It fails loudly rather than doing anything unsafe.
🤖 Reply generated with Toshi
Approved review 5523622518 from leopoldjoy is now dismissed due to new commit. Re-request for approval.
0xth4nh
left a comment
There was a problem hiding this comment.
P2: the task has no status.json, so Validate task status fails as soon as this branch is merged with main.
Issue: #821 (merged today) added scripts/task-status.py check as a required workflow (validate-task-status.yml). It needs a task-root status.json for every task under active/. This branch is based on a5bc211a, before #821, so its CI is green only because the check did not exist yet. I merged the head with current main (13b02c7be, conflict-free) and ran python3 -B scripts/task-status.py check:
active/evm/tasks/2026-10-08-denim-system-config/status.json: missing status.json
The same check passes once the file exists, and the 17 scripts.tests.test_task_status tests pass either way. The task content itself is fine: I recomputed the selectors, the calldata, the packed SystemConfig slots and the validation hashes, and they match what was executed in tx 0x2bf7928e…0a5b.
Fix: add active/evm/tasks/2026-10-08-denim-system-config/status.json, modelled on 2026-10-07-denim-upgrade/status.json:
{
"schema_version": 1,
"task": "2026-10-08-denim-system-config",
"kind": "active",
"last_updated": "<UTC timestamp>",
"networks": {
"zeronet": {
"step": "executed",
"pr": "https://github.com/base/contract-deployments/pull/808",
"blocksec_ticket": null,
"signatures": {},
"executed_tx": "0x2bf7928e72e17a4657a3fd24e33907574881b63878ac04d0cfeaa5e7af880a5b"
}
}
}Merge or rebase onto main first and re-run python3 -B scripts/task-status.py check locally to confirm the exact shape.
Approved review 5531798577 from jackchuma is now dismissed due to new commit. Re-request for approval.
0xth4nh
left a comment
There was a problem hiding this comment.
Looks Good to Thanh's Toshi
What changed? Why?
Adds the Zeronet task that sets the post-Denim gas parameters on
SystemConfig, signed by the Base multisig (theSystemConfigowner):1,200,000,000→120,000,000;100→1000.At the first Denim block the node applies these values itself (
DENIM_GAS_PARAMETER_SCALING_FACTORin base/basecrates/consensus/derive/src/attributes/stateful.rs). This writes them to L1 so a laterSystemConfigupdate does not restore the 2s-block values.Executed on October 14, 2026 after Denim activated: 0x2bf7928e… (L1 block 3816476).
Notes to reviewers
make execute.How has it been tested?
signandrunsimulated against Zeronet L1 before execution: pre-checks (owner, current values, ratios, min/max gas limit) and post-checks (new values, unchanged elasticity and DA footprint gas scalar) pass.SystemConfigreads gas limit120000000, denominator1000, elasticity15, DA footprint gas scalar119.