Skip to content

Latest commit

 

History

History
2490 lines (2052 loc) · 215 KB

CHANGELOG_1.2x.md

File metadata and controls

2490 lines (2052 loc) · 215 KB

Lotus changelog v1.20.0 - v1.29.2

Node v1.29.2 / 2024-10-03

This is the stable release for Lotus node v1.29.2. Key updates in this release include:

  • New API Support: Added support for EthGetBlockReceipts RPC method to retrieve transaction receipts for a specified block. This method allows users to obtain Ethereum format receipts of all transactions included in a given tipset as specified by its Ethereum block equivalent. (filecoin-project/lotus#12478)
  • Dependency Update: Upgraded go-libp2p to version v0.35.5 (filecoin-project/lotus#12511), and go-multiaddr-dns to v0.4.0 (filecoin-project/lotus#12540).
  • Bug Fix: Legacy/historical Drand lookups via StateGetBeaconEntry now work again for all historical epochs. StateGetBeaconEntry now uses the on-chain beacon entries and follows the same rules for historical Drand round matching as StateGetRandomnessFromBeacon and the get_beacon_randomness FVM syscall. Be aware that there will be some some variance in matching Filecoin epochs to Drand rounds where null Filecoin rounds are involved prior to network version 14. (filecoin-project/lotus#12428).

☢️ Upgrade Warnings ☢️

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
aarshkshah1992 2 +1753/-662 12
Viraj Bhartiya 1 +770/-38 18
Rod Vagg 1 +480/-83 14
Phi-rjan 2 +20/-13 9
Phi 2 +6/-25 7

Node v1.29.1 / 2024-09-16

This is a Lotus Node patch release that addresses a critical sync issue affecting users of the v1.29.0 release. The primary fix in this release is:

  • Downgrade of a dependency that was causing invalid BLS signatures, leading to sync failures for many Lotus nodes. See #12467 for more information about the bug.

We strongly recommend that all users currently running Lotus v1.29.0 upgrade to this version to resolve the syncing problems.

Bug Fixes

1.28.3 / 2024-09-16

This is a Lotus Node patch release that addresses a critical sync issue affecting users of the v1.28.2 release. The primary fix in this patch release is downgrading of a dependency that was causing invalid BLS signatures, leading to sync failures for many Lotus nodes. See #12467 for more information about the issue/bug.

Bug Fixes

Node v1.29.2 / 2024-10-03

This is the stable release for Lotus node v1.29.2. Key updates in this release include:

  • New API Support: Added support for EthGetBlockReceipts RPC method to retrieve transaction receipts for a specified block. This method allows users to obtain Ethereum format receipts of all transactions included in a given tipset as specified by its Ethereum block equivalent. (filecoin-project/lotus#12478)
  • Dependency Update: Upgraded go-libp2p to version v0.35.5 (filecoin-project/lotus#12511), and go-multiaddr-dns to v0.4.0 (filecoin-project/lotus#12540).
  • Bug Fix: Legacy/historical Drand lookups via StateGetBeaconEntry now work again for all historical epochs. StateGetBeaconEntry now uses the on-chain beacon entries and follows the same rules for historical Drand round matching as StateGetRandomnessFromBeacon and the get_beacon_randomness FVM syscall. Be aware that there will be some some variance in matching Filecoin epochs to Drand rounds where null Filecoin rounds are involved prior to network version 14. (filecoin-project/lotus#12428).

☢️ Upgrade Warnings ☢️

📝 Changelog

See https://github.com/filecoin-project/lotus/compare/v1.29.1...release/v1.29.2 for the set of changes since the last release.

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
aarshkshah1992 2 +1753/-662 12
Viraj Bhartiya 1 +770/-38 18
Rod Vagg 1 +480/-83 14
Phi-rjan 2 +20/-13 9
Phi 2 +6/-25 7

Node v1.29.0 / 2024-09-02

This is a Lotus Node only release, which includes a variety of new features, improvements, and fixes, particularly focused on enhancing ETH RPC functionality. Key highlights of this release include:

  • New Features:

    • Trace Filter API: Added support for the trace_filter RPC method, allowing users to configure EthTraceFilterMaxResults to limit the number of results returned in any individual trace_filter RPC API call. (filecoin-project/lotus#12123)
    • Filecoin to ETH Address Conversion: The FilecoinAddressToEthAddress RPC can now return ETH addresses for all Filecoin address types ("f0"/"f1"/"f2"/"f3") based on the client's re-org tolerance. Note that this is a breaking change if you are using the API via the go-jsonrpc library or by using Lotus as a library, but it is non-breaking when using the API via any other RPC method as it adds an optional second argument. (filecoin-project/lotus#12324)
    • Sending to ETH addresses The lotus send command now supports sending to ETH address recipients. (filecoin-project/lotus#12319)
  • Improvements:

    • Gateway Enhancements: Significant improvements to the lotus-gateway including better rate limiting and stateful handling. The --per-conn-rate-limit now works as advertised, and a new --eth-max-filters-per-conn option allows setting the maximum number of filters and subscriptions per connection, defaulting to 16. Stateful Ethereum APIs are now disabled for plain HTTP connections and require websockets. Additionally, the default value for the Events.FilterTTL config option has been reduced from 24h to 1h. (filecoin-project/lotus#12315)
    • Performance Improvements: Addressed SQLite index selection performance regressions, significantly improving query times for event-related data. (filecoin-project/lotus#12261).

☢️ Upgrade Warnings ☢️

  • lotus-gateway behaviour, CLI-arguments and APIs have received minor changes. See the improvements section below for more information.
  • The FilecoinAddressToEthAddress RPC introduces a breaking change for users of the go-jsonrpc library or Lotus as a library.
  • We are aware that legacy/historical Drand lookups via StateGetBeaconEntry are currently broken. If you rely on StateGetBeaconEntry for looking up historic beacons, we recommend waiting for the Lotus v1.29.1 release. You can follow the progress on this issue in #12414.

📝 Changelog

See https://github.com/filecoin-project/lotus/compare/v1.28.2...release/v1.29.0 for the set of changes since the last release.

Organized Changelog

New features

  • feat: Add trace filter API supporting RPC method trace_filter (filecoin-project/lotus#12123). Configuring EthTraceFilterMaxResults sets a limit on how many results are returned in any individual trace_filter RPC API call.
  • feat: FilecoinAddressToEthAddress RPC can now return ETH addresses for all Filecoin address types ("f0"/"f1"/"f2"/"f3") based on client's re-org tolerance. This is a breaking change if you are using the API via the go-jsonrpc library or by using Lotus as a library, but is a non-breaking change when using the API via any other RPC method as it adds an optional second argument. (filecoin-project/lotus#12324).
  • feat: Added lotus-shed indexes inspect-events health-check command (filecoin-project/lotus#12346).
  • feat(libp2p): expose libp2p bandwidth metrics (#12402) (filecoin-project/lotus#12402)
  • feat: Lotus Send CLI: Lotus send should work with ETH address receipients (#12319)

Improvements

  • feat!: gateway: fix rate limiting, better stateful handling (filecoin-project/lotus#12327).
    • CLI usage documentation has been improved for lotus-gateway
    • --per-conn-rate-limit now works as advertised.
    • --eth-max-filters-per-conn is new and allows you to set the maximum number of filters and subscription per connection, it defaults to 16.
      • Previously, this limit was set to 16 and applied separately to filters and subscriptions. This limit is now unified and applies to both filters and subscriptions.
    • Stateful Ethereum APIs (those involving filters and subscriptions) are now disabled for plain HTTP connections. A client must be using websockets to access these APIs.
      • These APIs are also now automatically removed from the node by the gateway when a client disconnects.
    • Some APIs have changed which may impact users consuming Lotus Gateway code as a library.
    • The default value for the Events.FilterTTL config option has been reduced from 24h to 1h. This means that filters will expire on a Lotus node after 1 hour of not being accessed by the client.
  • feat: f3: override F3BootstrapEpoch on 2k devnet with environment variable (#12354) (filecoin-project/lotus#12354)
  • feat: p2p: allow overriding bootstrap nodes with environmemnt variable (#12292) (filecoin-project/lotus#12292)
  • feat(f3): F3 has been updated with many performance improvements and additional metrics.
  • fix: Eth Event Receipt Logs: use event index for logs (#12269) (filecoin-project/lotus#12269)
  • fix: add datacap balance to circ supply internal accounting as unCirc (#12348) (filecoin-project/lotus#12348)
  • feat: Use a block cache to speed up the EthGetBlockByHash API (#12359) (filecoin-project/lotus#12359)
  • fix: lotus-shed: store processed tipset after backfilling events (#12335) (filecoin-project/lotus#12335)
  • fix: Eth Tx Events Bloom Filter: fix slice modification bug and flaky test (#12203) (filecoin-project/lotus#12203)
  • fix(ETH RPC): receipts: use correct txtype in receipts (#12332) (filecoin-project/lotus#12332
  • fix(cli): only change method for 0x recipients (#12328) (filecoin-project/lotus#12328)
  • feat: api: clean API for Miners (#12112) (filecoin-project/lotus#12112)
  • feat: p2p: environment variables for disabling DHT query filter and routing table filter (#12289) (filecoin-project/lotus#12289)
  • fix: cli: Add delegated to cli docs (#12229) (filecoin-project/lotus#12229)
  • feat: sqlite: extract common init and migration utilities (#12098) (filecoin-project/lotus#12098)
  • feat: niporep: multi-sector onboarding through UnmanagedMiner (#12180) (filecoin-project/lotus#12180)

Dependencies

From https://github.com/filecoin-project/lotus/compare/v1.28.2...release/v1.29.0#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6

  • github.com/filecoin-project/go-commp-utils (v0.1.3 -> v0.1.4):
  • github.com/filecoin-project/go-commp-utils/nonffi (v0.0.0-20220905160352-62059082a837 -> v0.0.0-20240802040721-2a04ffc8ffe8):
  • github.com/filecoin-project/go-hamt-ipld/v3 (v3.1.0 -> v3.4.0):
  • github.com/filecoin-project/go-jsonrpc (v0.3.2 -> v0.6.0):
  • github.com/filecoin-project/jackc/pgx (v5.4.1 -> v5.6.0)
  • feat(f3): update from v0.0.7 to v0.1.0 (#12382) (filecoin-project/lotus#12382)
  • feat: f3: update go-f3 to 0.2.0 (#12390) (filecoin-project/lotus#12390)
  • feat: update cheggaaa's pb to v3 (filecoin-project/lotus#12518)

Chores

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
Rod Vagg 45 +4839/-2634 217
Peter Rabbitson 18 +2503/-2195 209
Jakub Sztandera 5 +2695/-1074 61
Mikers 1 +1274/-455 23
Masih H. Derkani 7 +873/-682 37
Andrew Jackson (Ajax) 3 +732/-504 75
LexLuthr 3 +167/-996 8
Piotr Galar 6 +622/-372 15
Aarsh Shah 11 +791/-177 44
Phi-rjan 15 +476/-178 50
web3-bot 32 +330/-319 39
Steven Allen 8 +367/-165 41
aarshkshah1992 17 +379/-87 32
Frrist 1 +403/-22 5
Łukasz Magiera 4 +266/-27 13
winniehere 1 +146/-144 3
Steve Loeppky 5 +162/-53 7
Aryan Tikarya 2 +183/-8 7
adlrocha 2 +123/-38 21
Jiaying Wang 7 +52/-68 9
Ian Davis 2 +60/-38 5
Aayush Rajasekaran 1 +80/-2 2
hanabi1224 4 +46/-4 5
Laurent Senta 1 +44/-1 2
jennijuju 6 +21/-20 17
Brendan O'Brien 1 +25/-10 2
Jennifer Wang 4 +24/-8 6
dependabot[bot] 4 +15/-15 8
riskrose 1 +8/-8 7
Phi 1 +6/-6 6
linghuying 1 +5/-5 5
fsgerse 2 +3/-7 3
PolyMa 1 +5/-5 5
zhangguanzhang 1 +3/-3 2
luozexuan 1 +3/-3 3
Po-Chun Chang 1 +6/-0 2
Kevin Martin 1 +4/-1 2
simlecode 1 +2/-2 2
ZenGround0 1 +2/-2 2
GFZRZK 1 +2/-1 1
zl 1 +1/-1 1
qwdsds 1 +1/-1 1
Elias Rad 1 +1/-1 1

1.28.2 / 2024-08-15

This is a Lotus patch release v1.28.2 for Node operators and Storage Providers.

For node operators, this patch release is HIGHLY RECOMMENDED as it fixes an issue where excessive bandwidth usage (issue #12381) was caused by a routing loop in pubsub, where small "manifest" messages were cycling repeatedly around the network due to an ineffective routing loop prevention mechanism. The new f3 release also has a couple performance improvements around CPU usage. (If you are curious about the progress of F3 testing, follow the updates here).

For storage providers, this patch release fixes pledge issues users have been encountering. This update addresses existing issues, including the too-small pledge in snap and the lack of DDO-awareness in PoRep Commit.

☢️ Upgrade Warnings ☢️

v1.28.1 / 2024-07-24

This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin network version 23, codenamed Waffle 🧇. v1.28.1 is also the minimal version that supports nv23. This release sets the Mainnet to upgrade at epoch 4154640, corresponding to 2024-08-06T12:00:00Z.

☢️ Upgrade Warnings ☢️

  • If you are running the v1.26.x version of Lotus, please go through the Upgrade Warnings section for the v1.27.* releases, before upgrading to this RC.
  • Note that v1.28.0 needed a bug fix and a feature enhancement to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade!
  • This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See filecoin-project/lotus#12080 for full details.
  • All Storage Providers MUST finish onboarding all sectors that have deal IDs in the PreCommitSectors OnChainSectorInfos before upgrading the lotus miner OR THEY WILL BE WASTED. Please see more details in the next section.

The Filecoin network version 23 delivers the following FIPs:

Note that we are only doing a "soft launch"/"passive testing" for F3 (Fast Finality) i.e. FIP-0086 in NV23. Please see this doc for more details.

v14 Builtin Actor Bundle

Builtin actor v14.0.0 is used for supporting this upgrade. Make sure that your lotus actor bundle matches the v14 actors manifest by running the following cli after upgrading:

lotus state actor-cids --network-version=23
Network Version: 23
Actor Version: 14
Manifest CID: bafy2bzacecbueuzsropvqawsri27owo7isa5gp2qtluhrfsto2qg7wpgxnkba

Actor             CID  
account           bafk2bzacebr7ik7lng7vysm754mu5x7sakphwm4soqi6zwbox4ukpd6ndwvqy
cron              bafk2bzacecwn6eiwa7ysimmk6i57i5whj4cqzwijx3xdlxwb5canmweaez6xc
datacap           bafk2bzacecidw7ajvtjhmygqs2yxhmuybyvtwp25dxpblvdxxo7u4gqfzirjg
eam               bafk2bzaced2cxnfwngpcubg63h7zk4y5hjwwuhfjxrh43xozax2u6u2woweju
ethaccount        bafk2bzacechu4u7asol5mpcsr6fo6jeaeltvayj5bllupyiux7tcynsxby7ko
evm               bafk2bzacedupohbgwrcw5ztbbsvrpqyybnokr4ylegmk7hrbt3ueeykua6zxw
init              bafk2bzacecbbcshenkb6z2v4irsudv7tyklfgphhizhghix6ke5gpl4r5f2b6
multisig          bafk2bzaceajcmsngu3f2chk2y7nanlen5xlftzatytzm6hxwiiw5i5nz36bfc
paymentchannel    bafk2bzaceavslp27u3f4zwjq45rlg6assj6cqod7r5f6wfwkptlpi6j4qkmne
placeholder       bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
reward            bafk2bzacedvfnjittwrkhoar6n5xrykowg2e6rpur4poh2m572f7m7evyx4lc
storagemarket     bafk2bzaceaju5wobednmornvdqcyi6khkvdttkru4dqduqicrdmohlwfddwhg
storageminer      bafk2bzacea3f43rxzemmakjpktq2ukayngean3oo2de5cdxlg2wsyn53wmepc
storagepower      bafk2bzacedo6scxizooytn53wjwg2ooiawnj4fsoylcadnp7mhgzluuckjl42
system            bafk2bzacecak4ow7tmauku42s3u2yydonk4hx6ov6ov542hy7lcbji3nhrrhs
verifiedregistry  bafk2bzacebvyzjzmvmjvpypphqsumpy6rzxuugnehgum7grc6sv3yqxzrshb4

Migration

All node operators, including storage providers, should be aware that ONE pre-migration is being scheduled 120 epochs before the network upgrade. The migration for the NV23 upgrade is expected to be light with no heavy pre-migrations, here are some expected timings and resource consumption numbers:

  • Pre-migration is expected to take less than 1 minute.
  • The migration is expected to take less than 30 seconds on a node with an NVMe drive and a newer CPU. For nodes running on slower disks/CPU, it is still expected to take less than 1 minute.
  • Max memory usage during benchmarking the migration in "offline mode" (i.e., node not syncing) was 23GiB.
  • Max memory usage when benchmarking the migration in "online mode" (i.e., while the node is syncing) was 30GiB. Numbers here might vary depending on the load your node is under. More details on the migration benchmarking can be found in #12128

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.

For certain node operators, such as full archival nodes or systems that need to keep large amounts of state (RPC providers), we recommend skipping the pre-migration and running the non-cached migration (i.e., just running the migration at the network upgrade epoch), and scheduling some additional downtime. Operators of such nodes can read the How to disable premigration in network upgrade tutorial.

Fast Finality for Filecoin (f3) soft launch

We are one step closer to reduce Filecoin's finality from 7.5 hours to a minute or so, you can checkout the FIP for more details. Changing the consensus protocol is not trivial, and the f3 implementation team has designed a passive testing plan to verify the protocol and give time for client implementation teams to integrate and test F3 before it is fully activated in the network consensus. That said, the lotus team has implemented f3 & the manifest for passive testing in this release, and we would like to ask node operators, especially storage providers, to participate in the testing by participating in F3 on the mainnet (which is enabled by default in this release)! We will keep updating this discussion to capture "what can you expect" & testing status. If you notice any unexpected behaviour caused by f3, please do not hesitate to reach out to us in #fil-fast-finality.

F3 (Fast Finality) is experimental in this release. All the new F3 APIs are unstable and subject to until nv24 release (assuming f3 will be fully activated in this upgrade).

Exchanges and RPC providers are recommended to opt-out of F3 functionality for now. You can disable F3 by adding the LOTUS_DISABLE_F3 = 1 environment variable, which will output a log saying that F3 has been disabled.

Dependencies

  • github.com/filecoin-project/go-state-types (v0.14.0-dev -> v0.14.0)
  • github.com/filecoin-project/filecoin-ffi (v1.27.0-rc2 -> v1.28.0)
  • github.com/filecoin-project/go-libp2p2 (v0.35.3 -> v0.35.4)
  • ref-fvm4 (as part of filecoin-ffi) (4.2.0 -> 4.3.1)
  • A new github.com/filecoin-project/go-f3 dependency for F3 soft launch (v0.0.5)

Others

  • Soft launch of F3 (#12119)
  • NI-PoRep changes (#12130)
  • Fixes for the ETH events API (#12080)
  • Support for legacy Ethereum transactions (#11969)
  • Ignore market balance after nv23 (#11976)
  • Add finality-related params for eth_getBlockByNumber (#12110)
  • rename Actor.Address to Actor.DelegatedAddress and only use it for f4 addresses (#12155)
  • feat:ec: integrate F3 dynamic manifest #12185
  • fix: f3: Fix F3 build parameters for testground target (#12189) (filecoin-project/lotus#12189)
  • fix: eth_getLogs: #12212
  • chore: lotus-shed: Add support for nv23 in migrate-state cmd #12172
  • feat: F3: Update go-f3, change the style of participation call #12196
  • chore: f3: Upgrade go mod F3 dependency to v0.0.3 tagged release #12216
  • fix: Eth Trace Block: nil access panic #12221
  • chore!: markets: remove stray unixfs constants, features and references #12217
  • chore: metrics: Upgrade to OpenTelemetry v1.28.0 #12223
  • fix: bug: Reduce log level in F3 message sending to Debug #12224
  • [skip changelog] chore: config: yet more lp2p removal from miner #12252
  • fix(store): correctly break weight ties based on smaller ticket #12253
  • fix: exchange bug #12275
  • chore: deps: Update GST, Filecoin-FFI and Actors to final versions NV23 #12276
  • metrics: f3: Set up otel metrics reporting to prometheus #12285
  • dep: f3: Update go-f3 to 0.0.7, enable it on mainnet
  • fix: lotus-miner: remove provecommit1 method #12251

v1.28.0 / 2024-07-23

Update on 2027-07-24 This release is retracted, please refer to v1.28.1 for more details

v1.27.2 / 2024-07-17

This is the stable release of Lotus v1.27.2. This will be an OPTIONAL Lotus release. It contains some improvements that are relevant for node operators that are using or serving eth_* RPC methods. It also contains an upgraded libp2p to v0.35.3 which is included in this release for additional testing of some fixes that may solve some connectivity problems experienced by some users (See libp2p/go-libp2p#2858 for more information).

☢️ Upgrade Warnings ☢️

  • This Lotus release includes some correctness improvements to the events subsystem, impacting RPC APIs including GetActorEventsRaw, SubscribeActorEventsRaw, eth_getLogs and the eth filter APIs. Part of these improvements involve an events database migration that may take some time to complete on nodes with extensive event databases. See filecoin-project/lotus#12080 for details.

Improvements

Dependencies

Contributors

Contributor Commits Lines ± Files Changed
Aarsh Shah 2 +424/-28 4
Steven Allen 1 +137/-0 3
Mikers 1 +63/-0 4
Phi-rjan 1 +10/-10 2
Peter Rabbitson 1 +4/-8 1
Hubert 1 +0/-1 1

v1.27.1 / 2024-06-24

This release, v1.27.1, is an OPTIONAL lotus release. It is HIGHLY RECOMMENDED for node operators that are building Filecoin index off lotus!

☢️ Upgrade Warnings ☢️

  • This Lotus release completely removes the Legacy Lotus/Lotus-Miner Markets sub-system from the codebase, which was announced to reach EOL on January 31, 2023.
  • The Curio Storage software, designed to simplify the setup and operation of storage providers, has moved to their own Github-repository: https://github.com/filecoin-project/curio.
  • The events subsystem includes some minor correctness fixes and performance improvements. Nodes operators running Lotus with events turned on (off by default) may experience some delay in initial start-up as a minor database migration takes place and the write-ahead log is compacted. See filecoin-project/lotus#11952 and filecoin-project/lotus#12090 for full details.

JSON-RPC 2.0 Specification Conformance

The JSON-RPC 2.0 specification requires that a "result" property be present in the case of no error from an API call. This release ensures that all API calls that return a result have a "result" property in the response. This is a behaviour change over Lotus v1.26 and will impact any API call that only has a single error return value, where no error has occurred.

For example, a successful WalletSetDefault in v1.26 would return:

{
  "jsonrpc": "2.0",
  "id": 1
}

As of this change, in conformance with the JSON-RPC 2.0 specification it will return:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

There is no change in the behaviour when a call returns an error, as the error object will still be present in the response.

New features

Improvements

Dependencies

Lotus-Miner / Curio related changes

Others

Contributors

Contributor Commits Lines ± Files Changed
Aarsh Shah 9 +5710/-35899 201
Łukasz Magiera 21 +1891/-33776 335
LexLuthr 9 +4916/-1637 107
Phi-rjan 9 +3544/-187 92
Rod Vagg 15 +2183/-479 164
Piotr Galar 6 +130/-2386 30
Andrew Jackson (Ajax) 6 +1072/-533 63
ZenGround0 1 +235/-13 3
Hubert Bugaj 3 +57/-37 5
Steven Allen 3 +25/-15 6
Peter Rabbitson 1 +16/-8 4
tomfees 1 +6/-6 5
imxyb 1 +6/-0 1
yumeiyin 1 +2/-2 2
galargh 1 +2/-2 1

v1.27.0 / 2024-05-27

This is an optional feature release of Lotus. Lotus v1.27.0 includes numerous improvements, bugfixes and enhancements for node operators, RPC- and ETH RPC-providers. This feature release also introduces Curio in a Beta release. Check out the Curio Beta release section for how you can get started with Curio.

☢️ Upgrade Warnings ☢️

  • This feature release drops the Raft cluster code experiment from the codebase. This Raft cluster never graduated beyond an experiment, had poor UX (e.g. no way to manage a running cluster, so it didn't provide High Availability), and pulled in a lot of heavy dependencies. We keep the multi-node RPC feature, it is not perfect, but it is useful.
  • Event Database: Two sequential migrations will adjust indexes without altering data or columns, ensuring minimal invasiveness when upgrading to this release. However, these migrations may be time-consuming for nodes with extensive event databases.

Indexers, RPC- and ETH RPC-providers improvements

This release includes a lot of improvements and fixes for indexers, RPC- and ETH RPC-providers. Specifically these PRs:

⭐️ Curio Beta Release ⭐️

Curio, the next generation of Lotus-Miner, also referred to as MinerV2! This release officially transitions Curio into beta and introduces a suite of powerful features designed to enhance your storage operations.

Highlights

  • Curio as MinerV2: Embrace the revolutionary upgrade from Lotus-Miner to Curio. This transition is not just a rebranding—it's an upgrade to a more robust, scalable, and user-friendly version.
  • High Availability: Curio is designed for high availability. You can run multiple instances of Curio nodes to handle similar type of tasks. The distributed scheduler and greedy worker design will ensure that tasks are completed on time despite most partial outages. You can safely update one of your Curio machines without disrupting the operation of the others.
  • Node Heartbeat: Each Curio node in a cluster must post a heartbeat message every 10 minutes in HarmonyDB updating its status. If a heartbeat is missed, the node is considered lost and all tasks can now be scheduled on remaining nodes.
  • Task Retry: Each task in Curio has a limit on how many times it should be tried before being declared lost. This ensures that Curio does not keep retrying bad tasks indefinitely. This safeguards against lost computation time and storage.
  • Polling: Curio avoids overloading nodes with a polling system. Nodes check for tasks they can handle, prioritizing idle nodes for even workload distribution.
  • Simple Configuration Management: The configuration is stored in the database in the forms of layers. These layers can be stacked on top of each other to create a final configuration. Users can reuse these layers to control the behavior of multiple machines without needing to maintain the configuration of each node. Start the binary with the appropriate flags to connect with YugabyteDB and specify which configuration layers to use to get desired behaviour.

Getting Started with Curio

cd lotus
git pull
make clean deps all
sudo make install

On your local-dev-net or calibrationnet lotus-miner machine, initiate:

curio guided-setup

Need More Info?

For detailed documentation and additional information on Curio:

Curio Overview <- insert link Visit the Curio Official Website insert link

❗Curio is in Beta state, and we recommend our users to run Curio in a testing environment or on the Calibration network for the time being.

New features

Improvements

Dependencies

Others

Contributors

Contributor Commits Lines ± Files Changed
Rod Vagg 20 +55315/-204 58
Łukasz Magiera 201 +16244/-6541 647
Andrew Jackson (Ajax) 53 +15293/-6764 394
Phi-rjan 6 +12669/-4521 221
LexLuthr 20 +5972/-2815 120
Steven Allen 22 +1626/-1264 77
Piotr Galar 9 +790/-412 33
Aayush Rajasekaran 4 +642/-509 12
Lee 1 +601/-533 9
qwdsds 3 +617/-510 11
Phi 11 +551/-83 32
Jiaying Wang 5 +433/-20 13
Masih H. Derkani 4 +350/-101 18
Aayush 4 +143/-76 17
Aarsh Shah 3 +63/-11 5
jennijuju 3 +22/-22 12
hunjixin 1 +21/-14 4
beck 2 +17/-17 2
tom123222 2 +28/-4 2
Ian Norden 1 +21/-1 1
ZenGround0 1 +3/-15 1
shuangcui 1 +7/-7 6
Vid Bregar 1 +7/-4 2
writegr 1 +5/-5 5
Nagaprasad V R 1 +9/-0 1
forcedebug 1 +4/-4 4
parthshah1 2 +6/-1 2
fuyangpengqi 1 +3/-3 3
Samuel Arogbonlo 1 +6/-0 2
GlacierWalrus 1 +0/-6 1
Aloxaf 1 +6/-0 2
Rob Quist 2 +2/-3 3
wersfeds 1 +2/-2 1
Jon 1 +2/-0 1
0x5459 1 +1/-0 1

v1.26.3 / 2024-04-22

This is a patch release that addresses high memory load concerns for the Lotus daemon in the coming network migration for network version 22, scheduled on epoch 3855360 - 2024-04-24 - 14:00:00Z.

If your Lotus daemon is running on a machine with less memory and swap than 160GB, you should upgrade to this patch release to ensure you do not encounter any Out-Of-Memory issues during the pre-migration.

v1.26.2 / 2024-04-08

This is a mandatory patch release for the Filecoin network version 22 mainnet upgrade, for all node operators.

There is an update in the upgrade epoch for nv22, you can read the full discussion in Slack here.

The new upgrade epoch is scheduled to be on epoch 3855360 - 2024-04-24 - 14:00:00Z. That means:

  • All mainnet node operators that have upgraded to v1.26.x, must upgrade to this patch release before 2024-04-11T14:00:00Z.
  • All mainnet node operators that are on a version lower the v1.26.x, must upgrade to this patch release before 2024-04-24T14:00:00Z.

This patch also includes fixes for node operators who want to index builtin-actor events after the nv22 upgrade. Specifically, it ensures the builtin actor event entries are ordered by insertion order when selected (#11834). It also includes a couple Lotus-Miner patch fixes, ensuring that SnapDeals works properly and are using the new ProveReplicaUpdate3 message after the network version 22 upgrade, ensuring that DDO-sectors has the correct sector expirations, as well as DDO-sector visibility in the lotus-miner sectors list cmd.

Upgrade Warnings

For users currently on a version of Lotus lower than v1.26.0, please note that this release requires a minimum Go version of v1.21.7 or higher to successfully build Lotus.

v1.26.x Inclusions

See the v1.26.0 release notes below for inclusions and notes on the v1.26.x series.

#v1260--2024-03-21

v1.26.1 / 2024-03-27

RETRACTED: Due to a change in network version 22 upgrade epoch, Lotus v1.26.1 should not be used prior to the new upgrade epoch. See v1.26.2 release notes above.

This is a patch release for the Calibration network user. The Calibration network is scheduled for an upgrade to include the two additional built-in actor events to ease the transition and observability of DDO for the ecosystem (#964 and #968).

The agreed-upon epoch between the Filecoin implementer team for the update is 1493854, corresponding to 2024-04-03T11:00:00Z. All Calibration network users need to upgrade to this patch release before that.

Lotus Mainnet Users: For users on the Mainnet, the Lotus v1.26.0 release already includes the aforementioned events in preparation for the Mainnet nv22 upgrade. Therefore, both v1.26.0 and v1.26.1 versions are suitable for use on the Mainnet for the coming network version 22 upgrade.

v1.26.0 / 2024-03-21

RETRACTED: Due to a change in network version 22 upgrade epoch, Lotus v1.26.0 should not be used prior to the new upgrade epoch. See v1.26.2 release notes above.

This is the stable release for the upcoming MANDATORY Filecoin network upgrade v22, codenamed Dragon 🐉, at epoch 3817920 - 2024-04-11 - 14:00:00Z

The Filecoin network version 22 delivers the following FIPs:

☢️ Upgrade Warnings ☢️

  • This release requires a minimum Go version of v1.21.7 or higher to successfully build Lotus.

v13 Builtin Actor Bundle

Builtin actor v13.0.0 is used for supporting this upgrade. Make sure that your lotus actor bundle matches the v13 actors manifest by running the following cli after upgrading:

lotus state actor-cids --network-version=22
Network Version: 22
Actor Version: 13

Manifest CID: bafy2bzacecdhvfmtirtojwhw2tyciu4jkbpsbk5g53oe24br27oy62sn4dc4e

Actor             CID  
account           bafk2bzacedxnbtlsqdk76fsfmnhyvsblwyfducerwwtp3mqtx2wbrvs5idl52
cron              bafk2bzacebbopddyn5csb3fsuhh2an4ttd23x6qnwixgohlirj5ahtcudphyc
datacap           bafk2bzaceah42tfnhd7xnztawgf46gbvc3m2gudoxshlba2ucmmo2vy67t7ci
eam               bafk2bzaceb23bhvvcjsth7cn7vp3gbaphrutsaz7v6hkls3ogotzs4bnhm4mk
ethaccount        bafk2bzaceautge6zhuy6jbj3uldwoxwhpywuon6z3xfvmdbzpbdribc6zzmei
evm               bafk2bzacedq6v2lyuhgywhlllwmudfj2zufzcauxcsvvd34m2ek5xr55mvh2q
init              bafk2bzacedr4xacm3fts4vilyeiacjr2hpmwzclyzulbdo24lrfxbtau2wbai
multisig          bafk2bzacecr5zqarfqak42xqcfeulsxlavcltawsx2fvc7zsjtby6ti4b3wqc
paymentchannel    bafk2bzacebntdhfmyc24e7tm52ggx5tnw4i3hrr3jmllsepv3mibez4hywsa2
placeholder       bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
reward            bafk2bzacedq4q2kwkruu4xm7rkyygumlbw2yt4nimna2ivea4qarvtkohnuwu
storagemarket     bafk2bzacebjtoltdviyznpj34hh5qp6u257jnnbjole5rhqfixm7ug3epvrfu
storageminer      bafk2bzacebf4rrqyk7gcfggggul6nfpzay7f2ordnkwm7z2wcf4mq6r7i77t2
storagepower      bafk2bzacecjy4dkulvxppg3ocbmeixe2wgg6yxoyjxrm4ko2fm3uhpvfvam6e
system            bafk2bzacecyf523quuq2kdjfdvyty446z2ounmamtgtgeqnr3ynlu5cqrlt6e
verifiedregistry  bafk2bzacedkxehp7y7iyukbcje3wbpqcvufisos6exatkanyrbotoecdkrbta

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

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:

  1. The Geth APIs are not implemented, only the OpenEthereum (Erigon, etc.) APIs.
  2. Block rewards are not (yet) included in the trace.
  3. Selfdestruct operations are not included in the trace.
  4. 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.

GetActorEventsRaw and SubscribeActorEventsRaw

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 GetActorEventsRaw and SubscribeActorEventsRaw 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 GetActorEventsRaw and SubscribeActorEventsRaw take a filter parameter which can optionally filter events on:

  • Addresses of the actor(s) emitting the event
  • Specific Fields within the event
  • FromHeight and ToHeight to filter events by block height
  • TipSetKey to restrict events contained within a specific tipset

GetActorEventsRaw provides a one-time query for actor events, while SubscribeActorEventsRaw 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.

A future Lotus release may include GetActorEvents and SubscribeActorEvents methods which will provide a more user-friendly interface to actor events, including deserialization of event data.

Events Configuration Changes

All configuration options previously under Fevm.Events are now in the top-level Events section along with the new Events.EnableActorEventsAPI option mentioned above. If you have non-default options in [Events] under [Fevm] in your configuration file, please move them to the top-level [Events].

While Fevm.Events.* options are deprecated and replaced by Events.*, any existing custom values will be respected if their new form isn't set, but a warning will be printed to standard error upon startup. Support for these deprecated options will be removed in a future Lotus release, so please migrate your configuration promptly.

GetAllClaims and GetAllAlocations

Additionally the methods GetAllAllocations and GetAllClaims has been added to the Lotus API. These methods lists all the available allocations and claims available in the actor state.

Lotus CLI

The filplus commands used for listing allocations and claims have been updated. If no argument is provided to the either command, they will list out all the allocations and claims in the verified registry actor. The output list columns have been modified to AllocationID and ClaimID instead of ID.

lotus filplus list-allocations --help
NAME:
   lotus filplus list-allocations - List allocations available in verified registry actor or made by a client if specified

USAGE:
   lotus filplus list-allocations [command options] clientAddress

OPTIONS:
   --expired   list only expired allocations (default: false)
   --json      output results in json format (default: false)
   --help, -h  show help


lotus filplus list-claims --help     
NAME:
   lotus filplus list-claims - List claims available in verified registry actor or made by provider if specified

USAGE:
   lotus filplus list-claims [command options] providerAddress

OPTIONS:
   --expired   list only expired claims (default: false)
   --help, -h  show help

Dependencies

Others

v1.25.2 / 2024-01-11

This is an optional but highly recommended feature release of Lotus, as it includes fixes for synchronizations issues that users have experienced. The feature release also introduces Lotus-Provider in its alpha testing phase, as well as the ability to call external PC2-binaries during the sealing process.

☢️ Upgrade Warnings ☢️

There are no upgrade warnings for this feature release.

⭐️ 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.
  • 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.
  • 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.
  • 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

Dependencies

Others

Contributors

Contributor Commits Lines ± Files Changed
Andrew Jackson (Ajax) 161 +24328/-12464 4148
Łukasz Magiera 99 +5238/-2690 260
Shrenuj Bansal 27 +3402/-1265 76
Fridrik Asmundsson 15 +1148/-307 58
Steven Allen 15 +674/-337 35
Ian Norden 1 +625/-3 4
Aarsh Shah 4 +227/-167 14
Phi 19 +190/-183 32
Aayush Rajasekaran 3 +291/-56 16
Mikers 2 +76/-262 19
Aayush 14 +111/-59 21
Friðrik Ásmundsson 1 +101/-1 2
Alejandro Criado-Pérez 1 +36/-36 27
Jie Hou 5 +36/-10 5
Florian RUEN 2 +24/-19 5
Phi-rjan 3 +20/-8 3
Icarus9913 1 +11/-11 6
Jiaying Wang 3 +8/-7 5
guangwu 1 +3/-10 2
Marten Seemann 1 +6/-6 2
simlecode 1 +0/-6 2
GlacierWalrus 2 +0/-5 2
Anton Evangelatov 1 +2/-2 1
Ales Dumikau 3 +2/-2 3
renran 1 +2/-1 1
Volker Mische 1 +1/-1 1
Icarus Wu 1 +1/-1 1
Hubert 1 +1/-1 1
Aloxaf 1 +1/-1 1
Alejandro 1 +1/-1 1
lazavikmaria 1 +1/-0 1

v1.25.1 / 2023-12-09

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

v 1.25.0 / 2023-11-22

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 and v12 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

Improvements

Dependencies

Others

1.24.0 / 2023-11-22

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:

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 205 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:

  1. lotus chain head | head -n1
  2. Stop Lotus daemon
  3. ./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.

New features

Improvements

Dependencies

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.23.3 / 2023-08-01

This feature release of Lotus includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.

This feature release requires a minimum Go version of v1.19.12 or higher to successfully build Lotus. Go version 1.20 is also supported, but 1.21 is NOT.

Highlights

  • Lotus now includes a Slasher tool to monitor the network for Consensus Faults, and report them as appropriate
    • The Slasher investigates all incoming blocks, and assesses whether they trigger any of the three Consensus Faults defined in the Filecoin protocol
    • If any faults are detected, the Slasher sends a ReportConsensusFault message to the faulty miner
    • For more information on the Slasher, including how to run it, please find the documentation here
  • The Ethereum-like RPC exposed by Lotus is now compatible with EIP-1898: #10815
  • The lotus-miner PieceReader now supports parallel reads: #10913
  • Added new environment variable LOTUS_EXEC_TRACE_CACHE_SIZE to configure execution trace cache size (filecoin-project/lotus#10585)
    • If unset, we default to caching 16 most recent execution traces. Storage Providers may want to set this to 0, while exchanges may want to crank it up.

New features

Improvements && Bug Fixes

v1.23.2 / 2023-06-28

This is a patch release on top of 1.23.1 containing the fix for #10906 This fixes the syncing issue seen by many node operators/SPs, usually when performing actions which would result in msgs staying in their mpool for longer periods of time (ex. PSD) resulting in these msgs being republished multiple times and possibly lowering your peer scores. Please refer to the above issue for more details. We'd recommend everyone to accept this fix to better overall network health

Improvements

  • fix: pubsub: do not treat ErrExistingNonce as Reject

v1.23.1 / 2023-06-20

This is an optional feature release of Lotus. This feature release includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.

☢️ Upgrade Warnings ☢️

If you are upgrading to this release candidate from Lotus v1.22.1, please make sure to read the upgrade warnings section in the v1.23.0 release first.

  • Storage providers: The Lotus-Miner legacy-markets has been disbled by default in this feature release and will be removed in the near term future. Users are adviced to migrate to Boost or other SP markets systems.

Highlights

🛣 Execution Lanes 🛣 This feature release introduces VM Execution Lanes! Execution lanes efficiently divide the workload between system processes (chainsync) and RPC requests. This way syncing the chain will not be at the mercy of responding to users' requests and RPC providers nodes should have less problems catching up.

To take advantage of VM Execution Lanes, you need to set up two environment variables:

  • LOTUS_FVM_CONCURRENCY - read more about how this value should be set to here
  • LOTUS_FVM_CONCURRENCY_RESERVED = 4

🧱 Aggregation / Batching fixes 🔨

Numerous aggregation and batching fixes has been included in the feature release. Large ProveCommitAggregate and PreCommitBatching messages that exceeds the block limit will now automatically be split into smaller messages when sent to the chain.

Additionally we have added a new feature that staggers the amount of ProveCommit messages sent simulatanously to the chain if a storage provider has been aggregating many sectors in ProveCommitAggregate message, but at the time of publishing the BaseFee is below the aggregation threshold. This stagger feature prevents issues where some of the ProveCommit messages fail with the SysErrorOutOfGas message. You can tweak how many messages will be staggered per epoch by changing MaxSectorProveCommitsSubmittedPerEpoch in the sealing section of the config.toml file.

NB: While these fixes are great for the reliability of aggregation and batching on the Lotus side, it has been uncovered that aggregating ProveCommit messages for sectors containing verified deals are currently more expensive then single messages due to an issue on the actors side. We therefore do not reccomend our users to aggregate ProveCommit messages when doing verified deals until that issue has been resolved. You can follow the discussion on resolving the issue on the actors side here.

Unsealing CLI/API

This feature release adds a dedicated lotus-miner sectors unseal command and API, allowing you to unseal specific sealed sectors easily.

New features

  • feat: VM Execution Lanes (filecoin-project/lotus#10551)
    • Adds VM exections lanes, efficiently dividing the workload between system processes and RPC-requests.
  • Add API and CLI to unseal sector (#10626) (filecoin-project/lotus#10626)
    • Adds lotus-miner sectors unseal cmd, and a API-method to unseal a sector.
  • feat: sealing: Split PCA/PCB batches if gas used exceeds block limit (filecoin-project/lotus#10647)
    • Splits ProveCommitAggregate and PreCommitBatch messages into multiple messages if the message exceeds the block limit.
  • Add feature to stagger sector prove commit submission (#10543) (filecoin-project/lotus#10543)
    • Staggers the amount of ProveCommit messages sent simultanously if a storage provider has been aggregating many message, but at the moment of publishing the BaseFee is below the threshold for aggregation to prevent unwanted SysErrorOutOfGas issues.
  • Set default for MaxSectorProveCommitsSubmittedPerEpoch (filecoin-project/lotus#10728)
    • Sets the default amount of ProveCommits submitted per epoch to 20.
  • feat: worker: Ensure tempdir exists (#10433) (filecoin-project/lotus#10433)
    • Ensures that a temporary directory exists on start of a lotus-worker with a custom TMPDIR set.
  • feat: sync: harden chain sync (#10756) (filecoin-project/lotus#10756)
  • feat: populate the index on snapshot import (filecoin-project/lotus#10556)
  • feat:chain: Message Index (HIGHLY EXPERIMENTAL) (filecoin-project/lotus#10452)
    • MVP of a message index that allows us to accelrate StateSearchMessage and related functionality, and eventually accelerate critical chain calls (follow up).
  • feat: Add small cache to execution traces (filecoin-project/lotus#10517)
  • feat: shed: incoming block-sub chainwatch tool (filecoin-project/lotus#10513)

Improvements

Dependencies

Others

Contributors

Contributor Commits Lines ± Files Changed
vyzo 70 +1990/-429 135
Alfonso de la Rocha 25 +814/-299 56
Steven Allen 14 +125/-539 28
Shrenuj Bansal 13 +482/-138 52
Aayush 17 +317/-301 90
Łukasz Magiera 13 +564/-26 16
Jennifer Wang 7 +401/-140 10
Fridrik Asmundsson 14 +315/-84 20
Jorropo 2 +139/-137 74
Mikers 6 +114/-43 14
Hector Sanjuan 5 +92/-44 5
Ales Dumikau 1 +117/-0 10
Mike Seiler 4 +51/-51 6
zenground0 6 +33/-25 8
Phi 8 +32/-10 10
Aayush Rajasekaran 1 +1/-32 2
Ian Davis 2 +7/-10 3
Marcel Telka 1 +5/-7 1
ychiao 1 +8/-3 2
jennijuju 1 +4/-4 8
adlrocha 2 +2/-2 2
Jiaying Wang 1 +0/-4 1
ZenGround0 1 +2/-1 2
Zeng Li 1 +1/-1 1

v1.23.0 / 2023-04-21

This is the stable feature release for the upcoming MANDATORY network upgrade at 2023-04-27T13:00:00Z, epoch 2809800. This feature release delivers the nv19 Lighting and nv20 Thunder network upgrade for mainnet, and includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers.

☢️ Upgrade Warnings ☢️

Please read carefully through the upgrade warnings section if you are upgrading from a v1.20.X release, or the v1.22.0 release. If you are upgrading from a v1.21.0-rcX these warnings should be familiar to you.

  • Starting from this release, the SplitStore feature is automatically activated on new nodes. However, for existing Lotus users, you need to explicitly configure SplitStore by uncommenting the EnableSplitstore option in your config.toml file. To enable SplitStore, set EnableSplitstore=true, and to disable it, set EnableSplitstore=false. It's important to note that your Lotus node will not start unless this configuration is properly set. Set it to false if you are running a full archival node!
  • This feature release requires a minimum Go version of v1.19.7 or higher to successfully build Lotus. Additionally, Go version v1.20 and higher is now also supported.
  • Storage Providers: The proofs libraries now have CUDA enabled by default, which requires you to install CUDA if you haven't already done so. If you prefer to use OpenCL on your GPUs instead, you can use the FFI_USE_OPENCL=1 flag when building from source. On the other hand, if you want to disable GPUs altogether, you can use the FFI_NO_GPU=1 environment variable when building from source.
  • Storage Providers: The lotus-miner sectors extend command has been refactored to the functionality of lotus-miner sectors renew.
  • Exchanges/Node operators/RPC-providers:: Execution traces (returned from lotus state exec-trace, lotus state replay, etc.), has changed to account for changes introduced by the by the FVM. Please make sure to read the Execution trace format change section carefully, as these are interface breaking changes
  • Syncing issues: If you have been struggling with syncing issues in normal operations you can try to adjust the amount of threads used for more concurrent FMV execution through via the LOTUS_FVM_CONCURRENCY enviroment variable. It is set to 4 threads by default. Recommended formula for concurrency == YOUR_RAM/4 , but max during a network upgrade is 24. If you are a Storage Provider and are pushing many messages within a short period of time, exporting LOTUS_SKIP_APPLY_TS_MESSAGE_CALL_WITH_GAS=1 will also help with keeping in sync.
  • Catching up from a Snapshot: Users have noticed that catching up sync from a snapshot is taking a lot longer these day. This is largely related to the built-in market actor consuming a lot of computational demand for block validation. A FIP for a short-term mitigation for this is currently in Last Call and will be included network version 19 upgrade if accepted. You can read the FIP here.

Highlights

Execution Trace Format Changes

Execution traces (returned from lotus state exec-trace, lotus state replay, etc.), has changed to account for changes introduced by the FVM. Specifically:

  • The Msg field no longer matches the Filecoin message format as many of the message fields didn't make sense in on-chain sub-calls. Instead, it now has the fields To, From, Value, Method, Params, and ParamsCodec where ParamsCodec is a new field indicating the IPLD codec of the parameters.
    • Importantly, the Msg.CID field has been removed. This field is still present in top-level invocation results, just not inside the execution trace itself.
  • The MsgRct field no longer includes a GasUsed field and now has a ReturnCodec field to indicating the IPLD codec of the return value.
  • The Error and Duration fields have been removed as these are not set by the FVM. The top-level message "invocation result" retains the Error and Duration fields, they've only been removed from the trace itself.
  • Gas Charges no longer include "virtual" gas fields (those starting with v...) or source location information (loc) as neither field is set by the FVM.

A note on "codecs": FVM parameters and return values are IPLD blocks where the "codec" specifies the data encoding. The codec will generally be one of:

  • 0x51, 0x71 - CBOR or DagCBOR. You should generally treat these as equivalent.
  • 0x55 - Raw bytes.
  • 0x00 - Nothing. If the codec is 0x00, the parameter and/or return value should be empty and should be treated as "void" (not specified).
Old ExecutionTrace:
{
  "Msg": {
    "Version": 0,
    "To": "f01234",
    "From": "f04321",
    "Nonce": 1,
    "Value": "0",
    "GasLimit": 0,
    "GasFeeCap": "1234",
    "GasPremium": "1234",
    "Method": 42,
    "Params": "<base64-data-or-null>",
    "CID": {
        "/": "bafyxyz....."
    },
  },
  "MsgRct": {
    "ExitCode": 0,
    "Return": "<base64-data-or-null>",
    "GasUsed": 12345,
  },
  "Error": "",
  "Duration": 568191845,
  "GasCharges": [
    {
      "Name": "OnMethodInvocation",
      "loc": null,
      "tg": 23856,
      "cg": 23856,
      "sg": 0,
      "vtg": 0,
      "vcg": 0,
      "vsg": 0,
      "tt": 0
    },
    {
      "Name": "wasm_exec",
      "loc": null,
      "tg": 1764,
      "cg": 1764,
      "sg": 0,
      "vtg": 0,
      "vcg": 0,
      "vsg": 0,
      "tt": 0
    },
    {
      "Name": "OnSyscall",
      "loc": null,
      "tg": 14000,
      "cg": 14000,
      "sg": 0,
      "vtg": 0,
      "vcg": 0,
      "vsg": 0,
      "tt": 0
    },
  ],
  "Subcalls": [
    {
      "Msg": { },
      "MsgRct": { },
      "Error": "",
      "Duration": 1235,
      "GasCharges": [],
      "Subcalls": [],
    },
  ]
}
New ExecutionTrace:
{
  "Msg": {
    "To": "f01234",
    "From": "f04321",
    "Value": "0",
    "Method": 42,
    "Params": "<base64-data-or-null>",
    "ParamsCodec": 81
  },
  "MsgRct": {
    "ExitCode": 0,
    "Return": "<base64-data-or-null>",
    "ReturnCodec": 81
  },
  "GasCharges": [
    {
      "Name": "OnMethodInvocation",
      "loc": null,
      "tg": 23856,
      "cg": 23856,
      "tt": 0
    },
    {
      "Name": "wasm_exec",
      "loc": null,
      "tg": 1764,
      "cg": 1764,
      "sg": 0,
      "tt": 0
    },
    {
      "Name": "OnSyscall",
      "loc": null,
      "tg": 14000,
      "cg": 14000,
      "sg": 0,
      "tt": 0
    },
  ],
  "Subcalls": [
    {
      "Msg": { },
      "MsgRct": { },
      "GasCharges": [],
      "Subcalls": [],
    },
  ]
}

SplitStore

This feature release introduces numerous improvements and fixes to tackle SplitStore related issues that has been reported. With this feature release SplitStore is automatically activated by default on new nodes. However, for existing Lotus users, you need to explicitly configure SplitStore by uncommenting the EnableSplitstore option in your config.toml file. To enable SplitStore, set EnableSplitstore=true, and to disable it, set EnableSplitstore=false. It's important to note that your Lotus node will not start unless this configuration is properly set. Set it to false if you are running a full archival node!

SplitStore also has some new configuration settings that you can set in your config.toml file:

  • HotstoreMaxSpaceTarget suggests the max allowed space (in bytes) the hotstore can take.
  • HotstoreMaxSpaceThreshold a moving GC will be triggered when total moving size exceeds this threshold (in bytes).
  • HotstoreMaxSpaceSafetyBuffer a safety buffer to prevent moving GC from an overflowing disk.

The SplitStore also has two new commands:

  • lotus chain prune hot is a much less resource-intensive GC and is best suited for situations where you don't have the spare disk space for a full GC.
  • lotus chain prune hot-moving will run a full moving garbage collection of the hotstore. This commands create a new hotstore before deleting the old one so you need working room in the hotstore directory. The current size of a fully GC'd hotstore is around 295 GiB so you need to make sure you have at least that available.

You can read more about the new SplitStore commands in the documentation.

RPC API improvements

This feature release includes all the RPC API improvements made in the Lotus v1.20.x patch releases. It includes an updated FFI that sets the FVM parallelism to 4 by default.

Node operators with higher memory specs can experiment with setting LOTUS_FVM_CONCURRENCY to higher values, up to 48, to allow for more concurrent FVM execution.

Experimental scheduler assigners

In this release there are four new expirmental scheduler assigners:

  • The experiment-spread-qcount - similar to the spread assigner but also takes into account task counts which are in running/preparing/queued states.
  • The experiment-spread-tasks - similar to the spread assigner, but counts running tasks on a per-task-type basis
  • The experiment-spread-tasks-qcount - similar to the spread assigner, but also takes into account task counts which are in running/preparing/queued states, as well as counting running tasks on a per-task-type basis. Check the results for this assigner on (storage-only lotus-workers here).
  • The experiment-random - In each schedule loop the assinger figures a set of all workers which can handle the task and then picks a random one. Check the results for this assigner on (storage-only lotus-workers here).

Graceful shutdown of lotus-workers We have cleaned up some commands in the lotus-worker to make it less confusing how to gracefully shutting down a lotus-worker while there are incoming sealing tasks in the pipeline. To shut down a lotus-worker gracefully:

  1. lotus-worker tasks disable --all and wait for the worker to finish processing its current tasks.
  2. lotus-worker stop to detach it and do maintenance/upgrades.

CLI speedups

The lotus-miner sector list is now running in parallel - which should speed up the process from anywhere between 2x-10x+. You can tune it additionally with the check-parallelism option in the command. The Lotus-Miner info command also has a large speed improvement, as calls to the lotus legacy market has been removed.

New features

  • feat: splitstore: Pause compaction when out of sync (filecoin-project/lotus/#10641)
    • Pause the SplitStore compaction if the node is out of sync. Resumes the compation when its back in sync.
  • feat: splitstore: limit moving gc threads (#10621) (filecoin-project/lotus/#10621)
    • Makes moving gc less likely to cause node falling out of sync.
  • feat: splitstore: Update config default value (#10605) (filecoin-project/lotus/#10605)
    • Sets Splitstore HotStoreMaxSpaceTarget config to 650GB as default
  • feat: splitstore: Splitstore enabled by default (#10429) (filecoin-project/lotus#10429)
    • Enables SplitStore by default on new Lotus nodes. Existing Lotus users need to explicitly configure
  • feat: splitstore: Configure max space used by hotstore and GC makes best effort to respect (filecoin-project/lotus#10391)
    • Adds three new configs for setting the maximum allowed space the hotstore can take.
  • feat: splitstore: Badger GC of hotstore command (filecoin-project/lotus#10387)
    • Adds a lotus chain prune hot command, to run the garbage collection of the hotstore in a user driven way.
  • feat: sched: Assigner experiments (filecoin-project/lotus#10356)
    • Introduces experimental scheduler assigners that works better for setups that uses storage-only lotus-workers.
  • fix: wdpost: disabled post worker handling (filecoin-project/lotus#10394)
    • Improved scheduling logic for Proof-of-SpaceTime workers.
  • feat: cli: list claims and remove expired claims (filecoin-project/lotus#9875)
    • Adds a command to list claims made by a provider lotus filplus list-claims. And lotus filplus remove-expired-claims to remove expired claims.
  • feat: cli: make sectors list much faster (filecoin-project/lotus#10202)
    • Makes lotus-miner sector list checks run in parallel.
  • feat: cli: Add an EVM command to fetch a contract's bytecode (filecoin-project/lotus#10443)
    • Adds an lotus evm bytecode command to fetch a contract's bytecode.
  • feat: mempool: Reduce minimum replace fee from 1.25x to 1.1x (#10416) (filecoin-project/lotus#10416)
    • Reduces replacement message fee logic to help include update message replacements from developers using Ethereum tools like MetaMask.
  • feat: update renew-sectors with FIP-0045 logic (filecoin-project/lotus#10328)
    • Updates the lotus-miner sectors extend with FIP-0045 logic to include the ability to drop claims and set the maximum number of messages contained in a message.
  • feat: IPC: Abstract common consensus functions and consensus interface (filecoin-project/lotus#9481)
    • Add eudico's consensus interface to Lotus and implement EC behind that interface. This abstraction is the stepping-stone for Mir's integration.
  • fix: worker: add all tasks flag (filecoin-project/lotus#10232)
    • Adds an all flag for the lotus-worker tasks enable/disable cmds.
  • feat:shed:add cid to cbor serialization command (filecoin-project/lotus#10032)
    • Adds two lotus-shed commands, lotus-shed cid bytes and lotus-shed cid cbor to serialize cid to cbor and cid to bytes.
  • feat: add toolshed commands to inspect statetree size (filecoin-project/lotus#9982)
    • Adds two commands, lotus-shed stat-actor and lotus-shed stat-obj that work with an offline lotus repo to report dag size stats.
  • feat: shed: encode address to bytes (filecoin-project/lotus#10105)
    • Adds a lotus-shed address encode for encoding a filecoin address to hex bytes.
  • feat: chain: export-range (filecoin-project/lotus#10145)
    • Adds a lotus chain export-range command that can create archival-grade ranged exports of the chain as quickly as possible.
  • feat: stmgr: cache migrated stateroots (filecoin-project/lotus#10282)
    • Cache network migration results to avoid running migrations twice.
  • feat: shed: Add a tool to read data from sectors (filecoin-project/lotus#10169)
    • Adds a lotus-shed sectors read command that extract data from sectors from a running lotus-miner deployment.
  • feat: cli: Refactor renew and remove extend (filecoin-project/lotus#9920)
    • Refactors the lotus-miner sectors extend command to have the functionality of lotus-miner sectors renew. The lotus-miner sectors renew command has been deprecated.
  • feat: shed: Add beneficiary commands (filecoin-project/lotus#10037)
    • Adds the beneficiary address command to lotus-shed. You can now use lotus-shed actor propose-change-beneficiary and lotus-shed actor confirm-change-beneficiary to change beneficiary addresses.

Improvements

Dependencies

Others

Contributors

Contributor Commits Lines ± Files Changed
Hannah Howard 2 +2909/-6026 84
Łukasz Magiera 42 +2967/-1848 95
Steven Allen 20 +1703/-1345 88
Alfonso de la Rocha 17 +823/-1808 86
Peter Rabbitson 9 +1957/-219 34
Geoff Stuart 12 +818/-848 29
hannahhoward 5 +507/-718 36
Hector Sanjuan 6 +443/-726 35
Kevin Li 1 +1124/-14 22
zenground0 30 +791/-269 88
frrist 1 +992/-16 13
Travis Person 4 +837/-53 24
Phi 20 +622/-254 34
Ian Davis 7 +35/-729 20
Aayush 10 +378/-177 40
Raúl Kripalani 15 +207/-138 19
Arsenii Petrovich 7 +248/-94 30
ZenGround0 5 +238/-39 15
Neel Virdy 1 +109/-107 58
ychiao 1 +135/-39 3
Jorropo 2 +87/-82 67
Marten Seemann 8 +69/-64 17
Rod Vagg 1 +55/-16 3
Masih H. Derkani 3 +39/-27 12
raulk 2 +30/-29 5
dependabot[bot] 4 +37/-17 8
beck 2 +38/-2 2
Jennifer Wang 4 +20/-19 19
Richard Guan 3 +28/-8 5
omahs 7 +14/-14 7
dirkmc 2 +19/-7 6
David Choi 2 +16/-5 2
Mike Greenberg 1 +18/-1 1
Adin Schmahmann 1 +19/-0 2
Phi-rjan 5 +12/-4 5
Dirk McCormick 2 +6/-6 3
Aayush Rajasekaran 2 +9/-3 2
Jiaying Wang 5 +6/-4 5
Anjor Kanekar 1 +5/-5 1
vyzo 1 +3/-3 2
0x5459 1 +1/-1 1

v1.22.1 / 2023-04-23

Important Notice

This is a MANDATORY hotfix release that fixes a consensus-critical bug that was in v1.22.0 -- the necessary fix is filecoin-project/ref-fvm#1750 and it is integrated into lotus via #10735. You can NOT use 1.22.0 for the nv19 upgrade, you MUST be on 1.22.1 or higher.

About This Release

This is the stable release of Lotus v1.22.1 for the upcoming MANDATORY network upgrade at 2023-04-27T13:00:00Z, epoch 2809800. This release delivers the nv19 Lighting and nv20 Thunder network upgrade for mainnet.

Note that you must be on a go version higher than Go 1.18.8, but lower than Go v1.20.0. We would recommend Go 1.19.7.

The Lighting and Thunder upgrade introduces the following Filecoin Improvement Proposals (FIPs), delivered by builtin-actors v11 (see actors v11.0.0):

  • FIP 0060 - Thirty day market deal maintenance interval
  • FIP 0061 - WindowPoSt grindability fix
  • FIP 0062 - Fallback method handler for multisig actor

Expedited nv19 Lightning ⚡️ rollout

In light of the recent degraded chain quality on the mainnet an expedited nv19 upgrade has been proposed and accepted to roll out the market cron mitigation (FIP0060) that will improve block validation times, and with that the delay in block production that is causing a decrease in the chain quality currently.

With this expedited roll out we want to inform you of some key changes and important dates:

The Lighting and Thunder upgrade now implements the following Filecoin Improvement Proposals (FIPs), delivered by builtin-actors v11 (see actors v11.0.0):

  • FIP 0060 - Thirty day market deal maintenance interval
  • FIP 0061 - WindowPoSt grindability fix
  • FIP 0062 - Fallback method handler for multisig actor

v11 Builtin Actor Bundles

Make sure that your lotus actor bundle matches the v11 actors manifest by running after upgrading:

lotus state actor-cids --network-version 19
Network Version: 19
Actor Version: 11
Manifest CID: bafy2bzacecnhaiwcrpyjvzl4uv4q3jzoif26okl3m66q3cijp3dfwlcxwztwo

Actor             CID  
datacap           bafk2bzacebslykoyrb2hm7aacjngqgd5n2wmeii2goadrs5zaya3pvdf6pdnq
init              bafk2bzaceckwf3w6n2nw6eh77ktmsxqgsvshonvgnyk5q5syyngtetxvasfxg
reward            bafk2bzacebwjw2vxkobs7r2kwjdqqb42h2kucyuk6flbnyzw4odg5s4mogamo
cron              bafk2bzacebpewdvvgt6tk2o2u4rcovdgym67tadiis5usemlbejg7k3kt567o
ethaccount        bafk2bzaceclkmc4yidxc6lgcjpfypbde2eddnevcveo4j5kmh4ek6inqysz2k
evm               bafk2bzacediwh6etwzwmb5pivtclpdplewdjzphouwqpppce6opisjv2fjqfe
storagemarket     bafk2bzaceazu2j2zu4p24tr22btnqzkhzjvyjltlvsagaj6w3syevikeb5d7m
storagepower      bafk2bzaceaxgloxuzg35vu7l7tohdgaq2frsfp4ejmuo7tkoxjp5zqrze6sf4
system            bafk2bzaced7npe5mt5nh72jxr2igi2sofoa7gedt4w6kueeke7i3xxugqpjfm
account           bafk2bzacealnlr7st6lkwoh6wxpf2hnrlex5sknaopgmkr2tuhg7vmbfy45so
placeholder       bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
eam               bafk2bzaceaelwt4yfsfvsu3pa3miwalsvy3cfkcjvmt4sqoeopsppnrmj2mf2
multisig          bafk2bzaceafajceqwg5ybiz7xw6rxammuirkgtuv625gzaehsqfprm4bazjmk
paymentchannel    bafk2bzaceb4e6cnsnviegmqvsmoxzncruvhra54piq7bwiqfqevle6oob2gvo
storageminer      bafk2bzacec24okjqrp7c7rj3hbrs5ez5apvwah2ruka6haesgfngf37mhk6us
verifiedregistry  bafk2bzacedej3dnr62g2je2abmyjg3xqv4otvh6e26du5fcrhvw7zgcaaez3a

Changelog

Dependencies

github.com/filecoin-project/go-state-types (v0.11.0-rc1 -> v0.11.1):

v1.22.0 / 2023-04-21

EDIT: Do NOT use this release for nv19, you MUST use v1.22.1 or higher.

This is the stable release of Lotus v1.22.0 for the upcoming MANDATORY network upgrade at 2023-04-27T13:00:00Z, epoch 2809800. This release delivers the nv19 Lighting and nv20 Thunder network upgrade for mainnet.

Note that you must be on a go version higher then Go 1.18.8, but lower then Go v1.20.0. We would recommend Go 1.19.7.

The Lighting and Thunder upgrade introduces the following Filecoin Improvement Proposals (FIPs), delivered by builtin-actors v11 (see actors v11.0.0):

  • FIP 0060 - Thirty day market deal maintenance interval
  • FIP 0061 - WindowPoSt grindability fix
  • FIP 0062 - Fallback method handler for multisig actor

Expedited nv19 Lightning ⚡️ rollout

In light of the recent degraded chain quality on the mainnet an expedited nv19 upgrade has been proposed and accepted to roll out the market cron mitigation (FIP0060) that will improve block validation times, and with that the delay in block production that is causing a decrease in the chain quality currently.

With this expedited roll out we want to inform you of some key changes and important dates:

The Lighting and Thunder upgrade now implements the following Filecoin Improvement Proposals (FIPs), delivered by builtin-actors v11 (see actors v11.0.0):

  • FIP 0060 - Thirty day market deal maintenance interval
  • FIP 0061 - WindowPoSt grindability fix
  • FIP 0062 - Fallback method handler for multisig actor

v11 Builtin Actor Bundles

Make sure that your lotus actor bundle matches the v11 actors manifest by running after upgrading:

lotus state actor-cids --network-version 19
Network Version: 19
Actor Version: 11
Manifest CID: bafy2bzacecnhaiwcrpyjvzl4uv4q3jzoif26okl3m66q3cijp3dfwlcxwztwo

Actor             CID  
datacap           bafk2bzacebslykoyrb2hm7aacjngqgd5n2wmeii2goadrs5zaya3pvdf6pdnq
init              bafk2bzaceckwf3w6n2nw6eh77ktmsxqgsvshonvgnyk5q5syyngtetxvasfxg
reward            bafk2bzacebwjw2vxkobs7r2kwjdqqb42h2kucyuk6flbnyzw4odg5s4mogamo
cron              bafk2bzacebpewdvvgt6tk2o2u4rcovdgym67tadiis5usemlbejg7k3kt567o
ethaccount        bafk2bzaceclkmc4yidxc6lgcjpfypbde2eddnevcveo4j5kmh4ek6inqysz2k
evm               bafk2bzacediwh6etwzwmb5pivtclpdplewdjzphouwqpppce6opisjv2fjqfe
storagemarket     bafk2bzaceazu2j2zu4p24tr22btnqzkhzjvyjltlvsagaj6w3syevikeb5d7m
storagepower      bafk2bzaceaxgloxuzg35vu7l7tohdgaq2frsfp4ejmuo7tkoxjp5zqrze6sf4
system            bafk2bzaced7npe5mt5nh72jxr2igi2sofoa7gedt4w6kueeke7i3xxugqpjfm
account           bafk2bzacealnlr7st6lkwoh6wxpf2hnrlex5sknaopgmkr2tuhg7vmbfy45so
placeholder       bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro
eam               bafk2bzaceaelwt4yfsfvsu3pa3miwalsvy3cfkcjvmt4sqoeopsppnrmj2mf2
multisig          bafk2bzaceafajceqwg5ybiz7xw6rxammuirkgtuv625gzaehsqfprm4bazjmk
paymentchannel    bafk2bzaceb4e6cnsnviegmqvsmoxzncruvhra54piq7bwiqfqevle6oob2gvo
storageminer      bafk2bzacec24okjqrp7c7rj3hbrs5ez5apvwah2ruka6haesgfngf37mhk6us
verifiedregistry  bafk2bzacedej3dnr62g2je2abmyjg3xqv4otvh6e26du5fcrhvw7zgcaaez3a

Changelog

Dependencies

github.com/filecoin-project/go-state-types (v0.11.0-rc1 -> v0.11.1):

v1.20.4 / 2023-03-17

This is a patch release intended to alleviate performance issues reported by some users since the nv18 upgrade. The primary change is to update the FFI to allow for FVM parallelism of 4 by default, and make this user-configurable. through the LOTUS_FVM_CONCURRENCY env var.

Users with higher memory specs can experiment with setting LOTUS_FVM_CONCURRENCY to higher values, up to 48, to allow for more concurrent FVM execution.

Bug fixes

  • Splitstore: Don't enforce walking receipt tree during compaction #10505
  • fix: build: drop drand incentinet servers #10506

Improvement

  • chore: update ffi to increase execution parallelism #10503

v1.20.3 / 2023-03-09

A 🐈 stepped on the ⌨️ and made a mistake while resolving conflicts 😨. This releases only includes #10439 to fix that mistake. v1.20.2 is retracted - Please skip v1.20.2 and only update to v1.20.3!!!

Changelog

compare to v1.20.1

This is a HIGHLY RECOMMENDED patch release for node operators/API service providers that run ETH RPC service and an optional release for Storage Providers.

Bug fixes

  • fix: EthAPI: use StateCompute for feeHistory; apply minimum gas premium #10413
  • fix: eth API: return correct txIdx around null blocks #10419
  • fix: Eth API: make block parameter parsing sounder. #10427

Improvement

  • feat: Lotus Gateway: Add missing methods - master #10420
  • feat: mempool: Reduce minimum replace fee from 1.25x to 1.1x #10416
  • We recommend storage providers to update your nodes to this patch, that will help improve developers who use Ethereum tooling's experience.

v1.20.2 / 2023-03-09

DO NOT USE: Use 1.20.3 instead!

This is a HIGHLY RECOMMENDED patch release for node operators/API service providers that run ETH RPC service and an optional release for Storage Providers.

Bug fixes

  • fix: EthAPI: use StateCompute for feeHistory; apply minimum gas premium #10413
  • fix: eth API: return correct txIdx around null blocks #10419
  • fix: Eth API: make block parameter parsing sounder. #10427

Improvement

  • feat: Lotus Gateway: Add missing methods - master #10420
  • feat: mempool: Reduce minimum replace fee from 1.25x to 1.1x #10416
  • We recommend storage providers to update your nodes to this patch, that will help improve developers who use Ethereum tooling's experience.

v1.20.1 / 2023-03-06

This an optional patch releases for node operators/API service providers that run ETH RPC service.

Bug fixes

  • fix: EthAPI: Correctly get parent hash #10389
  • fix: EthAPI: Make newEthBlockFromFilecoinTipSet faster and correct #10380
  • fix: state: short-circuit genesis state computation

1.20.0 / 2023-02-28

This is a MANDATORY release of Lotus that delivers the Hygge network upgrade, introducing Filecoin network version 18. The centerpiece of the upgrade is the introduction of the Filecoin Virtual Machine (FVM)’s Milestone 2.1, which will allow for EVM-compatible contracts to be deployed on the Filecoin network. This upgrade delivers user-programmablity to the Filecoin network for the first time!

The Filecoin mainnet is scheduled to upgrade to nv18 at epoch 2683348, on March 14th at 2023-03-14T15:14:00Z. All node operators, including storage providers, must upgrade to this release before that time. Storage providers must update their daemons, miners, market and worker(s)/boost. At the upgrade, a short migration will run that converts code actors v9 code CIDs to v10 CIDs, and installs the new Ethereum Address Manager singleton (see below). This is expected to be a lightweight migration that causes no service disruption.

The Hygge upgrade introduces the following Filecoin Improvement Proposals (FIPs), delivered in FVM3 (see FVM v3.0.0) and builtin-actors v10 (see actors v10.0.0):

  • FIP-0048: f4 Address Class
  • FIP-0049: Actor events
  • FIP-0050: API between user-programmed actors and built-in actors
  • FIP-0054: Filecoin EVM runtime (FEVM)
  • FIP-0055: Supporting Ethereum Accounts, Addresses, and Transactions
  • FIP-0057: Update gas charging schedule and system limits for FEVM

Filecoin Ethereum Virtual Machine (FEVM)

The Filecoin Ethereum Virtual Machine (FEVM) is built on top of the WASM-based execution environment introduced in the Skyr v16 upgrade. The chief feature introduced is the ability for anyone participating in the Filecoin network to deploy their own EVM-compatible contracts onto the blockchain, and invoke them as appropriate.

New Built-in Actors

The FEVM is principally delivered through the introduction of the new EVM actor. This actor “represents” smart contracts on the Filecoin network, and includes an interpreter that implements all EVM opcodes as their Filecoin equivalents, and translates state I/O operations to be compatible with Filecoin’s IPLD-based data model. For more on the EVM actors, please see FIP-0054.

The creation of EVM actors is managed by the new Ethereum Address Manager actor (EAM), a singleton that is invoked in order to deploy EVM actors. In order to make usage of the FEVM as seamless as possible for users familiar with the Ethereum ecosystem, this upgrades also introduces a dedicated actor to serve as “Ethereum Accounts. This actor exists to allow for secp keys to be used in the Ethereum addressing scheme. The last new built-in actor introduced is the Placeholder actor, a thin “shell” of an actor that can transform into either EVM or EthAccount actors. For more on the EAM, EthAccount, and Placeholder actors, please see FIP-0055.

v10 Built-in actor bundles

Bundles for all networks (mainnet, calibnet, etc.) are included in the lotus source tree (build/actors/) and embedded on build, for v10 actors you can find it here. Reminder: Lotus verifies that the bundle CIDs are the right ones upon build & upgrade against the values in build/builtin_actors_gen.go, according to the network you are building. You may also check the bundle manifest CID matches the bundle gen-ed values by running lotus state actor-cids --network-version 18.

The manifest CID & full list of actor code CIDs for nv18 using actor v10 is:

"_manifest":        "bafy2bzacecsuyf7mmvrhkx2evng5gnz5canlnz2fdlzu2lvcgptiq2pzuovos"
"account":          "bafk2bzaceampw4romta75hyz5p4cqriypmpbgnkxncgxgqn6zptv5lsp2w2bo"
"cron":             "bafk2bzacedcbtsifegiu432m5tysjzkxkmoczxscb6hqpmrr6img7xzdbbs2g"
"datacap":          "bafk2bzacealj5uk7wixhvk7l5tnredtelralwnceafqq34nb2lbylhtuyo64u"
"eam":             "bafk2bzacedrpm5gbleh4xkyo2jvs7p5g6f34soa6dpv7ashcdgy676snsum6g"
"ethaccount":   "bafk2bzaceaqoc5zakbhjxn3jljc4lxnthllzunhdor7sxhwgmskvc6drqc3fa"
"evm":                "bafk2bzaceahmzdxhqsm7cu2mexusjp6frm7r4kdesvti3etv5evfqboos2j4g"
"init":                "bafk2bzaced2f5rhir3hbpqbz5ght7ohv2kgj42g5ykxrypuo2opxsup3ykwl6"
"multisig":         "bafk2bzaceduf3hayh63jnl4z2knxv7cnrdenoubni22fxersc4octlwpxpmy4"
"paymentchannel":   "bafk2bzaceartlg4mrbwgzcwric6mtvyawpbgx2xclo2vj27nna57nxynf3pgc"
"placeholder": "bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"
"reward":           "bafk2bzacebnhtaejfjtzymyfmbdrfmo7vgj3zsof6zlucbmkhrvcuotw5dxpq"
"storagemarket":    "bafk2bzaceclejwjtpu2dhw3qbx6ow7b4pmhwa7ocrbbiqwp36sq5yeg6jz2bc"
"storageminer":     "bafk2bzaced4h7noksockro7glnssz2jnmo2rpzd7dvnmfs4p24zx3h6gtx47s"
"storagepower":     "bafk2bzacec4ay4crzo73ypmh7o3fjendhbqrxake46bprabw67fvwjz5q6ixq"
"system":           "bafk2bzacedakk5nofebyup4m7nvx6djksfwhnxzrfuq4oyemhpl4lllaikr64"
"verifiedregistry": "bafk2bzacedfel6edzqpe5oujno7fog4i526go4dtcs6vwrdtbpy2xq6htvcg6"

Node Operators

FVM has been running in lotus since v1.16.0 and up, and the new FEVM does not increase any node hardware spec requirement.

With FEVM on Filecoin, we aim to provide full compatibility with the existing EVM ecosystem and its tooling out of the box. Consequently, lotus now provides a full set of Ethereum-styled APIs for developers and token holders to interact with the Filecoin network as well. For full documentation on this new tooling, please see the Lotus docs website.

Enabling Ethereum JSON RPC API

Note that Ethereum APIs are only supported in the lotus v1 API, meaning that any node operator who wants to enable Eth API services must be using the v1 API, instead of the v0 API. To enable Eth RPC, simply set EnableEthRPC to true in your node config.toml file; or set env var LOTUS_FEVM_ENABLEETHRPC to 1 before starting your lotus node.

Eth tx hash and Filecoin message CID

Most of the Eth APIs take Eth accounts and tx has as an input, and they start with 0x , and that is what Ethereum tooling support. However, in Filecoin, we have Filecoin account formats where things start with f (f410 specifically for eth accounts on Filecoin) and the messages are in the format of CIDs. To enable a smooth developer experience, Lotus internally converts between Ethereum address and Filecoin account address as needed. In addition, lotus also keeps a Eth tx hash <> Filecoin message CID map and stores them in a SQLite database as node sees a FEVM messages. The database is initiated and the maps are populated automatically in ~/<lotus_repo>/sqlite/txhash.db for any node that as Eth RPC enabled. Node operators can configure how many historical mappings they wanna store by configuring EthTxHashMappingLifetimeDays .

Events

FIP-0049 introduces actor events that can be emitted and externally observable during message execution. An events.db is created automatically under ~/<lotus_repo>/sqlite to store these events if the node has Eth RPC enabled. Node operators can configure the events support base on their needs by configuration Events configurations.

Note: All three features are new, and we welcome user feedback, please create an issue if you have any enhancements that you’d like to see!