bcabe7b3b5
Method numbers never change anyways. At worst, we'll deprecate old methods and have to explicitly import them from the correct actors version to use them.
142 lines
3.9 KiB
Go
142 lines
3.9 KiB
Go
package market
|
|
|
|
import (
|
|
"golang.org/x/xerrors"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/go-state-types/abi"
|
|
"github.com/filecoin-project/go-state-types/cbor"
|
|
"github.com/ipfs/go-cid"
|
|
cbg "github.com/whyrusleeping/cbor-gen"
|
|
|
|
builtin0 "github.com/filecoin-project/specs-actors/actors/builtin"
|
|
market0 "github.com/filecoin-project/specs-actors/actors/builtin/market"
|
|
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin"
|
|
|
|
"github.com/filecoin-project/lotus/chain/actors/adt"
|
|
"github.com/filecoin-project/lotus/chain/actors/builtin"
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
)
|
|
|
|
func init() {
|
|
builtin.RegisterActorState(builtin0.StorageMarketActorCodeID, func(store adt.Store, root cid.Cid) (cbor.Marshaler, error) {
|
|
return load0(store, root)
|
|
})
|
|
builtin.RegisterActorState(builtin2.StorageMarketActorCodeID, func(store adt.Store, root cid.Cid) (cbor.Marshaler, error) {
|
|
return load2(store, root)
|
|
})
|
|
}
|
|
|
|
var (
|
|
Address = builtin2.StorageMarketActorAddr
|
|
Methods = builtin2.MethodsMarket
|
|
)
|
|
|
|
func Load(store adt.Store, act *types.Actor) (st State, err error) {
|
|
switch act.Code {
|
|
case builtin0.StorageMarketActorCodeID:
|
|
return load0(store, act.Head)
|
|
case builtin2.StorageMarketActorCodeID:
|
|
return load2(store, act.Head)
|
|
}
|
|
return nil, xerrors.Errorf("unknown actor code %s", act.Code)
|
|
}
|
|
|
|
type State interface {
|
|
cbor.Marshaler
|
|
BalancesChanged(State) (bool, error)
|
|
EscrowTable() (BalanceTable, error)
|
|
LockedTable() (BalanceTable, error)
|
|
TotalLocked() (abi.TokenAmount, error)
|
|
StatesChanged(State) (bool, error)
|
|
States() (DealStates, error)
|
|
ProposalsChanged(State) (bool, error)
|
|
Proposals() (DealProposals, error)
|
|
VerifyDealsForActivation(
|
|
minerAddr address.Address, deals []abi.DealID, currEpoch, sectorExpiry abi.ChainEpoch,
|
|
) (weight, verifiedWeight abi.DealWeight, err error)
|
|
}
|
|
|
|
type BalanceTable interface {
|
|
ForEach(cb func(address.Address, abi.TokenAmount) error) error
|
|
Get(key address.Address) (abi.TokenAmount, error)
|
|
}
|
|
|
|
type DealStates interface {
|
|
ForEach(cb func(id abi.DealID, ds DealState) error) error
|
|
Get(id abi.DealID) (*DealState, bool, error)
|
|
|
|
array() adt.Array
|
|
decode(*cbg.Deferred) (*DealState, error)
|
|
}
|
|
|
|
type DealProposals interface {
|
|
ForEach(cb func(id abi.DealID, dp DealProposal) error) error
|
|
Get(id abi.DealID) (*DealProposal, bool, error)
|
|
|
|
array() adt.Array
|
|
decode(*cbg.Deferred) (*DealProposal, error)
|
|
}
|
|
|
|
type PublishStorageDealsParams = market0.PublishStorageDealsParams
|
|
type PublishStorageDealsReturn = market0.PublishStorageDealsReturn
|
|
type VerifyDealsForActivationParams = market0.VerifyDealsForActivationParams
|
|
|
|
type ClientDealProposal = market0.ClientDealProposal
|
|
|
|
type DealState struct {
|
|
SectorStartEpoch abi.ChainEpoch // -1 if not yet included in proven sector
|
|
LastUpdatedEpoch abi.ChainEpoch // -1 if deal state never updated
|
|
SlashEpoch abi.ChainEpoch // -1 if deal never slashed
|
|
}
|
|
|
|
type DealProposal struct {
|
|
PieceCID cid.Cid
|
|
PieceSize abi.PaddedPieceSize
|
|
VerifiedDeal bool
|
|
Client address.Address
|
|
Provider address.Address
|
|
Label string
|
|
StartEpoch abi.ChainEpoch
|
|
EndEpoch abi.ChainEpoch
|
|
StoragePricePerEpoch abi.TokenAmount
|
|
ProviderCollateral abi.TokenAmount
|
|
ClientCollateral abi.TokenAmount
|
|
}
|
|
|
|
type DealStateChanges struct {
|
|
Added []DealIDState
|
|
Modified []DealStateChange
|
|
Removed []DealIDState
|
|
}
|
|
|
|
type DealIDState struct {
|
|
ID abi.DealID
|
|
Deal DealState
|
|
}
|
|
|
|
// DealStateChange is a change in deal state from -> to
|
|
type DealStateChange struct {
|
|
ID abi.DealID
|
|
From *DealState
|
|
To *DealState
|
|
}
|
|
|
|
type DealProposalChanges struct {
|
|
Added []ProposalIDState
|
|
Removed []ProposalIDState
|
|
}
|
|
|
|
type ProposalIDState struct {
|
|
ID abi.DealID
|
|
Proposal DealProposal
|
|
}
|
|
|
|
func EmptyDealState() *DealState {
|
|
return &DealState{
|
|
SectorStartEpoch: -1,
|
|
SlashEpoch: -1,
|
|
LastUpdatedEpoch: -1,
|
|
}
|
|
}
|