You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First step is to support generating genesis files from not-v0 actors.
Motivation:
The primary motivation here is to be able to start networks from arbitrary actor versions, which allows other implementations of the Filecoin protocol to be able to sync a chain even if they only have support from, say, v3 actors and onwards. More broadly, this advances the goal of making the Lotus codebase and utils less mainnet-specific. One could start a chain from any actor's version and so should be able to, even if the actual Filecoin mainnet started from v0.
Design and steps:
Get familiar with the genesis creation code in chain/gen/genesis.go. The key methods are MakeGenesisBlock and MakeInitialStateTree.
Tweak the code to receive an actors version as a parameter (chain/actors/version.go for actors versions). Maybe this goes into the genesis template in genesis/types.go.
Based on provided actors version, use the appropriate version of specs-actors when constructing state tree (bultion0.AccountActorCodeID -> builtin4.AccountActorCodeID, for example)
Start the network from the appropriate network version (e.g. network v14 for actors v4). Bit unclear how to do this, probably requires tweaking how we set up the stage in the build params file (see the NewStateManagerWithUpgradeSchedule method).
Iron out remaining kinks
Testing:
The best way to test this out would be to run a devnet that starts from a non-v0 actors version. Doing so will require tweaking the upgrade epoch heights in params_2k.go. The next step will be to kick off the desired interopnet using this new feature, and seeing if that works well.
The text was updated successfully, but these errors were encountered:
First step is to support generating genesis files from not-v0 actors.
Motivation:
The primary motivation here is to be able to start networks from arbitrary actor versions, which allows other implementations of the Filecoin protocol to be able to sync a chain even if they only have support from, say, v3 actors and onwards. More broadly, this advances the goal of making the Lotus codebase and utils less mainnet-specific. One could start a chain from any actor's version and so should be able to, even if the actual Filecoin mainnet started from v0.
Design and steps:
chain/gen/genesis.go
. The key methods areMakeGenesisBlock
andMakeInitialStateTree
.chain/actors/version.go
for actors versions). Maybe this goes into the genesis template ingenesis/types.go
.bultion0.AccountActorCodeID -> builtin4.AccountActorCodeID
, for example)params
file (see theNewStateManagerWithUpgradeSchedule
method).Testing:
The best way to test this out would be to run a devnet that starts from a non-v0 actors version. Doing so will require tweaking the upgrade epoch heights in params_2k.go. The next step will be to kick off the desired
interopnet
using this new feature, and seeing if that works well.The text was updated successfully, but these errors were encountered: