Documentation
¶
Overview ¶
包iface定义ipfs核心api,这是一组用于 与IPFS节点交互。
Index ¶
- Variables
- type AddEvent
- type BadPinNode
- type BlockAPI
- type BlockStat
- type ChangeType
- type ConnectionInfo
- type CoreAPI
- type DagAPI
- type DagBatch
- type DagOps
- type DhtAPI
- type IpnsEntry
- type IpnsResult
- type Key
- type KeyAPI
- type NameAPI
- type ObjectAPI
- type ObjectChange
- type ObjectStat
- type Path
- type Pin
- type PinAPI
- type PinStatus
- type PubSubAPI
- type PubSubMessage
- type PubSubSubscription
- type ReadSeekCloser
- type Reader
- type ResolvedPath
- type SwarmAPI
- type UnixfsAPI
Constants ¶
This section is empty.
Variables ¶
var ( ErrIsDir = errors.New("this dag node is a directory") ErrNotFile = errors.New("this dag node is not a regular file") ErrOffline = errors.New("this action must be run in online mode, try running 'ipfs daemon' first") )
var ( ErrNotConnected = errors.New("not connected") ErrConnNotFound = errors.New("conn not found") )
var ErrResolveFailed = errors.New("could not resolve name")
Functions ¶
This section is empty.
Types ¶
type AddEvent ¶
type AddEvent struct {
Name string
Path ResolvedPath `json:",omitempty"`
Bytes int64 `json:",omitempty"`
Size string `json:",omitempty"`
}
type BadPinNode ¶
type BadPinNode interface {
//路径是节点的路径
Path() ResolvedPath
//err是将节点标记为坏节点的原因
Err() error
}
bad pin node是一个被pin标记为坏的节点。请验证
type BlockAPI ¶
type BlockAPI interface {
//Put导入原始块数据,使用指定的设置对其进行哈希处理。
Put(context.Context, io.Reader, ...options.BlockPutOption) (BlockStat, error)
//获取解析路径的尝试并返回块中数据的读卡器
Get(context.Context, Path) (io.Reader, error)
//RM从本地BlockStore中删除由路径指定的块。
//默认情况下,如果在本地找不到块,将返回错误。
//
//注意:如果固定了指定的块,它将不会被删除,也不会出错。
//将被退回
Rm(context.Context, Path, ...options.BlockRmOption) error
//stat返回信息
Stat(context.Context, Path) (BlockStat, error)
}
blockapi指定块层的接口
type BlockStat ¶
type BlockStat interface {
//大小是块的大小
Size() int
//path返回块的路径
Path() ResolvedPath
}
blockstat包含有关块的信息
type ChangeType ¶
type ChangeType int
ChangeType表示ObjectChange中的更改类型
const ( //将链接添加到图表时设置diffAdd DiffAdd ChangeType = iota //从图表中删除链接时设置diffremove DiffRemove //在图表中更改链接时设置diffmod DiffMod )
type ConnectionInfo ¶
type ConnectionInfo interface {
//id返回peerid
ID() peer.ID
//地址返回与对等机连接的多地址
Address() ma.Multiaddr
//方向返回建立连接的方式
Direction() net.Direction
//延迟向对等端返回上次已知的往返时间
Latency() (time.Duration, error)
//流返回与对等方建立的流的列表
Streams() ([]protocol.ID, error)
}
ConnectionInfo包含有关对等机的信息
type CoreAPI ¶
type CoreAPI interface {
//unixfs返回unixfs API的实现
Unixfs() UnixfsAPI
//block返回block api的实现
Block() BlockAPI
//DAG返回DAG API的实现
Dag() DagAPI
//name返回name api的实现
Name() NameAPI
//key返回key api的实现
Key() KeyAPI
//pin返回pin api的实现
Pin() PinAPI
//object api返回对象api的实现
Object() ObjectAPI
//DHT返回DHT API的实现
Dht() DhtAPI
//Swarm返回Swarm API的实现
Swarm() SwarmAPI
//pubsub返回pubsub API的实现
PubSub() PubSubAPI
//resolvepath使用unixfs resolver解析路径
ResolvePath(context.Context, Path) (ResolvedPath, error)
//resolvenode使用unixfs解析路径(如果尚未解析)
//解析程序,获取并返回解析的节点
ResolveNode(context.Context, Path) (ipld.Node, error)
//WITHOPTIONS基于此实例创建coreapi的新实例
//应用的一组选项
WithOptions(...options.ApiOption) (CoreAPI, error)
}
coreapi为go程序定义到ipfs的统一接口
type DagAPI ¶
type DagAPI interface {
DagOps
//获取解析和获取由路径指定的节点的尝试
Get(ctx context.Context, path Path) (ipld.Node, error)
//树返回由路径指定的节点内的路径列表。
Tree(ctx context.Context, path Path, opts ...options.DagTreeOption) ([]Path, error)
//批量创建新的dagbatch
Batch(ctx context.Context) DagBatch
}
dagapi指定到ipld的接口
type DagOps ¶
type DagOps interface {
//使用指定的格式和输入编码放置插入数据。
//除非与withcodec或withhash一起使用,否则默认值为“dag cbor”和
//使用“sha256”。
Put(ctx context.Context, src io.Reader, opts ...options.DagPutOption) (ResolvedPath, error)
}
DAGOPS对可以一起批处理的操作进行分组
type DhtAPI ¶
type DhtAPI interface {
//findpeer查询DHT中与
//对等体ID
FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error)
//findproviders在DHT中查找能够提供特定值的对等方
//给出了一个键。
FindProviders(context.Context, Path, ...options.DhtFindProvidersOption) (<-chan pstore.PeerInfo, error)
//向网络宣布您正在提供给定值
Provide(context.Context, Path, ...options.DhtProvideOption) error
}
DHTAPI指定DHT的接口 注意:此API在不久的将来可能会被弃用,请参阅 https://github.com/ipfs/interface-ipfs-core/issues/249了解更多上下文。
type IpnsResult ¶
type KeyAPI ¶
type KeyAPI interface {
//生成生成新密钥,并将其存储在指定的密钥库中
//名称并返回其公钥的base58编码多哈希
Generate(ctx context.Context, name string, opts ...options.KeyGenerateOption) (Key, error)
//重命名将oldname键重命名为newname。返回键以及是否另一个键
//密钥被覆盖,或出现错误
Rename(ctx context.Context, oldName string, newName string, opts ...options.KeyRenameOption) (Key, bool, error)
//列表列出存储在密钥库中的密钥
List(ctx context.Context) ([]Key, error)
//self返回“main”节点键
Self(ctx context.Context) (Key, error)
//移除从密钥库中移除密钥。返回已删除密钥的IPN路径
Remove(ctx context.Context, name string) (Key, error)
}
keyapi指定到keystore的接口
type NameAPI ¶
type NameAPI interface {
//发布宣布新的IPN名称
Publish(ctx context.Context, path Path, opts ...options.NamePublishOption) (IpnsEntry, error)
//解析尝试解析指定名称的最新版本
Resolve(ctx context.Context, name string, opts ...options.NameResolveOption) (Path, error)
//搜索是解析的一个版本,它在发现路径时输出路径,
//缩短第一次进入的时间
//
//注意:默认情况下,从通道读取的所有路径都被认为是不安全的,
//除了最新的(通道读取缓冲区中的最后一个路径)。
Search(ctx context.Context, name string, opts ...options.NameResolveOption) (<-chan IpnsResult, error)
}
nameapi指定IPN的接口。
IPN是一个pki命名空间,其中名称是公钥的散列值,并且 私钥允许发布新的(签名的)值。在发布和 解析,使用的默认名称是节点自己的peerID,它是 它的公钥。
可以使用.key API列出并生成更多名称及其各自的键。
type ObjectAPI ¶
type ObjectAPI interface {
//新建创建新的空(默认情况下)DAG节点。
New(context.Context, ...options.ObjectNewOption) (ipld.Node, error)
//将导入的数据放入Merkledag
Put(context.Context, io.Reader, ...options.ObjectPutOption) (ResolvedPath, error)
//get返回路径的节点
Get(context.Context, Path) (ipld.Node, error)
//数据返回节点数据的读卡器
Data(context.Context, Path) (io.Reader, error)
//链接返回lint或节点包含的链接
Links(context.Context, Path) ([]*ipld.Link, error)
//stat返回有关节点的信息
Stat(context.Context, Path) (*ObjectStat, error)
//addlink在指定路径下添加链接。子路径可以指向
//必须存在的专利中的子目录(可以重写
//使用WITHCREATE选项)。
AddLink(ctx context.Context, base Path, name string, child Path, opts ...options.ObjectAddLinkOption) (ResolvedPath, error)
//rmlink从节点中删除链接
RmLink(ctx context.Context, base Path, link string) (ResolvedPath, error)
//AppendData将数据追加到节点
AppendData(context.Context, Path, io.Reader) (ResolvedPath, error)
//setdata设置节点中包含的数据
SetData(context.Context, Path, io.Reader) (ResolvedPath, error)
//diff返回将第一个对象转换为
//第二。
Diff(context.Context, Path, Path) ([]ObjectChange, error)
}
objectapi指定merkledag的接口并包含有用的实用程序 用于操作Merkledag数据结构。
type ObjectChange ¶
type ObjectChange struct {
//更改类型,可以是:
//*diffadd-添加了一个链接
//*diffremove-删除了一个链接
//*diffmod-修改了链接
Type ChangeType
//更改链接的路径
Path string
//在更改前保持链接路径。注意,当一个链接
//加上,这将是零。
Before ResolvedPath
//更改后保持链接路径。注意,当一个链接
//删除后,将为零。
After ResolvedPath
}
ObjectChange表示图形中的更改
type ObjectStat ¶
type ObjectStat struct {
//cid是节点的cid
Cid cid.Cid
//numlinks是节点包含的链接数
NumLinks int
//BlockSize是原始序列化节点的大小
BlockSize int
//linksize是链接块节的大小
LinksSize int
//data size是数据块节的大小
DataSize int
//累积大小是树的大小(块大小+链接大小)
CumulativeSize int
}
ObjectStat提供有关DAG节点的信息
type Path ¶
type Path interface {
//字符串以字符串形式返回路径。
String() string
//命名空间返回路径的第一个组件。
//
//例如,path“/ipfs/qmhash”,调用namespace()将返回“ipfs”
Namespace() string
//如果保证此路径指向的数据
//不要改变。
//
//请注意,解析的可变路径可以是不可变的。
Mutable() bool
}
路径是API中使用的路径的通用包装器。可以解析路径 使用API中的一个resolve函数传递给一个cid。
路径必须以有效前缀作为前缀:
*/ipfs-不可变的unixfs路径(文件) */ipld-不可变的ipld路径(数据) */ipns-可变名称。通常解析为不可变路径之一
type Pin ¶
type Pin interface {
//固定对象的路径
Path() ResolvedPath
//引脚类型
Type() string
}
pin保存有关pinned资源的信息
type PinAPI ¶
type PinAPI interface {
//添加创建新的pin,默认为递归-固定整个引用的pin
//树
Add(context.Context, Path, ...options.PinAddOption) error
//ls返回此节点上固定对象的列表
Ls(context.Context, ...options.PinLsOption) ([]Pin, error)
//rm删除由路径指定的对象的pin
Rm(context.Context, Path) error
//更新将一个管脚更改为另一个管脚,跳过对中匹配路径的检查
//老树
Update(ctx context.Context, from Path, to Path, opts ...options.PinUpdateOption) error
//验证验证固定对象的完整性
Verify(context.Context) (<-chan PinStatus, error)
}
pinapi指定Pining的接口
type PinStatus ¶
type PinStatus interface {
//OK指示是否已验证PIN正确。
Ok() bool
//bad nodes从pin返回任何坏(通常丢失)节点
BadNodes() []BadPinNode
}
pinstatus保存有关pin运行状况的信息
type PubSubAPI ¶
type PubSubAPI interface {
//LS按名称列出订阅的主题
Ls(context.Context) ([]string, error)
//对等方列出我们当前发布的对等方
Peers(context.Context, ...options.PubSubPeersOption) ([]peer.ID, error)
//将消息发布到给定的pubsub主题
Publish(context.Context, string, []byte) error
//订阅给定主题的消息
Subscribe(context.Context, string, ...options.PubSubSubscribeOption) (PubSubSubscription, error)
}
pubsubapi指定到pubsub的接口
type PubSubMessage ¶
type PubSubMessage interface {
//From返回消息到达的对等方的ID
From() peer.ID
//数据返回消息体
Data() []byte
//seq返回消息标识符
Seq() []byte
//主题返回此邮件设置为的主题列表
Topics() []string
}
pubsub message是单个pubsub消息
type PubSubSubscription ¶
type PubSubSubscription interface {
io.Closer
//下一步返回下一条传入消息
Next(context.Context) (PubSubMessage, error)
}
pubsubscription是一个活动的pubsubscription
type ReadSeekCloser ¶
readseekCloser实现读取、复制、查找和关闭的接口。
type ResolvedPath ¶
type ResolvedPath interface {
//cid返回路径引用的节点的cid。剩余的
//路径保证在节点内。
//
//实例:
//如果有3个链接对象:qmroot->a->b:
//
//CIDB:=“foo”:“bar”:42
//CIDA:=“B”:“/”:CIDB
//cidroot:=“a”:“/”:cida
//
//并解析路径:
//
//*“/ipfs/$cidroot”
//*调用cid()将返回'cidroot'
//*调用root()将返回'cidroot'
//*调用remains()将返回“
//
//*“/ipfs/$cidroot/a”
//*调用cid()将返回“cida”
//*调用root()将返回'cidroot'
//*调用remains()将返回“
//
//*“/ipfs/$cidroot/a/b/foo”
//*调用cid()将返回'cidb'
//*调用root()将返回'cidroot'
//*调用remains()将返回'foo'
//
//*“/ipfs/$cidroot/a/b/foo/bar”
//*调用cid()将返回'cidb'
//*调用root()将返回'cidroot'
//*调用remains()将返回'foo/bar'
Cid() cid.Cid
//根返回路径根对象的cid
//
//例子:
//如果有3个链接对象:qmroot->a->b,并解析路径
//“/ipfs/qmroot/a/b”,根方法将返回对象qmroot的cid
//
//有关更多示例,请参见cid()方法的文档
Root() cid.Cid
//余数返回路径的未解析部分
//
//例子:
//如果有两个链接对象:qmroot->a,其中a是cbor节点
//包含以下数据:
//
//“foo”:“bar”:42_
//
//解析/ipld/qmroot/a/foo/bar时,余数返回“foo/bar”
//
//有关更多示例,请参见cid()方法的文档
Remainder() string
Path
}
resolved path是解析为最后一个可解析节点的路径
func NewResolvedPath ¶
NewResolvedPath创建新的ResolvedPath。此函数不执行任何检查 并被解析器实现使用。输入错误可能 引起恐慌。小心轻放。
type SwarmAPI ¶
type SwarmAPI interface {
//
Connect(context.Context, pstore.PeerInfo) error
//断开与给定地址的连接
Disconnect(context.Context, ma.Multiaddr) error
//peers返回我们连接到的对等机列表
Peers(context.Context) ([]ConnectionInfo, error)
//knownaddrs返回此节点知道的所有地址的列表
KnownAddrs(context.Context) (map[peer.ID][]ma.Multiaddr, error)
//localaddrs返回已宣布的侦听地址列表
LocalAddrs(context.Context) ([]ma.Multiaddr, error)
//listenaddrs返回所有侦听地址的列表
ListenAddrs(context.Context) ([]ma.Multiaddr, error)
}
swarmapi指定libp2p swarm的接口
type UnixfsAPI ¶
type UnixfsAPI interface {
//添加将读卡器中的数据导入到merkledag文件中
//
//TODO:关于如何在许多不同的场景中使用它的一个长期有用的注释
Add(context.Context, files.Node, ...options.UnixfsAddOption) (ResolvedPath, error)
//get返回路径引用的文件树的只读句柄
//
//请注意,此API的某些实现可能应用指定的上下文
//到对返回文件执行的操作
Get(context.Context, Path) (files.Node, error)
//ls返回目录中的链接列表
Ls(context.Context, Path) ([]*ipld.Link, error)
}
unixfsapi是IPF中不可变文件的基本接口 注意:这个API是大量WIP,保证经常中断。