api

package
v0.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2020 License: Apache-2.0, MIT Imports: 18 Imported by: 302

Documentation

Index

Constants

View Source
const (
	StageIdle = SyncStateStage(iota)
	StageHeaders
	StagePersistHeaders
	StageMessages
	StageSyncComplete
	StageSyncErrored
)
View Source
const (
	DealUnknown  = DealState(iota)
	DealRejected // Provider didn't like the proposal
	DealAccepted // Proposal accepted, data moved
	DealStaged   // Data put into the sector
	DealSealing  // Data in process of being sealed

	DealFailed
	DealComplete

	DealError // deal failed with an unexpected error

	DealNoUpdate = DealUnknown
)

Variables

View Source
var DealStates = []string{
	"DealUnknown",
	"DealRejected",
	"DealAccepted",
	"DealStaged",
	"DealSealing",
	"DealFailed",
	"DealComplete",
	"DealError",
}
View Source
var SectorStates = []string{
	UndefinedSectorState: "UndefinedSectorState",
	Empty:                "Empty",
	Packing:              "Packing",
	Unsealed:             "Unsealed",
	PreCommitting:        "PreCommitting",
	PreCommitted:         "PreCommitted",
	Committing:           "Committing",
	CommitWait:           "CommitWait",
	Proving:              "Proving",

	SealFailed:       "SealFailed",
	PreCommitFailed:  "PreCommitFailed",
	SealCommitFailed: "SealCommitFailed",
	CommitFailed:     "CommitFailed",

	FailedUnrecoverable: "FailedUnrecoverable",

	Faulty:        "Faulty",
	FaultReported: "FaultReported",
	FaultedFinal:  "FaultedFinal",
}

Functions

func SignWith

func SignWith(ctx context.Context, signer Signer, addr address.Address, signable ...Signable) error

Types

type ActiveSync

type ActiveSync struct {
	Base   *types.TipSet
	Target *types.TipSet

	Stage  SyncStateStage
	Height uint64

	Start   time.Time
	End     time.Time
	Message string
}

type ActorState

type ActorState struct {
	Balance types.BigInt
	State   interface{}
}

type BlockMessages

type BlockMessages struct {
	BlsMessages   []*types.Message
	SecpkMessages []*types.SignedMessage

	Cids []cid.Cid
}

type ChainSectorInfo

type ChainSectorInfo struct {
	SectorID uint64
	CommD    []byte
	CommR    []byte
}

type ChannelInfo

type ChannelInfo struct {
	Channel        address.Address
	ChannelMessage cid.Cid
}

type Common

type Common interface {
	// Auth
	AuthVerify(ctx context.Context, token string) ([]Permission, error)
	AuthNew(ctx context.Context, perms []Permission) ([]byte, error)

	NetConnectedness(context.Context, peer.ID) (network.Connectedness, error)
	NetPeers(context.Context) ([]peer.AddrInfo, error)
	NetConnect(context.Context, peer.AddrInfo) error
	NetAddrsListen(context.Context) (peer.AddrInfo, error)
	NetDisconnect(context.Context, peer.ID) error

	// ID returns peerID of libp2p node backing this API
	ID(context.Context) (peer.ID, error)

	// Version provides information about API provider
	Version(context.Context) (Version, error)
}

type DealInfo

type DealInfo struct {
	ProposalCid cid.Cid
	State       DealState
	Provider    address.Address

	PieceRef []byte // cid bytes
	Size     uint64

	PricePerEpoch types.BigInt
	Duration      uint64
}

type DealState

type DealState = uint64

type FullNode

