This is a MANDATORY release of Lotus that introduces Filecoin network v16,
codenamed the Skyr upgrade.
The network is scheduled to upgrade to nv16 at epoch 1960320, on July 6th at 2022-07-06T14:00:00Z. All node operators, including storage providers, must upgrade to this release (or a later release) before that time. Storage providers must update their daemons, miners, market and worker(s).
Your lotus node will switch from the Legacy VM (that depended on go-based specs-actors) to Filecoin Virtual Machine FVM (that uses Rust-based builtin-actors) atomically upon the upgrade.
The Skyr upgrade introduces the following FIPs, enhancements and bug fixes, delivered in built-actors v8 and ref-fvm v1.0.0:,
- FIP-0030
- FIP-0031
- FIP-0032)
- FIP-0027
- Bug fix for the ProveReplicaUpdates method
- New proofs version for SnarkPack
🆕 Things you may wanna know
Actor Code CIDs
As stated in FIP-0031- structure of the code cid, system actors' code CIDs will be real content-addressing
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 changes accordingly, and a network upgrade is needed for the network participants to have consensus over what executable code we should use for each system actor.
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.
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
.
The manifest CID & full list of actor code CIDs for nv16 using v8.0.0 is:
"_manifest": "bafy2bzacebogjbpiemi7npzxchgcjjki3tfxon4ims55obfyfleqntteljsea"
"account": "bafk2bzacedudbf7fc5va57t3tmo63snmt3en4iaidv4vo3qlyacbxaa6hlx6y"
"cron": "bafk2bzacecqb3eolfurehny6yp7tgmapib4ocazo5ilkopjce2c7wc2bcec62"
"init": "bafk2bzaceaipvjhoxmtofsnv3aj6gj5ida4afdrxa4ewku2hfipdlxpaektlw"
"multisig": "bafk2bzacebhldfjuy4o5v7amrhp5p2gzv2qo5275jut4adnbyp56fxkwy5fag"
"paymentchannel": "bafk2bzacebalad3f72wyk7qyilvfjijcwubdspytnyzlrhvn73254gqis44rq"
"reward": "bafk2bzacecwzzxlgjiavnc3545cqqil3cmq4hgpvfp2crguxy2pl5ybusfsbe"
"storagemarket": "bafk2bzacediohrxkp2fbsl4yj4jlupjdkgsiwqb4zuezvinhdo2j5hrxco62q"
"storageminer": "bafk2bzacecgnynvd3tene3bvqoknuspit56canij5bpra6wl4mrq2mxxwriyu"
"storagepower": "bafk2bzacebjvqva6ppvysn5xpmiqcdfelwbbcxmghx5ww6hr37cgred6dyrpm"
"system": "bafk2bzacedwq5uppsw7vp55zpj7jdieizirmldceehu6wvombw3ixq2tcq57w"
"verifiedregistry": "bafk2bzaceb3zbkjz3auizmoln2unmxep7dyfcmsre64vnqfhdyh7rkqfoxlw4"
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!
To get Code CIDs:
- api:
StateActorCodeCIDs
- cli:
lotus state actor-cids
- cli:
lotus-shed cid inspect-bundle
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, Subcall
details, Durationand
GasCharges` fields will be missing from the new FVM trace.
Deal Proposal Migration
All deal proposals with non-utf8 string as the label in the metadata store will perform a light migration to new format as defined in v1.1.1.
Others
- Resource manager is now only enabled by default on full daemon node. You can enable it manually for other nodes by setting env var
LOTUS_RCMGR
to1
. - Fix: drand: calculation of round from Filecoin epochs (filecoin-project/lotus#8606)
Dependency Update
- chore: deps: update to go-libp2p v0.19.4 (filecoin-project/lotus#8801)
- github.com/filecoin-project/go-fil-markets (v1.20.1 -> v1.20.1-v16-2):
- github.com/filecoin-project/go-legs (v0.3.7 -> v0.3.10):
- github.com/filecoin-project/go-state-types (v0.1.8 -> v0.1.10):
- github.com/filecoin-project/specs-storage (v0.2.4 -> v0.4.1):
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
@geoff-vball | 37 | +10565/-8454 | 150 |
@arajasek | 33 | +7964/-6340 | 473 |
@arajasek | 37 | +6220/-6976 | 457 |
@vyzo | 135 | +7287/-5380 | 546 |
@ZenGround0 | 19 | +5958/-2920 | 226 |
@Stebalien | 18 | +1566/-1101 | 116 |
Alex | 5 | +323/-2304 | 32 |
@ZenGround0 | 9 | +583/-358 | 56 |
@jennijuju | 5 | +853/-27 | 19 |
@jennijuju | 24 | +392/-201 | 60 |
Marco Munizaga | 3 | +236/-83 | 5 |
@raulk | 9 | +93/-15 | 15 |
@travisperson | 3 | +37/-37 | 12 |
@Kubuxu | 1 | +41/-5 | 1 |
@koalacxr | 1 | +29/-13 | 3 |
@gammazero | 2 | +18/-10 | 4 |
Peter Rabbitson | 1 | +5/-3 | 1 |
Steve Loeppky | 1 | +6/-0 | 1 |
@masih | 1 | +3/-3 | 2 |
@magik6k | 1 | +4/-0 | 1 |
@jennijuju | 1 | +2/-2 | 1 |
tian zhou | 1 | +1/-1 | 1 |