lotus/api/api.go

125 lines
3.0 KiB
Go
Raw Normal View History

package api
import (
"context"
2019-07-08 21:01:15 +00:00
2019-07-09 15:19:27 +00:00
"github.com/filecoin-project/go-lotus/chain"
2019-07-11 02:36:43 +00:00
"github.com/filecoin-project/go-lotus/chain/address"
2019-07-18 20:26:04 +00:00
"github.com/filecoin-project/go-lotus/chain/types"
2019-07-09 15:19:27 +00:00
2019-07-12 09:59:18 +00:00
"github.com/ipfs/go-cid"
2019-07-15 14:14:54 +00:00
"github.com/ipfs/go-filestore"
"github.com/libp2p/go-libp2p-core/peer"
)
2019-07-02 13:05:43 +00:00
// Version provides various build-time information
type Version struct {
Version string
// TODO: git commit / os / genesis cid?
}
2019-07-12 10:44:01 +00:00
type Import struct {
Status filestore.Status
Key cid.Cid
FilePath string
Size uint64
}
2019-07-17 06:05:11 +00:00
type MsgWait struct {
InBlock cid.Cid
Receipt types.MessageReceipt
}
2019-07-02 13:05:43 +00:00
// API is a low-level interface to the Filecoin network
type API interface {
// chain
2019-07-11 02:36:43 +00:00
ChainHead(context.Context) (*chain.TipSet, error) // TODO: check serialization
2019-07-09 15:19:27 +00:00
ChainSubmitBlock(ctx context.Context, blk *chain.BlockMsg) error // TODO: check serialization
2019-07-11 02:36:43 +00:00
ChainGetRandomness(context.Context, *chain.TipSet) ([]byte, error)
2019-07-17 06:05:11 +00:00
ChainWaitMsg(context.Context, cid.Cid) (*MsgWait, error)
// messages
// // wait
// // send
// // status
// // mpool
// // // ls / show / rm
2019-07-11 02:36:43 +00:00
MpoolPending(context.Context, *chain.TipSet) ([]*chain.SignedMessage, error)
MpoolPush(context.Context, *chain.SignedMessage) error
// dag
// // get block
// // (cli: show / info)
// network
2019-07-09 15:19:27 +00:00
NetPeers(context.Context) ([]peer.AddrInfo, error)
2019-07-08 19:07:16 +00:00
NetConnect(context.Context, peer.AddrInfo) error
2019-07-09 17:03:36 +00:00
NetAddrsListen(context.Context) (peer.AddrInfo, error)
// // ping
// Struct
// miner
// // create
// // owner
// // power
// // set-price
// // set-perrid
2019-07-11 02:36:43 +00:00
MinerStart(context.Context, address.Address) error
MinerCreateBlock(context.Context, address.Address, *chain.TipSet, []chain.Ticket, chain.ElectionProof, []*chain.SignedMessage) (*chain.BlockMsg, error)
// // UX ?
// wallet
2019-07-13 00:41:32 +00:00
WalletNew(context.Context, string) (address.Address, error)
WalletList(context.Context) ([]address.Address, error)
2019-07-18 20:26:04 +00:00
WalletBalance(context.Context, address.Address) (types.BigInt, error)
WalletSign(context.Context, address.Address, []byte) (*chain.Signature, error)
WalletDefaultAddress(context.Context) (address.Address, error)
// Really not sure where this belongs. It could go on the wallet, or the message pool, or the chain...
2019-07-17 06:05:11 +00:00
MpoolGetNonce(context.Context, address.Address) (uint64, error)
// // import
// // export
// // (on cli - cmd to list associations)
// dht
// // need ?
// paych
// // todo
// retrieval
// // retrieve piece
// Other
2019-07-12 09:59:18 +00:00
// ClientImport imports file under the specified path into filestore
ClientImport(ctx context.Context, path string) (cid.Cid, error)
// ClientUnimport removes references to the specified file from filestore
//ClientUnimport(path string)
// ClientListImports lists imported files and their root CIDs
2019-07-12 10:44:01 +00:00
ClientListImports(ctx context.Context) ([]Import, error)
2019-07-12 09:59:18 +00:00
//ClientListAsks() []Ask
2019-07-02 13:05:43 +00:00
// ID returns peerID of libp2p node backing this API
ID(context.Context) (peer.ID, error)
2019-07-02 13:05:43 +00:00
// Version provides information about API provider
Version(context.Context) (Version, error)
}