From 30799204feb191c4be095df296f1b699ff82baa3 Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Wed, 29 Jun 2022 12:54:14 -0400 Subject: [PATCH] Remove old functions for getting actors cids --- build/openrpc/full.json.gz | Bin 27843 -> 28090 bytes build/openrpc/gateway.json.gz | Bin 4894 -> 4894 bytes build/openrpc/miner.json.gz | Bin 13707 -> 13808 bytes build/openrpc/worker.json.gz | Bin 4609 -> 4764 bytes chain/actors/actor_cids.go | 5 +- chain/actors/builtin/builtin.go | 364 ------------------ chain/actors/builtin/builtin.go.template | 188 --------- .../builtin/multisig/message.go.template | 5 +- chain/actors/builtin/multisig/message8.go | 5 +- chain/actors/manifest.go | 2 +- chain/gen/genesis/f00_system.go | 7 +- chain/gen/genesis/f01_init.go | 7 +- chain/gen/genesis/f02_reward.go | 8 +- chain/gen/genesis/f03_cron.go | 8 +- chain/gen/genesis/f04_power.go | 8 +- chain/gen/genesis/f05_market.go | 8 +- chain/gen/genesis/f06_vreg.go | 8 +- chain/gen/genesis/genesis.go | 12 +- storage/wdpost/wdpost_run_test.go | 7 +- 19 files changed, 43 insertions(+), 599 deletions(-) diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 0e063bf58303e2828a9aebfa6de68cf5a7033744..3b17bfc26f841f65ea033ac9d6f397de8eb32d32 100644 GIT binary patch delta 24144 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

