node

package
v0.0.0-...-37f8b3f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EnableGenericHub = func(cfg *Config) error {
	cfg.GenericHub = true
	return nil
}

EnableGenericHub 启用对等节点之间的额外通用中心 这可用于在对等节点之间交换与任何区块链事件无关的消息 例如,消息可用于认证或其他类型的应用程序

View Source
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 ExchangeKeys

func ExchangeKeys(s string) func(cfg *Config) error

ExchangeKeys 设置交换密钥

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

func GenPrivKey(seed int64) (crypto.PrivKey, error)

GenPrivKey 生成私钥 参数 seed 为随机种子,为0时使用加密随机数

func GenericChannelHandlers

func GenericChannelHandlers(h ...Handler) func(cfg *Config) error

GenericChannelHandlers 添加处理器到列表,在通用通道中每个接收的消息都会调用(不是为区块链分配的通道)

func Handlers

func Handlers(h ...Handler) func(cfg *Config) error

Handlers 添加处理器到列表,每个接收的消息都会调用

func Insecure

func Insecure(b bool) func(cfg *Config) error

Insecure 设置是否禁用安全传输

func LibP2PLogLevel

func LibP2PLogLevel(l log.LogLevel) func(cfg *Config) error

LibP2PLogLevel 设置libp2p日志级别

func ListenAddresses

func ListenAddresses(ss ...string) func(cfg *Config) error

ListenAddresses 设置监听地址

func Logger

func Logger(l log.StandardLogger) func(cfg *Config) error

Logger 设置日志记录器

func MaxMessageSize

func MaxMessageSize(i int) func(cfg *Config) error

MaxMessageSize 设置最大消息大小

func RoomName

func RoomName(s string) func(cfg *Config) error

RoomName 设置房间名称

func SealKeyInterval

func SealKeyInterval(i int) func(cfg *Config) error

SealKeyInterval 设置密封密钥间隔

func SealKeyLength

func SealKeyLength(i int) func(cfg *Config) error

SealKeyLength 设置密封密钥长度

func WithBlacklist

func WithBlacklist(i ...string) func(cfg *Config) error

WithBlacklist 设置黑名单

func WithDiscoveryBootstrapPeers

func WithDiscoveryBootstrapPeers(a discovery.AddrList) func(cfg *Config) error

WithDiscoveryBootstrapPeers 设置发现引导节点

func WithDiscoveryInterval

func WithDiscoveryInterval(t time.Duration) func(cfg *Config) error

WithDiscoveryInterval 设置发现间隔

func WithInterfaceAddress

func WithInterfaceAddress(i string) func(cfg *Config) error

WithInterfaceAddress 设置接口地址

func WithLedgerAnnounceTime

func WithLedgerAnnounceTime(t time.Duration) func(cfg *Config) error

WithLedgerAnnounceTime 设置账本公告时间

func WithLedgerInterval

func WithLedgerInterval(t time.Duration) func(cfg *Config) error

WithLedgerInterval 设置账本同步间隔

func WithLibp2pAdditionalOptions

func WithLibp2pAdditionalOptions(i ...libp2p.Option) func(cfg *Config) error

WithLibp2pAdditionalOptions 添加额外的libp2p选项

func WithLibp2pOptions

func WithLibp2pOptions(i ...libp2p.Option) func(cfg *Config) error

WithLibp2pOptions 覆盖默认选项

func WithNetworkService

func WithNetworkService(ns ...NetworkService) func(cfg *Config) error

WithNetworkService 添加网络服务

func WithPrivKey

func WithPrivKey(b []byte) func(cfg *Config) error

WithPrivKey 设置私钥

func WithStaticPeer

func WithStaticPeer(ip string, p peer.ID) func(cfg *Config) error

WithStaticPeer 设置静态对等节点

func WithStore

func WithStore(s blockchain.Store) func(cfg *Config) error

WithStore 设置存储器

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 节点配置结构体

func (*Config) Apply

func (cfg *Config) Apply(opts ...Option) error

Apply 应用给定的选项到配置,返回遇到的第一个错误(如果有)

type Gater

type Gater interface {
	Gate(*Node, peer.ID) bool // 门控检查
	Enable()                  // 启用
	Disable()                 // 禁用
	Enabled() bool            // 是否启用
}

Gater 对等节点门控器接口

type Handler

type Handler func(*blockchain.Ledger, *hub.Message, chan *hub.Message) error

Handler 消息处理器类型

type NetworkService

type NetworkService func(context.Context, Config, *Node, *blockchain.Ledger) error

NetworkService 是运行在网络上的服务。它接收上下文、节点和账本

type Node

type Node struct {
	MessageHub *hub.MessageHub // 消息中心

	sync.Mutex
	// contains filtered or unexported fields
}

Node 节点结构体,表示EdgeVPN网络中的一个节点

func New

func New(p ...Option) (*Node, error)

New 创建新的节点实例 参数 p 为可选的配置选项

func (*Node) BlockSubnet

func (e *Node) BlockSubnet(cidr string) error

BlockSubnet 阻止CIDR子网的连接 参数 cidr 为CIDR格式的子网地址

func (*Node) ConnectionGater

func (e *Node) ConnectionGater() *conngater.BasicConnectionGater

ConnectionGater 返回底层libp2p连接门控器

func (*Node) Host

func (e *Node) Host() host.Host

Host 返回libp2p对等节点主机

func (*Node) Ledger

func (e *Node) Ledger() (*blockchain.Ledger, error)

Ledger 返回节点使用的账本 使用节点连接来广播消息

func (*Node) PeerGater

func (e *Node) PeerGater() Gater

PeerGater 返回节点的对等节点门控器

func (*Node) PublishMessage

func (e *Node) PublishMessage(m *hub.Message) error

PublishMessage 将消息发布到通用通道(如果已启用) 参见 GenericChannelHandlers(..) 来附加处理器以从此通道接收消息

func (*Node) Start

func (e *Node) Start(ctx context.Context) error

Start 加入P2P网络启动节点

type OTP

type OTP struct {
	DHT    OTPConfig `yaml:"dht"`    // DHT配置
	Crypto OTPConfig `yaml:"crypto"` // 加密配置
}

OTP OTP配置

type OTPConfig

type OTPConfig struct {
	Interval int    `yaml:"interval"` // 间隔
	Key      string `yaml:"key"`      // 密钥
	Length   int    `yaml:"length"`   // 长度
}

OTPConfig OTP配置结构体

type Option

type Option func(cfg *Config) error

Option 配置选项函数类型

func WithPeerGater

func WithPeerGater(d Gater) Option

WithPeerGater 设置对等节点门控器

func WithSealer

func WithSealer(i Sealer) Option

WithSealer 设置密封器

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字符串表示

func (YAMLConnectionConfig) YAML

func (y YAMLConnectionConfig) YAML() string

YAML 返回连接配置的YAML字符串

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL