Documentation ¶
Index ¶
- Constants
- Variables
- func Label(e *entry) string
- func LogAddrs(nns [][]byte) string
- func NewNodeIDFromAddr(addr Addr) discover.NodeID
- func NewPeerPotMap(kadMinProxSize int, addrs [][]byte) map[string]*PeerPot
- func NotifyDepth(depth uint8, h Overlay)
- func NotifyPeer(p OverlayAddr, k Overlay)
- func ToOverlayAddr(id []byte) []byte
- type Addr
- type Bzz
- func (b *Bzz) APIs() []rpc.API
- func (b *Bzz) GetHandshake(peerID discover.NodeID) (*HandshakeMsg, bool)
- func (b *Bzz) NodeInfo() interface{}
- func (b *Bzz) Protocols() []p2p.Protocol
- func (b *Bzz) RunProtocol(spec *protocols.Spec, run func(*BzzPeer) error) func(*p2p.Peer, p2p.MsgReadWriter) error
- func (b *Bzz) UpdateLocalAddr(byteaddr []byte) *BzzAddr
- type BzzAddr
- type BzzConfig
- type BzzPeer
- type Conn
- type HandshakeMsg
- type Health
- type Hive
- type HiveParams
- type KadParams
- type Kademlia
- func (k *Kademlia) AddrCountC() <-chan int
- func (k *Kademlia) BaseAddr() []byte
- func (k *Kademlia) EachAddr(base []byte, o int, f func(OverlayAddr, int, bool) bool)
- func (k *Kademlia) EachBin(base []byte, pof pot.Pof, o int, ...)
- func (k *Kademlia) EachConn(base []byte, o int, f func(OverlayConn, int, bool) bool)
- func (k *Kademlia) Healthy(pp *PeerPot) *Health
- func (k *Kademlia) NeighbourhoodDepthC() <-chan int
- func (k *Kademlia) Off(p OverlayConn)
- func (k *Kademlia) On(p OverlayConn) (uint8, bool)
- func (k *Kademlia) Register(peers []OverlayAddr) error
- func (k *Kademlia) String() string
- func (k *Kademlia) SuggestPeer() (a OverlayAddr, o int, want bool)
- type Overlay
- type OverlayAddr
- type OverlayConn
- type OverlayPeer
- type Peer
- type PeerPot
Constants ¶
const ( DefaultNetworkID = 3 //protocolmaxmsgsize允许的最大消息大小 ProtocolMaxMsgSize = 10 * 1024 * 1024 )
Variables ¶
var BzzSpec = &protocols.Spec{ Name: "bzz", Version: 6, MaxMsgSize: 10 * 1024 * 1024, Messages: []interface{}{ HandshakeMsg{}, }, }
bzzspec是通用群握手的规范
var DiscoverySpec = &protocols.Spec{
Name: "hive",
Version: 5,
MaxMsgSize: 10 * 1024 * 1024,
Messages: []interface{}{
peersMsg{},
subPeersMsg{},
},
}
discovery spec是bzz discovery子协议的规范
Functions ¶
func NewNodeIDFromAddr ¶
newnodeidfromaddr将底层地址转换为adapters.nodeid
func NewPeerPotMap ¶
newpeerpotmap用键创建overlayaddr的pot记录的映射 作为地址的十六进制表示。
func NotifyDepth ¶
func NotifyPeer ¶
func NotifyPeer(p OverlayAddr, k Overlay)
Types ¶
type Addr ¶
type Addr interface { OverlayPeer Over() []byte Under() []byte String() string Update(OverlayAddr) OverlayAddr }
对等池所需的addr接口
type Bzz ¶
bzz是swarm协议包
func NewBzz ¶
func NewBzz(config *BzzConfig, kad Overlay, store state.Store, streamerSpec *protocols.Spec, streamerRun func(*BzzPeer) error) *Bzz
Newzz是Swarm协议的构造者 争论 *BZZ配置 *覆盖驱动程序 *对等存储
func (*Bzz) GetHandshake ¶
func (b *Bzz) GetHandshake(peerID discover.NodeID) (*HandshakeMsg, bool)
gethandshake返回peerid远程对等机发送的bzz handshake
func (*Bzz) RunProtocol ¶
func (b *Bzz) RunProtocol(spec *protocols.Spec, run func(*BzzPeer) error) func(*p2p.Peer, p2p.MsgReadWriter) error
runprotocol是swarm子协议的包装器 返回可分配给p2p.protocol run字段的p2p协议运行函数。 争论: *P2P协议规范 *以bzzpeer为参数运行函数 此运行函数用于在协议会话期间阻塞 返回时,会话终止,对等端断开连接。 协议等待BZZ握手被协商 bzzpeer上的覆盖地址是通过远程握手设置的。
func (*Bzz) UpdateLocalAddr ¶
updateLocalAddr更新正在运行的节点的参考底图地址
type BzzAddr ¶
bzzaddr实现peeraddr接口
func NewAddrFromNodeID ¶
newAddrFromNodeID从discover.nodeID构造BzzAddr 覆盖地址是作为nodeid的散列派生的。
func NewAddrFromNodeIDAndPort ¶
newaddrFromNodeAndPort从discover.nodeid和端口uint16构造bzzaddr 覆盖地址是作为nodeid的散列派生的。
func ToAddr ¶
func ToAddr(pa OverlayPeer) *BzzAddr
type BzzConfig ¶
type BzzConfig struct { OverlayAddr []byte //覆盖网络的基址 UnderlayAddr []byte //节点的参考底图地址 HiveParams *HiveParams NetworkID uint64 LightNode bool }
bzzconfig捕获配置单元使用的配置参数
type BzzPeer ¶
type BzzPeer struct { *protocols.Peer //表示联机对等机的连接 *BzzAddr //远程地址->实现addr interface=protocols.peer LightNode bool // contains filtered or unexported fields }
bzz peer是协议的bzz协议视图。peer(本身是p2p.peer的扩展) 实现对等接口和所有接口对等实现:addr、overlaypeer
type Conn ¶
type Conn interface { ID() discover.NodeID //唯一标识对等池节点的键 Handshake(context.Context, interface{}, func(interface{}) error) (interface{}, error) //可以发送消息 Send(context.Context, interface{}) error // Drop(error) // Run(func(context.Context, interface{}) error) error // Off() OverlayAddr }
conn接口表示活动对等连接
type HandshakeMsg ¶
type Health ¶
type Health struct { KnowNN bool //节点是否知道所有最近的邻居 GotNN bool //节点是否连接到其所有最近的邻居 CountNN int //连接到的最近邻居的数量 CulpritsNN [][]byte //哪些已知的nns丢失了 Full bool //节点在每个kademlia bin中是否有一个对等点(如果有这样的对等点) Hive string }
卡德米利亚的健康状况
type Hive ¶
type Hive struct { *HiveParams // Overlay // Store state.Store // // contains filtered or unexported fields }
type HiveParams ¶
type HiveParams struct { Discovery bool // PeersBroadcastSetSize uint8 // MaxPeersPerRequest uint8 // KeepAliveInterval time.Duration }
func NewHiveParams ¶
func NewHiveParams() *HiveParams
type KadParams ¶
type KadParams struct { // 可调参数 MaxProxDisplay int //表显示的行数 MinProxBinSize int //最近邻核最小基数 MinBinSize int //一行中的最小对等数 MaxBinSize int //修剪前一行中的最大对等数 RetryInterval int64 //对等机首次重新拨号前的初始间隔 RetryExponent int //用指数乘以重试间隔 MaxRetries int //重拨尝试的最大次数 //制裁或阻止建议同伴的职能 Reachable func(OverlayAddr) bool }
kadparams保存kademlia的配置参数
type Kademlia ¶
type Kademlia struct { *KadParams //Kademlia配置参数 // contains filtered or unexported fields }
Kademlia是一个活动对等端表和一个已知对等端数据库(节点记录)
func NewKademlia ¶
newkademlia为基地址addr创建一个kademlia表 参数与参数相同 如果params为nil,则使用默认值
func (*Kademlia) AddrCountC ¶
addrCountc返回发送新的 每次更改的地址计数值。 不从返回通道接收将阻止寄存器功能 地址计数值更改时。
func (*Kademlia) EachAddr ¶
用(base,po,f)调用的eachaddr是一个迭代器,将f应用于每个已知的对等端 从基地测量,接近订单为po或更低 如果基为零,则使用Kademlia基地址
func (*Kademlia) EachConn ¶
eachconn是一个带有args(base、po、f)的迭代器,将f应用于每个活动对等端 从基地测量,接近订单为po或更低 如果基为零,则使用Kademlia基地址
func (*Kademlia) NeighbourhoodDepthC ¶
Neighbourhooddepthc返回发送新Kademlia的频道 每一次变化的邻里深度。 不从返回通道接收将阻塞功能 当邻近深度改变时。
func (*Kademlia) On ¶
func (k *Kademlia) On(p OverlayConn) (uint8, bool)
在上,将对等机作为Kademlia对等机插入活动对等机
func (*Kademlia) Register ¶
func (k *Kademlia) Register(peers []OverlayAddr) error
寄存器将每个overlayaddr作为kademlia对等记录输入 已知对等地址数据库
func (*Kademlia) SuggestPeer ¶
func (k *Kademlia) SuggestPeer() (a OverlayAddr, o int, want bool)
suggestpeer返回的最低接近箱的已知对等 深度以下的最低料位计数 当然,如果有一个空行,它将返回该行的对等方
type Overlay ¶
type Overlay interface { // SuggestPeer() (OverlayAddr, int, bool) // On(OverlayConn) (depth uint8, changed bool) Off(OverlayConn) // Register([]OverlayAddr) error // EachConn([]byte, int, func(OverlayConn, int, bool) bool) // EachAddr([]byte, int, func(OverlayAddr, int, bool) bool) // String() string // BaseAddr() []byte // Healthy(*PeerPot) *Health }
type OverlayAddr ¶
type OverlayAddr interface { OverlayPeer Update(OverlayAddr) OverlayAddr //返回原始版本的更新版本 }
overlayAddr表示Kademlia对等记录
type OverlayConn ¶
type OverlayConn interface { OverlayPeer Drop(error) //调用以指示应删除对等项 Off() OverlayAddr //调用以返回Persistant OverlayAddr }
overlayconn表示连接的对等机