Skip to content

Latest commit

 

History

History
2422 lines (1973 loc) · 179 KB

CHANGELOG.md

File metadata and controls

2422 lines (1973 loc) · 179 KB

Lotus changelog

v1.11.3 / 2021-09-29

lotus v1.11.3 is a feature release that's highly recommended to ALL lotus users to upgrade, including node operators, storage providers and clients. It includes many improvements and bug fixes that result in perf improvements in different area, like deal making, sealing and so on.

Highlights

  • 🌟🌟Introduce `MaxStagingDealsBytes - reject new deals if our staging deals area is full (filecoin-project/lotus#7276)
    • Set MaxStagingDealsBytes under the [Dealmaking] section of the markets' subsystem's config.toml to reject new incoming deals when the deal-staging directory of market subsystem's repo gets too large.
  • 🌟🌟miner: Command to list/remove expired sectors locally (filecoin-project/lotus#7140)
    • run ./lotus-miner sectors expired -h for more details.
  • 🚀update to ffi to update-bellperson-proofs-v9-0-2 (filecoin-project/lotus#7369)
    • MinerX fellows(early testers of lotus releases) have reported faster WindowPoSt computation!
  • 🌟dealpublisher: Fully validate deals before publishing (filecoin-project/lotus#7234)
    • This excludes the expired deals before sending out a PSD message which reduces the chances of PSD message failure due to invalid deals.
  • 🌟Simple alert system; FD limit alerts (filecoin-project/lotus#7108)

New Features

Improvements

Bug Fixes

Dependency Updates

  • github.com/filecoin-project/go-fil-markets (v1.8.1 -> v1.12.0):
  • github.com/filecoin-project/go-data-transfer (v1.7.8 -> v1.10.1):
  • update to ffi to update-bellperson-proofs-v9-0-2 (filecoin-project/lotus#7369)
  • fix(deps): use go-graphsync v0.9.3 with hotfix
  • Update to unified go-graphsync v0.9.0 (filecoin-project/lotus#7197)

Others

Contributors

Contributor Commits Lines ± Files Changed
@magik6k 39 +3311/-1825 179
@Stebalien 23 +1935/-1417 84
@dirkmc 12 +921/-732 111
@dirkmc 12 +663/-790 30
@hannahhoward 3 +482/-275 46
@travisperson 1 +317/-65 5
@jennijuju 11 +223/-126 24
@hannahhoward 7 +257/-55 16
@nonsense 9 +258/-37 19
@raulk 4 +127/-36 13
@raulk 1 +43/-60 15
@arajasek 4 +74/-8 10
@Frank 2 +68/-8 3
@placer14 2 +52/-1 4
@ldoublewood 2 +15/-13 3
@lanzafame 1 +16/-2 1
@aarshkshah1992 2 +11/-6 2
@ZenGround0 2 +7/-6 2
@ognots 1 +0/-10 2
@KAYUII 2 +4/-4 2
@lanzafame 1 +6/-0 1
@jacobheun 1 +3/-3 1
@frank 1 +4/-0 1

v1.11.2 / 2021-09-06

lotus v1.11.2 is a feature release that's highly recommended ALL lotus users to upgrade, including node operators, storage providers and clients.

Highlights

  • 🌟🌟🌟 Introduce Dagstore and CARv2 for deal-making (#6671) (filecoin-project/lotus#6671)
    • lotus miner markets' Dagstore is a component of the markets subsystem in lotus-miner. It is a sharded store to hold large IPLD graphs efficiently, packaged as location-transparent attachable CAR files and it replaces the former Badger staging blockstore. It is designed to provide high efficiency and throughput, and minimize resource utilization during deal-making operations.
      The dagstore also leverages the indexing features of CARv2 to enable plan CAR files to act as read and write blockstores, which are served as the direct medium for data exchanges in markets for both storage and retrieval deal making without requiring intermediate buffers.
    • In the future, lotus will leverage and interact with Dagstore a lot for new features and improvements for deal making, therefore, it's highly recommended to lotus users to go through Lotus Miner: About the markets dagstore thoroughly to learn more about Dagstore's conceptual overview, terminology, directory structure, configuration and so on.
    • Note:
      • When you first start your lotus-miner or market subsystem with this release, a one-time/first-time dagstore migration will be triggered which replaces the former Badger staging blockstore with dagstore. We highly recommend storage providers to read this section to learn more about what the process does, what to expect and how monitor it.
      • It is highly recommended to wait all ongoing data transfer to finish or cancel inbound storage deals that are still transferring, using the lotus-miner data-transfers cancel command before upgrade your market nodes. Reason being that the new dagstore changes attributes in the internal deal state objects, and the paths to the staging CARs where the deal data was being placed will be lost.
      • ‼️Having your dags initialized will become important in the near feature for you to provide a better storage and retrieval service. We'd suggest you to start [forced bulk initialization] soon if possible as this process places relatively high IP workload on your storage system and is better to be carried out gradually and over a longer timeframe. Read how to do properly perform a force bulk initialization here.
      • ⏮ Rollback Alert(from v1.11.2-rcX to any version lower): If a storages deal is initiated with M1/v1.11.2(-rcX) release, it needs to get to the StorageDealAwaitingPrecommit state before you can do a version rollback or the markets process may panic.
    • 💙 Special thanks to MinerX fellows for testing and providing valuable feedbacks for Dagstore in the past month!
  • 🌟🌟 rpcenc: Support reader redirect (filecoin-project/lotus#6952)
    • This allows market processes to send piece bytes directly to workers involved on AddPiece.
  • Extending sectors: more practical and flexible tools (filecoin-project/lotus#6097)
    • lotus-miner sectors check-expire to inspect expiring sectors.
    • lotus-miner sectors renew for renewing expiring sectors, see the command help menu for customizable option like extension, new-expiration and so on.
  • ‼️ MpoolReplaceCmd ( lotus mpool replace`) now takes FIL for fee-limit (filecoin-project/lotus#6927)
  • Drop townhall/chainwatch (filecoin-project/lotus#6912)
    • ChainWatch is no longer supported by lotus.
  • Configurable CC Sector Expiration (filecoin-project/lotus#6803)
    • Set CommittedCapacitySectorLifetime in lotus-miner/config.toml to specify the default expiration for a new CC sector, value must be between 180-540 days inclusive.

New Features

Improvements

Bug Fixes

Dependency Updates

Others

Contributors

Contributor Commits Lines ± Files Changed
@magik6k 23 +5040/-8389 114
@aarshkshah1992 11 +4859/-1078 101
@raulk 5 +4170/-1662 104
@vyzo 30 +1092/-702 49
@nonsense 6 +630/-472 19
@ZenGround0 31 +556/-274 74
@He Weidong 16 +680/-128 16
@raulk 16 +444/-277 49
@Stebalien 11 +403/-259 48
@jennijuju 17 +276/-281 42
@dirkmc 5 +204/-138 20
@placer14 7 +178/-77 17
@BlocksOnAChain 1 +138/-0 1
@Frrist 1 +63/-56 2
@arajasek 7 +74/-42 13
@frrist 2 +67/-6 6
@hannahhoward 2 +13/-11 3
@coryschwartz 1 +16/-6 3
@whyrusleeping 1 +7/-7 1
@hunjixin 1 +8/-6 1
@aarshkshah1992 1 +6/-6 2
@dirkmc 2 +8/-0 2
@mx 2 +6/-1 2
@travisperson 1 +3/-2 1
@jennijuju 2 +2/-2 2
@ribasushi 1 +1/-2 2

1.11.1 / 2021-08-16

Note: for discussion about this release, please comment here

This is a highly recommended but optional Lotus v1.11.1 release that introduces many deal making and datastore improvements and new features along with other bug fixes.

Highlights

  • ⭐️⭐️⭐️lotus-miner market subsystem is introduced in this release! It is highly recommended for storage providers to run markets processes on a separate machine! Doing so, only this machine needs to exposes public ports for deal making. This also means that the other miner operations can now be completely isolated by from the deal making processes and storage providers can stop and restarts the markets process without affecting an ongoing Winning/Window PoSt!
    • More details on the concepts, architecture and how to split the market process can be found here.
    • Base on your system setup(running on separate machines, same machine and so on), please see the suggested practice by community members here.
      • Note: if you are running lotus-worker on a different machine, you will need to set MARKETS_API_INFO for certain CLI to work properly. This will be improved by #7072.
    • Huge thanks to MinerX fellows for helping testing the implementation, reporting the issues so they were fixed by now and providing feedbacks to user docs in the past three weeks!
  • Config for collateral from miner available balance (filecoin-project/lotus#6629)
    • Better control your sector collateral payment by setting CollateralFromMinerBalance, AvailableBalanceBuffer and DisableCollateralFallback.
      • CollateralFromMinerBalance: whether to use available miner balance for sector collateral instead of sending it with each message, default is false.
      • AvailableBalanceBuffer: minimum available balance to keep in the miner actor before sending it with messages, default is 0FIL.
      • DisableCollateralFallback: whether to send collateral with messages even if there is no available balance in the miner actor, default is false.
  • Config for deal publishing control addresses (filecoin-project/lotus#6697)
    • Set DealPublishControl to set the wallet used for sending PublishStorageDeals messages, instructions here.
  • Config UX improvements (filecoin-project/lotus#6848)
    • You can now preview the the default and updated node config by running lotus/lotus-miner config default/updated

New Features

Bug Fixes

Improvements

Dependency Updates

  • Update to proof v8.0.3 (filecoin-project/lotus#6890)
  • update to go-fil-market v1.6.0 (filecoin-project/lotus#6885)
  • Bump go-multihash, adjust test for supported version (filecoin-project/lotus#6674)
  • github.com/filecoin-project/go-data-transfer (v1.6.0 -> v1.7.2):
  • github.com/filecoin-project/go-fil-markets (v1.5.0 -> v1.6.2):
  • github.com/filecoin-project/go-padreader (v0.0.0-20200903213702-ed5fae088b20 -> v0.0.0-20210723183308-812a16dc01b1)
  • github.com/filecoin-project/go-state-types (v0.1.1-0.20210506134452-99b279731c48 -> v0.1.1-0.20210810190654-139e0e79e69e)
  • github.com/filecoin-project/go-statemachine (v0.0.0-20200925024713-05bd7c71fbfe -> v1.0.1)
  • update go-libp2p-pubsub to v0.5.0 (filecoin-project/lotus#6764)

Others

Contributors

Contributor Commits Lines ± Files Changed
@vyzo 313 +8928/-6010 415
@nonsense 103 +6041/-4041 304
@magik6k 37 +3851/-1611 146
@ZenGround0 24 +1693/-1394 95
@placer14 1 +2310/-578 8
@dirkmc 7 +1154/-726 29
@raulk 44 +969/-616 141
@jennijuju 15 +682/-354 47
@ribasushi 18 +469/-273 64
@coryschwartz 5 +576/-135 14
@hunjixin 7 +404/-82 19
@dirkmc 17 +348/-47 17
@tchardin 2 +262/-34 5
@aarshkshah1992 9 +233/-63 44
@Kubuxu 4 +254/-16 4
@hannahhoward 6 +163/-75 8
@whyrusleeping 4 +157/-16 9
@Whyrusleeping 2 +87/-66 10
@arajasek 10 +81/-53 13
@zgfzgf 2 +104/-4 2
@aarshkshah1992 6 +85/-19 10
@llifezou 4 +59/-20 4
@Stebalien 7 +47/-17 9
@johnli-helloworld 3 +46/-15 5
@frrist 1 +28/-23 2
@hannahhoward 4 +46/-5 11
@Jennifer 4 +31/-2 4
@wangchao 1 +1/-27 1
@jennijuju 2 +7/-21 2
@chadwick2143 1 +15/-1 1
@Jerry 2 +9/-4 2
Steve Loeppky 2 +12/-0 2
David Dias 1 +9/-0 1
dependabot[bot] 1 +3/-3 1
zhoutian527 1 +2/-2 1
xloem 1 +4/-0 1
@travisperson 2 +2/-2 3
Liviu Damian 2 +2/-2 2
@jimpick 2 +2/-2 2
Frank 1 +3/-0 1
turuslan 1 +1/-1 1
Kirk Baird 1 +0/-0 1

1.11.0 / 2021-07-22

This is a highly recommended release of Lotus that have many bug fixes, improvements and new features.

Highlights

More New Features

Bug Fixes

Improvements

Dependency Updates

Others

Contributors

Contributor Commits Lines ± Files Changed
@raulk 118 +11972/-10860 472
@magik6k 65 +10824/-4158 353
@aarshkshah1992 59 +8057/-3355 224
@arajasek 41 +8786/-1691 331
@Stebalien 106 +7653/-2718 273
dirkmc 11 +2580/-1371 77
@dirkmc 39 +1865/-1194 79
@Kubuxu 19 +1973/-485 81
@vyzo 4 +1748/-330 50
@aarshkshah1992 5 +1462/-213 27
@coryschwartz 35 +568/-206 59
@chadwick2143 3 +739/-1 4
@ribasushi 21 +487/-164 36
@hannahhoward 5 +544/-5 19
@jennijuju 9 +241/-174 19
@frrist 1 +137/-88 7
@travisperson 3 +175/-6 7
@wadeAlexC 1 +48/-129 1
@whyrusleeping 8 +161/-13 11
lotus 1 +114/-46 1
@nonsense 8 +107/-53 20
@rjan90 4 +115/-33 4
@ZenGround0 3 +114/-1 4
@Aloxaf 1 +43/-61 7
@yaohcn 4 +89/-9 5
@mitchellsoo 1 +51/-0 1
@placer14 3 +28/-18 4
@jennijuju 6 +9/-14 6
@Frank 2 +11/-10 2
@wangchao 3 +5/-4 4
@Steve Loeppky 1 +7/-1 1
@Lion 1 +4/-2 1
@Mimir 1 +2/-2 1
@raulk 1 +1/-1 1
@Jack Yao 1 +1/-1 1
@IPFSUnion 1 +1/-1 1

1.10.1 / 2021-07-05

This is an optional but highly recommended release of Lotus for lotus miners that has many bug fixes and improvements based on the feedback we got from the community since HyperDrive.

New Features

  • commit batch: AggregateAboveBaseFee config #6650
    • AggregateAboveBaseFee is added to miner sealing configuration for setting the network base fee to start aggregating proofs. When the network base fee is lower than this value, the prove commits will be submitted individually via ProveCommitSector. According to the Batch Incentive Alignment introduced in FIP-0013, we recommend miners to set this value to 0.15 nanoFIL(which is the default value) to avoid unexpected aggregation fee in burn and enjoy the most benefits of aggregation!

Bug Fixes

  • storage: Fix FinalizeSector with sectors in storage paths #6652
  • Fix tiny error in check-client-datacap #6664
  • Fix: precommit_batch method used the wrong cfg.PreCommitBatchWait #6658
  • to optimize the batchwait #6636
  • fix getTicket: sector precommitted but expired case #6635
  • handleSubmitCommitAggregate() exception handling #6595
  • remove precommit check in handleCommitFailed #6634
  • ensure agg fee is adequate
  • fix: miner balance is not enough, so that ProveCommitAggregate msg exec failed #6623
  • commit batch: Initialize the FailedSectors map #6647

Contributors

Contributor Commits Lines ± Files Changed
@magik6k 7 +151/-56 21
@llifezou 4 +59/-20 4
@johnli-helloworld 2 +45/-14 4
@wangchao 1 +1/-27 1
Jerry 2 +9/-4 2
@zhoutian527 1 +2/-2 1
@ribasushi 1 +1/-1 1

1.10.1 / 2021-07-05

This is an optional but highly recommended release of Lotus for lotus miners that has many bug fixes and improvements based on the feedback we got from the community since HyperDrive.

New Features

  • commit batch: AggregateAboveBaseFee config #6650
    • AggregateAboveBaseFee is added to miner sealing configuration for setting the network base fee to start aggregating proofs. When the network base fee is lower than this value, the prove commits will be submitted individually via ProveCommitSector. According to the Batch Incentive Alignment introduced in FIP-0013, we recommend miners to set this value to 0.15 nanoFIL(which is the default value) to avoid unexpected aggregation fee in burn and enjoy the most benefits of aggregation!

Bug Fixes

  • storage: Fix FinalizeSector with sectors in storage paths #6652
  • Fix tiny error in check-client-datacap #6664
  • Fix: precommit_batch method used the wrong cfg.PreCommitBatchWait #6658
  • to optimize the batchwait #6636
  • fix getTicket: sector precommitted but expired case #6635
  • handleSubmitCommitAggregate() exception handling #6595
  • remove precommit check in handleCommitFailed #6634
  • ensure agg fee is adequate
  • fix: miner balance is not enough, so that ProveCommitAggregate msg exec failed #6623
  • commit batch: Initialize the FailedSectors map #6647

Contributors

Contributor Commits Lines ± Files Changed
@magik6k 7 +151/-56 21
@llifezou 4 +59/-20 4
@johnli-helloworld 2 +45/-14 4
@wangchao 1 +1/-27 1
Jerry 2 +9/-4 2
@zhoutian527 1 +2/-2 1
@ribasushi 1 +1/-1 1

1.10.0 / 2021-06-23

This is a mandatory release of Lotus that introduces Filecoin network v13, codenamed the HyperDrive upgrade. The Filecoin mainnet will upgrade, which is epoch 892800, on 2021-06-30T22:00:00Z. The network upgrade introduces the following FIPs:

  • FIP-0008: Add miner batched sector pre-commit method
  • FIP-0011: Remove reward auction from reporting consensus faults
  • FIP-0012: DataCap Top up for FIL+ Client Addresses
  • FIP-0013: Add ProveCommitSectorAggregated method to reduce on-chain congestion
  • FIP-0015: Revert FIP-0009(Exempt Window PoSts from BaseFee burn)

Note that this release is built on top of Lotus v1.9.0. Enterprising users can use the master branch of Lotus to get the latest functionality, including all changes in this release candidate.

Proof batching and aggregation

FIPs 0008 and 0013 combine to allow for a significant increase in the rate of onboarding storage on the Filecoin network. This aims to lead to more useful data being stored on the network, reduced network congestion, and lower network base fee.

Check out the documentation here for details on the new Lotus miner sealing config options, here for fee config options, and explanations of the new features.

Note:

  • We recommend to keep PreCommitSectorsBatch as 1.
  • We recommend miners to set PreCommitBatchWait lower than 30 hours.
  • We recommend miners to set a longer CommitBatchSlack and PreCommitBatchSlack to prevent message failures due to expirations.

Projected state tree growth

In order to validate the Hyperdrive changes, we wrote a simulation to seal as many sectors as quickly as possible, assuming the same number and mix of 32GiB and 64GiB miners as the current network.

Given these assumptions:

  • We'd expect a network storage growth rate of around 530PiB per day. 😳 🎉 🥳 😅
  • We'd expect network bandwidth dedicated to SubmitWindowedPoSt to grow by about 0.02% per day.
  • We'd expect the state-tree (and therefore snapshot) size to grow by 1.16GiB per day.
    • Nearly all of the state-tree growth is expected to come from new sector metadata.
  • We'd expect the daily lotus datastore growth rate to increase by about 10-15% (from current ~21GiB/day).
    • Most "growth" of the lotus datastore is due to "churn", historical data that's no longer referenced by the latest state-tree.

Future improvements

Various Lotus improvements are planned moving forward to mitigate the effects of the growing state tree size. The primary improvement is the Lotus splitstore, which will soon be enabled by default. The feature allows for online garbage collection for nodes that do not seek to maintain full chain and state history, thus eliminating the need for users to delete their datastores and sync from snapshots.

Other improvements including better compressed snapshots, faster pre-migrations, and improved chain exports are in the roadmap.

WindowPost base fee burn

Included in the HyperDrive upgrade is FIP-0015 which eliminates the special-case gas treatment of SubmitWindowedPoSt messages that was introduced in FIP-0009. Although SubmitWindowedPoSt messages will be relatively cheap, thanks to the introduction of optimistic acceptance of these proofs in FIP-0010, storage providers should pay attention to their MaxWindowPoStGasFee config option: too low and PoSts may not land on chain; too high and they may cost an exorbitant amount!

Changelog

New Features

Bug Fixes

Improvements

Dependency Updates

  • Proofs v8.0.2 (filecoin-project/lotus#6524)
  • Update to fixed Bellperson (filecoin-project/lotus#6480)
  • Update to go-praamfetch with fslocks (filecoin-project/lotus#6473)
  • Update ffi with fixed multicore sdr support (filecoin-project/lotus#6471)
  • github.com/filecoin-project/go-paramfetch (v0.0.2-0.20200701152213-3e0f0afdc261 -> v0.0.2-0.20210614165157-25a6c7769498)
  • github.com/filecoin-project/specs-actors/v5 (v5.0.0-20210512015452-4fe3889fff57 -> v5.0.0)
  • github.com/filecoin-project/go-hamt-ipld/v3 (v3.0.1 -> v3.1.0)
  • github.com/ipfs/go-log/v2 (v2.1.2-0.20200626104915-0016c0b4b3e4 -> v2.1.3)
  • github.com/filecoin-project/go-amt-ipld/v3 (v3.0.0 -> v3.1.0)

Network Version v13 HyperDrive Upgrade

Contributors

💙Thank you to all the contributors!

Contributor Commits Lines ± Files Changed
@magik6k 81 +9606/-1536 361
@arajasek 41 +6543/-679 189
@ZenGround0 11 +4074/-727 110
@anorth 10 +2035/-1177 55
@iand 1 +779/-12 5
@frrist 2 +722/-6 6
@Stebalien 6 +368/-24 15
@jennijuju 11 +204/-111 19
@vyzo 6 +155/-66 13
@coryschwartz 10 +171/-27 14
@Kubuxu 4 +177/-13 7
@ribasushi 4 +65/-42 5
@travisperson 2 +11/-11 4
@kirk-baird 1 +1/-5 1
@wangchao 2 +3/-2 2

1.9.0 / 2021-05-17

This is an optional Lotus release that introduces various improvements to the sealing, mining, and deal-making processes.

Highlights

Changes

Fixes

1.8.0 / 2021-04-05

This is a mandatory release of Lotus that upgrades the network to version 12, which introduces various performance improvements to the cron processing of the power actor. The network will upgrade at height 712320, which is 2021-04-29T06:00:00Z.

Changes

1.6.0 / 2021-04-05

This is a mandatory release of Lotus that upgrades the network to version 11, which implements FIP-0014. The network will upgrade at height 665280, which is 2021-04-12T22:00:00Z.

v1 sector extension CLI

This release also expands the lotus-miner sectors extend CLI, with a new option that automatically extends all extensible v1 sectors. The option can be run using lotus-miner sectors extend --v1-sectors.

  • The tolerance flag can be passed to indicate what durations aren't "worth" extending. It defaults to one week, which means that sectors whose current lifetime's are within one week of the maximum possible lifetime will not be extended.

  • The expiration-cutoff flag can be passed to skip sectors whose expiration is past a certain point from the current head. It defaults to infinity (no cutoff), but if, say, 28800 was specified, then only sectors expiring in the next 10 days would be extended (2880 epochs in 1 day).

Changes

1.5.3 / 2021-03-24

This is a patch release of Lotus that introduces small fixes to the Storage FSM.

Changes

1.5.2 / 2021-03-11

This is an hotfix release of Lotus that fixes a critical bug introduced in v1.5.1 in the miner windowPoSt logic. This upgrade is only affecting miner nodes.

Changes

1.5.1 / 2021-03-10

This is an optional release of Lotus that introduces an important fix to the WindowPoSt computation process. The change is to wait for some confidence before drawing beacon randomness for the proof. Without this, invalid proofs might be generated as the result of a null tipset.

Splitstore

This release also introduces the splitstore, a new optional blockstore that segregates the monolithic blockstore into cold and hot regions. The hot region contains objects from the last 4-5 finalities plus all reachable objects from two finalities away. All other objects are moved to the cold region using a compaction process that executes every finality, once 5 finalities have elapsed.

The splitstore allows us to separate the two regions quite effectively, using two separate badger blockstores. The separation means that the live working set is much smaller, which results in potentially significant performance improvements. In addition, it means that the coldstore can be moved to a separate (bigger, slower, cheaper) disk without loss of performance.

The design also allows us to use different implementations for the two blockstores; for example, an append-only blockstore could be used for coldstore and a faster memory mapped blockstore could be used for the hotstore (eg LMDB). We plan to experiment with these options in the future.

Once the splitstore has been enabled, the existing monolithic blockstore becomes the coldstore. On the first head change notification, the splitstore will warm up the hotstore by copying all reachable objects from the current tipset into the hotstore. All new writes go into the hotstore, with the splitstore tracking the write epoch. Once 5 finalities have elapsed, and every finality thereafter, the splitstore compacts by moving cold objects into the coldstore. There is also experimental support for garbage collection, whereby nunreachable objects are simply discarded.

To enable the splitstore, add the following to config.toml:

[Chainstore]
  EnableSplitstore = true

Highlights

Other highlights include:

  • Improved deal data handling - now multiple deals can be adding to sectors in parallel
  • Rewriten sector pledging - it now actually cares about max sealing sector limits
  • Better handling for sectors stuck in the RecoverDealIDs state
  • lotus-miner sectors extend command
  • Optional configurable storage path size limit
  • Config to disable owner/worker fallback from control addresses (useful when owner is a key on a hardware wallet)
  • A write log for node metadata, which can be restored as a backup when the metadata leveldb becomes corrupted (e.g. when you run out of disk space / system crashes in some bad way)

Changes

1.5.0 / 2021-02-23

This is a mandatory release of Lotus that introduces the fifth upgrade to the Filecoin network. The network upgrade occurs at height 550321, before which time all nodes must have updated to this release (or later). At this height, v3 specs-actors will take effect, which in turn implements the following two FIPs:

  • FIP-0007 h/amt-v3 which improves the performance of the Filecoin HAMT and AMT.
  • FIP-0010 off-chain Window PoSt Verification which reduces the gas consumption of SubmitWindowedPoSt messages significantly by optimistically accepting Window PoSt proofs without verification, and allowing them to be disputed later by off-chain verifiers.

Note that the integration of v3 actors was already completed in 1.4.2, this upgrade simply sets the epoch for the upgrade to occur.

Disputer

FIP-0010 introduces the ability to dispute bad Window PoSts. Node operators are encouraged to run the new Lotus disputer alongside their Lotus daemons. For more information, see the announcement here.

Changes

  • #5341 Add a LOTUS_DISABLE_V3_ACTOR_MIGRATION envvar
    • Setting this envvar to 1 disables the v3 actor migration, should only be used in the event of a failed migration

1.4.2 / 2021-02-17

This is a large, and highly recommended, optional release with new features and improvements for lotus miner and deal-making UX. The release also integrates v3 specs-actors, which implements two FIPs:

  • FIP-0007 h/amt-v3 which improves the performance of the Filecoin HAMT and AMT.
  • FIP-0010 off-chain Window PoSt Verification which reduces the gas consumption of SubmitWindowedPoSt messages significantly by optimistically accepting Window PoSt proofs without verification, and allowing them to be disputed later by off-chain verifiers.

Note that this release does NOT set an upgrade epoch for v3 actors to take effect. That will be done in the upcoming 1.5.0 release.

New Features

  • #5341 Added sector termination API and CLI
    • Run lotus-miner sectors terminate
  • #5342 Added CLI for using a multisig wallet as miner's owner address
    • See how to set it up here
  • #5363, #5418, #5476, #5459 Integrated spec-actor v3
    • #5472 Generate actor v3 methods for pond
  • #5379 Added WindowPoSt disputer
  • #5309 Batch multiple deals in one PublishStorageMessages
    • #5411 Handle batch PublishStorageDeals message in sealing recovery
    • #5505 Exclude expired deals from batching in PublishStorageDeals messages
    • Added PublishMsgPeriod and MaxDealsPerPublishMsg to miner Dealmaking configuration. See how they work here.
    • #5538, #5549 Added a command to list pending deals and force publish messages.
      • Run lotus-miner market pending-publish
    • #5428 Moved waiting for PublishStorageDeals messages' receipt from markets to lotus
  • #5510 Added nerpanet build option
    • To build nerpanet, run make nerpanet
  • #5433 Added AlwaysKeepUnsealedCopy option to the miner configuration
  • #5520 Added MsigGetPending to get pending transactions for multisig wallets
  • #5219 Added interactive mode for lotus-wallet
  • 5529 Added support for minder nodes in lotus-shed rpc util

Bug Fixes

  • #5210 Miner should not dial client on restart
  • #5403 When estimating GasLimit only apply prior messages up to the nonce
  • #5410 Fix the calibnet build option
  • #5492 Fixed has for ipfsbstore for non-existing blocks
  • #5361 Fixed retrieval hangs when using IpfsOnlineMode=true
  • #5493 Fixed retrieval failure when price-per-byte is zero
  • #5506 Fixed contexts in the storage adpater
  • #5515 Properly wire up StateReadState on gateway API
  • #5582 Fixed error logging format strings
  • #5614 Fixed websocket reconnecting handling

Improvements

  • #5389 Show verified indicator for ./lotus-miner storage-deals list
  • #5229 Show power for verified deals in ./lotus-miner setocr list
  • #5407 Added explicit check of the miner address protocol
  • #5399 watchdog: increase heapprof capture threshold to 90%
  • #5398 storageadapter: Look at precommits on-chain since deal publish msg
  • #5470 Added --no-timing option for ./lotus state compute-state --html
  • #5417 Storage Manager: Always unseal full sectors
  • #5393 Switched to filecoin-ffi bls api for bls signatures
  • #5380 Refactor deals API tests
  • #5397 Fixed a flake in the sync manager edge case test
  • #5406 Added a test to ensure a correct window post cannot be disputed
  • #5294 Added jobs to build Lotus docker image and push it to AWS ECR
  • #5387 Added network info(mainnet|calibnet) in version
  • #5497 Export metric for lotus-gateaway
  • #4950 Removed bench policy
  • #5047 Improved the UX for ./lotus-shed bitfield enc
  • #5282 Snake a context through the chian blockstore creation
  • #5350 Avoid using mp.cfg directrly to prevent race condition
  • #5449 Documented the block-header better
  • #5404 Added retrying proofs if an incorrect one is generated
  • #4545 Made state tipset usage consistent in the API
  • #5540 Removed unnecessary database reads in validation check
  • #5554 Fixed build lotus-soup CI job
  • #5552 Updated CircleCI to halt gracefully
  • #5555 Cleanup and add docstrings of node builder
  • #5564 Stopped depending on gocheck with gomod
  • #5574 Updated CLI UI
  • #5570 Added code CID to StateReadState return object
  • #5565 Added storageadapter.PublishMsgConfig to miner in testkit for lotus-soup testplan
  • #5571 Added lotus-seed gensis car to generate lotus block for devnets
  • #5613 Check format in client commP util
  • #5507 Refactored coalescing logic into its own function and take both cancellation sets into account
  • #5592 Verify FFI version before building

Dependency Updates

Network Version v10 Upgrade

  • #5473 Merged staging branch for v1.5.0
  • #5603 Set nerpanet's upgrade epochs up to v3 actors
  • #5471, #5456 Set calibration net actor v3 migration epochs for testing
  • #5434 Implemented pre-migration framework
  • #5476 Tune migration

1.4.1 / 2021-01-20

This is an optional Lotus release that introduces various improvements to the sealing, mining, and deal-making processes. In particular, #5341 introduces the ability for Lotus miners to terminate sectors.

Changes

Core Lotus

Sealing

Dealmaking

UX

Testing

Build & Networks

Management

1.4.0 / 2020-12-19

This is a MANDATORY hotfix release of Lotus that resolves a chain halt at height 336,459 caused by nondeterminism in specs-actors. The fix is to update actors to 2.3.3 in order to incorporate this fix filecoin-project/specs-actors#1334.

1.3.0 / 2020-12-16

This is a mandatory release of Lotus that introduces the third post-liftoff upgrade to the Filecoin network. The network upgrade occurs at height 343200, before which time all nodes must have updated to this release (or later). The change that breaks consensus is an implementation of FIP-0009(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0009.md).

Changes

1.2.3 / 2020-12-15

This is an optional Lotus release that introduces many performance improvements, bugfixes, and UX improvements.

Changes

1.2.2 / 2020-12-03

This is an optional Lotus release that introduces various improvements to the mining logic and deal-making workflow, as well as several new UX features.

Changes

1.2.1 / 2020-11-20

This is a very small release of Lotus that fixes an issue users are experiencing when importing snapshots. There is no need to upgrade unless you experience an issue with creating a new datastore directory in the Lotus repo.

Changes

1.2.0 / 2020-11-18

This is a mandatory release of Lotus that introduces the second post-liftoff upgrade to the Filecoin network. The network upgrade occurs at height 265200, before which time all nodes must have updated to this release (or later). This release also bumps the required version of Go to 1.15.

The changes that break consensus are:

Other Changes

1.1.3 / 2020-11-13

This is an optional release of Lotus that upgrades Lotus dependencies, and includes many performance enhancements, bugfixes, and UX improvements.

Highlights

Changes

Core Lotus

Mining

Markets and Data Transfer

UX

Testing and Tooling

Dependencies

1.1.2 / 2020-10-24

This is a patch release of Lotus that builds on the fixes involving worker keys that was introduced in v1.1.1. Miners and node operators should update to this release as soon as possible in order to ensure their blocks are propagated and validated.

Changes

1.1.1 / 2020-10-24

This is a patch release of Lotus that addresses some issues caused by when miners change their worker keys. Miners and node operators should update to this release as soon as possible, especially any miner who has changed their worker key recently.

Changes

1.1.0 / 2020-10-20

This is a mandatory release that introduces the first post-liftoff upgrade to the Filecoin network. The changes that break consensus are an upgrade to specs-actors v2.2.0 at epoch 170000.

Changes

1.0.0 / 2020-10-19

It's 1.0.0! This is an optional release of Lotus that introduces some UX improvements to the 0.10 series.

This very small release is largely cosmetic, and intended to flag the code that the Filecoin mainnet was launched with.

API changes

  • StateMsgGasCost has been removed. The equivalent information can be gained by calling StateReplay.
  • A GasCost field has been added to the InvocResult type, meaning detailed gas costs will be returned when calling StateReplay, StateCompute, and StateCall.
  • The behaviour of StateReplay in response to an empty tipset key has been changed. Instead of simply using the heaviest tipset (which is almost guaranteed to be an unsuccessful replay), we search now search the chain for the tipset that included the message, and replay the message in that tipset (we fail if no such tipset is found).

Changes

0.10.2 / 2020-10-14

This is an optional release of Lotus that updates markets to 0.9.1, which fixes an issue affecting deals that were mid-transfer when the node was upgraded to 0.9.0. This release also includes some tweaks to default gas values and minor performance improvements.

Changes

0.10.1 / 2020-10-14

This is an optional release of Lotus that updates markets to 0.9.0, which adds the ability to restart data transfers. This release also introduces Ledger support, and various UX improvements.

Changes

0.10.0 / 2020-10-12

This is a consensus-breaking hotfix that addresses an issue in specs-actors v2.0.3 that made it impossible to pledge new 32GiB sectors. The change in Lotus is to update to actors v2.1.0, behind the new network version 5.

Changes

0.9.1 / 2020-10-10

This release fixes an issue which may cause the actors v2 migration to compute the state incorrectly when more than one migration is running in parallel.

Changes

0.9.0 / 2020-10-07

This consensus-breaking release of Lotus upgrades the actors version to v2.0.0. This requires migrating actor state from v0 to v2. The changes that break consensus are:

Changes

Dependencies

Core Lotus

Mining

UX

Tooling and validation

Contributors

The following contributors had 5 or more commits go into this release. We are grateful for every contribution!

Contributor Commits Lines ±
Stebalien 84 +3425/-2287
magik6k 41 +2121/-506
arajasek 39 +2467/-424
Kubuxu 25 +2344/-775
raulk 21 +287/-196
whyrusleeping 13 +727/-71
hsanjuan 13 +5886/-7956
dirkmc 11 +2634/-576
travisperson 8 +923/-202
ribasushi 6 +188/-128
zgfzgf 5 +21/-17

0.8.1 / 2020-09-30

This optional release of Lotus introduces a new version of markets which switches to CBOR-map encodings, and allows datastore migrations. The release also introduces several improvements to the mining process, a few performance optimizations, and a battery of UX additions and enhancements.

Changes

Dependencies

Core Lotus

Performance

Mining

UX

Tooling

Bootstrap

0.8.0 / 2020-09-26

This consensus-breaking release of Lotus introduces an upgrade to the network. The changes that break consensus are:

  • Upgrading to specs-actors v0.9.11, which reduces WindowPoSt faults per FIP 0002 to reduce cost for honest miners with occasional faults (see filecoin-project/specs-actors#1181)
  • Revisions to some cryptoeconomics and network params

This release also updates go-fil-markets to fix an incompatibility issue between v0.7.2 and earlier versions.

Changes

Dependencies

Core Lotus

UX

Tooling and validation

Contributors

The following contributors had 5 or more commits go into this release. We are grateful for every contribution!

Contributor Commits Lines ±
arajasek 66 +3140/-1261
Stebalien 64 +3797/-3434
magik6k 48 +1892/-976
raulk 40 +2412/-1549
vyzo 22 +287/-196
alanshaw 15 +761/-146
whyrusleeping 15 +736/-52
hannahhoward 14 +1237/-837
anton 6 +32/-8
travisperson 5 +502/-6
Frank 5 +78/-39
Jennifer 5 +148/-41

0.7.2 / 2020-09-23

This optional release of Lotus introduces a major refactor around how a Lotus node interacts with code from the specs-actors repo. We now use interfaces to read the state of actors, which is required to be able to reason about different versions of actors code at the same time.

Additionally, this release introduces various improvements to the sync process, as well as changes to better the overall UX experience.

Changes

Core Lotus

User Experience

Testing and validation

0.7.1 / 2020-09-17

This optional release of Lotus introduces some critical fixes to the window PoSt process. It also upgrades some core dependencies, and introduces many improvements to the mining process, deal-making cycle, and overall User Experience.

Changes

Some notable improvements:

Dependencies

0.7.0 / 2020-09-10

This consensus-breaking release of Lotus is designed to test a network upgrade on the space race testnet. The changes that break consensus are:

  • Upgrading the Drand network used from the test Drand network to the League of Entropy main drand network. This is the same Drand network that will be used in the Filecoin mainnet.
  • Upgrading to specs-actors v0.9.8, which adds a new method to the Multisig actor.

Changes

Core Lotus

Storage Miner

  • Increase the number of times precommit2 is attempted before moving back to precommit1 (filecoin-project#3720)

Message pool

Maintenance

Contributors

The following contributors had commits go into this release. We are grateful for every contribution!

Contributor Commits Lines ±
arajasek 28 +1144/-239
Kubuxu 19 +452/-261
whyrusleeping 13 +456/-87
vyzo 11 +318/-20
raulk 10 +1289/-350
magik6k 6 +188/-55
dirkmc 3 +31/-8
alanshaw 3 +176/-37
Stebalien 2 +9/-12
lanzafame 1 +1/-1
frrist 1 +1/-1
mishmosh 1 +1/-1
nonsense 1 +1/-0

0.6.2 / 2020-09-09

This release introduces some critical fixes to message selection and gas estimation logic. It also adds the ability for nodes to mark a certain tipset as checkpointed, as well as various minor improvements and bugfixes.

Changes

Messagepool

Core Lotus

Storage

Maintenance

0.6.1 / 2020-09-08

This optional release introduces a minor improvement to the sync process, ensuring nodes don't fall behind and then resync.

Changes

0.6.0 / 2020-09-07

This consensus-breaking release of Lotus is designed to test a network upgrade on the space race testnet. The changes that break consensus are:

This release also introduces many improvements to Lotus! Among them are a new version of go-fil-markets that supports non-blocking retrieval, various spam reduction measures in the messagepool and p2p logic, and UX improvements to payment channels, dealmaking, and state inspection.

Changes

Core Lotus and dependencies

Messagepool

Payment channels

Peer-to-peer

Miscellaneous

UX

Testing & tooling

0.5.10 / 2020-09-03

This patch includes a crucial fix to the message pool selection logic, strongly disfavouring messages that might cause a miner penalty.

Changes

0.5.9 / 2020-09-03

This patch includes a hotfix to the GasEstimateFeeCap method, capping the estimated fee to a reasonable level by default.

Changes

0.5.8 / 2020-09-02

This patch includes some bugfixes to the sector sealing process, and updates go-fil-markets. It also improves the performance of blocksync, adds a method to export chain state trees, and improves chainwatch.

Changes

0.5.7 / 2020-08-31

This patch release includes some bugfixes and enhancements to the sector lifecycle and message pool logic.

Changes

0.5.6 / 2020-08-29

Hotfix release that fixes a panic in the sealing scheduler (filecoin-project#3389).

0.5.5

This patch release introduces a large number of improvements to the sealing process. It also updates go-fil-markets to version 0.5.8, and go-libp2p-pubsub to v0.3.5.

Downstream upgrades

Sector sealing

  • The following improvements were introduced in filecoin-project#3350.

    • Allow lotus-miner sectors remove to remove a sector in any state.
    • Create a separate state in the storage FSM dedicated to submitting the Commit message.
    • Recovery for when the Deal IDs of deals in a sector get changed in a reorg.
    • Auto-retry sending Precommit and Commit messages if they run out of gas
    • Auto-retry sector remove tasks when they fail
    • Compact worker windows, and allow their tasks to be executed in any order
  • Don't simply skip PoSt for bad sectors (filecoin-project#3323)

Message Pool

Chainwatch

0.5.4

A patch release, containing a few nice bugfixes and improvements:

  • Fix parsing of peer ID in lotus-miner actor set-peer-id (@whyrusleeping)
  • Update dependencies, fixing several bugs (@Stebalien)
  • Fix remaining linter warnings (@Stebalien)
  • Use safe string truncation (@Ingar)
  • Allow tweaking of blocksync message window size (@whyrusleeping)
  • Add some additional gas stats to metrics (@Kubuxu)
  • Fix an edge case bug in message selection, add many tests (@vyzo)

0.5.3

Yet another hotfix release. A lesson for readers, having people who have been awake for 12+ hours review your hotfix PR is not a good idea. Find someone who has enough slept recently enough to give you good code review, otherwise you'll end up quickly bumping versions again.

  • Fixed a bug in the mempool that was introduced in v0.5.2

0.5.2 / 2020-08-24

This is a hotfix release.

  • Fix message selection to not include messages that are invalid for block inclusion.
  • Improve SelectMessage handling of the case where the message pools tipset differs from our mining base.

0.5.1 / 2020-08-24

The Space Race release! This release contains the genesis car file and bootstrap peers for the space race network.

Additionally, we included two small fixes to genesis creation:

  • Randomize ticket value in genesis generation
  • Correctly set t099 (burnt funds actor) to have valid account actor state

0.5.0 / 2020-08-20

This version of Lotus will be used for the incentivized testnet Space Race competition, and can be considered mainnet-ready code. It includes some protocol changes, upgrades of core dependencies, and various bugfixes and UX/performance improvements.

Highlights

Among the highlights included in this release are:

  • Gas changes: We implemented EIP-1559 and introduced real gas values.
  • Deal-making: We now support "Committed Capacity" sectors, "fast-retrieval" deals, and the packing of multiple deals into a single sector.
  • Renamed features: We renamed some of the binaries, environment variables, and default paths associated with a Lotus node.

Gas changes

We made some significant changes to the mechanics of gas in this release.

Network fee

We implemented something similar to Ethereum's EIP-1559. The Message structure had three changes:

  • The GasPrice field has been removed
  • A new GasFeeCap field has been added, which controls the maximum cost the sender incurs for the message
  • A new GasPremium field has been added, which controls the reward a miner earns for including the message

A sender will never be charged more than GasFeeCap * GasLimit. A miner will typically earn GasPremium * GasLimit as a reward.

The Blockheader structure has one new field, called ParentBaseFee. Informally speaking,the ParentBaseFee is increased when blocks are densely packed with messages, and decreased otherwise.

The ParentBaseFee is used when calculating how much a sender burns when executing a message. Burning simply refers to sending attoFIL to a dedicated, unreachable account. A message causes ParentBaseFee * GasUsed attoFIL to be burnt.

Real gas values

This release also includes our first "real" gas costs for primitive operations. The costs were designed to account for both the time that message execution takes, as well as the space a message adds to the state tree.

Deal-making changes

There are three key changes to the deal-making process.

Committed Capacity sectors

Miners can now pledge "Committed Capacity" (CC) sectors, which are explicitly stated as containing junk data, and must not include any deals. Miners can do this to increase their storage power, and win block rewards from this pledged storage.

They can mark these sectors as "upgradable" with lotus-miner sectors mark-for-upgrade. If the miner receives and accepts one or more storage deals, the sector that includes those deals will replace the CC sector. This is intended to maximize the amount of useful storage on the Filecoin network.

Fast-retrieval deals

Clients can now include a fast-retrieval flag when proposing deals with storage miners. If set to true, the miner will include an extra copy of the deal data. This data can be quickly served in a retrieval deal, since it will not need to be unsealed.

Multiple deals per sector

Miners can now pack multiple deals into a single sector, so long as all the deals fit into the sector capacity. This should increase the packing efficiency of miners.

Renamed features

To improve the user experience, we updated several names to mainatin standard prefixing, and to better reflect the meaning of the features being referenced.

In particular, the Lotus miner binary is now called lotus-miner, the default path for miner data is now ~/.lotusminer, and the environment variable that sets the path for miner data is now $LOTUS_MINER_PATH. A full list of renamed features can be found here.

Changelog

Downstream upgrades

Core protocol

Deal-making lifecycle

Enhancements

UX

Contributors

The following contributors had 10 or more commits go into this release. We are grateful for every contribution!

Contributor Commits Lines ±
magik6k 361 +13197/-6136
Kubuxu 227 +5670/-2587
arajasek 120 +2916/-1264
whyrusleeping 112 +3979/-1089
vyzo 99 +3343/-1305
dirkmc 68 +8732/-3621
laser 45 +1489/-501
hannahhoward 43 +2654/-990
frrist 37 +6630/-4338
schomatis 28 +3016/-1368
placer14 27 +824/-350
raulk 25 +28718/-29849
mrsmkl 22 +560/-368
travisperson 18 +1354/-314
nonsense 16 +2956/-2842
ingar 13 +331/-123
daviddias 11 +311/-11
Stebalien 11 +1204/-980
RobQuistNL 10 +69/-74

0.1.0 / 2019-12-11

We are very excited to release lotus 0.1.0. This is our testnet release. To install lotus and join the testnet, please visit lotu.sh. Please file bug reports as issues.

A huge thank you to all contributors for this testnet release!