wip updates to sector set handling
This commit is contained in:
parent
e4641fc7ed
commit
149bb56b8e
@ -117,12 +117,10 @@ type FullNode interface {
|
|||||||
StateListMessages(ctx context.Context, match *types.Message, tsk types.TipSetKey, toht abi.ChainEpoch) ([]cid.Cid, error)
|
StateListMessages(ctx context.Context, match *types.Message, tsk types.TipSetKey, toht abi.ChainEpoch) ([]cid.Cid, error)
|
||||||
|
|
||||||
StateNetworkName(context.Context) (dtypes.NetworkName, error)
|
StateNetworkName(context.Context) (dtypes.NetworkName, error)
|
||||||
StateMinerSectors(context.Context, address.Address, types.TipSetKey) ([]*ChainSectorInfo, error)
|
StateMinerSectors(context.Context, address.Address, *abi.BitField, types.TipSetKey) ([]*ChainSectorInfo, error)
|
||||||
StateMinerProvingSet(context.Context, address.Address, types.TipSetKey) ([]*ChainSectorInfo, error)
|
|
||||||
StateMinerPower(context.Context, address.Address, types.TipSetKey) (*MinerPower, error)
|
StateMinerPower(context.Context, address.Address, types.TipSetKey) (*MinerPower, error)
|
||||||
StateMinerWorker(context.Context, address.Address, types.TipSetKey) (address.Address, error)
|
StateMinerWorker(context.Context, address.Address, types.TipSetKey) (address.Address, error)
|
||||||
StateMinerPeerID(ctx context.Context, m address.Address, tsk types.TipSetKey) (peer.ID, 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)
|
StateMinerSectorSize(context.Context, address.Address, types.TipSetKey) (abi.SectorSize, error)
|
||||||
StateMinerFaults(context.Context, address.Address, types.TipSetKey) ([]abi.SectorNumber, error)
|
StateMinerFaults(context.Context, address.Address, types.TipSetKey) ([]abi.SectorNumber, error)
|
||||||
StateSectorPreCommitInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error)
|
StateSectorPreCommitInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error)
|
||||||
@ -166,7 +164,6 @@ type FileRef struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type MinerSectors struct {
|
type MinerSectors struct {
|
||||||
Pset uint64
|
|
||||||
Sset uint64
|
Sset uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,12 +113,10 @@ type FullNodeStruct struct {
|
|||||||
ClientQueryAsk func(ctx context.Context, p peer.ID, miner address.Address) (*storagemarket.SignedStorageAsk, error) `perm:"read"`
|
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"`
|
StateNetworkName func(context.Context) (dtypes.NetworkName, error) `perm:"read"`
|
||||||
StateMinerSectors 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"`
|
||||||
StateMinerProvingSet func(context.Context, address.Address, types.TipSetKey) ([]*api.ChainSectorInfo, error) `perm:"read"`
|
|
||||||
StateMinerPower func(context.Context, address.Address, types.TipSetKey) (*api.MinerPower, 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"`
|
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"`
|
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"`
|
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"`
|
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"`
|
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)
|
return c.Internal.StateNetworkName(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *FullNodeStruct) StateMinerSectors(ctx context.Context, addr address.Address, tsk types.TipSetKey) ([]*api.ChainSectorInfo, error) {
|
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, tsk)
|
return c.Internal.StateMinerSectors(ctx, addr, filter, 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) StateMinerPower(ctx context.Context, a address.Address, tsk types.TipSetKey) (*api.MinerPower, error) {
|
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)
|
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) {
|
func (c *FullNodeStruct) StateMinerSectorSize(ctx context.Context, actor address.Address, tsk types.TipSetKey) (abi.SectorSize, error) {
|
||||||
return c.Internal.StateMinerSectorSize(ctx, actor, tsk)
|
return c.Internal.StateMinerSectorSize(ctx, actor, tsk)
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ package build
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/filecoin-project/specs-actors/actors/abi"
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/miner"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var SectorSizes = []abi.SectorSize{
|
var SectorSizes = []abi.SectorSize{
|
||||||
@ -16,12 +15,3 @@ var SectorSizes = []abi.SectorSize{
|
|||||||
const BlockDelay = 25
|
const BlockDelay = 25
|
||||||
|
|
||||||
const PropagationDelay = 6
|
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
|
|
||||||
|
@ -126,20 +126,23 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
|
|
||||||
// setup windowed post
|
// setup windowed post
|
||||||
{
|
{
|
||||||
|
provingPeriodBoundary := abi.ChainEpoch(0)
|
||||||
|
|
||||||
err = vm.MutateState(ctx, maddr, func(cst cbor.IpldStore, st *miner.State) error {
|
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
|
panic("from some randomness")
|
||||||
st.PoStState.ProvingPeriodStart = miner.ProvingPeriod
|
st.ProvingPeriodBoundary = 0
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
panic("todo, probably more cron stuff")
|
||||||
payload, err := cborutil.Dump(&miner.CronEventPayload{
|
payload, err := cborutil.Dump(&miner.CronEventPayload{
|
||||||
EventType: miner.CronEventWindowedPoStExpiration,
|
EventType: miner.CronEventProvingPeriod,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, err
|
return cid.Undef, err
|
||||||
}
|
}
|
||||||
params := &power.EnrollCronEventParams{
|
params := &power.EnrollCronEventParams{
|
||||||
EventEpoch: miner.ProvingPeriod + power.WindowedPostChallengeDuration,
|
EventEpoch: miner.WPoStProvingPeriod + provingPeriodBoundary, // TODO: correct ???
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,8 +210,6 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
},
|
},
|
||||||
ActivationEpoch: 0,
|
ActivationEpoch: 0,
|
||||||
DealWeight: dealWeight,
|
DealWeight: dealWeight,
|
||||||
DeclaredFaultEpoch: -1,
|
|
||||||
DeclaredFaultDuration: -1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = vm.MutateState(ctx, maddr, func(cst cbor.IpldStore, st *miner.State) error {
|
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)
|
return xerrors.Errorf("failed to prove commit: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
st.ProvingSet = st.Sectors
|
panic("assign deadlines")
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -231,7 +232,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
sectorBf.Set(uint64(preseal.SectorID))
|
sectorBf.Set(uint64(preseal.SectorID))
|
||||||
|
|
||||||
payload, err := cborutil.Dump(&miner.CronEventPayload{
|
payload, err := cborutil.Dump(&miner.CronEventPayload{
|
||||||
EventType: miner.CronEventSectorExpiry,
|
EventType: miner.CronEventPreCommitExpiry, // TODO: Review: Is this correct?
|
||||||
Sectors: §orBf,
|
Sectors: §orBf,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"github.com/filecoin-project/go-address"
|
"github.com/filecoin-project/go-address"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/api"
|
"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/state"
|
||||||
"github.com/filecoin-project/lotus/chain/store"
|
"github.com/filecoin-project/lotus/chain/store"
|
||||||
"github.com/filecoin-project/lotus/chain/types"
|
"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)
|
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) {
|
func SectorSetSizes(ctx context.Context, sm *StateManager, maddr address.Address, ts *types.TipSet) (api.MinerSectors, error) {
|
||||||
var mas miner.State
|
var mas miner.State
|
||||||
_, err := sm.LoadActorState(ctx, maddr, &mas, ts)
|
_, 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
|
return api.MinerSectors{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
ps, err := amt.LoadAMT(ctx, blks, mas.ProvingSet)
|
|
||||||
if err != nil {
|
|
||||||
return api.MinerSectors{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return api.MinerSectors{
|
return api.MinerSectors{
|
||||||
Pset: ps.Count,
|
|
||||||
Sset: ss.Count,
|
Sset: ss.Count,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@ -168,28 +151,14 @@ func PreCommitInfo(ctx context.Context, sm *StateManager, maddr address.Address,
|
|||||||
return *i, nil
|
return *i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMinerProvingSet(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) {
|
||||||
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) {
|
|
||||||
var mas miner.State
|
var mas miner.State
|
||||||
_, err := sm.LoadActorState(ctx, maddr, &mas, ts)
|
_, err := sm.LoadActorState(ctx, maddr, &mas, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err)
|
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) {
|
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")
|
return false, xerrors.Errorf("(get miner slashed) failed to load miner actor state")
|
||||||
}
|
}
|
||||||
|
|
||||||
if mas.PoStState.HasFailedPost() {
|
panic("update this")
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var spas power.State
|
var spas power.State
|
||||||
_, err = sm.LoadActorState(ctx, builtin.StoragePowerActorAddr, &spas, ts)
|
_, 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)
|
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)
|
faults, err := mas.Faults.All(miner.MaxFaultsCount)
|
||||||
if lerr != nil {
|
|
||||||
return nil, aerrors.HandleExternalError(lerr, "could not load proving set node")
|
|
||||||
}
|
|
||||||
|
|
||||||
faults, err := mas.FaultSet.All(2 * ss.Count)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("reading fault bit set: %w", err)
|
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
|
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)
|
a, err := amt.LoadAMT(ctx, cbor.NewCborStore(bs), ssc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -333,6 +295,16 @@ func LoadSectorsFromSet(ctx context.Context, bs blockstore.Blockstore, ssc cid.C
|
|||||||
|
|
||||||
var sset []*api.ChainSectorInfo
|
var sset []*api.ChainSectorInfo
|
||||||
if err := a.ForEach(ctx, func(i uint64, v *cbg.Deferred) error {
|
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
|
var oci miner.SectorOnChainInfo
|
||||||
if err := cbor.DecodeInto(v.Raw, &oci); err != nil {
|
if err := cbor.DecodeInto(v.Raw, &oci); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -400,7 +372,18 @@ func MinerGetBaseInfo(ctx context.Context, sm *StateManager, tsk types.TipSetKey
|
|||||||
return nil, err
|
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 {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to get proving set: %w", err)
|
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)
|
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)
|
prev, err := sm.ChainStore().GetLatestBeaconEntry(ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to get latest beacon entry: %w", err)
|
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,
|
MinerPower: mpow,
|
||||||
NetworkPower: tpow,
|
NetworkPower: tpow,
|
||||||
Sectors: provset,
|
Sectors: provset,
|
||||||
Worker: worker,
|
Worker: mas.GetWorker(),
|
||||||
SectorSize: ssize,
|
SectorSize: mas.Info.SectorSize,
|
||||||
PrevBeaconEntry: *prev,
|
PrevBeaconEntry: *prev,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
6
go.mod
6
go.mod
@ -25,7 +25,7 @@ require (
|
|||||||
github.com/filecoin-project/go-paramfetch v0.0.2-0.20200218225740-47c639bab663
|
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/go-statestore v0.1.0
|
||||||
github.com/filecoin-project/sector-storage v0.0.0-20200411000242-61616264b16d
|
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/specs-storage v0.0.0-20200410185809-9fbaaa08f275
|
||||||
github.com/filecoin-project/storage-fsm v0.0.0-20200413200947-069c3b2468ca
|
github.com/filecoin-project/storage-fsm v0.0.0-20200413200947-069c3b2468ca
|
||||||
github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1
|
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/opentracing/opentracing-go v1.1.0
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
|
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/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
||||||
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
|
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
|
||||||
go.opencensus.io v0.22.3
|
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/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/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
|
||||||
|
11
go.sum
11
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-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 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-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 h1:av5fw6wmm58FYMgJeoB/lK9XXrgdugYiTqkdxjTy9k8=
|
||||||
github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2/go.mod h1:pqTiPHobNkOVM5thSRsHYjyQfq7O5QSCMhvuu9JoDlg=
|
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=
|
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-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 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-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 h1:6OTcpsTQBQM0f/A67oEi4E4YtYd6fzkMqbU8cPIWMMs=
|
||||||
github.com/filecoin-project/specs-storage v0.0.0-20200410185809-9fbaaa08f275/go.mod h1:xJ1/xl9+8zZeSSSFmDC3Wr6uusCTxyYPI0VeNVSFmPE=
|
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=
|
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 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-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 h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
|
||||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
|
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=
|
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
|
||||||
|
@ -49,46 +49,12 @@ func (a *StateAPI) StateNetworkName(ctx context.Context) (dtypes.NetworkName, er
|
|||||||
return stmgr.GetNetworkName(ctx, a.StateManager, a.Chain.GetHeaviestTipSet().ParentState())
|
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)
|
ts, err := a.Chain.GetTipSetFromKey(tsk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err)
|
return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err)
|
||||||
}
|
}
|
||||||
return stmgr.GetMinerSectorSet(ctx, a.StateManager, ts, addr)
|
return stmgr.GetMinerSectorSet(ctx, a.StateManager, ts, addr, filter)
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *StateAPI) StateMinerWorker(ctx context.Context, m address.Address, tsk types.TipSetKey) (address.Address, error) {
|
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)
|
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) {
|
func (a *StateAPI) StateMinerSectorSize(ctx context.Context, actor address.Address, tsk types.TipSetKey) (abi.SectorSize, error) {
|
||||||
ts, err := a.Chain.GetTipSetFromKey(tsk)
|
ts, err := a.Chain.GetTipSetFromKey(tsk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user