Documentation
¶
Index ¶
- Constants
- Variables
- func GetDefaultBootstrapPeerAddrInfos() []peer.AddrInfo
- func NewRTPeerDiversityFilter(h host.Host, maxPerCpl, maxForTable int) *rtPeerIPGroupFilter
- func PrivateQueryFilter(_ interface{}, ai peer.AddrInfo) bool
- func PrivateRoutingTableFilter(dht interface{}, p peer.ID) bool
- func PublicQueryFilter(_ interface{}, ai peer.AddrInfo) bool
- func PublicRoutingTableFilter(dht interface{}, p peer.ID) bool
- func PublishLookupEvent(ctx context.Context, ev *LookupEvent)
- func Quorum(n int) routing.Option
- func RegisterForLookupEvents(ctx context.Context) (context.Context, <-chan *LookupEvent)
- type IpfsDHT
- func (dht *IpfsDHT) Bootstrap(ctx context.Context) (err error)
- func (dht *IpfsDHT) Close() error
- func (dht *IpfsDHT) Context() context.Context
- func (dht *IpfsDHT) FindLocal(ctx context.Context, id peer.ID) peer.AddrInfo
- func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo, err error)
- func (dht *IpfsDHT) FindProviders(ctx context.Context, c cid.Cid) ([]peer.AddrInfo, error)
- func (dht *IpfsDHT) FindProvidersAsync(ctx context.Context, key cid.Cid, count int) (ch <-chan peer.AddrInfo)
- func (dht *IpfsDHT) ForceRefresh() <-chan error
- func (dht *IpfsDHT) GetClosestPeers(ctx context.Context, key string) ([]peer.ID, error)
- func (dht *IpfsDHT) GetPublicKey(ctx context.Context, p peer.ID) (ci.PubKey, error)
- func (dht *IpfsDHT) GetRoutingTableDiversityStats() []peerdiversity.CplDiversityStats
- func (dht *IpfsDHT) GetValue(ctx context.Context, key string, opts ...routing.Option) (result []byte, err error)
- func (dht *IpfsDHT) Host() host.Host
- func (dht *IpfsDHT) Mode() ModeOpt
- func (dht *IpfsDHT) NetworkSize() (int32, error)
- func (dht *IpfsDHT) PeerID() peer.ID
- func (dht *IpfsDHT) PeerKey() []byte
- func (dht *IpfsDHT) Ping(ctx context.Context, p peer.ID) error
- func (dht *IpfsDHT) Provide(ctx context.Context, key cid.Cid, brdcst bool) (err error)
- func (dht *IpfsDHT) ProviderStore() providers.ProviderStore
- func (dht *IpfsDHT) PutValue(ctx context.Context, key string, value []byte, opts ...routing.Option) (err error)
- func (dht *IpfsDHT) RefreshRoutingTable() <-chan error
- func (dht *IpfsDHT) RoutingTable() *kb.RoutingTable
- func (dht *IpfsDHT) SearchValue(ctx context.Context, key string, opts ...routing.Option) (ch <-chan []byte, err error)
- type KeyKadID
- type LookupEvent
- type LookupTerminateEvent
- type LookupTerminationReason
- type LookupUpdateEvent
- type ModeOpt
- type Option
- func AddressFilter(f func([]ma.Multiaddr) []ma.Multiaddr) Option
- func BootstrapPeers(bootstrappers ...peer.AddrInfo) Option
- func BootstrapPeersFunc(getBootstrapPeers func() []peer.AddrInfo) Option
- func BucketSize(bucketSize int) Option
- func Concurrency(alpha int) Option
- func Datastore(ds ds.Batching) Option
- func DisableAutoRefresh() Option
- func DisableProviders() Option
- func DisableValues() Option
- func EnableOptimisticProvide() Option
- func LookupCheckConcurrency(n int) Option
- func MaxRecordAge(maxAge time.Duration) Option
- func Mode(m ModeOpt) Option
- func NamespacedValidator(ns string, v record.Validator) Option
- func OptimisticProvideJobsPoolSize(size int) Option
- func ProtocolExtension(ext protocol.ID) Option
- func ProtocolPrefix(prefix protocol.ID) Option
- func ProviderStore(ps providers.ProviderStore) Option
- func QueryFilter(filter QueryFilterFunc) Option
- func Resiliency(beta int) Option
- func RoutingTableFilter(filter RouteTableFilterFunc) Option
- func RoutingTableLatencyTolerance(latency time.Duration) Option
- func RoutingTablePeerDiversityFilter(pg peerdiversity.PeerIPGroupFilter) Option
- func RoutingTableRefreshPeriod(period time.Duration) Option
- func RoutingTableRefreshQueryTimeout(timeout time.Duration) Option
- func V1ProtocolOverride(proto protocol.ID) Option
- func Validator(v record.Validator) Option
- func WithCustomMessageSender(...) Option
- type PeerKadID
- type QueryFilterFunc
- type RouteTableFilterFunc
Constants ¶
const DefaultPrefix protocol.ID = amino.ProtocolPrefix
DefaultPrefix 是默认附加到所有 DHT 协议的应用程序特定前缀
Variables ¶
var ( // ProtocolDHT 默认的DHT协议 // 参数: // - protocol.ID DHT协议标识符 ProtocolDHT protocol.ID = amino.ProtocolID // DefaultProtocols DHT支持的默认协议列表 // 参数: // - []protocol.ID 协议标识符列表 DefaultProtocols = amino.Protocols )
var DefaultBootstrapPeers []multiaddr.Multiaddr
DefaultBootstrapPeers 是 libp2p 提供的一组公共 DHT 引导节点
var ErrNoPeersQueried = errors.New("failed to query any peers")
ErrNoPeersQueried 表示未能连接到任何节点
var ErrReadTimeout = net.ErrReadTimeout
ErrReadTimeout 在超时期间内未读取到消息时发生的错误
var LookupEventBufferSize = 16
LookupEventBufferSize 是要缓冲的事件数量
Functions ¶
func GetDefaultBootstrapPeerAddrInfos ¶
GetDefaultBootstrapPeerAddrInfos 返回默认引导节点的 peer.AddrInfos,以便我们可以通过将这些传递给 BootstrapPeers(...) 选项来初始化 DHT 返回值:
- []peer.AddrInfo 引导节点地址信息列表
func NewRTPeerDiversityFilter ¶
NewRTPeerDiversityFilter 构造一个用于路由表的对等节点IP组过滤器 参数:
- h: host.Host libp2p主机实例
- maxPerCpl: int 每个CPL允许的最大IP组数
- maxForTable: int 路由表允许的最大IP组数
返回值:
- *rtPeerIPGroupFilter 新创建的过滤器实例
func PrivateQueryFilter ¶
PrivateQueryFilter 目前不限制我们愿意从本地 DHT 查询的对等节点 参数:
- _: interface{} 接口
- ai: peer.AddrInfo 对等节点地址信息
返回值:
- bool 是否允许查询
func PrivateRoutingTableFilter ¶
PrivateRoutingTableFilter 如果与该对等节点的连接表明它在私有网络上,则允许将该对等节点添加到路由表中 参数:
- dht: interface{} DHT 接口
- p: peer.ID 对等节点 ID
返回值:
- bool 是否允许添加到路由表
func PublicQueryFilter ¶
PublicQueryFilter 如果对等节点被认为是可公开访问的,则返回 true 参数:
- _: interface{} 接口
- ai: peer.AddrInfo 对等节点地址信息
返回值:
- bool 是否可公开访问
func PublicRoutingTableFilter ¶
PublicRoutingTableFilter 如果与该对等节点的连接表明它在公共网络上,则允许将该对等节点添加到路由表中 参数:
- dht: interface{} DHT 接口
- p: peer.ID 对等节点 ID
返回值:
- bool 是否允许添加到路由表
func PublishLookupEvent ¶
func PublishLookupEvent(ctx context.Context, ev *LookupEvent)
PublishLookupEvent 将查询事件发布到与给定上下文关联的查询事件通道(如果有) 参数:
- ctx: context.Context 上下文
- ev: *LookupEvent 要发布的事件
返回值:
func Quorum ¶
Quorum 设置DHT查询需要从多少个对等节点获取值后才返回最佳值 当值为0时,表示DHT查询应该完整执行而不是提前返回 默认值: 0
参数:
- n: int 需要查询的对等节点数量
返回值:
- routing.Option 路由选项
func RegisterForLookupEvents ¶
func RegisterForLookupEvents(ctx context.Context) (context.Context, <-chan *LookupEvent)
RegisterForLookupEvents 使用给定上下文注册查找事件通道 返回的上下文可以传递给DHT查询以在返回的通道上接收查找事件
当调用者不再对查询事件感兴趣时,必须取消传入的上下文 参数:
- ctx: context.Context 上下文
返回值:
- context.Context 包含事件通道的上下文
- <-chan *LookupEvent 查找事件通道
Types ¶
type IpfsDHT ¶
IpfsDHT 是一个带有S/Kademlia修改的Kademlia实现。 它用于实现基本的路由模块。
func New ¶
New 使用指定的主机和选项创建一个新的DHT。 请注意,连接到DHT对等节点并不一定意味着它也在DHT路由表中。 如果路由表有超过"minRTRefreshThreshold"个对等节点,我们只在成功从对等节点获得查询响应或它向我们发送查询时才将其视为路由表候选者。
参数:
- ctx: context.Context 上下文
- h: host.Host 主机
- options: ...Option 选项
返回值:
- *IpfsDHT DHT实例
- error 错误信息
func NewDHT ¶
NewDHT 使用给定的对等节点作为"本地"主机创建一个新的DHT对象。 使用此函数初始化的IpfsDHT将响应DHT请求,而使用NewDHTClient初始化的IpfsDHT则不会。
参数:
- ctx: context.Context 上下文
- h: host.Host 主机
- dstore: ds.Batching 数据存储
返回值:
- *IpfsDHT DHT实例
func NewDHTClient ¶
NewDHTClient 使用给定的对等节点作为"本地"主机创建一个新的DHT对象。 使用此函数初始化的IpfsDHT客户端将不会响应DHT请求。如果需要对等节点响应DHT请求,请使用NewDHT。
参数:
- ctx: context.Context 上下文
- h: host.Host 主机
- dstore: ds.Batching 数据存储
返回值:
- *IpfsDHT DHT实例
func (*IpfsDHT) Bootstrap ¶
Bootstrap 告诉 DHT 进入满足 IpfsRouter 接口的引导状态 参数:
- ctx: context.Context 上下文
返回值:
- error 错误信息
func (*IpfsDHT) FindLocal ¶
FindLocal 查找连接到此DHT的具有给定ID的对等节点,并返回对等节点及其所在的表 参数:
- ctx: context.Context 上下文
- id: peer.ID 对等节点ID
返回值:
- peer.AddrInfo 对等节点地址信息
func (*IpfsDHT) FindPeer ¶
FindPeer 搜索具有给定ID的对等节点 参数:
- ctx: context.Context 上下文
- id: peer.ID 对等节点ID
返回值:
- peer.AddrInfo 对等节点信息
- error 错误信息
func (*IpfsDHT) FindProviders ¶
FindProviders 搜索直到上下文过期 参数:
- ctx: context.Context 上下文
- c: cid.Cid CID
返回值:
- []peer.AddrInfo 提供者信息列表
- error 错误信息
func (*IpfsDHT) FindProvidersAsync ¶
func (dht *IpfsDHT) FindProvidersAsync(ctx context.Context, key cid.Cid, count int) (ch <-chan peer.AddrInfo)
FindProvidersAsync 与FindProviders相同,但返回一个通道 一旦找到对等节点就会在通道上返回,甚至在搜索查询完成之前 如果count为零,则查询将运行直到完成。注意:不从返回的通道读取可能会阻塞查询的进度 参数:
- ctx: context.Context 上下文
- key: cid.Cid CID
- count: int 需要的提供者数量
返回值:
- <-chan peer.AddrInfo 提供者信息通道
func (*IpfsDHT) ForceRefresh ¶
ForceRefresh 类似于 RefreshRoutingTable,但强制 DHT 刷新路由表中的所有桶,而不考虑它们上次刷新的时间
返回的通道将阻塞直到刷新完成,然后产生错误并关闭。该通道是带缓冲的,可以安全地忽略 返回值:
- <-chan error 错误通道
func (*IpfsDHT) GetClosestPeers ¶
GetClosestPeers 执行 Kademlia '节点查找'操作 返回一个包含距离给定key最近的K个节点的通道
参数:
- ctx: context.Context 上下文
- key: string 查找的键值
返回值:
- []peer.ID 最近的K个节点ID
- error 错误信息
如果上下文被取消,该函数将返回上下文错误以及目前找到的最近的K个节点
func (*IpfsDHT) GetPublicKey ¶
GetPublicKey 根据对等节点ID获取公钥 如果公钥内联在对等节点ID中,则直接提取;否则向节点本身或DHT查询 参数:
- ctx: context.Context 上下文
- p: peer.ID 对等节点ID
返回值:
- ci.PubKey 公钥
- error 错误信息
func (*IpfsDHT) GetRoutingTableDiversityStats ¶
func (dht *IpfsDHT) GetRoutingTableDiversityStats() []peerdiversity.CplDiversityStats
GetRoutingTableDiversityStats 返回路由表的多样性统计信息。
返回值:
- []peerdiversity.CplDiversityStats 多样性统计信息
func (*IpfsDHT) GetValue ¶
func (dht *IpfsDHT) GetValue(ctx context.Context, key string, opts ...routing.Option) (result []byte, err error)
GetValue 搜索给定Key对应的值 参数:
- ctx: context.Context 上下文
- key: string 键
- opts: ...routing.Option 路由选项
返回值:
- []byte 查找到的值
- error 错误信息
func (*IpfsDHT) NetworkSize ¶
NetworkSize 返回DHT网络大小的最新估计 实验性:我们不保证此方法将继续存在于代码库中。使用时风险自负 返回值:
- int32 网络大小
- error 错误信息
func (*IpfsDHT) Ping ¶
Ping 向指定的对等节点发送ping消息并等待响应 参数:
- ctx: context.Context 上下文
- p: peer.ID 对等节点ID
返回值:
- error 错误信息
func (*IpfsDHT) Provide ¶
Provide 使此节点宣布它可以为给定的键提供值 参数:
- ctx: context.Context 上下文
- key: cid.Cid CID
- brdcst: bool 是否广播
返回值:
- error 错误信息
func (*IpfsDHT) ProviderStore ¶
func (dht *IpfsDHT) ProviderStore() providers.ProviderStore
ProviderStore 返回用于存储和检索提供者记录的提供者存储对象。
返回值:
- providers.ProviderStore 提供者存储
func (*IpfsDHT) PutValue ¶
func (dht *IpfsDHT) PutValue(ctx context.Context, key string, value []byte, opts ...routing.Option) (err error)
PutValue 为给定的Key添加对应的值,这是DHT的顶层"存储"操作 参数:
- ctx: context.Context 上下文
- key: string 键
- value: []byte 值
- opts: ...routing.Option 路由选项
返回值:
- error 错误信息
func (*IpfsDHT) RefreshRoutingTable ¶
RefreshRoutingTable 告诉 DHT 刷新其路由表
返回的通道将阻塞直到刷新完成,然后产生错误并关闭。该通道是带缓冲的,可以安全地忽略 返回值:
- <-chan error 错误通道
func (*IpfsDHT) RoutingTable ¶
func (dht *IpfsDHT) RoutingTable() *kb.RoutingTable
RoutingTable 返回DHT的路由表 返回值:
- *kb.RoutingTable 路由表
type KeyKadID ¶
KeyKadID 包含字符串和二进制形式的Kademlia键
func NewKeyKadID ¶
NewKeyKadID 从字符串Kademlia ID创建KeyKadID 参数:
- k: string Kademlia ID字符串
返回值:
- *KeyKadID 创建的KeyKadID对象
type LookupEvent ¶
type LookupEvent struct {
// Node 执行查找的节点ID
Node *PeerKadID
// ID 查找实例的唯一标识符
ID uuid.UUID
// Key 用作查找目标的Kademlia键
Key *KeyKadID
// Request 如果不为nil,描述与传出查询请求相关的状态更新事件
Request *LookupUpdateEvent
// Response 如果不为nil,描述与传出查询响应相关的状态更新事件
Response *LookupUpdateEvent
// Terminate 如果不为nil,描述终止事件
Terminate *LookupTerminateEvent
}
LookupEvent 在DHT查找过程中发生的每个重要事件时发出 LookupEvent支持JSON序列化,因为它的所有字段都支持递归序列化
func NewLookupEvent ¶
func NewLookupEvent( node peer.ID, id uuid.UUID, key string, request *LookupUpdateEvent, response *LookupUpdateEvent, terminate *LookupTerminateEvent, ) *LookupEvent
NewLookupEvent 创建一个LookupEvent,自动将节点libp2p ID转换为PeerKadID,将字符串Kademlia键转换为KeyKadID 参数:
- node: peer.ID 节点ID
- id: uuid.UUID 查找实例的唯一标识符
- key: string Kademlia键
- request: *LookupUpdateEvent 请求更新事件
- response: *LookupUpdateEvent 响应更新事件
- terminate: *LookupTerminateEvent 终止事件
返回值:
- *LookupEvent 创建的查找事件对象
type LookupTerminateEvent ¶
type LookupTerminateEvent struct {
// Reason 是查找终止的原因
Reason LookupTerminationReason
}
LookupTerminateEvent 描述查找终止事件
func NewLookupTerminateEvent ¶
func NewLookupTerminateEvent(reason LookupTerminationReason) *LookupTerminateEvent
NewLookupTerminateEvent 使用给定原因创建新的查找终止事件 参数:
- reason: LookupTerminationReason 终止原因
返回值:
- *LookupTerminateEvent 创建的查找终止事件对象
type LookupTerminationReason ¶
type LookupTerminationReason int
LookupTerminationReason 捕获终止查找的原因
const ( // LookupStopped 表示查找被用户的stopFn中止 LookupStopped LookupTerminationReason = iota // LookupCancelled 表示查找被上下文中止 LookupCancelled // LookupStarvation 表示由于缺少未查询的节点而终止查找 LookupStarvation // LookupCompleted 表示查找成功终止,达到Kademlia结束条件 LookupCompleted )
func (LookupTerminationReason) MarshalJSON ¶
func (r LookupTerminationReason) MarshalJSON() ([]byte, error)
MarshalJSON 返回查找终止原因的JSON编码 参数:
返回值:
- []byte JSON编码的字节数组
- error 错误信息
func (LookupTerminationReason) String ¶
func (r LookupTerminationReason) String() string
String 返回终止原因的字符串表示 参数:
返回值:
- string 终止原因的字符串表示
type LookupUpdateEvent ¶
type LookupUpdateEvent struct {
// Cause 是导致更新事件的节点(通过响应或无响应)
// 如果Cause为nil,这是查找中由种子引起的第一个更新事件
Cause *PeerKadID
// Source 是告知我们此更新中节点ID的节点
Source *PeerKadID
// Heard 是一组节点,其在查找的节点集中的状态被设置为"已听到"
Heard []*PeerKadID
// Waiting 是一组节点,其在查找的节点集中的状态被设置为"等待中"
Waiting []*PeerKadID
// Queried 是一组节点,其在查找的节点集中的状态被设置为"已查询"
Queried []*PeerKadID
// Unreachable 是一组节点,其在查找的节点集中的状态被设置为"不可达"
Unreachable []*PeerKadID
}
LookupUpdateEvent 描述查找状态更新事件
func NewLookupUpdateEvent ¶
func NewLookupUpdateEvent( cause peer.ID, source peer.ID, heard []peer.ID, waiting []peer.ID, queried []peer.ID, unreachable []peer.ID, ) *LookupUpdateEvent
NewLookupUpdateEvent 创建新的查找更新事件,自动将传入的节点ID转换为PeerKadID 参数:
- cause: peer.ID 导致更新的节点ID
- source: peer.ID 信息来源节点ID
- heard: []peer.ID 已听到的节点ID列表
- waiting: []peer.ID 等待中的节点ID列表
- queried: []peer.ID 已查询的节点ID列表
- unreachable: []peer.ID 不可达的节点ID列表
返回值:
- *LookupUpdateEvent 创建的查找更新事件对象
type Option ¶
func AddressFilter ¶
AddressFilter 允许配置地址过滤函数 在将地址添加到 peerstore 之前运行此函数 它最适合用于避免添加 localhost / 本地地址
参数:
- f: func([]ma.Multiaddr) []ma.Multiaddr 地址过滤函数
返回值:
- Option 配置选项
func BootstrapPeers ¶
BootstrapPeers 配置引导节点,如果路由表变空,我们将连接这些节点以播种和刷新路由表
参数:
- bootstrappers: ...peer.AddrInfo 引导节点信息
返回值:
- Option 配置选项
func BootstrapPeersFunc ¶
BootstrapPeersFunc 配置返回引导节点的函数,如果路由表变空,我们将连接这些节点以播种和刷新路由表
参数:
- getBootstrapPeers: func() []peer.AddrInfo 获取引导节点的函数
返回值:
- Option 配置选项
func BucketSize ¶
BucketSize 配置路由表的桶大小(Kademlia 论文中的 k) 默认值为 amino.DefaultBucketSize
参数:
- bucketSize: int 桶大小
返回值:
- Option 配置选项
func Concurrency ¶
Concurrency 配置给定查询路径的并发请求数(Kademlia 论文中的 alpha) 默认值为 amino.DefaultConcurrency
参数:
- alpha: int 并发数
返回值:
- Option 配置选项
func Datastore ¶
Datastore 配置 DHT 使用指定的数据存储 默认使用内存中的(临时)映射
参数:
- ds: ds.Batching 数据存储
返回值:
- Option 配置选项
func DisableAutoRefresh ¶
func DisableAutoRefresh() Option
DisableAutoRefresh 完全禁用 DHT 路由表上的"自动刷新" 这意味着我们既不会定期刷新路由表,也不会在路由表大小低于最小阈值时刷新
返回值:
- Option 配置选项
func DisableProviders ¶
func DisableProviders() Option
DisableProviders 禁用存储和检索提供者记录 默认启用 警告: 除非您使用分叉的 DHT(即私有网络和/或使用 Protocols 选项的不同 DHT 协议),否则不要更改此设置
返回值:
- Option 配置选项
func DisableValues ¶
func DisableValues() Option
DisableValues 禁用存储和检索值记录(包括公钥) 默认启用 警告: 除非您使用分叉的 DHT(即私有网络和/或使用 Protocols 选项的不同 DHT 协议),否则不要更改此设置
返回值:
- Option 配置选项
func EnableOptimisticProvide ¶
func EnableOptimisticProvide() Option
EnableOptimisticProvide 启用跳过提供过程最后跳数的优化 这通过使用网络大小估算器(使用查询的键空间密度)在最有可能找到最后一跳时乐观地发送 ADD_PROVIDER 请求来工作 它还将在返回后在后台异步运行一些 ADD_PROVIDER 请求 如果某些阈值数量的 RPC 已成功,这允许乐观地更早返回 后台/正在进行的查询数量可以通过 OptimisticProvideJobsPoolSize 选项配置
实验性: 这是一个实验性选项,可能在将来被删除。使用风险自负
返回值:
- Option 配置选项
func LookupCheckConcurrency ¶
LookupCheckConcurrency 配置在将新节点添加到路由表之前,可用于执行查找检查操作的最大 goroutine 数量
参数:
- n: int goroutine 数量
返回值:
- Option 配置选项
func MaxRecordAge ¶
MaxRecordAge 指定任何节点从接收记录("PutValue record")时起保留记录的最长时间 这不适用于记录可能包含的任何其他形式的有效性 例如,记录可能包含一个 EOL 为 2020 年(未来的一个很好的时间)的 ipns 条目 要使该记录继续存在,必须以比每个"MaxRecordAge"更频繁的频率重新广播
参数:
- maxAge: time.Duration 最大记录年龄
返回值:
- Option 配置选项
func NamespacedValidator ¶
NamespacedValidator 在命名空间 ns 下添加验证器 如果 DHT 没有使用 record.NamespacedValidator 作为其验证器,此选项将失败(默认使用一个,但可以使用 Validator 选项覆盖) 在不更改 Validator 的情况下添加命名空间验证器将导致在默认公钥和 IPNS 验证器之外添加新的验证器 除非先设置了新的 Validator,否则不能在此处覆盖"pk"和"ipns"命名空间
示例: 给定一个注册为 NamespacedValidator("ipns", myValidator) 的验证器,所有以 /ipns/ 开头的键的记录都将使用 myValidator 进行验证
参数:
- ns: string 命名空间
- v: record.Validator 验证器
返回值:
- Option 配置选项
func OptimisticProvideJobsPoolSize ¶
OptimisticProvideJobsPoolSize 允许配置正在进行的 ADD_PROVIDER RPC 的异步性限制 将其设置为 optProvReturnRatio * BucketSize 的倍数是有意义的。查看 EnableOptimisticProvide 的描述了解更多详情
实验性: 这是一个实验性选项,可能在将来被删除。使用风险自负
参数:
- size: int 池大小
返回值:
- Option 配置选项
func ProtocolExtension ¶
ProtocolExtension 向 DHT 协议添加应用程序特定协议 例如,使用 /ipfs/lan/kad/1.0.0 而不是 /ipfs/kad/1.0.0。扩展应采用 /lan 的形式
参数:
- ext: protocol.ID 协议扩展
返回值:
- Option 配置选项
func ProtocolPrefix ¶
ProtocolPrefix 设置要附加到所有 DHT 协议的应用程序特定前缀 例如,使用 /myapp/kad/1.0.0 而不是 /ipfs/kad/1.0.0。前缀应采用 /myapp 的形式 默认为 amino.ProtocolPrefix
参数:
- prefix: protocol.ID 协议前缀
返回值:
- Option 配置选项
func ProviderStore ¶
func ProviderStore(ps providers.ProviderStore) Option
ProviderStore 设置提供者存储管理器 参数:
- ps: providers.ProviderStore 提供者存储
返回值:
- Option 配置选项
func QueryFilter ¶
func QueryFilter(filter QueryFilterFunc) Option
QueryFilter 设置一个函数,该函数批准在查询中可以拨号的对等点
参数:
- filter: QueryFilterFunc 查询过滤函数
返回值:
- Option 配置选项
func Resiliency ¶
Resiliency 配置给定查询路径完成所需的最接近目标的对等点数量 默认值为 amino.DefaultResiliency
参数:
- beta: int 弹性值
返回值:
- Option 配置选项
func RoutingTableFilter ¶
func RoutingTableFilter(filter RouteTableFilterFunc) Option
RoutingTableFilter 设置一个函数,该函数批准哪些对等点可以添加到路由表中 主机应该已经至少与正在考虑的对等点建立了一个连接
参数:
- filter: RouteTableFilterFunc 路由表过滤函数
返回值:
- Option 配置选项
func RoutingTableLatencyTolerance ¶
RoutingTableLatencyTolerance 设置路由表集群中对等点的最大可接受延迟 参数:
- latency: time.Duration 延迟时间
返回值:
- Option 配置选项
func RoutingTablePeerDiversityFilter ¶
func RoutingTablePeerDiversityFilter(pg peerdiversity.PeerIPGroupFilter) Option
RoutingTablePeerDiversityFilter 配置用于构建路由表多样性过滤器的 PeerIPGroupFilter 实现 请参阅 peerdiversity.PeerIPGroupFilter 和 peerdiversity.Filter 的文档了解更多详情
参数:
- pg: peerdiversity.PeerIPGroupFilter 对等点IP组过滤器
返回值:
- Option 配置选项
func RoutingTableRefreshPeriod ¶
RoutingTableRefreshPeriod 设置刷新路由表中桶的周期。DHT 将通过以下方式每个周期刷新桶: 1. 首先搜索附近的对等点以确定我们应该尝试填充多少个桶 2. 然后在上次刷新期间未查询的每个桶中搜索随机键
参数:
- period: time.Duration 刷新周期
返回值:
- Option 配置选项
func RoutingTableRefreshQueryTimeout ¶
RoutingTableRefreshQueryTimeout 设置路由表刷新查询的超时时间 参数:
- timeout: time.Duration 超时时间
返回值:
- Option 配置选项
func V1ProtocolOverride ¶
V1ProtocolOverride 用另一个协议覆盖 /kad/1.0.0 使用的 protocolID 这是一个高级功能,只应用于处理尚未使用 /app/kad/1.0.0 形式的 protocolID 的遗留网络 此选项将覆盖并忽略 ProtocolPrefix 和 ProtocolExtension 选项
参数:
- proto: protocol.ID 协议ID
返回值:
- Option 配置选项
func Validator ¶
Validator 配置 DHT 使用指定的验证器 默认使用可以验证公钥(在"pk"命名空间下)和 IPNS 记录(在"ipns"命名空间下)的命名空间验证器 设置验证器意味着用户想要控制验证器,因此不会添加默认的公钥和 IPNS 验证器
参数:
- v: record.Validator 验证器
返回值:
- Option 配置选项
func WithCustomMessageSender ¶
func WithCustomMessageSender(messageSenderBuilder func(h host.Host, protos []protocol.ID) pb.MessageSenderWithDisconnect) Option
WithCustomMessageSender 配置 IpfsDHT 的 pb.MessageSender 使用 pb.MessageSender 的自定义实现
参数:
- messageSenderBuilder: func(h host.Host, protos []protocol.ID) pb.MessageSenderWithDisconnect 消息发送器构建函数
返回值:
- Option 配置选项
type PeerKadID ¶
PeerKadID 包含libp2p节点ID和二进制Kademlia ID
func NewPeerKadID ¶
NewPeerKadID 从libp2p节点ID创建PeerKadID 参数:
- p: peer.ID libp2p节点ID
返回值:
- *PeerKadID 创建的PeerKadID对象
func NewPeerKadIDSlice ¶
NewPeerKadIDSlice 从libp2p节点ID切片创建PeerKadID切片 参数:
- p: []peer.ID libp2p节点ID切片
返回值:
- []*PeerKadID PeerKadID对象切片
func OptPeerKadID ¶
OptPeerKadID 如果传入的节点ID为默认值则返回nil,否则返回PeerKadID指针 参数:
- p: peer.ID libp2p节点ID
返回值:
- *PeerKadID PeerKadID对象指针或nil
type QueryFilterFunc ¶
type QueryFilterFunc = dhtcfg.QueryFilterFunc
QueryFilterFunc 是在查询时考虑要拨号的对等节点时应用的过滤器
type RouteTableFilterFunc ¶
type RouteTableFilterFunc = dhtcfg.RouteTableFilterFunc
RouteTableFilterFunc 是在考虑要保留在本地路由表中的连接时应用的过滤器
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
amino 包提供了 [Amino DHT] 的协议参数和建议默认值。
|
amino 包提供了 [Amino DHT] 的协议参数和建议默认值。 |
|
Package dual provides an implementation of a split or "dual" dht, where two parallel instances are maintained for the global internet and the local LAN respectively.
|
Package dual provides an implementation of a split or "dual" dht, where two parallel instances are maintained for the global internet and the local LAN respectively. |
|
tracing
tracing 为 routing.Routing API 提供高级方法追踪。
|
tracing 为 routing.Routing API 提供高级方法追踪。 |
|
kbucket 包实现了 kademlia 'k-bucket' 路由表
|
kbucket 包实现了 kademlia 'k-bucket' 路由表 |
|
generate
command
|
|
|
tracing 为 routing.Routing API 提供高级方法追踪。
|
tracing 为 routing.Routing API 提供高级方法追踪。 |
|
xor
|
|
|
kademlia
kademlia 包提供 Kademlia 路由相关功能
|
kademlia 包提供 Kademlia 路由相关功能 |