From 46f5b62a761b9e300b455a7da6776dbf0f2cf497 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 23 Sep 2020 12:47:41 -0700 Subject: [PATCH] Remove a misleading miner actor abstraction We shouldn't implement CBOR functions on the "abstract" miner info. Otherwise, we could end up trying to actually _use_ this "abstract" info when decoding state (which won't work across version). Also remove the use of these CBOR functions, and instead explicitly use miner0 types. We'll have to abstract over versions eventually, but we'll probably need some form of abstract miner builder (or maybe even adding some "add sector", etc. functions to the current miner abstraction? --- chain/actors/builtin/miner/cbor_gen.go | 313 ------------------------- chain/events/state/predicates_test.go | 6 +- gen/main.go | 10 - 3 files changed, 3 insertions(+), 326 deletions(-) delete mode 100644 chain/actors/builtin/miner/cbor_gen.go diff --git a/chain/actors/builtin/miner/cbor_gen.go b/chain/actors/builtin/miner/cbor_gen.go deleted file mode 100644 index 16819d5c4..000000000 --- a/chain/actors/builtin/miner/cbor_gen.go +++ /dev/null @@ -1,313 +0,0 @@ -// Code generated by github.com/whyrusleeping/cbor-gen. DO NOT EDIT. - -package miner - -import ( - "fmt" - "io" - - abi "github.com/filecoin-project/go-state-types/abi" - cbg "github.com/whyrusleeping/cbor-gen" - xerrors "golang.org/x/xerrors" -) - -var _ = xerrors.Errorf - -var lengthBufSectorOnChainInfo = []byte{139} - -func (t *SectorOnChainInfo) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - if _, err := w.Write(lengthBufSectorOnChainInfo); err != nil { - return err - } - - scratch := make([]byte, 9) - - // t.SectorNumber (abi.SectorNumber) (uint64) - - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.SectorNumber)); err != nil { - return err - } - - // t.SealProof (abi.RegisteredSealProof) (int64) - if t.SealProof >= 0 { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.SealProof)); err != nil { - return err - } - } else { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.SealProof-1)); err != nil { - return err - } - } - - // t.SealedCID (cid.Cid) (struct) - - if err := cbg.WriteCidBuf(scratch, w, t.SealedCID); err != nil { - return xerrors.Errorf("failed to write cid field t.SealedCID: %w", err) - } - - // t.DealIDs ([]abi.DealID) (slice) - if len(t.DealIDs) > cbg.MaxLength { - return xerrors.Errorf("Slice value in field t.DealIDs was too long") - } - - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.DealIDs))); err != nil { - return err - } - for _, v := range t.DealIDs { - if err := cbg.CborWriteHeader(w, cbg.MajUnsignedInt, uint64(v)); err != nil { - return err - } - } - - // t.Activation (abi.ChainEpoch) (int64) - if t.Activation >= 0 { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Activation)); err != nil { - return err - } - } else { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Activation-1)); err != nil { - return err - } - } - - // t.Expiration (abi.ChainEpoch) (int64) - if t.Expiration >= 0 { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Expiration)); err != nil { - return err - } - } else { - if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Expiration-1)); err != nil { - return err - } - } - - // t.DealWeight (big.Int) (struct) - if err := t.DealWeight.MarshalCBOR(w); err != nil { - return err - } - - // t.VerifiedDealWeight (big.Int) (struct) - if err := t.VerifiedDealWeight.MarshalCBOR(w); err != nil { - return err - } - - // t.InitialPledge (big.Int) (struct) - if err := t.InitialPledge.MarshalCBOR(w); err != nil { - return err - } - - // t.ExpectedDayReward (big.Int) (struct) - if err := t.ExpectedDayReward.MarshalCBOR(w); err != nil { - return err - } - - // t.ExpectedStoragePledge (big.Int) (struct) - if err := t.ExpectedStoragePledge.MarshalCBOR(w); err != nil { - return err - } - return nil -} - -func (t *SectorOnChainInfo) UnmarshalCBOR(r io.Reader) error { - *t = SectorOnChainInfo{} - - br := cbg.GetPeeker(r) - scratch := make([]byte, 8) - - maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) - if err != nil { - return err - } - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 11 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SectorNumber (abi.SectorNumber) (uint64) - - { - - maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SectorNumber = abi.SectorNumber(extra) - - } - // t.SealProof (abi.RegisteredSealProof) (int64) - { - maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.SealProof = abi.RegisteredSealProof(extraI) - } - // t.SealedCID (cid.Cid) (struct) - - { - - c, err := cbg.ReadCid(br) - if err != nil { - return xerrors.Errorf("failed to read cid field t.SealedCID: %w", err) - } - - t.SealedCID = c - - } - // t.DealIDs ([]abi.DealID) (slice) - - maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) - if err != nil { - return err - } - - if extra > cbg.MaxLength { - return fmt.Errorf("t.DealIDs: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.DealIDs = make([]abi.DealID, extra) - } - - for i := 0; i < int(extra); i++ { - - maj, val, err := cbg.CborReadHeaderBuf(br, scratch) - if err != nil { - return xerrors.Errorf("failed to read uint64 for t.DealIDs slice: %w", err) - } - - if maj != cbg.MajUnsignedInt { - return xerrors.Errorf("value read for array t.DealIDs was not a uint, instead got %d", maj) - } - - t.DealIDs[i] = abi.DealID(val) - } - - // t.Activation (abi.ChainEpoch) (int64) - { - maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Activation = abi.ChainEpoch(extraI) - } - // t.Expiration (abi.ChainEpoch) (int64) - { - maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Expiration = abi.ChainEpoch(extraI) - } - // t.DealWeight (big.Int) (struct) - - { - - if err := t.DealWeight.UnmarshalCBOR(br); err != nil { - return xerrors.Errorf("unmarshaling t.DealWeight: %w", err) - } - - } - // t.VerifiedDealWeight (big.Int) (struct) - - { - - if err := t.VerifiedDealWeight.UnmarshalCBOR(br); err != nil { - return xerrors.Errorf("unmarshaling t.VerifiedDealWeight: %w", err) - } - - } - // t.InitialPledge (big.Int) (struct) - - { - - if err := t.InitialPledge.UnmarshalCBOR(br); err != nil { - return xerrors.Errorf("unmarshaling t.InitialPledge: %w", err) - } - - } - // t.ExpectedDayReward (big.Int) (struct) - - { - - if err := t.ExpectedDayReward.UnmarshalCBOR(br); err != nil { - return xerrors.Errorf("unmarshaling t.ExpectedDayReward: %w", err) - } - - } - // t.ExpectedStoragePledge (big.Int) (struct) - - { - - if err := t.ExpectedStoragePledge.UnmarshalCBOR(br); err != nil { - return xerrors.Errorf("unmarshaling t.ExpectedStoragePledge: %w", err) - } - - } - return nil -} diff --git a/chain/events/state/predicates_test.go b/chain/events/state/predicates_test.go index 832f6a0a7..461ac4997 100644 --- a/chain/events/state/predicates_test.go +++ b/chain/events/state/predicates_test.go @@ -581,7 +581,7 @@ func createEmptyMinerState(ctx context.Context, t *testing.T, store adt.Store, o func createSectorsAMT(ctx context.Context, t *testing.T, store adt.Store, sectors []miner.SectorOnChainInfo) cid.Cid { root := adt.MakeEmptyArray(store) for _, sector := range sectors { - sector := sector + sector := (miner0.SectorOnChainInfo)(sector) err := root.Set(uint64(sector.SectorNumber), §or) require.NoError(t, err) } @@ -614,8 +614,8 @@ const ( ) // returns a unique SectorPreCommitInfo with each invocation with SectorNumber set to `sectorNo`. -func newSectorPreCommitInfo(sectorNo abi.SectorNumber, sealed cid.Cid, expiration abi.ChainEpoch) *miner.SectorPreCommitInfo { - return &miner.SectorPreCommitInfo{ +func newSectorPreCommitInfo(sectorNo abi.SectorNumber, sealed cid.Cid, expiration abi.ChainEpoch) *miner0.SectorPreCommitInfo { + return &miner0.SectorPreCommitInfo{ SealProof: abi.RegisteredSealProof_StackedDrg32GiBV1, SectorNumber: sectorNo, SealedCID: sealed, diff --git a/gen/main.go b/gen/main.go index 90b24e3a7..bcb43a8f0 100644 --- a/gen/main.go +++ b/gen/main.go @@ -4,8 +4,6 @@ import ( "fmt" "os" - "github.com/filecoin-project/lotus/chain/actors/builtin/miner" - gen "github.com/whyrusleeping/cbor-gen" "github.com/filecoin-project/lotus/api" @@ -77,12 +75,4 @@ func main() { fmt.Println(err) os.Exit(1) } - - err = gen.WriteTupleEncodersToFile("./chain/actors/builtin/miner/cbor_gen.go", "miner", - miner.SectorOnChainInfo{}, - ) - if err != nil { - fmt.Println(err) - os.Exit(1) - } }