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?
This commit is contained in:
parent
97a97fe992
commit
46f5b62a76
@ -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
|
|
||||||
}
|
|
@ -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 {
|
func createSectorsAMT(ctx context.Context, t *testing.T, store adt.Store, sectors []miner.SectorOnChainInfo) cid.Cid {
|
||||||
root := adt.MakeEmptyArray(store)
|
root := adt.MakeEmptyArray(store)
|
||||||
for _, sector := range sectors {
|
for _, sector := range sectors {
|
||||||
sector := sector
|
sector := (miner0.SectorOnChainInfo)(sector)
|
||||||
err := root.Set(uint64(sector.SectorNumber), §or)
|
err := root.Set(uint64(sector.SectorNumber), §or)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
@ -614,8 +614,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// returns a unique SectorPreCommitInfo with each invocation with SectorNumber set to `sectorNo`.
|
// 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 {
|
func newSectorPreCommitInfo(sectorNo abi.SectorNumber, sealed cid.Cid, expiration abi.ChainEpoch) *miner0.SectorPreCommitInfo {
|
||||||
return &miner.SectorPreCommitInfo{
|
return &miner0.SectorPreCommitInfo{
|
||||||
SealProof: abi.RegisteredSealProof_StackedDrg32GiBV1,
|
SealProof: abi.RegisteredSealProof_StackedDrg32GiBV1,
|
||||||
SectorNumber: sectorNo,
|
SectorNumber: sectorNo,
|
||||||
SealedCID: sealed,
|
SealedCID: sealed,
|
||||||
|
10
gen/main.go
10
gen/main.go
@ -4,8 +4,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
|
|
||||||
|
|
||||||
gen "github.com/whyrusleeping/cbor-gen"
|
gen "github.com/whyrusleeping/cbor-gen"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/api"
|
"github.com/filecoin-project/lotus/api"
|
||||||
@ -77,12 +75,4 @@ func main() {
|
|||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user