type FullNode interface {
	Common

	// ChainNotify returns channel with chain head updates
	// First message is guaranteed to be of len == 1, and type == 'current'
	ChainNotify(context.Context) (<-chan []*store.HeadChange, error)
	ChainHead(context.Context) (*types.TipSet, error)
	ChainGetRandomness(context.Context, types.TipSetKey, int64) ([]byte, error)
	ChainGetBlock(context.Context, cid.Cid) (*types.BlockHeader, error)
	ChainGetTipSet(context.Context, types.TipSetKey) (*types.TipSet, error)
	ChainGetBlockMessages(context.Context, cid.Cid) (*BlockMessages, error)
	ChainGetParentReceipts(context.Context, cid.Cid) ([]*types.MessageReceipt, error)
	ChainGetParentMessages(context.Context, cid.Cid) ([]Message, error)
	ChainGetTipSetByHeight(context.Context, uint64, *types.TipSet) (*types.TipSet, error)
	ChainReadObj(context.Context, cid.Cid) ([]byte, error)
	ChainSetHead(context.Context, *types.TipSet) error
	ChainGetGenesis(context.Context) (*types.TipSet, error)
	ChainTipSetWeight(context.Context, *types.TipSet) (types.BigInt, error)
	ChainGetNode(ctx context.Context, p string) (interface{}, error)
	ChainGetMessage(context.Context, cid.Cid) (*types.Message, error)
	ChainGetPath(ctx context.Context, from types.TipSetKey, to types.TipSetKey) ([]*store.HeadChange, error)

	// syncer
	SyncState(context.Context) (*SyncState, error)
	SyncSubmitBlock(ctx context.Context, blk *types.BlockMsg) error
	SyncIncomingBlocks(ctx context.Context) (<-chan *types.BlockHeader, error)
	SyncMarkBad(ctx context.Context, bcid cid.Cid) error

	// messages
	MpoolPending(context.Context, *types.TipSet) ([]*types.SignedMessage, error)
	MpoolPush(context.Context, *types.SignedMessage) (cid.Cid, error)
	MpoolPushMessage(context.Context, *types.Message) (*types.SignedMessage, error) // get nonce, sign, push
	MpoolGetNonce(context.Context, address.Address) (uint64, error)
	MpoolSub(context.Context) (<-chan MpoolUpdate, error)

	MinerCreateBlock(context.Context, address.Address, *types.TipSet, *types.Ticket, *types.EPostProof, []*types.SignedMessage, uint64, uint64) (*types.BlockMsg, error)

	WalletNew(context.Context, string) (address.Address, error)
	WalletHas(context.Context, address.Address) (bool, error)
	WalletList(context.Context) ([]address.Address, error)
	WalletBalance(context.Context, address.Address) (types.BigInt, error)
	WalletSign(context.Context, address.Address, []byte) (*types.Signature, error)
	WalletSignMessage(context.Context, address.Address, *types.Message) (*types.SignedMessage, error)
	WalletDefaultAddress(context.Context) (address.Address, error)
	WalletSetDefault(context.Context, address.Address) error
	WalletExport(context.Context, address.Address) (*types.KeyInfo, error)
	WalletImport(context.Context, *types.KeyInfo) (address.Address, error)

	// ClientImport imports file under the specified path into filestore
	ClientImport(ctx context.Context, path string) (cid.Cid, error)
	ClientStartDeal(ctx context.Context, data cid.Cid, addr address.Address, miner address.Address, epochPrice types.BigInt, blocksDuration uint64) (*cid.Cid, error)
	ClientGetDealInfo(context.Context, cid.Cid) (*DealInfo, error)
	ClientListDeals(ctx context.Context) ([]DealInfo, error)
	ClientHasLocal(ctx context.Context, root cid.Cid) (bool, error)
	ClientFindData(ctx context.Context, root cid.Cid) ([]QueryOffer, error)
	ClientRetrieve(ctx context.Context, order RetrievalOrder, path string) error
	ClientQueryAsk(ctx context.Context, p peer.ID, miner address.Address) (*types.SignedStorageAsk, error)

	// ClientListImports lists imported files and their root CIDs
	ClientListImports(ctx context.Context) ([]Import, error)

	// if tipset is nil, we'll use heaviest
	StateCall(context.Context, *types.Message, *types.TipSet) (*types.MessageReceipt, error)
	StateReplay(context.Context, *types.TipSet, cid.Cid) (*ReplayResults, error)
	StateGetActor(ctx context.Context, actor address.Address, ts *types.TipSet) (*types.Actor, error)
	StateReadState(ctx context.Context, act *types.Actor, ts *types.TipSet) (*ActorState, error)
	StateListMessages(ctx context.Context, match *types.Message, ts *types.TipSet, toht uint64) ([]cid.Cid, error)

	StateMinerSectors(context.Context, address.Address, *types.TipSet) ([]*ChainSectorInfo, error)
	StateMinerProvingSet(context.Context, address.Address, *types.TipSet) ([]*ChainSectorInfo, error)
	StateMinerPower(context.Context, address.Address, *types.TipSet) (MinerPower, error)
	StateMinerWorker(context.Context, address.Address, *types.TipSet) (address.Address, error)
	StateMinerPeerID(ctx context.Context, m address.Address, ts *types.TipSet) (peer.ID, error)
	StateMinerElectionPeriodStart(ctx context.Context, actor address.Address, ts *types.TipSet) (uint64, error)
	StateMinerSectorSize(context.Context, address.Address, *types.TipSet) (uint64, error)
	StatePledgeCollateral(context.Context, *types.TipSet) (types.BigInt, error)
	StateWaitMsg(context.Context, cid.Cid) (*MsgWait, error)
	StateListMiners(context.Context, *types.TipSet) ([]address.Address, error)
	StateListActors(context.Context, *types.TipSet) ([]address.Address, error)
	StateMarketBalance(context.Context, address.Address, *types.TipSet) (actors.StorageParticipantBalance, error)
	StateMarketParticipants(context.Context, *types.TipSet) (map[string]actors.StorageParticipantBalance, error)
	StateMarketDeals(context.Context, *types.TipSet) (map[string]actors.OnChainDeal, error)
	StateMarketStorageDeal(context.Context, uint64, *types.TipSet) (*actors.OnChainDeal, error)
	StateLookupID(context.Context, address.Address, *types.TipSet) (address.Address, error)
	StateChangedActors(context.Context, cid.Cid, cid.Cid) (map[string]types.Actor, error)
	StateGetReceipt(context.Context, cid.Cid, *types.TipSet) (*types.MessageReceipt, error)
	StateMinerSectorCount(context.Context, address.Address, *types.TipSet) (MinerSectors, error)
	StateCompute(context.Context, uint64, []*types.Message, *types.TipSet) (cid.Cid, error)

	MarketEnsureAvailable(context.Context, address.Address, types.BigInt) error

	PaychGet(ctx context.Context, from, to address.Address, ensureFunds types.BigInt) (*ChannelInfo, error)
	PaychList(context.Context) ([]address.Address, error)
	PaychStatus(context.Context, address.Address) (*PaychStatus, error)
	PaychClose(context.Context, address.Address) (cid.Cid, error)
	PaychAllocateLane(ctx context.Context, ch address.Address) (uint64, error)
	PaychNewPayment(ctx context.Context, from, to address.Address, vouchers []VoucherSpec) (*PaymentInfo, error)
	PaychVoucherCheckValid(context.Context, address.Address, *types.SignedVoucher) error
	PaychVoucherCheckSpendable(context.Context, address.Address, *types.SignedVoucher, []byte, []byte) (bool, error)
	PaychVoucherCreate(context.Context, address.Address, types.BigInt, uint64) (*types.SignedVoucher, error)
	PaychVoucherAdd(context.Context, address.Address, *types.SignedVoucher, []byte, types.BigInt) (types.BigInt, error)
	PaychVoucherList(context.Context, address.Address) ([]*types.SignedVoucher, error)
	PaychVoucherSubmit(context.Context, address.Address, *types.SignedVoucher) (cid.Cid, error)
}

