diff --git a/api/api_full.go b/api/api_full.go index 4a1b8df90..d81b0f97a 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -117,12 +117,10 @@ type FullNode interface { StateListMessages(ctx context.Context, match *types.Message, tsk types.TipSetKey, toht abi.ChainEpoch) ([]cid.Cid, error) StateNetworkName(context.Context) (dtypes.NetworkName, error) - StateMinerSectors(context.Context, address.Address, types.TipSetKey) ([]*ChainSectorInfo, error) - StateMinerProvingSet(context.Context, address.Address, types.TipSetKey) ([]*ChainSectorInfo, error) + StateMinerSectors(context.Context, address.Address, *abi.BitField, types.TipSetKey) ([]*ChainSectorInfo, error) StateMinerPower(context.Context, address.Address, types.TipSetKey) (*MinerPower, error) StateMinerWorker(context.Context, address.Address, types.TipSetKey) (address.Address, error) StateMinerPeerID(ctx context.Context, m address.Address, tsk types.TipSetKey) (peer.ID, error) - StateMinerPostState(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*miner.PoStState, error) StateMinerSectorSize(context.Context, address.Address, types.TipSetKey) (abi.SectorSize, error) StateMinerFaults(context.Context, address.Address, types.TipSetKey) ([]abi.SectorNumber, error) StateSectorPreCommitInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error) @@ -166,7 +164,6 @@ type FileRef struct { } type MinerSectors struct { - Pset uint64 Sset uint64 } diff --git a/api/apistruct/struct.go b/api/apistruct/struct.go index 1e126029f..b70997505 100644 --- a/api/apistruct/struct.go +++ b/api/apistruct/struct.go @@ -113,12 +113,10 @@ type FullNodeStruct struct { ClientQueryAsk func(ctx context.Context, p peer.ID, miner address.Address) (*storagemarket.SignedStorageAsk, error) `perm:"read"` StateNetworkName func(context.Context) (dtypes.NetworkName, error) `perm:"read"` - StateMinerSectors func(context.Context, address.Address, types.TipSetKey) ([]*api.ChainSectorInfo, error) `perm:"read"` - StateMinerProvingSet func(context.Context, address.Address, types.TipSetKey) ([]*api.ChainSectorInfo, error) `perm:"read"` + StateMinerSectors func(context.Context, address.Address, *abi.BitField, types.TipSetKey) ([]*api.ChainSectorInfo, error) `perm:"read"` StateMinerPower func(context.Context, address.Address, types.TipSetKey) (*api.MinerPower, error) `perm:"read"` StateMinerWorker func(context.Context, address.Address, types.TipSetKey) (address.Address, error) `perm:"read"` StateMinerPeerID func(ctx context.Context, m address.Address, tsk types.TipSetKey) (peer.ID, error) `perm:"read"` - StateMinerPostState func(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*miner.PoStState, error) `perm:"read"` StateMinerSectorSize func(context.Context, address.Address, types.TipSetKey) (abi.SectorSize, error) `perm:"read"` StateMinerFaults func(context.Context, address.Address, types.TipSetKey) ([]abi.SectorNumber, error) `perm:"read"` StateSectorPreCommitInfo func(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error) `perm:"read"` @@ -480,12 +478,8 @@ func (c *FullNodeStruct) StateNetworkName(ctx context.Context) (dtypes.NetworkNa return c.Internal.StateNetworkName(ctx) } -func (c *FullNodeStruct) StateMinerSectors(ctx context.Context, addr address.Address, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { - return c.Internal.StateMinerSectors(ctx, addr, tsk) -} - -func (c *FullNodeStruct) StateMinerProvingSet(ctx context.Context, addr address.Address, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { - return c.Internal.StateMinerProvingSet(ctx, addr, tsk) +func (c *FullNodeStruct) StateMinerSectors(ctx context.Context, addr address.Address, filter *abi.BitField, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { + return c.Internal.StateMinerSectors(ctx, addr, filter, tsk) } func (c *FullNodeStruct) StateMinerPower(ctx context.Context, a address.Address, tsk types.TipSetKey) (*api.MinerPower, error) { @@ -500,10 +494,6 @@ func (c *FullNodeStruct) StateMinerPeerID(ctx context.Context, m address.Address return c.Internal.StateMinerPeerID(ctx, m, tsk) } -func (c *FullNodeStruct) StateMinerPostState(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*miner.PoStState, error) { - return c.Internal.StateMinerPostState(ctx, actor, tsk) -} - func (c *FullNodeStruct) StateMinerSectorSize(ctx context.Context, actor address.Address, tsk types.TipSetKey) (abi.SectorSize, error) { return c.Internal.StateMinerSectorSize(ctx, actor, tsk) } diff --git a/build/params_testnet.go b/build/params_testnet.go index 623ef4e2c..1e63a470a 100644 --- a/build/params_testnet.go +++ b/build/params_testnet.go @@ -4,7 +4,6 @@ package build import ( "github.com/filecoin-project/specs-actors/actors/abi" - "github.com/filecoin-project/specs-actors/actors/builtin/miner" ) var SectorSizes = []abi.SectorSize{ @@ -16,12 +15,3 @@ var SectorSizes = []abi.SectorSize{ const BlockDelay = 25 const PropagationDelay = 6 - -// SlashablePowerDelay is the number of epochs after ElectionPeriodStart, after -// which the miner is slashed -// -// Epochs -const SlashablePowerDelay = miner.ProvingPeriod * 3 // TODO: remove - -// Epochs -const InteractivePoRepConfidence = 6 diff --git a/chain/gen/genesis/miners.go b/chain/gen/genesis/miners.go index 6c328eb35..757968c8c 100644 --- a/chain/gen/genesis/miners.go +++ b/chain/gen/genesis/miners.go @@ -126,20 +126,23 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid // setup windowed post { + provingPeriodBoundary := abi.ChainEpoch(0) + err = vm.MutateState(ctx, maddr, func(cst cbor.IpldStore, st *miner.State) error { - // TODO: Randomize so all genesis miners don't fall on the same epoch - st.PoStState.ProvingPeriodStart = miner.ProvingPeriod + panic("from some randomness") + st.ProvingPeriodBoundary = 0 return nil }) + panic("todo, probably more cron stuff") payload, err := cborutil.Dump(&miner.CronEventPayload{ - EventType: miner.CronEventWindowedPoStExpiration, + EventType: miner.CronEventProvingPeriod, }) if err != nil { return cid.Undef, err } params := &power.EnrollCronEventParams{ - EventEpoch: miner.ProvingPeriod + power.WindowedPostChallengeDuration, + EventEpoch: miner.WPoStProvingPeriod + provingPeriodBoundary, // TODO: correct ??? Payload: payload, } @@ -207,8 +210,6 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid }, ActivationEpoch: 0, DealWeight: dealWeight, - DeclaredFaultEpoch: -1, - DeclaredFaultDuration: -1, } err = vm.MutateState(ctx, maddr, func(cst cbor.IpldStore, st *miner.State) error { @@ -218,7 +219,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid return xerrors.Errorf("failed to prove commit: %v", err) } - st.ProvingSet = st.Sectors + panic("assign deadlines") return nil }) if err != nil { @@ -231,7 +232,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid sectorBf.Set(uint64(preseal.SectorID)) payload, err := cborutil.Dump(&miner.CronEventPayload{ - EventType: miner.CronEventSectorExpiry, + EventType: miner.CronEventPreCommitExpiry, // TODO: Review: Is this correct? Sectors: §orBf, }) if err != nil { diff --git a/chain/stmgr/utils.go b/chain/stmgr/utils.go index c3cba725d..9eb3976b5 100644 --- a/chain/stmgr/utils.go +++ b/chain/stmgr/utils.go @@ -16,7 +16,6 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/lotus/api" - "github.com/filecoin-project/lotus/chain/actors/aerrors" "github.com/filecoin-project/lotus/chain/state" "github.com/filecoin-project/lotus/chain/store" "github.com/filecoin-project/lotus/chain/types" @@ -116,16 +115,6 @@ func GetMinerWorker(ctx context.Context, sm *StateManager, ts *types.TipSet, mad return GetMinerWorkerRaw(ctx, sm, sm.parentState(ts), maddr) } -func GetMinerPostState(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) (*miner.PoStState, error) { - var mas miner.State - _, err := sm.LoadActorState(ctx, maddr, &mas, ts) - if err != nil { - return nil, xerrors.Errorf("(get eps) failed to load miner actor state: %w", err) - } - - return &mas.PoStState, nil -} - func SectorSetSizes(ctx context.Context, sm *StateManager, maddr address.Address, ts *types.TipSet) (api.MinerSectors, error) { var mas miner.State _, err := sm.LoadActorState(ctx, maddr, &mas, ts) @@ -139,13 +128,7 @@ func SectorSetSizes(ctx context.Context, sm *StateManager, maddr address.Address return api.MinerSectors{}, err } - ps, err := amt.LoadAMT(ctx, blks, mas.ProvingSet) - if err != nil { - return api.MinerSectors{}, err - } - return api.MinerSectors{ - Pset: ps.Count, Sset: ss.Count, }, nil } @@ -168,28 +151,14 @@ func PreCommitInfo(ctx context.Context, sm *StateManager, maddr address.Address, return *i, nil } -func GetMinerProvingSet(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) ([]*api.ChainSectorInfo, error) { - return getMinerProvingSetRaw(ctx, sm, ts.ParentState(), maddr) -} - -func getMinerProvingSetRaw(ctx context.Context, sm *StateManager, st cid.Cid, maddr address.Address) ([]*api.ChainSectorInfo, error) { - var mas miner.State - _, err := sm.LoadActorStateRaw(ctx, maddr, &mas, st) - if err != nil { - return nil, xerrors.Errorf("(get pset) failed to load miner actor state: %w", err) - } - - return LoadSectorsFromSet(ctx, sm.ChainStore().Blockstore(), mas.ProvingSet) -} - -func GetMinerSectorSet(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) ([]*api.ChainSectorInfo, error) { +func GetMinerSectorSet(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address, filter *abi.BitField) ([]*api.ChainSectorInfo, error) { var mas miner.State _, err := sm.LoadActorState(ctx, maddr, &mas, ts) if err != nil { return nil, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err) } - return LoadSectorsFromSet(ctx, sm.ChainStore().Blockstore(), mas.Sectors) + return LoadSectorsFromSet(ctx, sm.ChainStore().Blockstore(), mas.Sectors, filter) } func GetMinerSectorSize(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) (abi.SectorSize, error) { @@ -213,9 +182,7 @@ func GetMinerSlashed(ctx context.Context, sm *StateManager, ts *types.TipSet, ma return false, xerrors.Errorf("(get miner slashed) failed to load miner actor state") } - if mas.PoStState.HasFailedPost() { - return true, nil - } + panic("update this") var spas power.State _, err = sm.LoadActorState(ctx, builtin.StoragePowerActorAddr, &spas, ts) @@ -248,12 +215,7 @@ func GetMinerFaults(ctx context.Context, sm *StateManager, ts *types.TipSet, mad return nil, xerrors.Errorf("(get ssize) failed to load miner actor state: %w", err) } - ss, lerr := amt.LoadAMT(ctx, cbor.NewCborStore(sm.cs.Blockstore()), mas.Sectors) - if lerr != nil { - return nil, aerrors.HandleExternalError(lerr, "could not load proving set node") - } - - faults, err := mas.FaultSet.All(2 * ss.Count) + faults, err := mas.Faults.All(miner.MaxFaultsCount) if err != nil { return nil, xerrors.Errorf("reading fault bit set: %w", err) } @@ -325,7 +287,7 @@ func ListMinerActors(ctx context.Context, sm *StateManager, ts *types.TipSet) ([ return miners, nil } -func LoadSectorsFromSet(ctx context.Context, bs blockstore.Blockstore, ssc cid.Cid) ([]*api.ChainSectorInfo, error) { +func LoadSectorsFromSet(ctx context.Context, bs blockstore.Blockstore, ssc cid.Cid, filter *abi.BitField) ([]*api.ChainSectorInfo, error) { a, err := amt.LoadAMT(ctx, cbor.NewCborStore(bs), ssc) if err != nil { return nil, err @@ -333,6 +295,16 @@ func LoadSectorsFromSet(ctx context.Context, bs blockstore.Blockstore, ssc cid.C var sset []*api.ChainSectorInfo if err := a.ForEach(ctx, func(i uint64, v *cbg.Deferred) error { + if filter != nil { + set, err := filter.IsSet(i) + if err != nil { + return xerrors.Errorf("filter check error: %w", err) + } + if set { + return nil + } + } + var oci miner.SectorOnChainInfo if err := cbor.DecodeInto(v.Raw, &oci); err != nil { return err @@ -400,7 +372,18 @@ func MinerGetBaseInfo(ctx context.Context, sm *StateManager, tsk types.TipSetKey return nil, err } - provset, err := getMinerProvingSetRaw(ctx, sm, st, maddr) + var mas miner.State + _, err = sm.LoadActorState(ctx, maddr, &mas, ts) + if err != nil { + return nil, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err) + } + + notProving, err := abi.BitFieldUnion(mas.Faults, mas.Recoveries, mas.NewSectors) + if err != nil { + return nil, err + } + + provset, err := LoadSectorsFromSet(ctx, sm.cs.Blockstore(), mas.Sectors, ¬Proving) if err != nil { return nil, xerrors.Errorf("failed to get proving set: %w", err) } @@ -410,16 +393,6 @@ func MinerGetBaseInfo(ctx context.Context, sm *StateManager, tsk types.TipSetKey return nil, xerrors.Errorf("failed to get power: %w", err) } - worker, err := GetMinerWorkerRaw(ctx, sm, st, maddr) - if err != nil { - return nil, xerrors.Errorf("failed to get miner worker: %w", err) - } - - ssize, err := getMinerSectorSizeRaw(ctx, sm, st, maddr) - if err != nil { - return nil, xerrors.Errorf("failed to get miner sector size: %w", err) - } - prev, err := sm.ChainStore().GetLatestBeaconEntry(ts) if err != nil { return nil, xerrors.Errorf("failed to get latest beacon entry: %w", err) @@ -429,8 +402,8 @@ func MinerGetBaseInfo(ctx context.Context, sm *StateManager, tsk types.TipSetKey MinerPower: mpow, NetworkPower: tpow, Sectors: provset, - Worker: worker, - SectorSize: ssize, + Worker: mas.GetWorker(), + SectorSize: mas.Info.SectorSize, PrevBeaconEntry: *prev, }, nil } diff --git a/go.mod b/go.mod index 4df08020d..2d5d2e78f 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/filecoin-project/go-paramfetch v0.0.2-0.20200218225740-47c639bab663 github.com/filecoin-project/go-statestore v0.1.0 github.com/filecoin-project/sector-storage v0.0.0-20200411000242-61616264b16d - github.com/filecoin-project/specs-actors v0.0.0-20200413173219-041b36c0a9f9 + github.com/filecoin-project/specs-actors v0.0.0-20200415170224-54c7b2a42e71 github.com/filecoin-project/specs-storage v0.0.0-20200410185809-9fbaaa08f275 github.com/filecoin-project/storage-fsm v0.0.0-20200413200947-069c3b2468ca github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1 @@ -94,7 +94,7 @@ require ( github.com/opentracing/opentracing-go v1.1.0 github.com/stretchr/testify v1.4.0 github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba - github.com/whyrusleeping/cbor-gen v0.0.0-20200402171437-3d27c146c105 + github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d go.opencensus.io v0.22.3 @@ -116,3 +116,5 @@ replace github.com/golangci/golangci-lint => github.com/golangci/golangci-lint v replace github.com/filecoin-project/filecoin-ffi => ./extern/filecoin-ffi replace github.com/coreos/go-systemd => github.com/coreos/go-systemd/v22 v22.0.0 + +replace github.com/filecoin-project/storage-fsm => /home/magik6k/gohack/github.com/filecoin-project/storage-fsm diff --git a/go.sum b/go.sum index 6ecc927b9..f4c419b41 100644 --- a/go.sum +++ b/go.sum @@ -141,6 +141,8 @@ github.com/filecoin-project/go-amt-ipld/v2 v2.0.1-0.20200131012142-05d80eeccc5e github.com/filecoin-project/go-amt-ipld/v2 v2.0.1-0.20200131012142-05d80eeccc5e/go.mod h1:boRtQhzmxNocrMxOXo1NYn4oUc1NGvR8tEa79wApNXg= github.com/filecoin-project/go-bitfield v0.0.0-20200309034705-8c7ac40bd550 h1:aockulLU8Qjkdj4FQz53WQpNosAIYk8DxRediRLkE5c= github.com/filecoin-project/go-bitfield v0.0.0-20200309034705-8c7ac40bd550/go.mod h1:iodsLxOFZnqKtjj2zkgqzoGNrv6vUqj69AT/J8DKXEw= +github.com/filecoin-project/go-bitfield v0.0.0-20200415174627-536a2ee8529d h1:ufxUB1ssNdti7SgDNnHXZ863F8g04/yx+EW4ygvGcSU= +github.com/filecoin-project/go-bitfield v0.0.0-20200415174627-536a2ee8529d/go.mod h1:iodsLxOFZnqKtjj2zkgqzoGNrv6vUqj69AT/J8DKXEw= github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2 h1:av5fw6wmm58FYMgJeoB/lK9XXrgdugYiTqkdxjTy9k8= github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2/go.mod h1:pqTiPHobNkOVM5thSRsHYjyQfq7O5QSCMhvuu9JoDlg= github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03 h1:2pMXdBnCiXjfCYx/hLqFxccPoqsSveQFxVLvNxy9bus= @@ -177,6 +179,13 @@ github.com/filecoin-project/specs-actors v0.0.0-20200409043918-e569f4a2f504 h1:m github.com/filecoin-project/specs-actors v0.0.0-20200409043918-e569f4a2f504/go.mod h1:mdJraXq5vMy0+/FqVQIrnNlpQ/Em6zeu06G/ltQ0/lA= github.com/filecoin-project/specs-actors v0.0.0-20200413173219-041b36c0a9f9 h1:4tI+G7/evqB8PeNTrzXmcyKt/mOLUl+hOOjWuM34OAA= github.com/filecoin-project/specs-actors v0.0.0-20200413173219-041b36c0a9f9/go.mod h1:2vDr7jdyeGaZa3izCjVknCuqYNn8GHuKi4wVmKa6+pM= +github.com/filecoin-project/specs-actors v0.0.0-20200415061109-4a9e396341bd h1:iBj3s3MMBcZqBLOF9bj2Iij9SFQcvgbzBAyj1MRYzzY= +github.com/filecoin-project/specs-actors v0.0.0-20200415061109-4a9e396341bd/go.mod h1:M2HNOBpYbgXl/V4GmJFOsY7lQNuAmOtrCQMa6Yfpfrc= +github.com/filecoin-project/specs-actors v0.0.0-20200415152026-b48e5d7dfd1b h1:1w61QcF/sA8rhRwh9xcAOBdrX60bIwRxhivvE/YMIJw= +github.com/filecoin-project/specs-actors v0.0.0-20200415152026-b48e5d7dfd1b/go.mod h1:M2HNOBpYbgXl/V4GmJFOsY7lQNuAmOtrCQMa6Yfpfrc= +github.com/filecoin-project/specs-actors v0.0.0-20200415163419-910af9a5064e/go.mod h1:M2HNOBpYbgXl/V4GmJFOsY7lQNuAmOtrCQMa6Yfpfrc= +github.com/filecoin-project/specs-actors v0.0.0-20200415170224-54c7b2a42e71 h1:kmU2Y+QIuUQG+1lELiLdcX/UMd+BVkSlX8jnii87+ZY= +github.com/filecoin-project/specs-actors v0.0.0-20200415170224-54c7b2a42e71/go.mod h1:M2HNOBpYbgXl/V4GmJFOsY7lQNuAmOtrCQMa6Yfpfrc= github.com/filecoin-project/specs-storage v0.0.0-20200410185809-9fbaaa08f275 h1:6OTcpsTQBQM0f/A67oEi4E4YtYd6fzkMqbU8cPIWMMs= github.com/filecoin-project/specs-storage v0.0.0-20200410185809-9fbaaa08f275/go.mod h1:xJ1/xl9+8zZeSSSFmDC3Wr6uusCTxyYPI0VeNVSFmPE= github.com/filecoin-project/storage-fsm v0.0.0-20200413200947-069c3b2468ca h1:TejufIAWDpEVqFUCszDpgOEzXBWuTVltsDQL/3F8Jxo= @@ -889,6 +898,8 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20200321164527-9340289d0ca7/go.mod h1:X github.com/whyrusleeping/cbor-gen v0.0.0-20200402171437-3d27c146c105 h1:Sh6UG5dW5xW8Ek2CtRGq4ipdEvvx9hOyBJjEGyTYDl0= github.com/whyrusleeping/cbor-gen v0.0.0-20200402171437-3d27c146c105/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= github.com/whyrusleeping/cbor-gen v0.0.0-20200402171437-3d27c146c105/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e h1:JY8o/ebUUrCYetWmjRCNghxC59cOEaili83rxPRQCLw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= diff --git a/node/impl/full/state.go b/node/impl/full/state.go index ce136b77b..77d979a42 100644 --- a/node/impl/full/state.go +++ b/node/impl/full/state.go @@ -49,46 +49,12 @@ func (a *StateAPI) StateNetworkName(ctx context.Context) (dtypes.NetworkName, er return stmgr.GetNetworkName(ctx, a.StateManager, a.Chain.GetHeaviestTipSet().ParentState()) } -func (a *StateAPI) StateMinerSectors(ctx context.Context, addr address.Address, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { +func (a *StateAPI) StateMinerSectors(ctx context.Context, addr address.Address, filter *abi.BitField, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { ts, err := a.Chain.GetTipSetFromKey(tsk) if err != nil { return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err) } - return stmgr.GetMinerSectorSet(ctx, a.StateManager, ts, addr) -} - -func (a *StateAPI) StateMinerProvingSet(ctx context.Context, addr address.Address, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) { - ts, err := a.Chain.GetTipSetFromKey(tsk) - if err != nil { - return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err) - } - return stmgr.GetMinerProvingSet(ctx, a.StateManager, ts, addr) -} - -func (a *StateAPI) StateMinerPower(ctx context.Context, maddr address.Address, tsk types.TipSetKey) (*api.MinerPower, error) { - ts, err := a.Chain.GetTipSetFromKey(tsk) - if err != nil { - return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err) - } - mpow, tpow, err := stmgr.GetPower(ctx, a.StateManager, ts, maddr) - if err != nil { - return nil, err - } - - if maddr != address.Undef { - slashed, err := stmgr.GetMinerSlashed(ctx, a.StateManager, ts, maddr) - if err != nil { - return nil, err - } - if slashed { - mpow = types.NewInt(0) - } - } - - return &api.MinerPower{ - MinerPower: mpow, - TotalPower: tpow, - }, nil + return stmgr.GetMinerSectorSet(ctx, a.StateManager, ts, addr, filter) } func (a *StateAPI) StateMinerWorker(ctx context.Context, m address.Address, tsk types.TipSetKey) (address.Address, error) { @@ -107,14 +73,6 @@ func (a *StateAPI) StateMinerPeerID(ctx context.Context, m address.Address, tsk return stmgr.GetMinerPeerID(ctx, a.StateManager, ts, m) } -func (a *StateAPI) StateMinerPostState(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*miner.PoStState, error) { - ts, err := a.Chain.GetTipSetFromKey(tsk) - if err != nil { - return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err) - } - return stmgr.GetMinerPostState(ctx, a.StateManager, ts, actor) -} - func (a *StateAPI) StateMinerSectorSize(ctx context.Context, actor address.Address, tsk types.TipSetKey) (abi.SectorSize, error) { ts, err := a.Chain.GetTipSetFromKey(tsk) if err != nil {