Documentation
¶
Overview ¶
Package types dht public types
Package types 外部公用类型
Index ¶
Constants ¶
View Source
const ( //Version P2P client version Version = "1.0.0" // DHTTypeName p2p插件名称,底层基于libp2p框架, dht结构化网络 DHTTypeName = "dht" // DefaultP2PPort 默认端口 DefaultP2PPort = 13803 // MinPercentage ... MinPercentage = 10 // MaxPercentage ... MaxPercentage = 100 // DefaultPercentage ... DefaultPercentage = 30 )
Variables ¶
View Source
var ( // ErrLength err length ErrLength = errors.New("length not equal") // ErrInvalidMessageType invalid message type err ErrInvalidMessageType = errors.New("invalid message type") // ErrNotFound not found err ErrNotFound = errors.New("not found") // ErrInvalidParam invalid param err ErrInvalidParam = errors.New("invalid parameter") // ErrWrongSignature wrong signature err ErrWrongSignature = errors.New("wrong signature") // ErrInvalidResponse invalid response error ErrInvalidResponse = errors.New("invalid response") // RefreshInterval refresh interval RefreshInterval = time.Hour * 3 )
Functions ¶
This section is empty.
Types ¶
type BroadcastConfig ¶ added in v1.66.1
type BroadcastConfig struct {
//交易过滤器长度
TxFilterLen int `json:"txFilterLen,omitempty"`
//区块过滤器长度
BlockFilterLen int `json:"blockFilterLen,omitempty"`
//关闭轻区块广播, 默认开启
DisableLtBlock bool `json:"disableLtBlock,omitempty"`
//区块轻广播的最低区块大小,单位KB, 大于该值时区块内交易采用短哈希广播, 默认100KB
MinLtBlockSize int `json:"minLtBlockSize,omitempty"`
//轻区块等待超时时长(毫秒), 默认1000 ms, 建议配置为出块时间的1/3
LtBlockPendTimeout int64 `json:"ltBlockPendTimeout,omitempty"`
//支持关闭批量交易广播
DisableBatchTx bool `json:"disableBatchTx,omitempty"`
//最大批量广播交易数量, 默认200
MaxBatchTxNum int `json:"maxBatchTxNum,omitempty"`
//批量广播交易最大间隔(毫秒), 默认100 ms
MaxBatchTxInterval int `json:"maxBatchTxInterval,omitempty"`
//关闭广播数据验证, 适用于联盟链私有链
DisableValidation bool `json:"disableValidation,omitempty"`
}
BroadcastConfig broadcast config
type P2PSubConfig ¶
type P2PSubConfig struct {
// P2P服务监听端口号
Port int32 `protobuf:"varint,1,opt,name=port" json:"port,omitempty"`
// 手动配置节点
Seeds []string `protobuf:"bytes,2,rep,name=seeds" json:"seeds,omitempty"`
// p2p网络频道,用于区分主网/测试网/其他网络
Channel int32 `protobuf:"varint,5,opt,name=channel" json:"channel,omitempty"`
//最大dht连接数
MaxConnectNum int32 `protobuf:"varint,7,opt,name=maxConnectNum" json:"maxConnectNum,omitempty"`
//引导节点配置
BootStraps []string `protobuf:"bytes,8,rep,name=bootStraps" json:"bootStraps,omitempty"`
//中继传输主动建立连接,中继服务端可以选配,启动中继服务之后,NAT后面的节点可以通过中继节点广播自己的节点地址信息
RelayHop bool `protobuf:"varint,10,opt,name=relayHop" json:"relayHop,omitempty"`
DisableFindLANPeers bool `protobuf:"varint,11,opt,name=disableFindLANPeers" json:"disableFindLANPeers,omitempty"`
DHTDataPath string `protobuf:"bytes,12,opt,name=DHTDataPath" json:"DHTDataPath,omitempty"`
DHTDataCache int32 `protobuf:"varint,13,opt,name=DHTDataCache" json:"DHTDataCache,omitempty"`
// 分片数据保存比例
Percentage int `protobuf:"varint,14,opt,name=percentage" json:"percentage,omitempty"`
//是否开启全节点模式
IsFullNode bool `protobuf:"varint,15,opt,name=isFullNode" json:"isFullNode,omitempty"`
//是否启用中继功能,如果自己身NAT后面的节点,RelayEnable=true,则仍有可能被其他节点连接。
RelayEnable bool `protobuf:"varint,18,opt,name=relayEnable" json:"relayEnable,omitempty"`
RelayServiceEnable bool `protobuf:"varint,18,opt,name=relayServiceEnable" json:"relayServiceEnable,omitempty"`
//指定中继节点作为
RelayNodeAddr []string `protobuf:"varint,19,opt,name=relayNodeAddr" json:"relayNodeAddr,omitempty"`
// 不启动分片功能,默认启动
DisableShard bool `protobuf:"varint,120,opt,name=disableShard" json:"disableShard,omitempty"`
//特定场景下的p2p白名单,只连接配置的节点,联盟链使用
WhitePeerList []string `protobuf:"bytes,21,rep,name=whitePeerList" json:"whitePeerList,omitempty"`
// 扩展路由表最小节点数
MinExtendRoutingTableSize int `protobuf:"varint,22,opt,name=minExtendRoutingTableSize" json:"minExtendRoutingTableSize,omitempty"`
// 扩展路由表最大节点数
MaxExtendRoutingTableSize int `protobuf:"varint,23,opt,name=n=maxExtendRoutingTableSize" json:"maxExtendRoutingTableSize,omitempty"`
//配置libp2p库代码日志等级, 支持DEBUG, INFO, WARN, ERROR,默认ERROR
Libp2pLogLevel string `json:"libp2pLogLevel,omitempty"`
//配置libp2p库日志文件名 如logs/libp2p.log, 禁止和chain33使用一个日志文件, 详见issue #1117
Libp2pLogFile string `json:"libp2pLogFile,omitempty"`
// pubsub配置
PubSub PubSubConfig `json:"pubsub,omitempty"`
//启动私有网络,只有相同配置的节点才能连接,多用于联盟链需求,创建方式 hex.Encode([32]byte),32字节的十六进制编码字符串
Psk string `json:"psk"`
//广播子配置
Broadcast BroadcastConfig `json:"broadcast,omitempty"`
VerLimit string `json:"verLimit,omitempty"`
}
P2PSubConfig p2p 子配置
type PubSubConfig ¶ added in v1.65.3
type PubSubConfig struct {
// pub sub消息是否需要签名和验签
DisablePubSubMsgSign bool `json:"disablePubSubMsgSign,omitempty"`
// set the buffer size for outbound messages to a peer, Defaults to 128
// We start dropping messages to a peer if the outbound queue if full
PeerOutboundQueueSize int `json:"peerOutboundQueueSize,omitempty"`
// sets the buffer of validate queue. Defaults to 128.
// When queue is full, validation is throttled and new messages are dropped.
ValidateQueueSize int `json:"validateQueueSize,omitempty"`
// This should generally be enabled in bootstrappers and
// well connected/trusted nodes used for bootstrapping.
EnablePeerExchange bool `json:"enablePeerExchange,omitempty"`
// GossipSubDlo sets the lower bound on the number of peers we keep in a GossipSub topic mesh.
// If we have fewer than GossipSubDlo peers, we will attempt to graft some more into the mesh at
// the next heartbeat.
GossipSubDlo int `json:"gossipSubDlo,omitempty"`
// GossipSubD sets the optimal degree for a GossipSub topic mesh. For example, if GossipSubD == 6,
// each peer will want to have about six peers in their mesh for each topic they're subscribed to.
// GossipSubD should be set somewhere between GossipSubDlo and GossipSubDhi.
GossipSubD int `json:"gossipSubD,omitempty"`
// GossipSubDhi sets the upper bound on the number of peers we keep in a GossipSub topic mesh.
// If we have more than GossipSubDhi peers, we will select some to prune from the mesh at the next heartbeat.
GossipSubDhi int `json:"gossipSubDhi,omitempty"`
// GossipSubHeartbeatInterval controls the time between heartbeats. ms
GossipSubHeartbeatInterval int `json:"gossipSubHeartbeatInterval,omitempty"`
// GossipSubHistoryGossip controls how many cached message ids we will advertise in
// IHAVE gossip messages. When asked for our seen message IDs, we will return
// only those from the most recent GossipSubHistoryGossip heartbeats. The slack between
// GossipSubHistoryGossip and GossipSubHistoryLength allows us to avoid advertising messages
// that will be expired by the time they're requested.
//
// GossipSubHistoryGossip must be less than or equal to GossipSubHistoryLength to
// avoid a runtime panic.
GossipSubHistoryGossip int `json:"gossipSubHistoryGossip,omitempty"`
// GossipSubHistoryLength controls the size of the message cache used for gossip.
// The message cache will remember messages for GossipSubHistoryLength heartbeats.
GossipSubHistoryLength int `json:"gossipSubHistoryLength,omitempty"`
// MaxMsgSize, max message size in pub sub(MB)
MaxMsgSize int `json:"maxMsgSize,omitempty"`
// SubBufferSize customize the size of the subscribe output buffer
SubBufferSize int `json:"subBufferSize,omitempty"`
}
PubSubConfig pubsub config
Click to show internal directories.
Click to hide internal directories.