Releases: filecoin-project/lotus
v1.26.0-rc2
This is a release candidate of the upcoming MANDATORY Lotus v1.26.0 release, which will deliver the Filecoin network version 22, codenamed Dragon 🐉.
This release candidate sets the calibration network to upgrade at epoch 1427974, which is 2024-03-11T14:00:00Z
This release does NOT set the mainnet upgrade epoch yet, in which will be updated in the final release.
The Filecoin network version 22 delivers the following FIPs:
- FIP-0063: Switching to new Drand mainnet network
- FIP-0074: Remove cron-based automatic deal settlement
- FIP-0076: Direct data onboarding
- FIP-0083: Add built-in Actor events in the Verified Registry, Miner and Market Actors
v13 Builtin Actor Bundle
The actor bundles for the calibration network can be checked as follows:
lotus state actor-cids --network-version=22
Network Version: 22
Actor Version: 13
Manifest CID: bafy2bzacea4firkyvt2zzdwqjrws5pyeluaesh6uaid246tommayr4337xpmi
Actor CID
account bafk2bzaceb3j36ri5y5mfklgp5emlvrms6g4733ss2j3l7jismrxq6ng3tcc6
cron bafk2bzaceaz6rocamdxehgpwcbku6wlapwpgzyyvkrploj66mlqptsulf52bs
datacap bafk2bzacea22nv5g3yngpxvonqfj4r2nkfk64y6yw2malicm7odk77x7zuads
eam bafk2bzaceatqtjzj7623i426noaslouvluhz6e3md3vvquqzku5qj3532uaxg
ethaccount bafk2bzacean3hs7ga5csw6g3uu7watxfnqv5uvxviebn3ba6vg4sagwdur5pu
evm bafk2bzacec5ibmbtzuzjgwjmksm2n6zfq3gkicxqywwu7tsscqgdzajpfctxk
init bafk2bzaced5sq72oemz6qwi6yssxwlos2g54zfprslrx5qfhhx2vlgsbvdpcs
multisig bafk2bzacedbgei6jkx36fwdgvoohce4aghvpohqdhoco7p4thszgssms7olv2
paymentchannel bafk2bzaceasmgmfsi4mjanxlowsub65fmevhzky4toeqbtw4kp6tmu4kxjpgq
placeholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
reward bafk2bzacedjyp6ll5ez27dfgldjj4tntxfvyp4pa5zkk7s5uhipzqjyx2gmuc
storagemarket bafk2bzaceabolct6qdnefwcrtati2us3sxtxfghyqk6aamfhl6byyefmtssqi
storageminer bafk2bzaceckzw3v7wqliyggvjvihz4wywchnnsie4frfvkm3fm5znb64mofri
storagepower bafk2bzacea7t4wynzjajl442mpdqbnh3wusjusqtnzgpvefvweh4n2tgzgqhu
system bafk2bzacedjnrb5glewazsxpcx6rwiuhl4kwrfcqolyprn6rrjtlzmthlhdq6
verifiedregistry bafk2bzacednskl3bykz5qpo54z2j2p4q44t5of4ktd6vs6ymmg2zebsbxazkm
Migration
We are expecting a bit heavier than normal state migration for this upgrade due to the amount of state changes introduced with Direct Data Onboarding.
All node operators, including storage providers, should be aware that ONE pre-migration is being scheduled 120 epochs before the upgrade. It will take around 10-20 minutes for the pre-migration and less than 30 seconds for the final migration, depending on the amount of historical state in the node blockstore and the hardware specs the node is running on. During this time, expect slower block validation times, increased CPU and memory usage, and longer delays for API queries
We recommend node operators (who haven't enabled splitstore discard mode) that do not care about historical chain states, to prune the chain blockstore by syncing from a snapshot 1-2 days before the upgrade.
You can test out the migration by running running the benchmarking a network migration
tutorial.
For certain node operators, such as full archival nodes or systems that need to keep large amounts of state (RPC providers), completing the pre-migration in time before the network upgrade might not be achievable. For those node operators, it is recommended to skip the pre-migration and run the non-cached migration (i.e., just running the migration at the exact upgrade epoch), and schedule for some downtime during the upgrade epoch. Operators of such nodes can read the How to disable premigration in network upgrade
tutorial.
New features
- feat: api: new verified registry methods to get all allocations and claims (#11631) (filecoin-project/lotus#11631)
- new: add forest bootstrap nodes (#11636) (filecoin-project/lotus#11636)
- feat: sealing: Support nv22 DDO features in the sealing pipeline (#11226) (filecoin-project/lotus#11226)
- feat: implement FIP-0063 (filecoin-project/lotus#11572)
- feat: events: Add Lotus APIs to consume smart contract and built-in actor events (filecoin-project/lotus#11618)
Improvements
Tracing API
Replace the CodeCid
field in the message trace (added in 1.23.4) with an InvokedActor
field.
Before:
{
"Msg": {
"From": ...,
"To": ...,
...
"CodeCid": ... // The actor's code CID.
}
"MsgRct": ...,
"GasCharges": [],
"Subcalls": [],
}
After:
{
"Msg": {
"From": ...,
"To": ...
}
"InvokedActor": { // The invoked actor (ommitted if the actor wasn't invoked).
"Id": 1234, // The ID of the actor.
"State": { // The actor's state object (may change between network versions).
"Code": ..., // The actor's code CID.
"Head": ..., // The actor's state-root (when invoked).
"CallSeqNum": ..., // The actor's nonce.
"Balance": ..., // The actor's balance (when invoked).
"Address": ..., // Delegated address (FEVM only).
}
}
"MsgRct": ...,
"GasCharges": [],
"Subcalls": [],
}
This means the trace now contains an accurate "snapshot" of the actor at the time of the call, information that may not be present in the final state-tree (e.g., due to reverts). This will hopefully improve the performance and accuracy of indexing services.
Ethereum Tracing API (trace_block
and trace_replayBlockTransactions
)
For those with the Ethereum JSON-RPC API enabled, the experimental Ethereum Tracing API has been improved significantly and should be considered "functional". However, it's still new and should be tested extensively before relying on it. This API translates FVM traces to Ethereum-style traces, implementing the OpenEthereum trace_block
and trace_replayBlockTransactions
APIs.
This release fixes numerous bugs with this API and now ABI-encodes non-EVM inputs/outputs as if they were explicit EVM calls to handle_filecoin_method
for better block explorer compatibility.
However, there are some significant limitations:
- The Geth APIs are not implemented, only the OpenEthereum (Erigon, etc.) APIs.
- Block rewards are not (yet) included in the trace.
- Selfdestruct operations are not included in the trace.
- EVM smart contract "create" events always specify
0xfe
as the "code" for newly created EVM smart contracts.
Additionally, Filecoin is not Ethereum no matter how much we try to provide API/tooling compatibility. This API attempts to translate Filecoin semantics into Ethereum semantics as accurately as possible, but it's hardly the best source of data unless you need Filecoin to look like an Ethereum compatible chain. If you're trying to build a new integration with Filecoin, please use the native StateCompute
method instead.
GetActorEvents and SubscribeActorEvents
FIP-0049 introduced Actor Events that can be emitted by user programmed actors. FIP-0083 introduces new events emitted by the builtin Verified Registry, Miner and Market Actors. These new events for builtin actors are being activated with network version 22 to coincide with Direct Data Onboarding as defined in FIP-0076 which introduces additional flexibility for data onboarding. Sector, Deal and DataCap lifecycles can be tracked with these events, providing visibility and options for programmatic responses to changes in state.
Actor events are available on message receipts, but can now be retrieved from a node using the new GetActorEvents
and SubscribeActorEvents
methods. These methods allow for querying and subscribing to actor events, respectively. They depend on the Lotus node both collecting events (with Fevm.Events.RealTimeFilterAPI
and Fevm.Events.HistoricFilterAPI
) and being enabled with the new configuration option Events.EnableActorEventsAPI
. Note that a Lotus node can only respond to requests for historic events that it retains in its event store.
Both GetActorEvents
and SubscribeActorEvents
take a filter parameter which can optionally filter events on:
Addresses
of the actor(s) emitting the event- Specific
Fields
within the event FromHeight
andToHeight
to filter events by block heightTipSetKey
to restrict events contained within a specific tipset
GetActorEvents
provides a one-time query for actor events, while SubscribeActorEvents
provides a long-lived connection (via websockets) to the Lotus node, allowing for real-time updates on actor events. The subscription can be cancelled by the client at any time.
GetAllClaims and GetAllAlocations
Additionally the methods `GetA...
v1.26.0-rc1
This is the first release candidate of the upcoming MANDATORY Lotus v1.26.0 release, which will deliver the Filecoin network version 22, codenamed Dragon 🐉.
This release candidate sets the calibration network to upgrade at epoch 1427974, which is 2024-03-11T14:00:00Z. This release does NOT set the mainnet upgrade epoch yet, in which will be updated in the final release.
The Filecoin network version 22 delivers the following FIPs:
- FIP-0063: Switching to new Drand mainnet network
- FIP-0074: Remove cron-based automatic deal settlement
- FIP-0076: Direct data onboarding
- FIP-0083: Add built-in Actor events in the Verified Registry, Miner and Market Actors
v13 Builtin Actor Bundle
The actor bundles for the calibration network can be checked as follows:
lotus state actor-cids --network-version=22
Network Version: 22
Actor Version: 13
Manifest CID: bafy2bzacea4firkyvt2zzdwqjrws5pyeluaesh6uaid246tommayr4337xpmi
Actor CID
account bafk2bzaceb3j36ri5y5mfklgp5emlvrms6g4733ss2j3l7jismrxq6ng3tcc6
cron bafk2bzaceaz6rocamdxehgpwcbku6wlapwpgzyyvkrploj66mlqptsulf52bs
datacap bafk2bzacea22nv5g3yngpxvonqfj4r2nkfk64y6yw2malicm7odk77x7zuads
eam bafk2bzaceatqtjzj7623i426noaslouvluhz6e3md3vvquqzku5qj3532uaxg
ethaccount bafk2bzacean3hs7ga5csw6g3uu7watxfnqv5uvxviebn3ba6vg4sagwdur5pu
evm bafk2bzacec5ibmbtzuzjgwjmksm2n6zfq3gkicxqywwu7tsscqgdzajpfctxk
init bafk2bzaced5sq72oemz6qwi6yssxwlos2g54zfprslrx5qfhhx2vlgsbvdpcs
multisig bafk2bzacedbgei6jkx36fwdgvoohce4aghvpohqdhoco7p4thszgssms7olv2
paymentchannel bafk2bzaceasmgmfsi4mjanxlowsub65fmevhzky4toeqbtw4kp6tmu4kxjpgq
placeholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
reward bafk2bzacedjyp6ll5ez27dfgldjj4tntxfvyp4pa5zkk7s5uhipzqjyx2gmuc
storagemarket bafk2bzaceabolct6qdnefwcrtati2us3sxtxfghyqk6aamfhl6byyefmtssqi
storageminer bafk2bzaceckzw3v7wqliyggvjvihz4wywchnnsie4frfvkm3fm5znb64mofri
storagepower bafk2bzacea7t4wynzjajl442mpdqbnh3wusjusqtnzgpvefvweh4n2tgzgqhu
system bafk2bzacedjnrb5glewazsxpcx6rwiuhl4kwrfcqolyprn6rrjtlzmthlhdq6
verifiedregistry bafk2bzacednskl3bykz5qpo54z2j2p4q44t5of4ktd6vs6ymmg2zebsbxazkm
Migration
We are expecting a bit heavier than normal state migration for this upgrade due to the amount of state changes introduced with Direct Data Onboarding.
All node operators, including storage providers, should be aware that ONE pre-migration is being scheduled 120 epochs before the upgrade. It will take around 10-20 minutes for the pre-migration and less than 30 seconds for the final migration, depending on the amount of historical state in the node blockstore and the hardware specs the node is running on. During this time, expect slower block validation times, increased CPU and memory usage, and longer delays for API queries
We recommend node operators (who haven't enabled splitstore discard mode) that do not care about historical chain states, to prune the chain blockstore by syncing from a snapshot 1-2 days before the upgrade.
You can test out the migration by running running the benchmarking a network migration
tutorial.
For certain node operators, such as full archival nodes or systems that need to keep large amounts of state (RPC providers), completing the pre-migration in time before the network upgrade might not be achievable. For those node operators, it is recommended to skip the pre-migration and run the non-cached migration (i.e., just running the migration at the exact upgrade epoch), and schedule for some downtime during the upgrade epoch. Operators of such nodes can read the How to disable premigration in network upgrade
tutorial.
New features
- feat: api: new verified registry methods to get all allocations and claims (#11631) (filecoin-project/lotus#11631)
- new: add forest bootstrap nodes (#11636) (filecoin-project/lotus#11636)
- feat: sealing: Support nv22 DDO features in the sealing pipeline (#11226) (filecoin-project/lotus#11226)
- feat: implement FIP-0063 (filecoin-project/lotus#11572)
- feat: events: Add Lotus APIs to consume smart contract and built-in actor events (filecoin-project/lotus#11618)
Improvements
Tracing API
Replace the CodeCid
field in the message trace (added in 1.23.4) with an InvokedActor
field.
Before:
{
"Msg": {
"From": ...,
"To": ...,
...
"CodeCid": ... // The actor's code CID.
}
"MsgRct": ...,
"GasCharges": [],
"Subcalls": [],
}
After:
{
"Msg": {
"From": ...,
"To": ...
}
"InvokedActor": { // The invoked actor (ommitted if the actor wasn't invoked).
"Id": 1234, // The ID of the actor.
"State": { // The actor's state object (may change between network versions).
"Code": ..., // The actor's code CID.
"Head": ..., // The actor's state-root (when invoked).
"CallSeqNum": ..., // The actor's nonce.
"Balance": ..., // The actor's balance (when invoked).
"Address": ..., // Delegated address (FEVM only).
}
}
"MsgRct": ...,
"GasCharges": [],
"Subcalls": [],
}
This means the trace now contains an accurate "snapshot" of the actor at the time of the call, information that may not be present in the final state-tree (e.g., due to reverts). This will hopefully improve the performance and accuracy of indexing services.
Ethereum Tracing API (trace_block
and trace_replayBlockTransactions
)
For those with the Ethereum JSON-RPC API enabled, the experimental Ethereum Tracing API has been improved significantly and should be considered "functional". However, it's still new and should be tested extensively before relying on it. This API translates FVM traces to Ethereum-style traces, implementing the OpenEthereum trace_block
and trace_replayBlockTransactions
APIs.
This release fixes numerous bugs with this API and now ABI-encodes non-EVM inputs/outputs as if they were explicit EVM calls to handle_filecoin_method
for better block explorer compatibility.
However, there are some significant limitations:
- The Geth APIs are not implemented, only the OpenEthereum (Erigon, etc.) APIs.
- Block rewards are not (yet) included in the trace.
- Selfdestruct operations are not included in the trace.
- EVM smart contract "create" events always specify
0xfe
as the "code" for newly created EVM smart contracts.
Additionally, Filecoin is not Ethereum no matter how much we try to provide API/tooling compatibility. This API attempts to translate Filecoin semantics into Ethereum semantics as accurately as possible, but it's hardly the best source of data unless you need Filecoin to look like an Ethereum compatible chain. If you're trying to build a new integration with Filecoin, please use the native StateCompute
method instead.
GetActorEvents and SubscribeActorEvents
FIP-0049 introduced Actor Events that can be emitted by user programmed actors. FIP-0083 introduces new events emitted by the builtin Verified Registry, Miner and Market Actors. These new events for builtin actors are being activated with network version 22 to coincide with Direct Data Onboarding as defined in FIP-0076 which introduces additional flexibility for data onboarding. Sector, Deal and DataCap lifecycles can be tracked with these events, providing visibility and options for programmatic responses to changes in state.
Actor events are available on message receipts, but can now be retrieved from a node using the new GetActorEvents
and SubscribeActorEvents
methods. These methods allow for querying and subscribing to actor events, respectively. They depend on the Lotus node both collecting events (with Fevm.Events.RealTimeFilterAPI
and Fevm.Events.HistoricFilterAPI
) and being enabled with the new configuration option Events.EnableActorEventsAPI
. Note that a Lotus node can only respond to requests for historic events that it retains in its event store.
Both GetActorEvents
and SubscribeActorEvents
take a filter parameter which can optionally filter events on:
Addresses
of the actor(s) emitting the event- Specific
Fields
within the event FromHeight
andToHeight
to filter events by block heightTipSetKey
to restrict events contained within a specific tipset
GetActorEvents
provides a one-time query for actor events, while SubscribeActorEvents
provides a long-lived connection (via websockets) to the Lotus node, allowing for real-time updates on actor events. The subscription can be cancelled by the client at any time.
GetAllClaims and GetAllAlocations
Additionally the met...
v1.25.2
This is an optional but highly recommended feature release of Lotus, as it includes fixes for synchronizations issues that node operators have experienced.
This feature release also introduces the new Lotus-Provider
binary in its alpha testing phase, as well as the ability to call external PC2-binaries during the sealing process - read more about these features in the highlights section.
☢️ Upgrade Warnings ☢️
- You might see a
install: cannot stat './lotus-provider': No such file or directory
error when runningsudo make install
building from source. It will not cause any issues, but you can get rid of the error by runningmake lotus-provider
⭐️ Highlights ⭐️
Lotus-Provider
The feature release ships the alpha release of the new Lotus-Provider binary, together with its initial features - High Availability of WindowPoSt and WinningPoSt.
So what is so exciting about Lotus-Provider:
High Availability
- You can run as many
Lotus-Provider
instances as you want for both WindowPoSt and WinningPOSt. - You can connect them to as many clustered Yugabyte instances as you want to. This allows for an NxN configuration where all instances can communicate with all others.
- You have the option to connect different instances to different chain daemons.
Simplicity
- Once the configuration is in the database, setting up a new machine with Lotus-Provider is straightforward. Simply start the binary with the correct flags to find YugabyteDB and specify which configuration layers it should use.
Durability
Lotus-Provider
is designed with robustness in mind. Updates to the system are handled seamlessly, ensuring that performance and stability are maintained when taking down machines in your cluster for updates.
Read more about Lotus-Provider
in the documentation here. And check out the how you can migrate from Lotus-Miner to Lotus-Provider here. (Only recommended in testnets while its in Alpha)
External PC2-binaries
In this feature release, storage providers can call external PC2-binaries during the sealing process. This allows storage providers to leverage the SupraSeal PC2 binary, which has been shown to improve sealing speed in the PC2-phase. For instance, our current benchmarks show that an NVIDIA RTX A5000 card was able to complete PC2 in approximately 2.5 minutes.
We have verified that SupraSeal PC2 functions properly with Committed Capacity (CC) sectors, both SyntheticPoReps and non-Synthetic PoReps. However calling SupraSeal PC2 with deal sectors is not supported in this feature release.
For more information on how to use SupraSeal PC2 with your lotus-worker
, as well as how to use feature, please refer to the documentation.
New features
- feat: sturdypost work branch (filecoin-project/lotus#11405)
- Adds the
Lotus-Provider
binary, and the HarmonyDB framework.
- Adds the
- feat: worker: Support delegating precommit2 to external binary (filecoin-project/lotus#11185)
- Allows for delegating PreCommit2 to an exteranl binary.
- feat: build: Add SupraSeal-PC2 binary script (filecoin-project/lotus#11430)
- Adds a script for building the SupraSeal-PC2 binary easily.
- Feat: daemon: Auto remove existing chain if importing chain file or snapshot (filecoin-project/lotus#11277)
- Auto removes the existing chain when importing a snapshot.
- feat: Add ETA to lotus sync wait (#11211) (filecoin-project/lotus#11211)
- Adds a ETA indicator to
lotus sync wait
, so you can get an estimate for how long until sync is completed.
- Adds a ETA indicator to
- feat: mpool/wdpost: Maximize feecap config (filecoin-project/lotus#9746)
- Adds a Maximixe FeeCap Config
- feat: Add lotus-bench cli option to stress test any binary (filecoin-project/lotus#11270)
- Enables the
Lotus-Bench
to run any binary and analyze their latency and histogram distribution, track most common errors, perform stress testing under different concurrency levels and see how it works under different QPS.
- Enables the
- feat: chain import: don't walk to genesis - 2-3x faster snapshot import (#11446) (filecoin-project/lotus#11446)
- Improves Snapshot import speed, by not walking back to genesis on import.
- feat: metric: export Mpool message count (filecoin-project/lotus#11361)
- Adds the mpool count as a prometheus metric.
- feat: bench: flag to output GenerateWinningPoStWithVanilla params (filecoin-project/lotus#11460)
Improvements
- feat: bootstrap: add glif bootstrap node on calibration (filecoin-project/lotus#11175)
- fix: bench: Set ticket and seed to a non-all zero value (filecoin-project/lotus#11429)
- fix: alert: Check UDPbuffer-size (filecoin-project/lotus#11360)
- feat: cli: sort actor CIDs alphabetically before printing (#11345) (filecoin-project/lotus#11345)
- fix: worker: Connect when --listen is not set (filecoin-project/lotus#11294)
- fix: miner info: Show correct sector state counts (filecoin-project/lotus#11456)
- feat: miner: defensive check for equivocation (filecoin-project/lotus#11321)
- feat: Instructions for setting up Grafana/Prometheus for monitoring local lotus node (filecoin-project/lotus#11276)
- fix: cli: Wrap error in wallet sign (filecoin-project/lotus#11273)
- fix: Add time slicing to splitstore purging to reduce lock congestion (filecoin-project/lotus#11269)
- feat: sealing: load SectorsSummary from sealing SectorStats instead of calling API each time (filecoin-project/lotus#11353)
- fix: shed: additional metrics in
mpool miner-select-messages
(filecoin-project/lotus#11253) - storage: Return soft err when sector alloc fails in acquire (filecoin-project/lotus#11338)
- feat: miner: log detailed timing breakdown when mining takes longer than the block's timestamp (filecoin-project/lotus#11228)
- fix: shed: make invariants checker work with splitstore (filecoin-project/lotus#11391)
- feat: eth: encode eth tx input as solidity ABI (#11402) (filecoin-project/lotus#11402)
- fix: eth: use the correct state-tree when resolving addresses (#11387) (filecoin-project/lotus#11387)
- fix: eth: remove trace sanity check (#11385) (filecoin-project/lotus#11385)
- fix: chain: make failure to load the chain state fatal (#11426) (filecoin-project/lotus#11426)
- fix: build: an epoch is near an upgrade iff the upgrade is enabled (#11401) (filecoin-project/lotus#11401)
- fix: eth: handle unresolvable addresses (#11433) (filecoin-project/lotus#11433)
- fix: eth: correctly encode and simplify native input/output encoding (#11382) (filecoin-project/lotus#11382)
- fix: worker: listen for interrupt signals in GetStorageMinerAPI loop (#11309) (filecoin-project/lotus#11309)
- fix: sync: iterate over returned messages directly (#11373) (filecoin-project/lotus#11373)
- fix: miner: correct duration logs in mineOne (filecoin-project/lotus#11241)
- fix: cli: Add print to unseal cmd (filecoin-project/lotus#11271)
- fix: networking: avoid dialing when trying to handshake peers (filecoin-project/lotus#11262)
- metric milliseconds computation with golang original method (#11403) (filecoin-project/lotus#11403)
- feat: shed: fix blockstore prune (#11197) (filecoin-project/lotus#11197)
- refactor:ffi: replace ClearLayerData with ClearCache (#11352) (filecoin-project/lotus#11352)
- fix: api: compute gasUsedRatio based on max gas in the tipset (#11354) (filecoin-project/lotus#11354)
- fix: api: compute the effective gas cost with the correct base-fee (#11357) ([#11357](h...
v1.25.2-rc1
This is the first release candidate of the upcoming optional release of Lotus v1.25.2, which was bumped from the previous v1.25.1-rc1 with the hot fix (see v1.24.1 & v1.25.1 for more details)..
This feature release includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.
☢️ Upgrade Warnings ☢️
There are no upgrade warnings as of this first release candidate.
⭐️ Highlights ⭐️
Lotus-Provider
The feature release ships the alpha release of the new Lotus-Provider binary, together with its initial features - High Availability of WindowPoSt and WinningPoSt.
Over the next couple of days, we will build up a catalogue of documentation for how you can test out Lotus-Provider
. Once out, they will be linked in this section here, and sent as an update in the relevant Slack channels. If you are interested in testing out Lotus-Provider in your setup on the Calibration network feel free to reach out to us in the #fil-lotus-dev
channel.
So what is so exciting about Lotus-Provider:
High Availability
- You can run as many
Lotus-Provider
instances as you want for both WindowPoSt and WinningPOSt. - You can connect them to as many clustered Yugabyte instances as you want to. This allows for an NxN configuration where all instances can communicate with all others.
- You have the option to connect different instances to different chain daemons.
Simplicity
- Once the configuration is in the database, setting up a new machine with Lotus-Provider is straightforward. Simply start the binary with the correct flags to find YugabyteDB and specify which configuration layers it should use.
Durability
Lotus-Provider
is designed with robustness in mind. Updates to the system are handled seamlessly, ensuring that performance and stability are maintained when taking down machines in your cluster for updates.
External PC2-binaries
In this release candidate, storage providers have the ability to call external PC2-binaries during the sealing process. This allows storage providers to leverage the SupraSeal PC2 binary, which has been shown to improve sealing speed in the PC2-phase. For instance, our current benchmarks show that an NVIDIA RTX A5000 card was able to complete PC2 in approximately 2.5 minutes.
We have verified that SupraSeal PC2 functions properly with Committed Capacity (CC) sectors that are non-Synthetic, and with SyntheticPoReps that is introduced in the upcoming nv21-version.
However, we have encountered errors when using SupraSeal PC2 with deal sectors. As a result, we advise against using SupraSeal PC2 through the lotus-worker
with deal sectors in the sealing pipeline, except in testing environments. We plan to update this guideline in future release candidates, once we have a fix for deal sectors.
For more information on how to use SupraSeal PC2 with your lotus-worker
, as well as how to perform benchmarks using this feature, please refer to the documentation.
New features
- feat: sturdypost work branch (filecoin-project/lotus#11405)
- Adds the
Lotus-Provider
binary, and the HarmonyDB framework.
- Adds the
- feat: worker: Support delegating precommit2 to external binary (filecoin-project/lotus#11185)
- Allows for delegating PreCommit2 to an exteranl binary.
- feat: build: Add SupraSeal-PC2 binary script (filecoin-project/lotus#11430)
- Adds a script for building the SupraSeal-PC2 binary easily.
- Feat: daemon: Auto remove existing chain if importing chain file or snapshot (filecoin-project/lotus#11277)
- Auto removes the existing chain when importing a snapshot.
- feat: Add ETA to lotus sync wait (#11211) (filecoin-project/lotus#11211)
- Adds a ETA indicator to
lotus sync wait
, so you can get an estimate for how long until sync is completed.
- Adds a ETA indicator to
- feat: mpool/wdpost: Maximize feecap config (filecoin-project/lotus#9746)
- Adds a Maximixe FeeCap Config
- feat: Add lotus-bench cli option to stress test any binary (filecoin-project/lotus#11270)
- Enables the
Lotus-Bench
to run any binary and analyze their latency and histogram distribution, track most common errors, perform stress testing under different concurrency levels and see how it works under different QPS.
- Enables the
- feat: chain import: don't walk to genesis - 2-3x faster snapshot import (#11446) (filecoin-project/lotus#11446)
- Improves Snapshot import speed, by not walking back to genesis on import.
- feat: metric: export Mpool message count (filecoin-project/lotus#11361)
- Adds the mpool count as a prometheus metric.
- feat: bench: flag to output GenerateWinningPoStWithVanilla params (filecoin-project/lotus#11460)
Improvements
- feat: bootstrap: add glif bootstrap node on calibration (filecoin-project/lotus#11175)
- fix: bench: Set ticket and seed to a non-all zero value (filecoin-project/lotus#11429)
- fix: alert: Check UDPbuffer-size (filecoin-project/lotus#11360)
- feat: cli: sort actor CIDs alphabetically before printing (#11345) (filecoin-project/lotus#11345)
- fix: worker: Connect when --listen is not set (filecoin-project/lotus#11294)
- fix: miner info: Show correct sector state counts (filecoin-project/lotus#11456)
- feat: miner: defensive check for equivocation (filecoin-project/lotus#11321)
- feat: Instructions for setting up Grafana/Prometheus for monitoring local lotus node (filecoin-project/lotus#11276)
- fix: cli: Wrap error in wallet sign (filecoin-project/lotus#11273)
- fix: Add time slicing to splitstore purging to reduce lock congestion (filecoin-project/lotus#11269)
- feat: sealing: load SectorsSummary from sealing SectorStats instead of calling API each time (filecoin-project/lotus#11353)
- fix: shed: additional metrics in
mpool miner-select-messages
(filecoin-project/lotus#11253) - storage: Return soft err when sector alloc fails in acquire (filecoin-project/lotus#11338)
- feat: miner: log detailed timing breakdown when mining takes longer than the block's timestamp (filecoin-project/lotus#11228)
- fix: shed: make invariants checker work with splitstore (filecoin-project/lotus#11391)
- feat: eth: encode eth tx input as solidity ABI (#11402) (filecoin-project/lotus#11402)
- fix: eth: use the correct state-tree when resolving addresses (#11387) (filecoin-project/lotus#11387)
- fix: eth: remove trace sanity check (#11385) (filecoin-project/lotus#11385)
- fix: chain: make failure to load the chain state fatal (#11426) (filecoin-project/lotus#11426)
- fix: build: an epoch is near an upgrade iff the upgrade is enabled (#11401) (filecoin-project/lotus#11401)
- fix: eth: handle unresolvable addresses (#11433) (filecoin-project/lotus#11433)
- fix: eth: correctly encode and simplify native input/output encoding (#11382) (filecoin-project/lotus#11382)
- fix: worker: listen for interrupt signals in GetStorageMinerAPI loop (#11309) (filecoin-project/lotus#11309)
- fix: sync: iterate over returned messages directly (#11373) (filecoin-project/lotus#11373)
- fix: miner: correct duration logs in mineOne (filecoin-project/lotus#11241)
- fix: cli: Add print to unseal cmd (filecoin-project/lotus#11271)
- fix: networking: avoid dialing when trying to handshake peers (filecoin-project/lotus#11262)
- metric milliseconds computation with golang original method (#11403) (filecoin-project/lotus#11403)
- feat: shed: fix blockstore prune (#11197) (filecoin-project/lotus#11197)
- refactor:ffi: replace ClearLayerData with ClearCache (#11352) (filecoin-project/lotus#11352)
- fix: api: compute gasUsedRatio based on max gas in the tipset (#11354) ([#11354](https://github.com/filecoin-pro...
v1.25.1
This is a highly recommended PATCH RELEASE. The patch release fixes the issue were node operators trying to catch up sync were unable to sync large message blocks/epochs due to an increased number of messages on the network.
This patch release allows for up to 10k messages per block. Additionally, it introduces a limit on the amount of data that can be read at once, ensuring the system can handle worst-case scenarios.
Improvements
- fix: exchange: allow up to 10k messages per block (filecoin-project/lotus#11506)
v1.24.1
This is a highly recommended PATCH RELEASE. The patch release fixes the issue were node operators trying to catch up sync were unable to sync large message blocks/epochs due to an increased number of messages on the network.
This patch release allows for up to 10k messages per block. Additionally, it introduces a limit on the amount of data that can be read at once, ensuring the system can handle worst-case scenarios.
Improvements
- fix: exchange: allow up to 10k messages per block (filecoin-project/lotus#11506)
v1.25.1-rc1
This is the first release candidate of the upcoming optional release of Lotus v1.25.1. This feature release includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.
☢️ Upgrade Warnings ☢️
There are no upgrade warnings as of this first release candidate.
⭐️ Highlights ⭐️
Lotus-Provider
The feature release ships the alpha release of the new Lotus-Provider binary, together with its initial features - High Availability of WindowPoSt and WinningPoSt.
Over the next couple of days, we will build up a catalogue of documentation for how you can test out Lotus-Provider
. Once out, they will be linked in this section here, and sent as an update in the relevant Slack channels. If you are interested in testing out Lotus-Provider in your setup on the Calibration network feel free to reach out to us in the #fil-lotus-dev
channel.
So what is so exciting about Lotus-Provider:
High Availability
- You can run as many
Lotus-Provider
instances as you want for both WindowPoSt and WinningPOSt. - You can connect them to as many clustered Yugabyte instances as you want to. This allows for an NxN configuration where all instances can communicate with all others.
- You have the option to connect different instances to different chain daemons.
Simplicity
- Once the configuration is in the database, setting up a new machine with Lotus-Provider is straightforward. Simply start the binary with the correct flags to find YugabyteDB and specify which configuration layers it should use.
Durability
Lotus-Provider
is designed with robustness in mind. Updates to the system are handled seamlessly, ensuring that performance and stability are maintained when taking down machines in your cluster for updates.
External PC2-binaries
In this release candidate, storage providers have the ability to call external PC2-binaries during the sealing process. This allows storage providers to leverage the SupraSeal PC2 binary, which has been shown to improve sealing speed in the PC2-phase. For instance, our current benchmarks show that an NVIDIA RTX A5000 card was able to complete PC2 in approximately 2.5 minutes.
We have verified that SupraSeal PC2 functions properly with Committed Capacity (CC) sectors that are non-Synthetic, and with SyntheticPoReps that is introduced in the upcoming nv21-version.
However, we have encountered errors when using SupraSeal PC2 with deal sectors. As a result, we advise against using SupraSeal PC2 through the lotus-worker
with deal sectors in the sealing pipeline, except in testing environments. We plan to update this guideline in future release candidates, once we have a fix for deal sectors.
For more information on how to use SupraSeal PC2 with your lotus-worker
, as well as how to perform benchmarks using this feature, please refer to the documentation.
New features
- feat: sturdypost work branch (filecoin-project/lotus#11405)
- Adds the
Lotus-Provider
binary, and the HarmonyDB framework.
- Adds the
- feat: worker: Support delegating precommit2 to external binary (filecoin-project/lotus#11185)
- Allows for delegating PreCommit2 to an exteranl binary.
- feat: build: Add SupraSeal-PC2 binary script (filecoin-project/lotus#11430)
- Adds a script for building the SupraSeal-PC2 binary easily.
- Feat: daemon: Auto remove existing chain if importing chain file or snapshot (filecoin-project/lotus#11277)
- Auto removes the existing chain when importing a snapshot.
- feat: Add ETA to lotus sync wait (#11211) (filecoin-project/lotus#11211)
- Adds a ETA indicator to
lotus sync wait
, so you can get an estimate for how long until sync is completed.
- Adds a ETA indicator to
- feat: mpool/wdpost: Maximize feecap config (filecoin-project/lotus#9746)
- Adds a Maximixe FeeCap Config
- feat: Add lotus-bench cli option to stress test any binary (filecoin-project/lotus#11270)
- Enables the
Lotus-Bench
to run any binary and analyze their latency and histogram distribution, track most common errors, perform stress testing under different concurrency levels and see how it works under different QPS.
- Enables the
- feat: chain import: don't walk to genesis - 2-3x faster snapshot import (#11446) (filecoin-project/lotus#11446)
- Improves Snapshot import speed, by not walking back to genesis on import.
- feat: metric: export Mpool message count (filecoin-project/lotus#11361)
- Adds the mpool count as a prometheus metric.
- feat: bench: flag to output GenerateWinningPoStWithVanilla params (filecoin-project/lotus#11460)
Improvements
- feat: bootstrap: add glif bootstrap node on calibration (filecoin-project/lotus#11175)
- fix: bench: Set ticket and seed to a non-all zero value (filecoin-project/lotus#11429)
- fix: alert: Check UDPbuffer-size (filecoin-project/lotus#11360)
- feat: cli: sort actor CIDs alphabetically before printing (#11345) (filecoin-project/lotus#11345)
- fix: worker: Connect when --listen is not set (filecoin-project/lotus#11294)
- fix: miner info: Show correct sector state counts (filecoin-project/lotus#11456)
- feat: miner: defensive check for equivocation (filecoin-project/lotus#11321)
- feat: Instructions for setting up Grafana/Prometheus for monitoring local lotus node (filecoin-project/lotus#11276)
- fix: cli: Wrap error in wallet sign (filecoin-project/lotus#11273)
- fix: Add time slicing to splitstore purging to reduce lock congestion (filecoin-project/lotus#11269)
- feat: sealing: load SectorsSummary from sealing SectorStats instead of calling API each time (filecoin-project/lotus#11353)
- fix: shed: additional metrics in
mpool miner-select-messages
(filecoin-project/lotus#11253) - storage: Return soft err when sector alloc fails in acquire (filecoin-project/lotus#11338)
- feat: miner: log detailed timing breakdown when mining takes longer than the block's timestamp (filecoin-project/lotus#11228)
- fix: shed: make invariants checker work with splitstore (filecoin-project/lotus#11391)
- feat: eth: encode eth tx input as solidity ABI (#11402) (filecoin-project/lotus#11402)
- fix: eth: use the correct state-tree when resolving addresses (#11387) (filecoin-project/lotus#11387)
- fix: eth: remove trace sanity check (#11385) (filecoin-project/lotus#11385)
- fix: chain: make failure to load the chain state fatal (#11426) (filecoin-project/lotus#11426)
- fix: build: an epoch is near an upgrade iff the upgrade is enabled (#11401) (filecoin-project/lotus#11401)
- fix: eth: handle unresolvable addresses (#11433) (filecoin-project/lotus#11433)
- fix: eth: correctly encode and simplify native input/output encoding (#11382) (filecoin-project/lotus#11382)
- fix: worker: listen for interrupt signals in GetStorageMinerAPI loop (#11309) (filecoin-project/lotus#11309)
- fix: sync: iterate over returned messages directly (#11373) (filecoin-project/lotus#11373)
- fix: miner: correct duration logs in mineOne (filecoin-project/lotus#11241)
- fix: cli: Add print to unseal cmd (filecoin-project/lotus#11271)
- fix: networking: avoid dialing when trying to handshake peers (filecoin-project/lotus#11262)
- metric milliseconds computation with golang original method (#11403) (filecoin-project/lotus#11403)
- feat: shed: fix blockstore prune (#11197) (filecoin-project/lotus#11197)
- refactor:ffi: replace ClearLayerData with ClearCache (#11352) (filecoin-project/lotus#11352)
- fix: api: compute gasUsedRatio based on max gas in the tipset (#11354) (filecoin-project/lotus#11354)
- fix: api: compute the effective gas cost with the correct base-fee (#11357) ([fileco...
v1.25.0
This is a highly recommended feature release of Lotus. This optional release supports the Filecoin network version 21 upgrade, codenamed Watermelon 🍉, in addition to the numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.
The Filecoin network upgrade v21, codenamed Watermelon 🍉, is at epoch 3469380 - 2023-12-12T13:30:00Z
The full list of protocol improvements delivered in the network upgrade can be found here.
☢️ Upgrade Warnings ☢️
- Read through the changelog of the mandatory v1.24.0 release. Especially the
Migration
andv12 Builtin Actor Bundle
sections. - Please remove and clone a new Lotus repo (
git clone https://github.com/filecoin-project/lotus.git
) when upgrading to this release. - This feature release requires a minimum Go version of v1.20.7 or higher to successfully build Lotus. Go version 1.21.x is not supported yet.
- EthRPC providers, please check out the new tracing API to Lotus RPC
⭐️ Highlights ⭐️
Unsealing bugfixes and enhancements
This feature release introduces significant improvements and bugfixes with regards to unsealing, and ensures that unsealing operates as one would expect. Consequently, unsealing of all sector types (deal sectors, snap-sectors without sector keys, and snap-sectors with sector keys) now all function seamlessly.
Some additional unsealing improvements are:
- Unsealing on workers with only sealing paths works. 🎉
- Transferring unsealed files to long-term storage upon successful unsealing. ➡️
- Ensuring no residual files in sealing paths post a successful unsealing operation. 🧹
SupraSeal C2
Lotus-workers can now be built to leverage the SupraSeal C2 sealing optimizations in your sealing pipeline. The code optimizations are currently behind the FFI_USE_CUDA_SUPRASEAL
feature flag. We advice users to test this feature on a test-network, before trying to use it on the mainnet. Users can test out the feature by building their lotus-workers by exporting the FFI_USE_CUDA_SUPRASEAL=1
enviroment variable, and building from source. For questions about the SupraSeal C2 sealing optimizations, reach out in the #fil-proofs or the #dsa-sealing slack channel.
New features
- feat: add Eip155ChainID to StateGetNetworkParams (filecoin-project/lotus#10987)
- feat: profiling: state summary and visualization (filecoin-project/lotus#11012)
- feat: snapshot: remove existing chain (filecoin-project/lotus#11032)
- feat: Add a metric to display pruning of the node's peer (filecoin-project/lotus#11058)
- feat:shed:gather partition metadata (filecoin-project/lotus#11078)
- feat: vm: allow raw "cbor" in state and use the new go-multicodec (filecoin-project/lotus#11081)
- Add new lotus-shed command for backfillling actor events (filecoin-project/lotus#11088)
- feat: Add new tracing API (filecoin-project/lotus#11100)
- feat: FVM: do not error on unsuccessful implicit messages (filecoin-project/lotus#11120)
- feat: chain node: Move consensus slasher to internal service (filecoin-project/lotus#11126)
- feat: miner: implement FRC-0051 (filecoin-project/lotus#11157)
- feat: chainstore: FRC-0051: Remove all equivocated blocks from tipsets (filecoin-project/lotus#11104)
- feat: miner: 2 minor refactors (filecoin-project/lotus#11158)
- feat: refactor: return randomness base to FVM without hashing (filecoin-project/lotus#11167)
- feat: Lotus Gateway: add allocation and claim related GET APIs to gateway (filecoin-project/lotus#11183)
- feat: shed: Add exec traces to
lotus-shed msg
(filecoin-project/lotus#11188) - feat: miner: defensive check for equivocation (filecoin-project/lotus#11328)
Improvements
- feat: daemon: improvemens to the consensus slasher (filecoin-project/lotus#10979)
- fix: Snapdeals unsealing fixes (filecoin-project/lotus#11011)
- refactor: Make all validation error actions explicit (filecoin-project/lotus#11016)
- feat: shed: command for decoding block headers (filecoin-project/lotus#11031)
- fix: stores: Tune down StorageDeclareSector` log-lvl (filecoin-project/lotus#11045)
- feat: types: apply a max length when decoding events (filecoin-project/lotus#11054)
- feat: slasher: improve UX (filecoin-project/lotus#11060)
- feat: daemon: improvemens to the consensus slasher (filecoin-project/lotus#11063)
- fix: events: Improve performance of event migration from V1 to V2 (filecoin-project/lotus#11064)
- feat:lotus-bench:AMT benchmarking (filecoin-project/lotus#11075)
- fix: DecodeRLP can panic (filecoin-project/lotus#11079)
- fix: daemon: set real beacon schedule when importing chain (filecoin-project/lotus#11080)
- fix: ethtypes: handle length overflow case (filecoin-project/lotus#11082)
- chore: stmgr: migrations: do not log noisily on cache misses (filecoin-project/lotus#11083)
- feat: daemon: import: only setup stmgr if validating chain (#11084) (filecoin-project/lotus#11084)
- fix: sealing pipeline: Fix PC1 retry loop (filecoin-project/lotus#11087)
- chore: legacy syscalls: Cleanup ComputeUnsealedSectorCID (filecoin-project/lotus#11119)
- sector import: fix evaluating randomness when importing a sector (filecoin-project/lotus#11123)
- fix: cli: Only display
warning
if behind sync (filecoin-project/lotus#11140) - fix: worker: Support IPv6 formatted API-keys (filecoin-project/lotus#11141)
- fix: sealing: Switch to calling PreCommitSectorBatch2 (filecoin-project/lotus#11142)
- fix: downgrade harmless warning to debug (filecoin-project/lotus#11145)
- fix: sealing: Fix RetryCommitWait loop when sector cron activation fails (filecoin-project/lotus#11046)
- fix: gateway: return an error when an Eth filter is not found (filecoin-project/lotus#11152)
- fix: chainstore: do not get stuck in unhappy equivocation cases (filecoin-project/lotus#11159)
- fix: sealing: Run unsealing in the background for better ux (filecoin-project/lotus#11177)
- fix: build: Allow lotus-wallet to be built independently (filecoin-project/lotus#11187)
- fix: wallet: Make import handle SIGINT/SIGTERM (filecoin-project/lotus#11190)
- fix: markets/dagstore: remove trace goroutine for dagstore wrapper (filecoin-project/lotus#11191)
- fix: chain: Do not update message info cache until after message validation (filecoin-project/lotus#11202)
- fix: chain: cancel long operations upon ctx cancelation (filecoin-project/lotus#11206)
- fix(client): single-root error message (filecoin-project/lotus#11214)
- fix: worker: Convert
DC_[SectorSize]_[ResourceRestriction]
if set (filecoin-project/lotus#11224) - chore: backport #11338 onto release/v1.25.0 (filecoin-project/lotus#11350)
Dependencies
- deps: update go-libp2p to v0.28.1 (filecoin-project/lotus#10998)
- deps: update go-libp2p to v0.29.2 ([#11164](https://github.com/filecoin-project/lotus/...
v1.24.0
This is the stable release for the upcoming MANDATORY Filecoin network upgrade v21, codenamed Watermelon 🍉, at epoch 3469380 - 2023-12-12T13:30:00Z.
The Filecoin network version 21 delivers the following FIPs:
- FIP0052: Increase Max Sector Commitment to 3.5 years
- FIP0059: Synthetic PoRep
- FIP0071: Deterministic State Access (IPLD Reachability)
- FIP0072: Improved event syscall API
- FIP0073: Remove beneficiary from the self_destruct syscall
- FIP0075: Improvements to FVM randomness syscalls
Full list of the other protocol improvements we are delivering can be found here.
☢️ Upgrade Warnings ☢️
This feature release requires a minimum Go version of v1.20.7 or higher to successfully build Lotus. Go version 1.21.x is not supported yet.
v12 Builtin Actor Bundles
Builtin actor v12.0.0 is used for supporting this upgrade.
Make sure that your lotus actor bundle matches the v12 actors manifest by running the following cli after upgrading:
./lotus state actor-cids --network-version 21
Network Version: 21
Actor Version: 12
Manifest CID: bafy2bzaceapkgfggvxyllnmuogtwasmsv5qi2qzhc2aybockd6kag2g5lzaio
Actor CID
datacap bafk2bzacebpiwb2ml4qbnnaayxumtk43ryhc63exdgnhivy3hwgmzemawsmpq
paymentchannel bafk2bzacectv4cm47bnhga5febf3lo3fq47g72kmmp2xd5s6tcxz7hiqdywa4
storagemarket bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4
storagepower bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6
cron bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls
eam bafk2bzaceb3elj4hfbbjp7g5bptc7su7mptszl4nlqfedilxvstjo5ungm6oe
ethaccount bafk2bzaceb4gkau2vgsijcxpfuq33bd7w3efr2rrhxrwiacjmns2ntdiamswq
reward bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u
verifiedregistry bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q
evm bafk2bzacecmnyfiwb52tkbwmm2dsd7ysi3nvuxl3lmspy7pl26wxj4zj7w4wi
placeholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
storageminer bafk2bzacedo75pabe4i2l3hvhtsjmijrcytd2y76xwe573uku25fi7sugqld6
system bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu
account bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa
init bafk2bzacebllyegx5r6lggf6ymyetbp7amacwpuxakhtjvjtvoy2bfkzk3vms
Migration
We are expecting a heavier than normal state migration for this upgrade due to the amount of state changes introduced for miner sector info. (This is a similar migration as the Shark upgrade, however, we have introduced a couple of migration performance optimizations since then for a smoother upgrade experience.)
All node operators, including storage providers, should be aware that ONE pre-migration is being scheduled 180 epochs before the upgrade, around 2023-12-12T12:00:00Z. It will take around 20-30 minutes for the pre-migration and less than 30 seconds for the final migration, depending on the amount of historical state in the node blockstore and the hardware specs the node is running on. During this time, expect slower block validation times, increased CPU and memory usage, and longer delays for API queries (during our testing, it topped out about 20% RAM(htop) on a 1TiB box).
We recommend node operators (who haven't enabled splitstore discard
mode) that do not care about historical chain states, to prune the chain blockstore by syncing from a snapshot 1-2 days before the upgrade.
Note to full archival node operators: you may expect it takes some time for the node to complete the final migration, during this period your node will fall out of sync and your chain service may have some disruption. However, you can expect the node to catch up soon after the migration completes. You can test out the migration by running the following on your node in offline mode:
lotus chain head | head -n1
- Stop Lotus daemon
./lotus-shed migrate-state --repo=[path-to-your-lotus-repo] 21 [output-of-step-1]
You can check out the tutorial for benchmarking the network migration here.
BREAKING CHANGE
There is a new protocol limit on how many partition could be submited in one PoSt - if you have any customized tooling for batching PoSts, please update accordingly.
- feat: limit PoSted partitions to 3 (filecoin-project/lotus#11327)
New features
- Implement and support FIP0052: Increase Max Sector Commitment to 3.5 years
- fix: docs: Update SectorLifetime to be in line with FIP-0052 (filecoin-project/lotus#11314)
- Implement and support FIP0059: Synthetic PoRep - Check out the Lotus documentation for Synthetic PoRep.
- feat: implement Synthetic PoRep (filecoin-project/lotus#11258)
- chore: config: Update todo in UseSyntheticPoRep (filecoin-project/lotus#11297)
Improvements
- Backport: feat: sealing: Switch to calling PreCommitSectorBatch2 (filecoin-project/lotus#11215)
- updated the boostrap nodes
Dependencies
- github.com/filecoin-project/go-amt-ipld/v4 (v4.0.0 -> v4.2.0)
- chore: deps: update FFI, FVM, and actors (filecoin-project/lotus#11310)
- chore: deps: update to final actors (filecoin-project/lotus#11330)
- chore: deps: update to go-state-types v0.12.8 (filecoin-project/lotus#11339)
- chore: deps: update libp2p to v0.30.0 #11434
Snapshots
The Forest team at Chainsafe has launched a brand new lightweight snapshot service that is backed up by forest nodes! This is a great alternative service along with the fil-infra one, and it is compatible with lotus! We recommend lotus users to check it out here!
v1.25.0-rc5
This is the fifth release candidate of the upcoming OPTIONAL release Lotus v1.25.0. This optional release also supports the Filecoin network version 21 upgrade, codenamed Watermelon 🍉, in addition to the numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.
❗ Mainnet Upgrade Date Update
Mainnet upgrade date has been adjusted due to the rescope of nv21 & retesting on test network, as well as giving the community enough time to upgrade their infrastructure.
The new date and epoch for the Mainnet nv21 upgrade has therefore been set to epoch 3469380 - 2023-12-12T13:30:00Z.
FIP0070 descoped for nv21
FIP0070: Allow SPs to move partitions between deadlines was originally scoped for network version 21. However, during the testing on calibrationnet testing, this FIP has proven to be quite error prune to implement due to the complexity of the protocol and a couple bugs were discovered.
As the path to resolving this bug is not yet clear, core devs have decided to descope FIP-0070 from the upcoming nv21 upgrade ensure the security and stability of the network post upgrade.
Calibration WatermelonFix2
For the calibration network, the descoping of FIP0070 means that we will need to do another CodeCID migration to drop FIP0070 from nv21, and to get the test network into a state which will be similar to when the mainnet upgrades to nv21.
This migration will happen at epoch 1108174 - 2023-11-21T13:00:00Z.
Make sure to upgrade you calibration network nodes and storage providers to v1.24.0-rcx & ^ before this epoch.
☢️ Upgrade Warnings ☢️
- Please remove and clone a new Lotus repo (
git clone https://github.com/filecoin-project/lotus.git
) when upgrading to this version. - This feature release requires a minimum Go version of v1.20.7 or higher to successfully build Lotus. Go version 1.21.x is not supported yet.
- EthRPC providers, please check out the new tracing API to Lotus RPC
⭐️ Highlights ⭐️
Unsealing bugfixes and enhancements
This feature release introduces significant improvements and bugfixes with regards to unsealing, and ensures that unsealing operates as one would expect. Consequently, unsealing of all sector types (deal sectors, snap-sectors without sector keys, and snap-sectors with sector keys) now all function seamlessly.
Some additional unsealing improvements are:
- Unsealing on workers with only sealing paths works. 🎉
- Transferring unsealed files to long-term storage upon successful unsealing. ➡️
- Ensuring no residual files in sealing paths post a successful unsealing operation. 🧹
SupraSeal C2
Lotus-workers can now be built to leverage the SupraSeal C2 sealing optimizations in your sealing pipeline. The code optimizations are currently behind the FFI_USE_CUDA_SUPRASEAL
feature flag. We advice users to test this feature on a test-network, before trying to use it on the mainnet. Users can test out the feature by building their lotus-workers by exporting the FFI_USE_CUDA_SUPRASEAL=1
enviroment variable, and building from source. For questions about the SupraSeal C2 sealing optimizations, reach out in the #fil-proofs or the #dsa-sealing slack channel.
New features
- feat: add Eip155ChainID to StateGetNetworkParams (filecoin-project/lotus#10987)
- feat: profiling: state summary and visualization (filecoin-project/lotus#11012)
- feat: snapshot: remove existing chain (filecoin-project/lotus#11032)
- feat: Add a metric to display pruning of the node's peer (filecoin-project/lotus#11058)
- feat:shed:gather partition metadata (filecoin-project/lotus#11078)
- feat: vm: allow raw "cbor" in state and use the new go-multicodec (filecoin-project/lotus#11081)
- Add new lotus-shed command for backfillling actor events (filecoin-project/lotus#11088)
- feat: Add new tracing API (filecoin-project/lotus#11100)
- feat: FVM: do not error on unsuccessful implicit messages (filecoin-project/lotus#11120)
- feat: chain node: Move consensus slasher to internal service (filecoin-project/lotus#11126)
- feat: miner: implement FRC-0051 (filecoin-project/lotus#11157)
- feat: chainstore: FRC-0051: Remove all equivocated blocks from tipsets (filecoin-project/lotus#11104)
- feat: miner: 2 minor refactors (filecoin-project/lotus#11158)
- feat: refactor: return randomness base to FVM without hashing (filecoin-project/lotus#11167)
- feat: Lotus Gateway: add allocation and claim related GET APIs to gateway (filecoin-project/lotus#11183)
- feat: shed: Add exec traces to
lotus-shed msg
(filecoin-project/lotus#11188) - feat: miner: defensive check for equivocation (filecoin-project/lotus#11328)
Improvements
- feat: daemon: improvemens to the consensus slasher (filecoin-project/lotus#10979)
- fix: Snapdeals unsealing fixes (filecoin-project/lotus#11011)
- refactor: Make all validation error actions explicit (filecoin-project/lotus#11016)
- feat: shed: command for decoding block headers (filecoin-project/lotus#11031)
- fix: stores: Tune down StorageDeclareSector` log-lvl (filecoin-project/lotus#11045)
- feat: types: apply a max length when decoding events (filecoin-project/lotus#11054)
- feat: slasher: improve UX (filecoin-project/lotus#11060)
- feat: daemon: improvemens to the consensus slasher (filecoin-project/lotus#11063)
- fix: events: Improve performance of event migration from V1 to V2 (filecoin-project/lotus#11064)
- feat:lotus-bench:AMT benchmarking (filecoin-project/lotus#11075)
- fix: DecodeRLP can panic (filecoin-project/lotus#11079)
- fix: daemon: set real beacon schedule when importing chain (filecoin-project/lotus#11080)
- fix: ethtypes: handle length overflow case (filecoin-project/lotus#11082)
- chore: stmgr: migrations: do not log noisily on cache misses (filecoin-project/lotus#11083)
- feat: daemon: import: only setup stmgr if validating chain (#11084) (filecoin-project/lotus#11084)
- fix: sealing pipeline: Fix PC1 retry loop (filecoin-project/lotus#11087)
- chore: legacy syscalls: Cleanup ComputeUnsealedSectorCID (filecoin-project/lotus#11119)
- sector import: fix evaluating randomness when importing a sector (filecoin-project/lotus#11123)
- fix: cli: Only display
warning
if behind sync (filecoin-project/lotus#11140) - fix: worker: Support IPv6 formatted API-keys (filecoin-project/lotus#11141)
- fix: sealing: Switch to calling PreCommitSectorBatch2 (filecoin-project/lotus#11142)
- fix: downgrade harmless warning to debug (filecoin-project/lotus#11145)
- fix: sealing: Fix RetryCommitWait loop when sector cron activation fails (filecoin-project/lotus#11046)
- fix: gateway: return an error when an Eth filter is not found (filecoin-project/lotus#11152)
- fix: chainstore: do not get stuck in unhappy equivocation cases (filecoin-project/lotus#11159)
- fix: sealing: Run unsealing in the background for better ux (filecoin-project/lotus#11177)
- fix: build: Allow lotus-wallet to be built independently (filecoin-project/lotus#11187)
- fix: wallet: Make import handle SIGINT/SIGTERM (filecoin-project/lotus#11190)
- fix: markets/dagstore: remove trace goroutine for dagstore wrapper (filecoin-project/lotus#11191)
- fix: chain: Do not update message i...