2019-06-25 11:42:17 +00:00
|
|
|
package api
|
|
|
|
|
2019-06-29 09:19:06 +00:00
|
|
|
import (
|
|
|
|
"context"
|
2019-07-08 21:01:15 +00:00
|
|
|
|
2019-07-24 00:09:34 +00:00
|
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
|
|
|
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"
|
2019-06-29 09:19:06 +00:00
|
|
|
)
|
|
|
|
|
2019-07-02 13:05:43 +00:00
|
|
|
// Version provides various build-time information
|
2019-06-25 11:42:17 +00:00
|
|
|
type Version struct {
|
|
|
|
Version string
|
|
|
|
|
2019-07-19 10:15:22 +00:00
|
|
|
// APIVersion is a binary encoded semver version of the remote implementing
|
|
|
|
// this api
|
|
|
|
//
|
|
|
|
// See APIVersion in build/version.go
|
|
|
|
APIVersion uint32
|
|
|
|
|
2019-06-25 11:42:17 +00:00
|
|
|
// 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-24 00:09:34 +00:00
|
|
|
type Common interface {
|
2019-07-23 17:27:45 +00:00
|
|
|
// Auth
|
|
|
|
AuthVerify(ctx context.Context, token string) ([]string, error)
|
|
|
|
AuthNew(ctx context.Context, perms []string) ([]byte, error)
|
|
|
|
|
2019-07-24 00:09:34 +00:00
|
|
|
// network
|
|
|
|
|
|
|
|
NetPeers(context.Context) ([]peer.AddrInfo, error)
|
|
|
|
NetConnect(context.Context, peer.AddrInfo) error
|
|
|
|
NetAddrsListen(context.Context) (peer.AddrInfo, 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)
|
|
|
|
}
|
|
|
|
|
|
|
|
// FullNode API is a low-level interface to the Filecoin network full node
|
|
|
|
type FullNode interface {
|
|
|
|
Common
|
|
|
|
|
|
|
|
// 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)
|
2019-07-23 00:54:27 +00:00
|
|
|
ChainGetBlock(context.Context, cid.Cid) (*chain.BlockHeader, error)
|
|
|
|
ChainGetBlockMessages(context.Context, cid.Cid) ([]*chain.SignedMessage, error)
|
2019-06-25 11:42:17 +00:00
|
|
|
|
|
|
|
// messages
|
|
|
|
|
2019-07-11 02:36:43 +00:00
|
|
|
MpoolPending(context.Context, *chain.TipSet) ([]*chain.SignedMessage, error)
|
2019-07-17 03:05:55 +00:00
|
|
|
MpoolPush(context.Context, *chain.SignedMessage) error
|
2019-06-25 11:42:17 +00:00
|
|
|
|
2019-07-24 00:09:34 +00:00
|
|
|
// FullNodeStruct
|
2019-06-25 11:42:17 +00:00
|
|
|
|
|
|
|
// miner
|
|
|
|
|
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)
|
2019-06-25 11:42:17 +00:00
|
|
|
|
|
|
|
// // 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)
|
2019-07-17 03:05:55 +00:00
|
|
|
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)
|
2019-07-17 03:05:55 +00:00
|
|
|
|
2019-06-25 11:42:17 +00:00
|
|
|
// 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-24 00:09:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Full API is a low-level interface to the Filecoin network storage miner node
|
|
|
|
type StorageMiner interface {
|
|
|
|
Common
|
2019-06-25 11:42:17 +00:00
|
|
|
}
|