FullNode API is a low-level interface to the Filecoin network full node

type Import

type Import struct {
	Status   filestore.Status
	Key      cid.Cid
	FilePath string
	Size     uint64
}

type Message

type Message struct {
	Cid     cid.Cid
	Message *types.Message
}

type MinerPower

type MinerPower struct {
	MinerPower types.BigInt
	TotalPower types.BigInt
}

type MinerSectors added in v0.1.5

type MinerSectors struct {
	Pset uint64
	Sset uint64
}

type MpoolChange

type MpoolChange int
const (
	MpoolAdd MpoolChange = iota
	MpoolRemove
)

type MpoolUpdate

type MpoolUpdate struct {
	Type    MpoolChange
	Message *types.SignedMessage
}

type MsgWait

type MsgWait struct {
	Receipt types.MessageReceipt
	TipSet  *types.TipSet
}

type MultiaddrSlice

type MultiaddrSlice []ma.Multiaddr

TODO: check if this exists anywhere else

func (*MultiaddrSlice) UnmarshalJSON

func (m *MultiaddrSlice) UnmarshalJSON(raw []byte) (err error)

type PCHDir

type PCHDir int
const (
	PCHUndef PCHDir = iota
	PCHInbound
	PCHOutbound
)

type PaychStatus

type PaychStatus struct {
	ControlAddr address.Address
	Direction   PCHDir
}

type PaymentInfo

type PaymentInfo struct {
	Channel        address.Address
	ChannelMessage *cid.Cid
	Vouchers       []*types.SignedVoucher
}

func (*PaymentInfo) MarshalCBOR

func (t *PaymentInfo) MarshalCBOR(w io.Writer) error

