# Packages
amino 包提供了 [Amino DHT] 的协议参数和建议默认值。
[Amino DHT] 是 Kademlia 分布式哈希表(DHT)算法的一个实现,最初设计用于 IPFS(星际文件系统)网络。 本包定义了 Amino DHT 实现中使用的关键常量和协议标识符。
[Amino DHT]: https://probelab.io/ipfs/amino/.
No description provided by the author
Package cidranger provides utility to store CIDR blocks and perform ip
inclusion tests against it.
No description provided by the author
No description provided by the author
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.
No description provided by the author
No description provided by the author
No description provided by the author
go:generate protoc -I=pb --go_out=pb pb/record.proto.
kbucket 包实现了 kademlia 'k-bucket' 路由表.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
tracing 为 [routing.Routing] API 提供高级方法追踪。 API 的每个方法在 [Tracer] 上都有对应的方法,返回延迟包装回调或仅延迟回调。.
No description provided by the author
# Functions
AddressFilter 允许配置地址过滤函数 在将地址添加到 peerstore 之前运行此函数 它最适合用于避免添加 localhost / 本地地址
参数: - f: func([]ma.Multiaddr) []ma.Multiaddr 地址过滤函数
返回值: - Option 配置选项.
BootstrapPeers 配置引导节点,如果路由表变空,我们将连接这些节点以播种和刷新路由表
参数: - bootstrappers: ...peer.AddrInfo 引导节点信息
返回值: - Option 配置选项.
BootstrapPeersFunc 配置返回引导节点的函数,如果路由表变空,我们将连接这些节点以播种和刷新路由表
参数: - getBootstrapPeers: func() []peer.AddrInfo 获取引导节点的函数
返回值: - Option 配置选项.
BucketSize 配置路由表的桶大小(Kademlia 论文中的 k) 默认值为 amino.DefaultBucketSize
参数: - bucketSize: int 桶大小
返回值: - Option 配置选项.
Concurrency 配置给定查询路径的并发请求数(Kademlia 论文中的 alpha) 默认值为 amino.DefaultConcurrency
参数: - alpha: int 并发数
返回值: - Option 配置选项.
Datastore 配置 DHT 使用指定的数据存储 默认使用内存中的(临时)映射
参数: - ds: ds.Batching 数据存储
返回值: - Option 配置选项.
DisableAutoRefresh 完全禁用 DHT 路由表上的"自动刷新" 这意味着我们既不会定期刷新路由表,也不会在路由表大小低于最小阈值时刷新
返回值: - Option 配置选项.
DisableProviders 禁用存储和检索提供者记录 默认启用 警告: 除非您使用分叉的 DHT(即私有网络和/或使用 Protocols 选项的不同 DHT 协议),否则不要更改此设置
返回值: - Option 配置选项.
DisableValues 禁用存储和检索值记录(包括公钥) 默认启用 警告: 除非您使用分叉的 DHT(即私有网络和/或使用 Protocols 选项的不同 DHT 协议),否则不要更改此设置
返回值: - Option 配置选项.
EnableOptimisticProvide 启用跳过提供过程最后跳数的优化 这通过使用网络大小估算器(使用查询的键空间密度)在最有可能找到最后一跳时乐观地发送 ADD_PROVIDER 请求来工作 它还将在返回后在后台异步运行一些 ADD_PROVIDER 请求 如果某些阈值数量的 RPC 已成功,这允许乐观地更早返回 后台/正在进行的查询数量可以通过 OptimisticProvideJobsPoolSize 选项配置
实验性: 这是一个实验性选项,可能在将来被删除。使用风险自负
返回值: - Option 配置选项.
GetDefaultBootstrapPeerAddrInfos 返回默认引导节点的 peer.AddrInfos,以便我们可以通过将这些传递给 BootstrapPeers(...) 选项来初始化 DHT 返回值: - []peer.AddrInfo 引导节点地址信息列表.
LookupCheckConcurrency 配置在将新节点添加到路由表之前,可用于执行查找检查操作的最大 goroutine 数量
参数: - n: int goroutine 数量
返回值: - Option 配置选项.
MaxRecordAge 指定任何节点从接收记录("PutValue record")时起保留记录的最长时间 这不适用于记录可能包含的任何其他形式的有效性 例如,记录可能包含一个 EOL 为 2020 年(未来的一个很好的时间)的 ipns 条目 要使该记录继续存在,必须以比每个"MaxRecordAge"更频繁的频率重新广播
参数: - maxAge: time.Duration 最大记录年龄
返回值: - Option 配置选项.
Mode 配置 DHT 运行的模式(Client、Server、Auto) 默认为 ModeAuto
参数: - m: ModeOpt 运行模式
返回值: - Option 配置选项.
NamespacedValidator 在命名空间 ns 下添加验证器 如果 DHT 没有使用 record.NamespacedValidator 作为其验证器,此选项将失败(默认使用一个,但可以使用 Validator 选项覆盖) 在不更改 Validator 的情况下添加命名空间验证器将导致在默认公钥和 IPNS 验证器之外添加新的验证器 除非先设置了新的 Validator,否则不能在此处覆盖"pk"和"ipns"命名空间
示例: 给定一个注册为 NamespacedValidator("ipns", myValidator) 的验证器,所有以 /ipns/ 开头的键的记录都将使用 myValidator 进行验证
参数: - ns: string 命名空间 - v: record.Validator 验证器
返回值: - Option 配置选项.
New 使用指定的主机和选项创建一个新的DHT。 请注意,连接到DHT对等节点并不一定意味着它也在DHT路由表中。 如果路由表有超过"minRTRefreshThreshold"个对等节点,我们只在成功从对等节点获得查询响应或它向我们发送查询时才将其视为路由表候选者。
参数: - ctx: context.Context 上下文 - h: host.Host 主机 - options: ...Option 选项
返回值: - *IpfsDHT DHT实例 - error 错误信息.
NewDHT 使用给定的对等节点作为"本地"主机创建一个新的DHT对象。 使用此函数初始化的IpfsDHT将响应DHT请求,而使用NewDHTClient初始化的IpfsDHT则不会。
参数: - ctx: context.Context 上下文 - h: host.Host 主机 - dstore: ds.Batching 数据存储
返回值: - *IpfsDHT DHT实例.
NewDHTClient 使用给定的对等节点作为"本地"主机创建一个新的DHT对象。 使用此函数初始化的IpfsDHT客户端将不会响应DHT请求。如果需要对等节点响应DHT请求,请使用NewDHT。
参数: - ctx: context.Context 上下文 - h: host.Host 主机 - dstore: ds.Batching 数据存储
返回值: - *IpfsDHT DHT实例.
NewKeyKadID 从字符串Kademlia ID创建KeyKadID 参数: - k: string Kademlia ID字符串
返回值: - *KeyKadID 创建的KeyKadID对象.
NewLookupEvent 创建一个LookupEvent,自动将节点libp2p ID转换为PeerKadID,将字符串Kademlia键转换为KeyKadID 参数: - node: peer.ID 节点ID - id: uuid.UUID 查找实例的唯一标识符 - key: string Kademlia键 - request: *LookupUpdateEvent 请求更新事件 - response: *LookupUpdateEvent 响应更新事件 - terminate: *LookupTerminateEvent 终止事件
返回值: - *LookupEvent 创建的查找事件对象.
NewLookupTerminateEvent 使用给定原因创建新的查找终止事件 参数: - reason: LookupTerminationReason 终止原因
返回值: - *LookupTerminateEvent 创建的查找终止事件对象.
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 创建的查找更新事件对象.
NewPeerKadID 从libp2p节点ID创建PeerKadID 参数: - p: peer.ID libp2p节点ID
返回值: - *PeerKadID 创建的PeerKadID对象.
NewPeerKadIDSlice 从libp2p节点ID切片创建PeerKadID切片 参数: - p: []peer.ID libp2p节点ID切片
返回值: - []*PeerKadID PeerKadID对象切片.
NewRTPeerDiversityFilter 构造一个用于路由表的对等节点IP组过滤器 参数: - h: host.Host libp2p主机实例 - maxPerCpl: int 每个CPL允许的最大IP组数 - maxForTable: int 路由表允许的最大IP组数
返回值: - *rtPeerIPGroupFilter 新创建的过滤器实例.
OptimisticProvideJobsPoolSize 允许配置正在进行的 ADD_PROVIDER RPC 的异步性限制 将其设置为 optProvReturnRatio * BucketSize 的倍数是有意义的。查看 EnableOptimisticProvide 的描述了解更多详情
实验性: 这是一个实验性选项,可能在将来被删除。使用风险自负
参数: - size: int 池大小
返回值: - Option 配置选项.
OptPeerKadID 如果传入的节点ID为默认值则返回nil,否则返回PeerKadID指针 参数: - p: peer.ID libp2p节点ID
返回值: - *PeerKadID PeerKadID对象指针或nil.
PrivateQueryFilter 目前不限制我们愿意从本地 DHT 查询的对等节点 参数: - _: interface{} 接口 - ai: peer.AddrInfo 对等节点地址信息
返回值: - bool 是否允许查询.
PrivateRoutingTableFilter 如果与该对等节点的连接表明它在私有网络上,则允许将该对等节点添加到路由表中 参数: - dht: interface{} DHT 接口 - p: peer.ID 对等节点 ID
返回值: - bool 是否允许添加到路由表.
ProtocolExtension 向 DHT 协议添加应用程序特定协议 例如,使用 /ipfs/lan/kad/1.0.0 而不是 /ipfs/kad/1.0.0。扩展应采用 /lan 的形式
参数: - ext: protocol.ID 协议扩展
返回值: - Option 配置选项.
ProtocolPrefix 设置要附加到所有 DHT 协议的应用程序特定前缀 例如,使用 /myapp/kad/1.0.0 而不是 /ipfs/kad/1.0.0。前缀应采用 /myapp 的形式 默认为 amino.ProtocolPrefix
参数: - prefix: protocol.ID 协议前缀
返回值: - Option 配置选项.
ProviderStore 设置提供者存储管理器 参数: - ps: providers.ProviderStore 提供者存储
返回值: - Option 配置选项.
PublicQueryFilter 如果对等节点被认为是可公开访问的,则返回 true 参数: - _: interface{} 接口 - ai: peer.AddrInfo 对等节点地址信息
返回值: - bool 是否可公开访问.
PublicRoutingTableFilter 如果与该对等节点的连接表明它在公共网络上,则允许将该对等节点添加到路由表中 参数: - dht: interface{} DHT 接口 - p: peer.ID 对等节点 ID
返回值: - bool 是否允许添加到路由表.
PublishLookupEvent 将查询事件发布到与给定上下文关联的查询事件通道(如果有) 参数: - ctx: context.Context 上下文 - ev: *LookupEvent 要发布的事件
返回值:.
QueryFilter 设置一个函数,该函数批准在查询中可以拨号的对等点
参数: - filter: QueryFilterFunc 查询过滤函数
返回值: - Option 配置选项.
Quorum 设置DHT查询需要从多少个对等节点获取值后才返回最佳值 当值为0时,表示DHT查询应该完整执行而不是提前返回 默认值: 0
参数: - n: int 需要查询的对等节点数量
返回值: - routing.Option 路由选项.
RegisterForLookupEvents 使用给定上下文注册查找事件通道 返回的上下文可以传递给DHT查询以在返回的通道上接收查找事件
当调用者不再对查询事件感兴趣时,必须取消传入的上下文 参数: - ctx: context.Context 上下文
返回值: - context.Context 包含事件通道的上下文 - <-chan *LookupEvent 查找事件通道.
Resiliency 配置给定查询路径完成所需的最接近目标的对等点数量 默认值为 amino.DefaultResiliency
参数: - beta: int 弹性值
返回值: - Option 配置选项.
RoutingTableFilter 设置一个函数,该函数批准哪些对等点可以添加到路由表中 主机应该已经至少与正在考虑的对等点建立了一个连接
参数: - filter: RouteTableFilterFunc 路由表过滤函数
返回值: - Option 配置选项.
RoutingTableLatencyTolerance 设置路由表集群中对等点的最大可接受延迟 参数: - latency: time.Duration 延迟时间
返回值: - Option 配置选项.
RoutingTablePeerDiversityFilter 配置用于构建路由表多样性过滤器的 PeerIPGroupFilter 实现 请参阅 peerdiversity.PeerIPGroupFilter 和 peerdiversity.Filter 的文档了解更多详情
参数: - pg: peerdiversity.PeerIPGroupFilter 对等点IP组过滤器
返回值: - Option 配置选项.
RoutingTableRefreshPeriod 设置刷新路由表中桶的周期。DHT 将通过以下方式每个周期刷新桶: 1.
RoutingTableRefreshQueryTimeout 设置路由表刷新查询的超时时间 参数: - timeout: time.Duration 超时时间
返回值: - Option 配置选项.
V1ProtocolOverride 用另一个协议覆盖 /kad/1.0.0 使用的 protocolID 这是一个高级功能,只应用于处理尚未使用 /app/kad/1.0.0 形式的 protocolID 的遗留网络 此选项将覆盖并忽略 ProtocolPrefix 和 ProtocolExtension 选项
参数: - proto: protocol.ID 协议ID
返回值: - Option 配置选项.
Validator 配置 DHT 使用指定的验证器 默认使用可以验证公钥(在"pk"命名空间下)和 IPNS 记录(在"ipns"命名空间下)的命名空间验证器 设置验证器意味着用户想要控制验证器,因此不会添加默认的公钥和 IPNS 验证器
参数: - v: record.Validator 验证器
返回值: - Option 配置选项.
WithCustomMessageSender 配置 IpfsDHT 的 pb.MessageSender 使用 pb.MessageSender 的自定义实现
参数: - messageSenderBuilder: func(h host.Host, protos []protocol.ID) pb.MessageSenderWithDisconnect 消息发送器构建函数
返回值: - Option 配置选项.
# Constants
DefaultPrefix 是默认附加到所有 DHT 协议的应用程序特定前缀.
LookupCancelled 表示查找被上下文中止.
LookupCompleted 表示查找成功终止,达到Kademlia结束条件.
LookupStarvation 表示由于缺少未查询的节点而终止查找.
LookupStopped 表示查找被用户的stopFn中止.
ModeAuto 利用事件总线上发送的 EvtLocalReachabilityChanged 事件,根据网络条件动态地在客户端和服务器模式之间切换 DHT.
ModeAutoServer 与 ModeAuto 的运行方式相同,但在可达性未知时作为服务器运行.
ModeClient 将 DHT 作为客户端运行,它不能响应传入的查询.
ModeServer 将 DHT 作为服务器运行,它既可以发送查询也可以响应查询.
# Variables
DefaultBootstrapPeers 是 libp2p 提供的一组公共 DHT 引导节点.
DefaultProtocols DHT支持的默认协议列表 参数: - []protocol.ID 协议标识符列表.
ErrNoPeersQueried 表示未能连接到任何节点.
ErrReadTimeout 在超时期间内未读取到消息时发生的错误.
LookupEventBufferSize 是要缓冲的事件数量.
ProtocolDHT 默认的DHT协议 参数: - protocol.ID DHT协议标识符.
# Structs
IpfsDHT 是一个带有S/Kademlia修改的Kademlia实现。 它用于实现基本的路由模块。.
KeyKadID 包含字符串和二进制形式的Kademlia键.
LookupEvent 在DHT查找过程中发生的每个重要事件时发出 LookupEvent支持JSON序列化,因为它的所有字段都支持递归序列化.
LookupTerminateEvent 描述查找终止事件.
LookupUpdateEvent 描述查找状态更新事件.
PeerKadID 包含libp2p节点ID和二进制Kademlia ID.
# Type aliases
LookupTerminationReason 捕获终止查找的原因.
ModeOpt 描述 DHT 应该以什么模式运行.
No description provided by the author
QueryFilterFunc 是在查询时考虑要拨号的对等节点时应用的过滤器.
RouteTableFilterFunc 是在考虑要保留在本地路由表中的连接时应用的过滤器.