2nGrjy)Vg()B7wxt&f3u8Rh4c4`OZdeO)WW3|F` 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 Q0RRC1|InAap>6R10M!+R;{X5v literal 4894 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 Q7XSeN|5c%%t!?oD05GMsCjbBd diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 9f2e3fafc4f3dedbb6ca4a990c773643b9056395..5203888b0870f2c65f185919bf1b4abd3c393f21 100644 GIT binary patch literal 13808 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 literal 13707 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 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index 9f3a8ff89cad3d5a00fb384037a089a5cfb4d666..4a724cbe9ccc7a271d529efa3654984da858be2a 100644 GIT binary patch literal 4764 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 diff --git a/chain/actors/actor_cids.go b/chain/actors/actor_cids.go index ddcd360d534..71d844d5534 100644 --- a/chain/actors/actor_cids.go +++ b/chain/actors/actor_cids.go @@ -1,6 +1,9 @@ package actors import ( + "github.com/ipfs/go-cid" + "golang.org/x/xerrors" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" @@ -8,8 +11,6 @@ import ( builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" ) // GetActorCodeID looks up a builtin actor's code CID by actor version and canonical actor name. diff --git a/chain/actors/builtin/builtin.go b/chain/actors/builtin/builtin.go index 4c994c9aa2c..fb95a28d6c7 100644 --- a/chain/actors/builtin/builtin.go +++ b/chain/actors/builtin/builtin.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/ipfs/go-cid" - "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" @@ -130,39 +129,6 @@ func IsBuiltinActor(c cid.Cid) bool { return false } -func GetAccountActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.AccountKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.AccountActorCodeID, nil - - case actors.Version2: - return builtin2.AccountActorCodeID, nil - - case actors.Version3: - return builtin3.AccountActorCodeID, nil - - case actors.Version4: - return builtin4.AccountActorCodeID, nil - - case actors.Version5: - return builtin5.AccountActorCodeID, nil - - case actors.Version6: - return builtin6.AccountActorCodeID, nil - - case actors.Version7: - return builtin7.AccountActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsAccountActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -200,138 +166,6 @@ func IsAccountActor(c cid.Cid) bool { return false } -func GetCronActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.CronKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.CronActorCodeID, nil - - case actors.Version2: - return builtin2.CronActorCodeID, nil - - case actors.Version3: - return builtin3.CronActorCodeID, nil - - case actors.Version4: - return builtin4.CronActorCodeID, nil - - case actors.Version5: - return builtin5.CronActorCodeID, nil - - case actors.Version6: - return builtin6.CronActorCodeID, nil - - case actors.Version7: - return builtin7.CronActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetInitActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.InitKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.InitActorCodeID, nil - - case actors.Version2: - return builtin2.InitActorCodeID, nil - - case actors.Version3: - return builtin3.InitActorCodeID, nil - - case actors.Version4: - return builtin4.InitActorCodeID, nil - - case actors.Version5: - return builtin5.InitActorCodeID, nil - - case actors.Version6: - return builtin6.InitActorCodeID, nil - - case actors.Version7: - return builtin7.InitActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetMarketActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MarketKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.StorageMarketActorCodeID, nil - - case actors.Version2: - return builtin2.StorageMarketActorCodeID, nil - - case actors.Version3: - return builtin3.StorageMarketActorCodeID, nil - - case actors.Version4: - return builtin4.StorageMarketActorCodeID, nil - - case actors.Version5: - return builtin5.StorageMarketActorCodeID, nil - - case actors.Version6: - return builtin6.StorageMarketActorCodeID, nil - - case actors.Version7: - return builtin7.StorageMarketActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetMinerActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MinerKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.StorageMinerActorCodeID, nil - - case actors.Version2: - return builtin2.StorageMinerActorCodeID, nil - - case actors.Version3: - return builtin3.StorageMinerActorCodeID, nil - - case actors.Version4: - return builtin4.StorageMinerActorCodeID, nil - - case actors.Version5: - return builtin5.StorageMinerActorCodeID, nil - - case actors.Version6: - return builtin6.StorageMinerActorCodeID, nil - - case actors.Version7: - return builtin7.StorageMinerActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsStorageMinerActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -369,39 +203,6 @@ func IsStorageMinerActor(c cid.Cid) bool { return false } -func GetMultisigActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MultisigKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.MultisigActorCodeID, nil - - case actors.Version2: - return builtin2.MultisigActorCodeID, nil - - case actors.Version3: - return builtin3.MultisigActorCodeID, nil - - case actors.Version4: - return builtin4.MultisigActorCodeID, nil - - case actors.Version5: - return builtin5.MultisigActorCodeID, nil - - case actors.Version6: - return builtin6.MultisigActorCodeID, nil - - case actors.Version7: - return builtin7.MultisigActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsMultisigActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -439,39 +240,6 @@ func IsMultisigActor(c cid.Cid) bool { return false } -func GetPaymentChannelActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.PaychKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.PaymentChannelActorCodeID, nil - - case actors.Version2: - return builtin2.PaymentChannelActorCodeID, nil - - case actors.Version3: - return builtin3.PaymentChannelActorCodeID, nil - - case actors.Version4: - return builtin4.PaymentChannelActorCodeID, nil - - case actors.Version5: - return builtin5.PaymentChannelActorCodeID, nil - - case actors.Version6: - return builtin6.PaymentChannelActorCodeID, nil - - case actors.Version7: - return builtin7.PaymentChannelActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsPaymentChannelActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -509,138 +277,6 @@ func IsPaymentChannelActor(c cid.Cid) bool { return false } -func GetPowerActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.PowerKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.StoragePowerActorCodeID, nil - - case actors.Version2: - return builtin2.StoragePowerActorCodeID, nil - - case actors.Version3: - return builtin3.StoragePowerActorCodeID, nil - - case actors.Version4: - return builtin4.StoragePowerActorCodeID, nil - - case actors.Version5: - return builtin5.StoragePowerActorCodeID, nil - - case actors.Version6: - return builtin6.StoragePowerActorCodeID, nil - - case actors.Version7: - return builtin7.StoragePowerActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetRewardActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.RewardKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.RewardActorCodeID, nil - - case actors.Version2: - return builtin2.RewardActorCodeID, nil - - case actors.Version3: - return builtin3.RewardActorCodeID, nil - - case actors.Version4: - return builtin4.RewardActorCodeID, nil - - case actors.Version5: - return builtin5.RewardActorCodeID, nil - - case actors.Version6: - return builtin6.RewardActorCodeID, nil - - case actors.Version7: - return builtin7.RewardActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetSystemActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.SystemKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.SystemActorCodeID, nil - - case actors.Version2: - return builtin2.SystemActorCodeID, nil - - case actors.Version3: - return builtin3.SystemActorCodeID, nil - - case actors.Version4: - return builtin4.SystemActorCodeID, nil - - case actors.Version5: - return builtin5.SystemActorCodeID, nil - - case actors.Version6: - return builtin6.SystemActorCodeID, nil - - case actors.Version7: - return builtin7.SystemActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetVerifregActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.VerifregKey); ok { - return c, nil - } - - switch av { - - case actors.Version0: - return builtin0.VerifiedRegistryActorCodeID, nil - - case actors.Version2: - return builtin2.VerifiedRegistryActorCodeID, nil - - case actors.Version3: - return builtin3.VerifiedRegistryActorCodeID, nil - - case actors.Version4: - return builtin4.VerifiedRegistryActorCodeID, nil - - case actors.Version5: - return builtin5.VerifiedRegistryActorCodeID, nil - - case actors.Version6: - return builtin6.VerifiedRegistryActorCodeID, nil - - case actors.Version7: - return builtin7.VerifiedRegistryActorCodeID, nil - - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func makeAddress(addr string) address.Address { ret, err := address.NewFromString(addr) if err != nil { diff --git a/chain/actors/builtin/builtin.go.template b/chain/actors/builtin/builtin.go.template index ef4dcef396e..d536eff36d8 100644 --- a/chain/actors/builtin/builtin.go.template +++ b/chain/actors/builtin/builtin.go.template @@ -5,7 +5,6 @@ import ( "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "golang.org/x/xerrors" {{range .versions}} builtin{{.}} "github.com/filecoin-project/specs-actors{{import .}}actors/builtin" @@ -85,23 +84,6 @@ func IsBuiltinActor(c cid.Cid) bool { return false } -func GetAccountActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.AccountKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.AccountActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsAccountActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -118,74 +100,6 @@ func IsAccountActor(c cid.Cid) bool { return false } -func GetCronActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.CronKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.CronActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetInitActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.InitKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.InitActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetMarketActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MarketKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.StorageMarketActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetMinerActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MinerKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.StorageMinerActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsStorageMinerActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -202,23 +116,6 @@ func IsStorageMinerActor(c cid.Cid) bool { return false } -func GetMultisigActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.MultisigKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.MultisigActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsMultisigActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -235,23 +132,6 @@ func IsMultisigActor(c cid.Cid) bool { return false } -func GetPaymentChannelActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.PaychKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.PaymentChannelActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func IsPaymentChannelActor(c cid.Cid) bool { name, _, ok := actors.GetActorMetaByCode(c) if ok { @@ -268,74 +148,6 @@ func IsPaymentChannelActor(c cid.Cid) bool { return false } -func GetPowerActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.PowerKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.StoragePowerActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetRewardActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.RewardKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.RewardActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetSystemActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.SystemKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.SystemActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - -func GetVerifregActorCodeID(av actors.Version) (cid.Cid, error) { - if c, ok := actors.GetActorCodeID(av, actors.VerifregKey); ok { - return c, nil - } - - switch av { - {{range .versions}} - {{if (le . 7)}} - case actors.Version{{.}}: - return builtin{{.}}.VerifiedRegistryActorCodeID, nil - {{end}} - {{end}} - } - - return cid.Undef, xerrors.Errorf("unknown actor version %d", av) -} - func makeAddress(addr string) address.Address { ret, err := address.NewFromString(addr) if err != nil { diff --git a/chain/actors/builtin/multisig/message.go.template b/chain/actors/builtin/multisig/message.go.template index 4db88826ad3..5542f4eecd9 100644 --- a/chain/actors/builtin/multisig/message.go.template +++ b/chain/actors/builtin/multisig/message.go.template @@ -14,7 +14,6 @@ import ( builtin{{.v}} "github.com/filecoin-project/go-state-types/builtin" multisig{{.v}} "github.com/filecoin-project/go-state-types/builtin/v8/multisig" init{{.v}} "github.com/filecoin-project/go-state-types/builtin/v8/init" - "github.com/filecoin-project/lotus/chain/actors/builtin" {{end}} @@ -69,8 +68,8 @@ func (m message{{.v}}) Create( ConstructorParams: enc, } {{else}} - code, err := builtin.GetMultisigActorCodeID(actors.Version{{.v}}) - if err != nil { + code, ok := actors.GetActorCodeID(actors.Version{{.v}}, actors.MultisigKey) + if !ok { return nil, xerrors.Errorf("failed to get multisig code ID") } diff --git a/chain/actors/builtin/multisig/message8.go b/chain/actors/builtin/multisig/message8.go index dacc5310855..23bee19d0f9 100644 --- a/chain/actors/builtin/multisig/message8.go +++ b/chain/actors/builtin/multisig/message8.go @@ -10,7 +10,6 @@ import ( multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/builtin" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" ) @@ -50,8 +49,8 @@ func (m message8) Create( return nil, actErr } - code, err := builtin.GetMultisigActorCodeID(actors.Version8) - if err != nil { + code, ok := actors.GetActorCodeID(actors.Version8, actors.MultisigKey) + if !ok { return nil, xerrors.Errorf("failed to get multisig code ID") } diff --git a/chain/actors/manifest.go b/chain/actors/manifest.go index ca7159179d8..88598826a9e 100644 --- a/chain/actors/manifest.go +++ b/chain/actors/manifest.go @@ -113,7 +113,7 @@ func ReadManifest(ctx context.Context, store cbor.IpldStore, mfCid cid.Cid) (map return metadata, nil } -// GetActorCodeIDs looks up a builtin actor's code CID by actor version. +// GetActorCodeIDsFromManifest looks up all builtin actor's code CIDs by actor version for versions that have a manifest. func GetActorCodeIDsFromManifest(av Version) (map[string]cid.Cid, bool) { manifestMx.RLock() defer manifestMx.RUnlock() diff --git a/chain/gen/genesis/f00_system.go b/chain/gen/genesis/f00_system.go index 82f70f19642..1cd50f5e11c 100644 --- a/chain/gen/genesis/f00_system.go +++ b/chain/gen/genesis/f00_system.go @@ -14,7 +14,6 @@ import ( bstore "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/system" "github.com/filecoin-project/lotus/chain/types" ) @@ -48,9 +47,9 @@ func SetupSystemActor(ctx context.Context, bs bstore.Blockstore, av actors.Versi return nil, err } - actcid, err := builtin.GetSystemActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.SystemKey) + if !ok { + return nil, xerrors.Errorf("failed to get system actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f01_init.go b/chain/gen/genesis/f01_init.go index b020f5a5f42..ddb448de929 100644 --- a/chain/gen/genesis/f01_init.go +++ b/chain/gen/genesis/f01_init.go @@ -16,7 +16,6 @@ import ( bstore "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/builtin" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/genesis" @@ -174,9 +173,9 @@ func SetupInitActor(ctx context.Context, bs bstore.Blockstore, netname string, i return 0, nil, nil, err } - actcid, err := builtin.GetInitActorCodeID(av) - if err != nil { - return 0, nil, nil, err + actcid, ok := actors.GetActorCodeID(av, actors.InitKey) + if !ok { + return 0, nil, nil, xerrors.Errorf("failed to get init actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f02_reward.go b/chain/gen/genesis/f02_reward.go index 2fd7709b621..0d0c1db0f28 100644 --- a/chain/gen/genesis/f02_reward.go +++ b/chain/gen/genesis/f02_reward.go @@ -4,6 +4,7 @@ import ( "context" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/big" @@ -11,7 +12,6 @@ import ( "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/reward" "github.com/filecoin-project/lotus/chain/types" ) @@ -28,9 +28,9 @@ func SetupRewardActor(ctx context.Context, bs bstore.Blockstore, qaPower big.Int return nil, err } - actcid, err := builtin.GetRewardActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.RewardKey) + if !ok { + return nil, xerrors.Errorf("failed to get reward actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f03_cron.go b/chain/gen/genesis/f03_cron.go index 1b24ff7e936..c9fe7c11850 100644 --- a/chain/gen/genesis/f03_cron.go +++ b/chain/gen/genesis/f03_cron.go @@ -4,13 +4,13 @@ import ( "context" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/big" bstore "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/cron" "github.com/filecoin-project/lotus/chain/types" ) @@ -27,9 +27,9 @@ func SetupCronActor(ctx context.Context, bs bstore.Blockstore, av actors.Version return nil, err } - actcid, err := builtin.GetCronActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.CronKey) + if !ok { + return nil, xerrors.Errorf("failed to get cron actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f04_power.go b/chain/gen/genesis/f04_power.go index 7efa27733aa..20232c9b216 100644 --- a/chain/gen/genesis/f04_power.go +++ b/chain/gen/genesis/f04_power.go @@ -4,13 +4,13 @@ import ( "context" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "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/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/power" "github.com/filecoin-project/lotus/chain/types" ) @@ -28,9 +28,9 @@ func SetupStoragePowerActor(ctx context.Context, bs bstore.Blockstore, av actors return nil, err } - actcid, err := builtin.GetPowerActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.PowerKey) + if !ok { + return nil, xerrors.Errorf("failed to get power actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f05_market.go b/chain/gen/genesis/f05_market.go index 880b027000b..9109e278488 100644 --- a/chain/gen/genesis/f05_market.go +++ b/chain/gen/genesis/f05_market.go @@ -4,13 +4,13 @@ import ( "context" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/big" bstore "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/market" "github.com/filecoin-project/lotus/chain/types" ) @@ -27,9 +27,9 @@ func SetupStorageMarketActor(ctx context.Context, bs bstore.Blockstore, av actor return nil, err } - actcid, err := builtin.GetMarketActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.MarketKey) + if !ok { + return nil, xerrors.Errorf("failed to get market actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/f06_vreg.go b/chain/gen/genesis/f06_vreg.go index 07e17577405..381a115d4c0 100644 --- a/chain/gen/genesis/f06_vreg.go +++ b/chain/gen/genesis/f06_vreg.go @@ -4,6 +4,7 @@ import ( "context" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/big" @@ -11,7 +12,6 @@ import ( bstore "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) @@ -40,9 +40,9 @@ func SetupVerifiedRegistryActor(ctx context.Context, bs bstore.Blockstore, av ac return nil, err } - actcid, err := builtin.GetVerifregActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.VerifregKey) + if !ok { + return nil, xerrors.Errorf("failed to get verifreg actor code ID for actors version %d", av) } act := &types.Actor{ diff --git a/chain/gen/genesis/genesis.go b/chain/gen/genesis/genesis.go index 6304fb7f8e4..1e2b3022c9e 100644 --- a/chain/gen/genesis/genesis.go +++ b/chain/gen/genesis/genesis.go @@ -367,9 +367,9 @@ func MakeAccountActor(ctx context.Context, cst cbor.IpldStore, av actors.Version return nil, err } - actcid, err := builtin.GetAccountActorCodeID(av) - if err != nil { - return nil, err + actcid, ok := actors.GetActorCodeID(av, actors.AccountKey) + if !ok { + return nil, xerrors.Errorf("failed to get account actor code ID for actors version %d", av) } act := &types.Actor{ @@ -449,9 +449,9 @@ func CreateMultisigAccount(ctx context.Context, cst cbor.IpldStore, state *state return err } - actcid, err := builtin.GetMultisigActorCodeID(av) - if err != nil { - return err + actcid, ok := actors.GetActorCodeID(av, actors.MultisigKey) + if !ok { + return xerrors.Errorf("failed to get multisig code ID for actors version %d", av) } err = state.SetActor(ida, &types.Actor{ diff --git a/storage/wdpost/wdpost_run_test.go b/storage/wdpost/wdpost_run_test.go index a7846b32b67..9a11933fbfe 100644 --- a/storage/wdpost/wdpost_run_test.go +++ b/storage/wdpost/wdpost_run_test.go @@ -25,7 +25,6 @@ import ( "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors" - lbuiltin "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/journal" @@ -309,9 +308,9 @@ func (m *mockStorageMinerAPI) StateMinerProvingDeadline(ctx context.Context, add } func (m *mockStorageMinerAPI) StateGetActor(ctx context.Context, actor address.Address, ts types.TipSetKey) (*types.Actor, error) { - code, err := lbuiltin.GetMinerActorCodeID(actors.Version7) - if err != nil { - return nil, err + code, ok := actors.GetActorCodeID(actors.Version7, actors.MinerKey) + if !ok { + return nil, xerrors.Errorf("failed to get miner actor code ID for actors version %d", actors.Version7) } return &types.Actor{ Code: code,