v1.16.0-rc2
Pre-releaseThis is the second release candidate for the upcoming MANDATORY release of Lotus v1.16.0 that supports Filecoin network v16, codenamed the Skyr upgrade.
Filecoin nv16 upgrade will introduce non-programmable FVM(FVM m1) and switch the network from using go spec-actor to rust built-in actor. Full changelog will be published upon final release.
Mainnet nv16 Skyr Upgrade
This release candidate sets mainnet upgrade at epoch 1960320, 2022-07-06T14:00:00Z. The bundle that the network will be using is v8.0.0, manifest CID will be included upon final release.
Your lotus node will switch from the Legacy VM (that depended on go-based specs-actors) to FVM (that uses Rust-based builtin-actors) atomically upon the upgrade.
Calibration-net Upgrade
This release candidate sets the caibration-net upgrade at epoch 1044660, 2022-06-16T17:30:00Z. The bundle that the network should be using is v8.0.0-rc.1(located at build/actors/v8.tar.zst
) upon migration, manifest CID bafy2bzacedrdn6z3z7xz7lx4wll3tlgktirhllzqxb766dxpaqp3ukxsjfsba
.
Between rc2 & rc1
- We fixed a execution trace bug in ffi for implicit messages, and the execution trace should be more like legacy VM ones now!
- Your market node will now perform a light migration to migrate non-utf deal labels, as needed by FIP-0027.
🆕 Things you may wanna know
Built-in actor bundles
As the network introduces FVM, it's also switching from spec-actor (written in GoLang) to built-in actor (written in rust), in which the latter comes with importable bundles. This means, like filecoin proof parameters, node operators now also need to fetch the actor bundles according to the network versions for the nodes to remain operational.
In lotus v1.16.0-rc2, the bundles for all networks(mainnet, calibnet, and etc) are included in the lotus source tree (build/actors/
) and embedded on build.
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 16
.
(We will get into the CIDs more in the next section).
As you may have noticed, all bundles are also available at https://github.com/filecoin-project/builtin-actors/releases, thus you can also manually download the bundles and place them in the right path.
Note: use customized bundle will risk you to lose sync with the network!
Actor Code CIDs
If you have followed the conversation in FIP discussion Does the switch of CodeCIDs to real content-addressing impact you and FIP-0031- structure of the code cid, you should already know that from nv16, system actor code CIDs will be real content-addressing instead of being a static string like (fil/7/account)
/ (fil/8/storageminer)
.
For lotus users, we are making the change minimal for you. This means the CODE
output when you run lotus state get-actor
will now be the actual CID that represents the executable code for the actor, followed by wrapped synthetic id like the ones you've got before, i.e fil/8/system
.
Moreover, this also means that in the future, whenever the actor code changes, the CID will change accordingly, in which will result in a need for a network upgrade for the network participants to have consensus over what executable code we should use for each system actor.
Execution Trace
For developers that are dependent on lotus execution trace, you will need to enable LOTUS_VM_ENABLE_TRACING
envvar to get the exact execution trace response as before. Without the envvar enabled, Duration
and GasCharges
fields will be missing from the new FVM trace.