This Lotus release candidate introduces the new ChainIndexer
subsystem, enhancing the indexing of Filecoin chain state for improved RPC performance. Several bug fixes in the block production loop are also included. Please review the upgrade warnings and documentation for any important changes affecting RPC providers, node operators and storage providers.
☢️ Upgrade Warnings ☢️
- The introduction of the new
ChainIndexer
subsystem replaces the existingMsgIndex
,EthTxHashLookup
, andEventIndex
implementations. This change may affect RPC providers and node operators who use or expose Ethereum and/or events APIs. It is crucial to review the ChainIndexer documentation for operators to understand how to enable, configure, and use the new Indexer.
⭐ New Feature Highlights:
- New ChainIndexer subsystem to index Filecoin chain state such as tipsets, messages, events and ETH transactions for accurate and faster RPC responses. The
ChainIndexer
replaces the existingMsgIndex
,EthTxHashLookup
andEventIndex
implementations in Lotus, which suffer from a multitude of known problems. If you are an RPC provider or a node operator who uses or exposes Ethereum and/or events APIs, please refer to the ChainIndexer documentation for operators for information on how to enable, configure and use the new Indexer. While there is no automated data migration and one can upgrade and downgrade without backups, there are manual steps that need to be taken to backfill data when upgrading to this Lotus version, or downgrading to the previous version without ChainIndexer. Please be aware that that this feature removes some options in the Lotus configuration file, if these have been set, Lotus will report an error when starting. See the documentation for more information lotus chain head
now supports a--height
flag to print just the epoch number of the current chain head (filecoin-project/lotus#12609)- Implement
EthGetTransactionByBlockNumberAndIndex
(eth_getTransactionByBlockNumberAndIndex
) andEthGetTransactionByBlockHashAndIndex
(eth_getTransactionByBlockHashAndIndex
) methods. (filecoin-project/lotus#12618) lotus-shed indexes inspect-indexes
now performs a comprehensive comparison of the event index data for each message by comparing the AMT root CID from the message receipt with the root of a reconstructed AMT. Previouslyinspect-indexes
simply compared event counts. Comparing AMT roots instead confirms all the event data is byte-perfect. (filecoin-project/lotus#12570)- Reduce size of embedded genesis CAR files by removing WASM actor blocks and compressing with zstd. This reduces the
lotus
binary size by approximately 10 MiB. (filecoin-project/lotus#12439)
🐛 Bug Fix Highlights
- Add logic to check if the miner's owner address is delegated (f4 address). If it is delegated, the
lotus-shed sectors termination-estimate
command now sends the termination state call using the worker ID. This fix resolves the issue where termination-estimate did not function correctly for miners with delegated owner addresses. (filecoin-project/lotus#12569) - The mining loop will now correctly "stick" to the same upstream lotus node for all operations pertaining to mining a single block (filecoin-project/lotus#12665).
- The Lotus Miner will now always mine on the latest chain head returned by lotus, even if that head has less "weight" than the previously seen head. This is necessary because F3 may end up finalizing a tipset with a lower weight, although this situation should be rare on the Filecoin mainnet. (filecoin-project/lotus#12659)
- Make the ordering of event output for
eth_
APIs andGetActorEventsRaw
consistent, sorting ascending on: epoch, message index, event index and original event entry order. (filecoin-project/lotus#12623) - Event APIs (Eth events and actor events) should only return reverted events if client queries by specific block hash / tipset. Eth and actor event subscription APIs should always return reverted events to enable accurate observation of real-time changes. (filecoin-project/lotus#12585)
- Fix a bug in the
lotus-shed indexes backfill-events
command that may result in either duplicate events being backfilled where there are existing events (such an operation should be idempotent) or events erroneously having duplicatelogIndex
values when queried via ETH APIs. (filecoin-project/lotus#12567)
📝 Changelog
For the full set of changes since the last stable release:
- Node: v1.30.0...v1.31.0-rc1
- Miner: v1.30.0...miner/v1.31.0-rc1
👨👩👧👦 Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Aarsh Shah | 2 | +6725/-5410 | 84 |
Masih H. Derkani | 13 | +1924/-867 | 61 |
Viraj Bhartiya | 6 | +2048/-703 | 41 |
Steven Allen | 25 | +1394/-404 | 53 |
Rod Vagg | 13 | +502/-272 | 39 |
Phi-rjan | 8 | +175/-64 | 20 |
Jakub Sztandera | 7 | +107/-66 | 15 |
aarshkshah1992 | 1 | +61/-30 | 5 |
Steve Loeppky | 1 | +78/-2 | 4 |
Krishang Shah | 1 | +7/-17 | 1 |
Łukasz Magiera | 1 | +9/-10 | 3 |
Phi | 1 | +9/-9 | 8 |
Danial Ahn | 1 | +14/-1 | 2 |
hanabi1224 | 1 | +7/-6 | 1 |
web3-bot | 1 | +1/-1 | 1 |
asamuj | 1 | +1/-1 | 1 |
Andrew Jackson (Ajax) | 1 | +2/-0 | 1 |