func (*PaymentInfo) UnmarshalCBOR

func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error

type Permission

type Permission = string

type QueryOffer

type QueryOffer struct {
	Err string

	Root cid.Cid

	Size     uint64
	MinPrice types.BigInt

	Miner       address.Address
	MinerPeerID peer.ID
}

func (*QueryOffer) Order

func (o *QueryOffer) Order(client address.Address) RetrievalOrder

type ReplayResults

type ReplayResults struct {
	Msg     *types.Message
	Receipt *types.MessageReceipt
	Error   string
}

type RetrievalOrder

type RetrievalOrder struct {
	// TODO: make this less unixfs specific
	Root cid.Cid
	Size uint64
	// TODO: support offset
	Total types.BigInt

	Client      address.Address
	Miner       address.Address
	MinerPeerID peer.ID
}

type SealedRef

type SealedRef struct {
	SectorID uint64
	Offset   uint64
	Size     uint64
}

func (*SealedRef) MarshalCBOR

func (t *SealedRef) MarshalCBOR(w io.Writer) error

func (*SealedRef) UnmarshalCBOR

func (t *SealedRef) UnmarshalCBOR(r io.Reader) error

type SealedRefs

type SealedRefs struct {
	Refs []SealedRef
}

func (*SealedRefs) MarshalCBOR

func (t *SealedRefs) MarshalCBOR(w io.Writer) error

func (*SealedRefs) UnmarshalCBOR

func (t *SealedRefs) UnmarshalCBOR(r io.Reader) error

type SectorInfo

type SectorInfo struct {
	SectorID uint64
	State    SectorState
	CommD    []byte
	CommR    []byte
	Proof    []byte
	Deals    []uint64
	Ticket   sectorbuilder.SealTicket
	Seed     sectorbuilder.SealSeed
	Retries  uint64

	LastErr string
}

type SectorState

type SectorState = uint64

alias because cbor-gen doesn't like non-alias types

const (
	UndefinedSectorState SectorState = iota

	// happy path
	Empty
	Packing // sector not in sealStore, and not on chain

	Unsealed      // sealing / queued
	PreCommitting // on chain pre-commit
	PreCommitted  // waiting for seed
	Committing
	CommitWait // waiting for message to land on chain
	Proving

	// error modes
	FailedUnrecoverable

	SealFailed
	PreCommitFailed
	SealCommitFailed
	CommitFailed

	Faulty        // sector is corrupted or gone for some reason
	FaultReported // sector has been declared as a fault on chain
	FaultedFinal  // fault declared on chain
)

type SignFunc

type SignFunc = func(context.Context, []byte) (*types.Signature, error)

type Signable

type Signable interface {
	Sign(context.Context, SignFunc) error
}

type Signer

type Signer func(context.Context, address.Address, []byte) (*types.Signature, error)

type StorageMiner

type StorageMiner interface {
	Common

	ActorAddress(context.Context) (address.Address, error)

	ActorSectorSize(context.Context, address.Address) (uint64, error)

	// Temp api for testing
	PledgeSector(context.Context) error

	// Get the status of a given sector by ID
	SectorsStatus(context.Context, uint64) (SectorInfo, error)

	// List all staged sectors
	SectorsList(context.Context) ([]uint64, error)

	SectorsRefs(context.Context) (map[string][]SealedRef, error)

	SectorsUpdate(context.Context, uint64, SectorState) error

	WorkerStats(context.Context) (sectorbuilder.WorkerStats, error)

	// WorkerQueue registers a remote worker
	WorkerQueue(context.Context, sectorbuilder.WorkerCfg) (<-chan sectorbuilder.WorkerTask, error)

	WorkerDone(ctx context.Context, task uint64, res sectorbuilder.SealRes) error
}

StorageMiner is a low-level interface to the Filecoin network storage miner node

type SyncState

type SyncState struct {
	ActiveSyncs []ActiveSync
}

type SyncStateStage

type SyncStateStage int

type Version

type Version struct {
	Version string

	// APIVersion is a binary encoded semver version of the remote implementing
	// this api
	//
	// See APIVersion in build/version.go
	APIVersion build.Version

	// Seconds
	BlockDelay uint64
}

Version provides various build-time information

func (Version) String

func (v Version) String() string

type VoucherSpec

type VoucherSpec struct {
	Amount   types.BigInt
	TimeLock uint64
	MinClose uint64

	Extra *types.ModVerifyParams
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL