This is the recommended Lotus release for the nv29 (Solstice) network upgrade at epoch 6470279 (2026-10-19T12:59:30Z). It is cut from master and adds stability and hardening improvements made since v1.37.0.
- v1.37.0 is the minimum required version for nv29. If you are already running v1.37.0, you are ready for the upgrade.
- v1.38.0 is recommended. It includes everything in v1.37.0 plus the changes below.
☢️ Upgrade Warnings ☢️
MinerCreateBlocknow requires thesignpermission instead ofwrite. Tokens or miner configurations that call this method withwritebut notsignare denied; grantsignor stop calling it. (filecoin-project/lotus#13871)eth_callandeth_estimateGasnow honor positivegaslimits. Requests that previously succeeded with an insufficient limit can now fail. Applications and RPC providers should review default or injectedgasvalues and increase them, or omitgaswhen no explicit cap is intended.eth_estimateGasreturns reth's-32000and-32003errors for unmet caps and out-of-gas calls, and agasPriceormaxFeePerGaslimits the estimate to what the sender can afford. (filecoin-project/lotus#13865, filecoin-project/lotus#13911)lotus-gatewaynow caps JSON-RPC requests at 16MiB and headers at 64KiB and applies 10s header, 60s read and 120s idle timeouts, all tunable vialotus-gateway run --help. (filecoin-project/lotus#13912)lotus-gatewaynow limits each WebSocket connection to 16 liveChainNotifyandSubscribeActorEventsRawsubscriptions; raise it with--per-conn-subscription-limit. (filecoin-project/lotus#13914)- build: raise the minimum Go version to
1.26.8. (filecoin-project/lotus#13878)
🐛 Bug Fixes
- fix(api): check
/health/readyzimmediately on startup instead of waiting for the first one-minute polling interval. (filecoin-project/lotus#13796) - fix(rpc): allow
ChainPutObjto store blocks over JSON-RPC. (filecoin-project/lotus#13868) - fix(chain): p2p ingress hardening. Tipsets from peers are limited to 34 distinct blocks, and ChainExchange serves messages for at most 8 tipsets per request. (filecoin-project/lotus#13909)
- fix(chainindex):
lotus index validate-backfillretries failed epochs and accepts reverted fork tipsets at null rounds; index database pragmas apply to every connection. (filecoin-project/lotus#13833) - fix(config): the daemon no longer refuses to load a config without
EnableSplitstorewhenLOTUS_CHAINSTORE_ENABLESPLITSTOREis set. (filecoin-project/lotus#13851) - fix(eth):
eth_getTransactionByHashfinds pending Ethereum transactions missing from the chain index (filecoin-project/lotus#13677) - fix(eth):
eth_subscribeno longer leaks a subscription on the node when the event type or an address is rejected. (filecoin-project/lotus#13838) - fix(eth):
EthBytesandEthUint64FromHexreject hex values with an embedded0xinstead of silently stripping it and mis-decoding. (filecoin-project/lotus#13908) - fix(f3): node shutdown no longer fails with
could not close datastore: leveldb: closedand leavesrepo.lockbehind. (filecoin-project/lotus#13850) - fix(gateway): the lookback limit now applies to the block parameter of
eth_estimateGasand to thefromBlockandblockHashofeth_newFilter. (filecoin-project/lotus#13873) - fix(gateway): cap JSON-RPC request size, which previously defaulted to 100MiB. (filecoin-project/lotus#13912)
- fix(lotus-bench):
cli --cmdrejects an empty command, non-positive concurrency or out-of-range qps instead of panicking. (filecoin-project/lotus#13842) - fix(lotus-fountain): remove the deprecated DataCap faucet. (filecoin-project/lotus#13840)
- fix(miner): deal sectors start sealing ahead of the earliest deal start epoch, not the last piece's. (filecoin-project/lotus#13872)
- fix(paths): storage path scanning no longer fails on hidden files such as NFS
.nfsXXXXleftovers in sector directories. (filecoin-project/lotus#13830) - fix(stmgr):
StateCallhonoursGasLimit, matchingeth_call; zero selects the default limit, which is the network block gas limit unless set with the newAPI.StateCallGasLimitoption, and a largerGasLimitis rejected. (filecoin-project/lotus#13910)
👌 Improvements
- chore(deps): update
go-libp2pto v0.50.0,go-libp2p-pubsubto v0.18.0 andquic-goto v0.62.0. (filecoin-project/lotus#13882) - ci(release): stop publishing IPFS
.cidfiles beside release archives;.sha512checksums remain. (filecoin-project/lotus#13896)
📝 Changelog
For the full set of changes since the last stable release:
- Node: v1.37.0...v1.38.0
- Miner: miner/v1.37.0...miner/v1.38.0
👨👩👧👦 Contributors
| Contributor | Commits | Lines ± | Files Changed |
|---|---|---|---|
| Rod Vagg | 25 | +7366/-2405 | 214 |
| LexLuthr | 4 | +3912/-301 | 41 |
| Steve Loeppky | 8 | +878/-175 | 44 |
| dependabot[bot] | 16 | +315/-288 | 46 |
| Phi-rjan | 6 | +375/-228 | 28 |
| Kaif | 6 | +329/-41 | 18 |
| parthshah1 | 1 | +247/-4 | 4 |
| snail8501 | 2 | +134/-9 | 10 |
| myetcd | 1 | +90/-34 | 3 |
| Ben Abulafia | 1 | +118/-2 | 2 |
| Matt Van Horn | 1 | +118/-1 | 3 |
| Hamed Yousefi | 3 | +77/-19 | 13 |
| Jakub Sztandera | 1 | +54/-18 | 2 |
| wangjingshuiku | 1 | +48/-8 | 3 |
| Viraj Bhartiya | 1 | +46/-0 | 3 |
| blackflytech | 1 | +30/-1 | 3 |
| ginavalent | 1 | +13/-13 | 3 |
| fmtappendf | 2 | +5/-4 | 5 |
| Piotr Galar | 1 | +2/-2 | 1 |
Release Log
- github.com/filecoin-project/lotus:
- build: release Lotus Node and Miner v1.38.0 (#13921) (filecoin-project/lotus#13921)
- fix(eth): reject negative gas prices in eth_estimateGas
- fix(eth): limit eth_estimateGas to what the sender can afford
- fix(eth): match reth for eth_estimateGas gas caps
- feat(gateway): limit live subscriptions per connection (#13914) (filecoin-project/lotus#13914)
- fix(chain): bound tipset width and request work at p2p ingress (#13909) (filecoin-project/lotus#13909)
- fix(stmgr): honour GasLimit in StateCall (#13910) (filecoin-project/lotus#13910)
- fix(gateway): bound the memory a client can make the gateway hold (#13912) (filecoin-project/lotus#13912)
- fix(api): require sign permission for MinerCreateBlock (#13871) (filecoin-project/lotus#13871)
- fix(eth): reject embedded 0x in EthBytes and EthUint64FromHex hex parsing (#13908) (filecoin-project/lotus#13908)
- fix(miner): start sealing before the earliest deal deadline (#13872) (filecoin-project/lotus#13872)
- ci: reuse PR CI results when only Markdown changed since the last pass (#13895) (filecoin-project/lotus#13895)
- docs(release): v1.36.3/v1.37.0 release template improvements (#13779) (filecoin-project/lotus#13779)
- ci: run actionlint with shellcheck on workflow changes (#13897) (filecoin-project/lotus#13897)
- ci(release): drop Kubo dependency from checksum generation (#13896) (filecoin-project/lotus#13896)
- fix(tvx): close test vector files after decoding (#13901) (filecoin-project/lotus#13901)
- fix: remove stray double spaces in comments and a duplicated word (#13899) (filecoin-project/lotus#13899)
- fix(ci): make the release workflow's changelog handling more resilient (#13816) (filecoin-project/lotus#13816)
- build(deps): bump the libp2p-ecosystem group across 1 directory with 2 updates (#13882) (filecoin-project/lotus#13882)
- build(deps): bump the github-actions group across 3 directories with 14 updates (#13885) (filecoin-project/lotus#13885)
- build(deps): bump github.com/dustin/go-humanize from 1.0.1 to 1.1.0 (#13881) (filecoin-project/lotus#13881)
- chore(release): cherry-pick v1.37.0 changelog back to master (#13886) (filecoin-project/lotus#13886)
- build(deps): bump golang.org/x/time from 0.15.0 to 0.16.0 (#13883) (filecoin-project/lotus#13883)
- build(deps): bump github.com/zondax/ledger-filecoin-go from 1.2.2 to 1.2.3 in the crypto-hardware group across 1 directory (#13887) (filecoin-project/lotus#13887)
- build(deps): bump go.opentelemetry.io/otel from 1.46.0 to 1.47.0 (#13879) (filecoin-project/lotus#13879)
- build(deps): bump github.com/ipfs/boxo from 0.42.2 to 0.43.0 in the ipfs-ecosystem group across 1 directory (#13854) (filecoin-project/lotus#13854)
- build(deps): bump golang.org/x/tools from 0.48.0 to 0.51.0 (#13884) (filecoin-project/lotus#13884)
- fix(api): handle Filecoin.ChainPutObj via go-jsonrpc (#13868) (filecoin-project/lotus#13868)
- test: additional itest flaky fixes (#13832) (filecoin-project/lotus#13832)
- build: upgrade Go to 1.26.8 (#13878) (filecoin-project/lotus#13878)
- test(itests): fix MustPost null-round compounding, fail on unproven deadlines (#13812) (filecoin-project/lotus#13812)
- fix(chainindex): validate-backfill retries & improved fork handling (#13833) (filecoin-project/lotus#13833)
- chore(deps): dependabot for github acitons, pin hashes (#13845) (filecoin-project/lotus#13845)
- fix(gateway): enforce lookback on eth_estimateGas and eth_newFilter (#13873) (filecoin-project/lotus#13873)
- chore: set mainnet nv29 upgrade epoch (#13874) (filecoin-project/lotus#13874)
- refactor(chain): consolidate event and receipt AMT reads & bound decoded size (#13875) (filecoin-project/lotus#13875)
- fix(mpool): reject nil replacement messages (#13866) (filecoin-project/lotus#13866)
- fix(eth): honor gas limits in eth_call and eth_estimateGas (#13865) (filecoin-project/lotus#13865)
- fix(splitstore): make GC walk visits codec aware (#13848) (filecoin-project/lotus#13848)
- fix(lotus-fountain)!: remove deprecated DataCap faucet (#13840) (filecoin-project/lotus#13840)
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.50 to 1.14.52 in the data-storage group across 1 directory (#13856) (filecoin-project/lotus#13856)
- build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp from 1.44.0 to 1.46.0 (#13858) (filecoin-project/lotus#13858)
- fix(lotus-bench): reject empty benchmark commands (#13842) (filecoin-project/lotus#13842)
- fix(api): check readiness immediately on startup (#13796) (filecoin-project/lotus#13796)
- build(deps): bump github.com/consensys/gnark-crypto from 0.20.1 to 0.21.0 (#13861) (filecoin-project/lotus#13861)
- build(deps): bump go.opentelemetry.io/otel/bridge/opencensus from 1.44.0 to 1.46.0 (#13862) (filecoin-project/lotus#13862)
- fix(blockstore): avoid duplicate writes when verifying reads (#13849) (filecoin-project/lotus#13849)
- fix(config): accept LOTUS_CHAINSTORE_ENABLESPLITSTORE in splitstore validation (#13851) (filecoin-project/lotus#13851)
- fix(gateway): stop serving pprof and expvar on the public handler (#13853) (filecoin-project/lotus#13853)
- fix(f3): don't close the F3 datastore twice on shutdown (#13850) (filecoin-project/lotus#13850)
- chore(blockstore): drop support for inline CIDs (#13847) (filecoin-project/lotus#13847)
- fix(eth): validate eth_subscribe params before starting the subscription (#13838) (filecoin-project/lotus#13838)
- revert(build): defer Go 1.26 upgrade until v1.37.0 ships (#13846) (filecoin-project/lotus#13846)
- build: upgrade Go to 1.26.8 (#13841) (filecoin-project/lotus#13841)
- test(gateway): cover negative heights in lookback checks (#13837) (filecoin-project/lotus#13837)
- fix(chainindex): don't vacuum during migrations (#13828) (filecoin-project/lotus#13828)
- feat(gateway): consolidate an memoise logic for lookback, apply properly on v2 (#13822) (filecoin-project/lotus#13822)
- fix(paths): skip hidden files when scanning storage paths (#13830) (filecoin-project/lotus#13830)
- fix(eth): reject malformed EthBigInt JSON (#13824) (filecoin-project/lotus#13824)
- chore(actors): restore the v19.0.1 bundle
- chore(butterflynet): gamma reset of 2026-09-19 as deployed
- fix(genesis): load wasm bundle when loading genesis when required
- fix(miner): accurate pledge delta for PRU3 (#13819) (filecoin-project/lotus#13819)
- feat(cli): upgrade-quality --sectors arg & print skip reason (#13818) (filecoin-project/lotus#13818)
- fix(stats): handle zero-sized head change buffers (#13679) (filecoin-project/lotus#13679)
- fix(eth): return pending eth tx from eth_getTransactionByHash when txHash index is missing (#13677) (filecoin-project/lotus#13677)
- fix(chainindex): restore missing tipset bloom during index validation (#13829) (filecoin-project/lotus#13829)
- chore: update download-ipfs-distribution-action to v2 (#13827) (filecoin-project/lotus#13827)
- chore: minor improvement for docs (#13797) (filecoin-project/lotus#13797)
- build: update Lotus Node and Miner version to v1.37.1-dev in master (#13814) (filecoin-project/lotus#13814)
- test(solstice): replaceAddress return type itests (#13817) (filecoin-project/lotus#13817)
- feat(api): add v2 StateRewardDistribution (#13808) (filecoin-project/lotus#13808)
- github.com/filecoin-project/go-jsonrpc (v0.10.2 -> v0.10.3):
- chore: v0.10.3 bump (#159) (filecoin-project/go-jsonrpc#159)
- fix: better resource accounting (#158) (filecoin-project/go-jsonrpc#158)
- fix(http): close response bodies on rejected statuses (#157) (filecoin-project/go-jsonrpc#157)
- chore(deps): bump go.opencensus.io from 0.22.3 to 0.24.0 (#156) (filecoin-project/go-jsonrpc#156)
- chore(deps): bump github.com/google/uuid from 1.1.1 to 1.6.0 (#155) (filecoin-project/go-jsonrpc#155)
- chore(deps): bump github.com/gorilla/websocket from 1.4.2 to 1.5.3 (#154) (filecoin-project/go-jsonrpc#154)
- chore(deps): bump github.com/ipfs/go-log/v2 from 2.0.8 to 2.9.2 (#152) (filecoin-project/go-jsonrpc#152)
- chore(deps): add dependabot, switch GHA to sha pinning (#151) (filecoin-project/go-jsonrpc#151)
- chore: set CODEOWNERS (#150) (filecoin-project/go-jsonrpc#150)
- github.com/filecoin-project/go-state-types (v0.19.0 -> v0.19.1):
- chore: v0.19.1 bump (#471) (filecoin-project/go-state-types#471)
- feat(v19/reward): replaceAddress return types (#470) (filecoin-project/go-state-types#470)
Contributors
| Contributor | Commits | Lines ± | Files Changed |
|---|---|---|---|
| Rod Vagg | 25 | +7366/-2405 | 214 |
| LexLuthr | 4 | +3912/-301 | 41 |
| Steve Loeppky | 9 | +944/-198 | 56 |
| dependabot[bot] | 16 | +315/-288 | 46 |
| Phi-rjan | 6 | +375/-228 | 28 |
| Kaif | 6 | +329/-41 | 18 |
| parthshah1 | 1 | +247/-4 | 4 |
| snail8501 | 2 | +134/-9 | 10 |
| myetcd | 1 | +90/-34 | 3 |
| Ben Abulafia | 1 | +118/-2 | 2 |
| Matt Van Horn | 1 | +118/-1 | 3 |
| Hamed Yousefi | 3 | +77/-19 | 13 |
| Jakub Sztandera | 1 | +54/-18 | 2 |
| wangjingshuiku | 1 | +48/-8 | 3 |
| Viraj Bhartiya | 1 | +46/-0 | 3 |
| blackflytech | 1 | +30/-1 | 3 |
| ginavalent | 1 | +13/-13 | 3 |
| fmtappendf | 2 | +5/-4 | 5 |
| Piotr Galar | 1 | +2/-2 | 1 |