This Month in Forest - August 2026 #7567
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.
This Month in Forest 🌲
Welcome to the August edition of This Month in Forest! For the first time, a Forest node drove a real Filecoin miner all the way to producing blocks on a devnet, a big step towards client diversity. Around that milestone the month brought a broad performance pass over the Ethereum API, more hardening against malformed input and misbehaving peers, a cluster of drand/beacon correctness fixes, and enriched snapshots.
Highlights
Great success: Forest drove a real miner
Filecoin's node software today is overwhelmingly Go: Lotus, plus Venus, which shares a large chunk of its code with Lotus. A single bug can therefore reach across much of the network. An independent implementation in a different language that miners can rely on is far less likely to share those failure modes, which is the point of client diversity. This month a Forest + Curio (or
lotus-miner) pair produced blocks on a devnet, end to end, for the first time.Getting there took a handful of pieces. Forest gained the one RPC method Curio needs to create a miner (
Filecoin.StateMinerCreationDeposit), plus a stub forFilecoin.NetBandwidthStatsto unblock Curio's dashboard. On top of that, a networking bug that stopped Forest from joining a Lotus devnet was fixed, block production was corrected, and a beacon-fetch fix let the miner get its randomness in time to produce blocks that actually get accepted into the chain. The whole setup was then wired into CI (and made to wait for a funded wallet) so it keeps working. Next stop: calibnet.Enriched snapshots
Forest snapshots can now carry more than raw chain data. Enriched snapshots bundle the extra indices a node would otherwise have to rebuild on import (most notably the epoch-to-tipset lookup table), so a freshly imported node gets fast height lookups and index-backed queries out of the box. The concept now has proper documentation; see the knowledge base for what they contain and how to use them.
New release
One release this month:
Team
We said goodbye to @hanabi1224 (Hailong), a long-time Forest maintainer whose work on networking, GC, snapshots, indexing and other optimizations will forever live in Forest's
githistory. Thank you, and all the best. And @EclesioMeloJunior joined the team, and has already landed a run of drand and CI work this month. 👋Development
Random improvements and fixes
Ethereum RPC: correctness
A batch of parity fixes across the Ethereum-compatible API and its Filecoin neighbours:
eth_call/eth_estimateGasnow accept contract and non-existentfromaddresses, matching Lotus and Geth, so tooling that simulates calls from those senders no longer fails (#7435, #7541).eth_estimateGasno longer under-estimates gas for nested contract calls (EIP-150's 63/64 rule); the estimate is raised until the message succeeds, and genuine reverts returnexecution reverted(code3) with the decoded reason (#7473, #7486).Filecoin.MinerGetBaseInforequires a non-empty tipset key instead of silently falling back to the heaviest tipset (#7438), and returns the correct beacon entries across null rounds, epochs that produced no block (#7427).ChainNotifygot two fixes: a panic when a client disconnects right after subscribing (#7446) and a skipped first notification, now consistent with Lotus (#7493).Ethereum RPC: performance
After the correctness pass, a sweep to cut redundant state loads on the hottest methods. Many now take a fast path when they can answer without loading a full tipset or state tree:
eth_getStorageAt(#7531),eth_getCode(#7523),eth_feeHistory(#7529),eth_getBlockReceipts(#7498), andeth_getLogs(#7530).Filecoin.StateAccountKeyon bad queries (#7521), address resolution inresolve_to_key(#7522), andFilecoin.MpoolPending(#7524).GenesisInforeconstructions (#7458), fewer message-receipt clones (#7456), and a round of redundant-clone removal enforced by a lint from now on (#7487).Drand and beacons
Filecoin blocks draw randomness from drand, an external beacon; quicknet is the drand network Filecoin uses. Following July's cluster of beacon issues, quicknet handling got a correctness pass: Forest now fetches randomness for every epoch a block covers (#7412), block validation rejects headers whose beacon entries don't cover every epoch since the parent (#7413, #7441), and
Filecoin.StateGetBeaconEntry/Filecoin.BeaconGetEntryno longer over-wait: past and current epochs are read from on-chain headers with no drand round-trip (#7508). Drand retrieval also gained metrics around HTTP fetches (#7533), with per-network cache naming (#7532).See the CHANGELOG for the full list of client-facing changes; the commit history has the rest. 🤓
Upcoming work
Outside of Forest
builtin-actorsWork on "Solstice" (FIP-0118), the proposed change to how Filecoin rewards stored data, most notably the UpgradeSectorQuality implementation.
Individual reports
Disclaimer: this is for reporting purposes only.
@akaladarshi
Highlights
Forest's live feed of chain updates now behaves the same as Lotus when an app falls behind. Apps can subscribe to be told whenever the chain moves forward; Forest now closes subscriptions that an app has stopped reading, matching Lotus, and the feature got its first automated tests (#7493), with a follow-up cleanup still in progress (#7502).
Forest's collection of smart-contract activity logs, currently spread across many separate functions, now has a researched restructuring plan. Studied how the collection works today, compared it with Lotus, and drafted a plan to bring it into one well-structured place.
Wider ecosystem
This month's ecosystem work centered on "Solstice" (FIP-0118), the proposed upgrade that changes how Filecoin rewards stored data:
Solstice's removal of Filecoin Plus, the program that gives approved data extra rewards, got a detailed review. Studied the changes that remove the program and shared review feedback with the team, flagging some cases the proposal text does not yet cover (builtin-actors#1778).
How existing stored data reaches the new reward level is now agreed with the proposal's authors. Posted the open implementation questions to the design discussion and worked through each one to a decision (builtin-actors#1763).
Storage providers now have a merged method that brings their existing data up to the new reward level. Wrote the
UpgradeSectorQualitymethod in Filecoin's shared actors code, which every Filecoin client runs (builtin-actors#1775).Full list of authored pull requests, August 2026.
@EclesioMeloJunior
Highlights
MinerGetBaseInforeturns the correctBeaconEntries. When a null round happens (an epoch with no block), a Filecoin block should be able to cover every epoch since its parent; Forest was returning the wrong set of beacon entries, now fixed (#7427).sync wait -wno longer leaves a staleStatus:line. Reworked the display so refreshes update in place instead of writing to a new line (#7453).ribasushi-rpc-checks). Added a CI check that downloads an external dataset and asserts Forest's responses against it on calibnet (#7477).Full list of authored pull requests, August 2026.
@LesnyRumcajs
Highlights
StateMinerCreationDeposit), fixed a bug that prevented Forest from joining a Lotus devnet (#7516), corrected block production (#7535), and added the whole setup to CI (#7556).eth_getStorageAt(#7531),eth_getCode(#7523),eth_feeHistory(#7529),eth_getBlockReceipts(#7498),eth_getLogs(#7530)), and closed correctness gaps: tombstoned contracts (#7537), gas estimation (#7473), and revert-reason decoding (#7486).unwrap()calls (#7479).Wider ecosystem
Full list of authored pull requests, August 2026.
@sudo-shashank
Highlights
eth_callandeth_estimateGasnow accept contract and missing senders. Forest now skips sender validation for those RPC methods when thefromaddress is a contract or does not exist, matching Lotus and Geth, so Ethereum tooling that simulates calls from those addresses no longer fails. Accompanying devnet tests were ported from Lotus to lock the behavior in (#7435, #7541, ports lotus#13724).--as-defaulttoforest-wallet import, matchinglotus wallet import --as-default, so an imported key can be designated the default wallet without a separate command (#7565).Not Foundis now cached only for unboundedeth_getTransactionReceiptsearches. Misses frometh_getTransactionReceiptLimitedare left uncached, since the receipt could still exist beyond the lookback. Non-finalized entries are dropped when the chain head changes (reorg-safe); finalized receipts are immutable, so they stay cached permanently (#7420).forest-tool api serve --index-backfill-epochs Nnow backfills N epochs below the chain head instead of counting the head as one of them, so operators get the full range they asked for (#7480).Full list of authored pull requests, August 2026.
All reactions