Documentation
¶
Index ¶
- Variables
- func DiscoveryService(s ...ServiceDiscovery) func(cfg *Config) error
- func ExchangeKeys(s string) func(cfg *Config) error
- func FromBase64(enablemDNS, enableDHT bool, bb string, d *discovery.DHT, m *discovery.MDNS) func(cfg *Config) error
- func FromYaml(enablemDNS, enableDHT bool, path string, d *discovery.DHT, m *discovery.MDNS) func(cfg *Config) error
- func GenPrivKey(seed int64) (crypto.PrivKey, error)
- func GenericChannelHandlers(h ...Handler) func(cfg *Config) error
- func Handlers(h ...Handler) func(cfg *Config) error
- func Insecure(b bool) func(cfg *Config) error
- func LibP2PLogLevel(l log.LogLevel) func(cfg *Config) error
- func ListenAddresses(ss ...string) func(cfg *Config) error
- func Logger(l log.StandardLogger) func(cfg *Config) error
- func MaxMessageSize(i int) func(cfg *Config) error
- func RoomName(s string) func(cfg *Config) error
- func SealKeyInterval(i int) func(cfg *Config) error
- func SealKeyLength(i int) func(cfg *Config) error
- func WithBlacklist(i ...string) func(cfg *Config) error
- func WithDiscoveryBootstrapPeers(a discovery.AddrList) func(cfg *Config) error
- func WithDiscoveryInterval(t time.Duration) func(cfg *Config) error
- func WithInterfaceAddress(i string) func(cfg *Config) error
- func WithLedgerAnnounceTime(t time.Duration) func(cfg *Config) error
- func WithLedgerInterval(t time.Duration) func(cfg *Config) error
- func WithLibp2pAdditionalOptions(i ...libp2p.Option) func(cfg *Config) error
- func WithLibp2pOptions(i ...libp2p.Option) func(cfg *Config) error
- func WithNetworkService(ns ...NetworkService) func(cfg *Config) error
- func WithPrivKey(b []byte) func(cfg *Config) error
- func WithStaticPeer(ip string, p peer.ID) func(cfg *Config) error
- func WithStore(s blockchain.Store) func(cfg *Config) error
- func WithStreamHandler(id protocol.Protocol, h StreamHandler) func(cfg *Config) error
- type Config
- type Gater
- type Handler
- type NetworkService
- type Node
- func (e *Node) BlockSubnet(cidr string) error
- func (e *Node) ConnectionGater() *conngater.BasicConnectionGater
- func (e *Node) Host() host.Host
- func (e *Node) Ledger() (*blockchain.Ledger, error)
- func (e *Node) PeerGater() Gater
- func (e *Node) PublishMessage(m *hub.Message) error
- func (e *Node) Start(ctx context.Context) error
- type OTP
- type OTPConfig
- type Option
- type Sealer
- type ServiceDiscovery
- type StreamHandler
- type YAMLConnectionConfig
Constants ¶
This section is empty.
Variables ¶
var EnableGenericHub = func(cfg *Config) error { cfg.GenericHub = true return nil }
EnableGenericHub 启用对等节点之间的额外通用中心 这可用于在对等节点之间交换与任何区块链事件无关的消息 例如,消息可用于认证或其他类型的应用程序
var FallbackDefaults libp2p.Option = func(cfg *libp2p.Config) error { for _, def := range defaults { if !def.fallback(cfg) { continue } if err := cfg.Apply(def.opt); err != nil { return err } } return nil }
FallbackDefaults 如果没有应用其他相关选项,则将默认选项应用于libp2p节点 将附加到传递给New的选项中
Functions ¶
func DiscoveryService ¶
func DiscoveryService(s ...ServiceDiscovery) func(cfg *Config) error
DiscoveryService 将给定的服务添加到发现服务
func FromBase64 ¶
func FromBase64(enablemDNS, enableDHT bool, bb string, d *discovery.DHT, m *discovery.MDNS) func(cfg *Config) error
FromBase64 从base64字符串加载配置 参数 enablemDNS 为是否启用mDNS,enableDHT 为是否启用DHT,bb 为base64字符串,d 为DHT发现,m 为mDNS发现
func FromYaml ¶
func FromYaml(enablemDNS, enableDHT bool, path string, d *discovery.DHT, m *discovery.MDNS) func(cfg *Config) error
FromYaml 从YAML文件加载配置 参数 enablemDNS 为是否启用mDNS,enableDHT 为是否启用DHT,path 为文件路径,d 为DHT发现,m 为mDNS发现
func GenPrivKey ¶
GenPrivKey 生成私钥 参数 seed 为随机种子,为0时使用加密随机数
func GenericChannelHandlers ¶
GenericChannelHandlers 添加处理器到列表,在通用通道中每个接收的消息都会调用(不是为区块链分配的通道)
func LibP2PLogLevel ¶
LibP2PLogLevel 设置libp2p日志级别
func ListenAddresses ¶
ListenAddresses 设置监听地址
func WithDiscoveryBootstrapPeers ¶
WithDiscoveryBootstrapPeers 设置发现引导节点
func WithDiscoveryInterval ¶
WithDiscoveryInterval 设置发现间隔
func WithInterfaceAddress ¶
WithInterfaceAddress 设置接口地址
func WithLedgerAnnounceTime ¶
WithLedgerAnnounceTime 设置账本公告时间
func WithLedgerInterval ¶
WithLedgerInterval 设置账本同步间隔
func WithLibp2pAdditionalOptions ¶
WithLibp2pAdditionalOptions 添加额外的libp2p选项
func WithLibp2pOptions ¶
WithLibp2pOptions 覆盖默认选项
func WithNetworkService ¶
func WithNetworkService(ns ...NetworkService) func(cfg *Config) error
WithNetworkService 添加网络服务
func WithStaticPeer ¶
WithStaticPeer 设置静态对等节点
func WithStreamHandler ¶
func WithStreamHandler(id protocol.Protocol, h StreamHandler) func(cfg *Config) error
WithStreamHandler 添加流处理器到列表,每个接收的消息都会调用
Types ¶
type Config ¶
type Config struct {
// ExchangeKey 是用于密封消息的对称密钥
ExchangeKey string
// RoomName 是所有对等节点订阅的OTP令牌八卦房间
RoomName string
// ListenAddresses 是发现对等节点的初始引导地址
ListenAddresses []discovery.AddrList
// Insecure 禁用安全的P2P端到端加密通信
Insecure bool
// Handlers 是订阅VPN接口接收消息的处理器列表
Handlers, GenericChannelHandler []Handler
MaxMessageSize int // 最大消息大小
SealKeyInterval int // 密封密钥间隔
ServiceDiscovery []ServiceDiscovery // 服务发现列表
NetworkServices []NetworkService // 网络服务列表
Logger log.StandardLogger // 日志记录器
SealKeyLength int // 密封密钥长度
InterfaceAddress string // 接口地址
Store blockchain.Store // 存储器
// Handle 是被HumanInterfaces消耗的句柄,用于处理接收的消息
Handle func(bool, *hub.Message)
StreamHandlers map[protocol.Protocol]StreamHandler // 流处理器映射
AdditionalOptions, Options []libp2p.Option // libp2p选项
DiscoveryInterval, LedgerSyncronizationTime, LedgerAnnounceTime time.Duration // 各种时间间隔
DiscoveryBootstrapPeers discovery.AddrList // 发现引导节点
Whitelist, Blacklist []string // 白名单和黑名单
// GenericHub 启用通用中心
GenericHub bool
PrivateKey []byte // 私钥
PeerTable map[string]peer.ID // 对等节点表
Sealer Sealer // 密封器
PeerGater Gater // 对等节点门控器
}
Config 节点配置结构体
type Gater ¶
type Gater interface {
Gate(*Node, peer.ID) bool // 门控检查
Enable() // 启用
Disable() // 禁用
Enabled() bool // 是否启用
}
Gater 对等节点门控器接口
type NetworkService ¶
NetworkService 是运行在网络上的服务。它接收上下文、节点和账本
type Node ¶
type Node struct {
MessageHub *hub.MessageHub // 消息中心
sync.Mutex
// contains filtered or unexported fields
}
Node 节点结构体,表示EdgeVPN网络中的一个节点
func (*Node) BlockSubnet ¶
BlockSubnet 阻止CIDR子网的连接 参数 cidr 为CIDR格式的子网地址
func (*Node) ConnectionGater ¶
func (e *Node) ConnectionGater() *conngater.BasicConnectionGater
ConnectionGater 返回底层libp2p连接门控器
func (*Node) Ledger ¶
func (e *Node) Ledger() (*blockchain.Ledger, error)
Ledger 返回节点使用的账本 使用节点连接来广播消息
func (*Node) PublishMessage ¶
PublishMessage 将消息发布到通用通道(如果已启用) 参见 GenericChannelHandlers(..) 来附加处理器以从此通道接收消息
type OTPConfig ¶
type OTPConfig struct {
Interval int `yaml:"interval"` // 间隔
Key string `yaml:"key"` // 密钥
Length int `yaml:"length"` // 长度
}
OTPConfig OTP配置结构体
type Sealer ¶
type Sealer interface {
Seal(string, string) (string, error) // 密封
Unseal(string, string) (string, error) // 解封
}
Sealer 密封器接口
type ServiceDiscovery ¶
type ServiceDiscovery interface {
Run(log.StandardLogger, context.Context, host.Host) error // 运行服务发现
Option(context.Context) func(c *libp2p.Config) error // 返回libp2p选项
}
ServiceDiscovery 服务发现接口
type StreamHandler ¶
type StreamHandler func(*Node, *blockchain.Ledger) func(stream network.Stream)
StreamHandler 流处理器类型
type YAMLConnectionConfig ¶
type YAMLConnectionConfig struct {
OTP OTP `yaml:"otp"`
RoomName string `yaml:"room"` // 房间名称
Rendezvous string `yaml:"rendezvous"` // 会合点
MDNS string `yaml:"mdns"` // mDNS
MaxMessageSize int `yaml:"max_message_size"` // 最大消息大小
}
YAMLConnectionConfig YAML连接配置结构体
func GenerateNewConnectionData ¶
func GenerateNewConnectionData(i ...int) *YAMLConnectionConfig
GenerateNewConnectionData 生成新的连接数据 参数 i 为可选参数:间隔时间、最大消息大小、密钥长度
func (YAMLConnectionConfig) Base64 ¶
func (y YAMLConnectionConfig) Base64() string
Base64 返回连接配置的base64字符串表示