From 530e6a02fcc95316f46bdb2f339e1c00edb523aa Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Thu, 22 Sep 2022 12:49:26 -0400 Subject: [PATCH] Setup datacap actor --- chain/gen/genesis/f07_dcap.go | 59 +++++++++++++++++++++++++++++++++++ chain/gen/genesis/genesis.go | 11 +++++++ 2 files changed, 70 insertions(+) create mode 100644 chain/gen/genesis/f07_dcap.go diff --git a/chain/gen/genesis/f07_dcap.go b/chain/gen/genesis/f07_dcap.go new file mode 100644 index 000000000..050089f47 --- /dev/null +++ b/chain/gen/genesis/f07_dcap.go @@ -0,0 +1,59 @@ +package genesis + +import ( + "context" + + "github.com/filecoin-project/go-state-types/builtin" + + "github.com/filecoin-project/lotus/chain/actors/builtin/datacap" + + cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-address" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + "github.com/filecoin-project/specs-actors/actors/util/adt" + + bstore "github.com/filecoin-project/lotus/blockstore" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/types" +) + +var GovernorId address.Address + +func init() { + + idk, err := address.NewFromString("t085") + if err != nil { + panic(err) + } + + GovernorId = idk +} + +func SetupDatacapActor(ctx context.Context, bs bstore.Blockstore, av actorstypes.Version) (*types.Actor, error) { + cst := cbor.NewCborStore(bs) + vst, err := datacap.MakeState(adt.WrapStore(ctx, cbor.NewCborStore(bs)), av, GovernorId, builtin.DefaultHamtBitwidth) + if err != nil { + return nil, err + } + + statecid, err := cst.Put(ctx, vst.GetState()) + if err != nil { + return nil, err + } + + actcid, ok := actors.GetActorCodeID(av, actors.DatacapKey) + if !ok { + return nil, xerrors.Errorf("failed to get verifreg actor code ID for actors version %d", av) + } + + act := &types.Actor{ + Code: actcid, + Head: statecid, + Balance: big.Zero(), + } + + return act, nil +} diff --git a/chain/gen/genesis/genesis.go b/chain/gen/genesis/genesis.go index 34f12db6d..30fae9cb2 100644 --- a/chain/gen/genesis/genesis.go +++ b/chain/gen/genesis/genesis.go @@ -6,6 +6,8 @@ import ( "encoding/json" "fmt" + "github.com/filecoin-project/lotus/chain/actors/builtin/datacap" + "github.com/ipfs/go-cid" "github.com/ipfs/go-datastore" cbor "github.com/ipfs/go-ipld-cbor" @@ -215,6 +217,15 @@ func MakeInitialStateTree(ctx context.Context, bs bstore.Blockstore, template ge return nil, nil, xerrors.Errorf("set verified registry actor: %w", err) } + // Create verified registry + dcapact, err := SetupDatacapActor(ctx, bs, av) + if err != nil { + return nil, nil, xerrors.Errorf("setup datacap actor: %w", err) + } + if err := state.SetActor(datacap.Address, dcapact); err != nil { + return nil, nil, xerrors.Errorf("set datacap actor: %w", err) + } + bact, err := MakeAccountActor(ctx, cst, av, builtin.BurntFundsActorAddr, big.Zero()) if err != nil { return nil, nil, xerrors.Errorf("setup burnt funds actor state: %w", err)