This Month in Forest - May 2026 #7119
Pinned
LesnyRumcajs
announced in
Announcements 📢
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This Month in Forest 🌲
Welcome to the May edition of This Month in Forest! Busy month all around — NV28 finally activated on mainnet, a couple of releases went out, and a healthy chunk of work landed across the mempool, wallet, and Ethereum API. Let's get into it.
Highlights
NV28 on mainnet
Following the April calibration upgrade, NV28 activated on mainnet at epoch 6052800 on May 27.
New releases
Two Forest releases this month:
Forest adoption
Bridge validators and DEXes now using Forest. There are discussions with Block Explorers, and more ecosystem teams moving to Forest including users of Forest-exclusive trace API calls trace_call and debug_traceTransaction.
Filecoin Security & Antithesis ❤️ Forest
It's worth highlighting that several reports coming from Filecoin Security & Antithesis actually helped resolve some edge cases around Forest. Those included, e.g., duplicate beacon entries or recently Forest getting stuck.
Development
Random improvements and fixes
Ethereum RPC: correctness and performance
A focused push to make Forest's Ethereum-compatible JSON-RPC faster and more correct for the providers that rely on it:
collect_events, plus an optimised tipset-to-Ethereum-block conversion.Alongside the targeted fixes, we also started building tooling to turn RPC traffic into structured datasets we can query — so we can spot the slowest and most-used methods empirically rather than guessing. Results? We'll share more detailed ones later, but here's a sneak peek
Wallet usability
forest-wallet set-defaultno longer fails when the keystore has no existing default — friendlier first run.Mempool tooling for stuck messages
If you've ever had a wallet wedged behind a stuck pending message, this one's for you.
forest-toolnow shipsnonce-fixandreplacemempool helpers (#7084) to recover from nonce gaps and reprice stuck pending messages. Thereplace-by-feebehaviour is now aligned with Lotus as well.State-manager and message-pool restructuring
A multi-PR (#6864, #6965, #7006, #7033) reorganisation of two of Forest's largest modules into smaller, focused files. Less spectacular than a new feature, but it makes bugs easier to find and the code easier to compare against Lotus — and it surfaced a number of latent issues now tracked as scoped follow-ups. A message chain ordering fix during republish came out of this work too.
API correctness around state forks
Network-upgrade epochs needed special handling in the API surface. #7061 implements state-fork handling in
call_rawso expensive migrations don't get triggered unnecessarily, and Eth RPC requests around fork epochs return correct results.Chain-store and storage
A persisted tipset-by-height lookup table makes height-based queries cheaper, and the database layer was refactored from a generic to an enum-based dispatch to reduce maintenance overhead.
Stability and diagnostics
A node crash that could occur under high event-traffic load is fixed, keeping nodes online during peak traffic. Errors that previously vanished silently in the FVM consensus trait and the randomness layer are now inspected and logged. Internal tipset-lookup paths now distinguish a real failure from a "not found yet", reducing hidden errors.
Operator-facing improvements
See the CHANGELOG for the full list of client-facing changes; the commit history has the rest. 🤓
Upcoming work
Our immediate focus:
And then, of course, we will continue with our regular maintenance and improvements.
Outside of Forest
lotusA cross-client fix discovered while restructuring Forest:
rust-fil-proofsAligning toolchain management with the rest of the Filecoin Rust ecosystem:
serde_ipld_dagcborCBOR decoder upgrade we needed in Forest, contributed upstream first:
cbor4iito1.2.2ipld/serde_ipld_dagcbor#52ref-fvmRoutine maintenance:
36.0.8filecoin-project/ref-fvm#2301Individual reports
Disclaimer: this is for reporting purposes only.
@akaladarshi
Highlights
Forest's two most-changed code areas got cheaper to maintain. Restructured the message-pool and state-manager into smaller, focused files so future patches ship with smaller risk surface, faster review, and tighter consistency with the Lotus (#6864, #6965, #7006, #7033).
Forest reached real-time Ethereum subscription parity with Lotus. Added subscription support for pending transactions, smart-contract events, and new blocks, closing a parity gap with Lotus for wallets and EVM tooling that depend on these streams (#6941).
Forest nodes stay online under high traffic. Fixed a node crash that could occur under peak load (#7020).
Five silent bugs in Forest's most-used code paths are now tracked. While working closely with the message-pool and Ethereum-RPC code, filed each bug as a scoped issue so the team can triage and fix them (#7074, #7075, #7076, #7091, #7096).
Forest's Ethereum-API performance work now has concrete targets. Investigated why Forest's Ethereum read APIs (such as
eth_call) run slower than Lotus's in production, identifying where the time is lost. Also scoped automated test designs for the message-pool and state-manager so future regressions get caught at PR time, not in production.Wider ecosystem
Both Filecoin clients now return consistent Ethereum error codes. Contributed an error-code fix to Lotus's trace API (lotus#13614), shipped the matching fix on the Forest side (#7098), and filed a separate cross-repo bug against Lotus during the same investigation (lotus#13613). Wallets and developers across Filecoin can now diagnose failed Ethereum transactions reliably on both clients.
Full list of authored pull requests and filed issues, May 2026.
@hanabi1224
Summary
This month's work focused on making Forest faster, more reliable, and easier to maintain. Key themes included eliminating cold-start overhead through persistent storage improvements, reducing RPC latency with targeted caching and parallelism, improving consensus-safety observability, adding a state-diff tool for debugging replay mismatches, and a database architecture change that makes storage code statically safe to extend.
Highlights
Faster, more efficient API responses
Pre-warming RPC caches for newly validated tipsets and side products(message receipts and events, etc.), parallelizing batch request processing, and an optimized tipset-to-Ethereum-block conversion — reducing latency on the hot paths RPC providers hit most.
#7093 #7077 #7068 #7062
Improved diagnostics and error handling
Better logging and clearer error reporting make it easier to investigate and resolve issues.
#7083 #7082
Tooling, build, and release preparation
A faster build process, new state-diff tool, and release preparation work.
#7078 #7081 #7021
Refactors and storage cleanup
Internal improvements to database and storage code, reducing complexity and risk of bugs.
#7051 #7038 #7023
Tests and stability fixes
Expanded test coverage and targeted fixes for edge cases, improving reliability.
#7057 #7056 #7019 #7002
Maintenance and dependency updates
Routine upkeep, network resets, and dependency updates.
#7003 #7072 #6999 #6998
Design and coordination
Drafted a design proposal for a global index spanning multiple ForestCAR files to guide future storage improvements.
Full list of authored pull requests: hanabi1224 PRs, May 2026.
@LesnyRumcajs
Highlights
Coordination
Coordination work this month (no code, but it kept the rest of the work shippable):
Wider ecosystem contributions
rust-fil-proofs— Toolchain management is now consistent across the Filecoin Rust ecosystem (migrated torust-toolchain.toml).serde_ipld_dagcbor— A CBOR decoder upgrade Forest needed landed upstream and is now in Forest.Full list of authored pull requests: LesnyRumcajs PRs, May 2026.
@sudo-shashank
Highlights
New mpool recovery tools. Added the
nonce-fixandreplacemessage-pool CLI tools to help recover from nonce gaps and reprice stuck pending messages, making it easier to unblock affected wallet activity (#7085, #7086, #7084).Replace-by-fee value now matches Lotus. Lowered the minimum premium bump for a replacement message from
1.25xto1.10x, so users get consistent repricing behavior. Ports filecoin-project/lotus#10416 (#7084).set-defaultnow works on a fresh keystore.forest-wallet set-defaultpreviously could fail when the keystore had no default entry; it now works on a fresh keystore and persists across restarts, removing a sharp edge from the new-user experience (#7018, #7087).Wallet testing is now maintainable in the long term. Migrated Calibnet wallet checks from brittle shell scripts into Rust, making the test flow easier to maintain, extend, and review (#6850, #6983, #7095).
Stricter checks keep Forest's API in lockstep with Lotus. Enabled strict API comparison against Lotus, fixed several response-format mismatches, and refreshed test snapshots — closing compatibility gaps and guarding against regressions (#5635, #6970).
API calls stay correct across network upgrades. Implemented state fork handling and corrected behavior around migration epochs, keeping results correct while avoiding unnecessary migrations by explicitly handling expensive forks (#6446, #5965, #7061).
Messages get republished in the right order. Fixed an incorrect swap index in the message-republish selection logic, so pending messages are re-broadcast in the correct priority order instead of being silently reordered (#7075, #7090).
Genuine failures are no longer silently swallowed. Refactored internal tipset lookup paths to distinguish a real failure from a simple "not found yet," reducing masked errors and making node behavior easier to reason about and debug (#6755, #7005).
Security
forest-explorercovering transaction-signing safeguards, faucet quota accounting, and per-wallet rate limiting — helping keep user-facing infrastructure safer and more resilient.Full list of authored pull requests: sudo-shashank PRs, May 2026.
Beta Was this translation helpful? Give feedback.
All reactions