go-waku/waku/options.go

186 lines
5.2 KiB
Go
Raw Normal View History

package waku
import (
"crypto/ecdsa"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/multiformats/go-multiaddr"
"github.com/urfave/cli/v2"
)
2022-07-25 15:28:17 +00:00
// DiscV5Options are settings to enable a modified version of Ethereums Node
// Discovery Protocol v5 as a means for ambient node discovery.
2021-11-17 16:19:42 +00:00
type DiscV5Options struct {
Enable bool
Nodes cli.StringSlice
Port uint
AutoUpdate bool
2021-11-17 16:19:42 +00:00
}
2022-07-25 15:28:17 +00:00
// RelayOptions are settings to enable the relay protocol which is a pubsub
// approach to peer-to-peer messaging with a strong focus on privacy,
// censorship-resistance, security and scalability.
type RelayOptions struct {
Enable bool
Topics cli.StringSlice
PeerExchange bool
MinRelayPeersToPublish int
}
2022-07-05 21:28:34 +00:00
type RLNRelayOptions struct {
Enable bool
2022-09-11 21:08:58 +00:00
CredentialsPath string
2022-11-08 20:20:08 +00:00
CredentialsPassword string
2022-07-05 21:28:34 +00:00
MembershipIndex int
PubsubTopic string
ContentTopic string
Dynamic bool
ETHPrivateKey *ecdsa.PrivateKey
2022-07-05 21:28:34 +00:00
ETHClientAddress string
MembershipContractAddress common.Address
2022-07-05 21:28:34 +00:00
}
2022-07-25 15:28:17 +00:00
// FilterOptions are settings used to enable filter protocol. This is a protocol
// that enables subscribing to messages that a peer receives. This is a more
// lightweight version of WakuRelay specifically designed for bandwidth
// restricted devices.
type FilterOptions struct {
Enable bool
UseV2 bool
DisableFullNode bool
Nodes []multiaddr.Multiaddr
Timeout time.Duration
}
2021-10-09 18:18:53 +00:00
// LightpushOptions are settings used to enable the lightpush protocol. This is
// a lightweight protocol used to avoid having to run the relay protocol which
// is more resource intensive. With this protocol a message is pushed to a peer
// that supports both the lightpush protocol and relay protocol. That peer will
// broadcast the message and return a confirmation that the message was
// broadcasted
type LightpushOptions struct {
Enable bool
Nodes []multiaddr.Multiaddr
}
2021-10-09 18:18:53 +00:00
// StoreOptions are settings used for enabling the store protocol, used to
// retrieve message history from other nodes as well as acting as a store
// node and provide message history to nodes that ask for it.
type StoreOptions struct {
Enable bool
2022-11-25 20:54:11 +00:00
DatabaseURL string
RetentionTime time.Duration
RetentionMaxMessages int
2022-11-25 20:54:11 +00:00
ResumeNodes []multiaddr.Multiaddr
Nodes []multiaddr.Multiaddr
}
// SwapOptions are settings used for configuring the swap protocol
type SwapOptions struct {
2022-06-19 21:47:39 +00:00
Enable bool
Mode int
PaymentThreshold int
DisconnectThreshold int
}
2021-10-09 18:18:53 +00:00
// DNSDiscoveryOptions are settings used for enabling DNS-based discovery
// protocol that stores merkle trees in DNS records which contain connection
// information for nodes. It's very useful for bootstrapping a p2p network.
type DNSDiscoveryOptions struct {
Enable bool
URLs cli.StringSlice
Nameserver string
}
2021-10-09 18:18:53 +00:00
// MetricsOptions are settings used to start a prometheus server for obtaining
// useful node metrics to monitor the health of behavior of the go-waku node.
type MetricsOptions struct {
Enable bool
Address string
Port int
}
// RPCServerOptions are settings used to start a json rpc server
type RPCServerOptions struct {
Enable bool
Port int
Address string
Admin bool
Private bool
RelayCacheCapacity int
}
// RESTServerOptions are settings used to start a rest http server
type RESTServerOptions struct {
Enable bool
Port int
Address string
Admin bool
Private bool
RelayCacheCapacity int
}
2022-07-25 15:28:17 +00:00
// WSOptions are settings used for enabling websockets and secure websockets
// support
2022-03-22 13:12:58 +00:00
type WSOptions struct {
Enable bool
2022-08-25 20:36:04 +00:00
WSPort int
WSSPort int
2022-03-22 13:12:58 +00:00
Address string
Secure bool
KeyPath string
CertPath string
}
2022-10-23 13:13:43 +00:00
// PeerExchangeOptions are settings used with the peer exchange protocol
type PeerExchangeOptions struct {
Enable bool
Node *multiaddr.Multiaddr
}
2023-03-09 15:48:25 +00:00
type RendezvousOptions struct {
Enable bool
2023-03-09 22:42:50 +00:00
Server bool
2023-03-09 15:48:25 +00:00
Nodes []multiaddr.Multiaddr
}
2021-10-09 18:18:53 +00:00
// Options contains all the available features and settings that can be
// configured via flags when executing go-waku as a service.
type Options struct {
Port int
Address string
Dns4DomainName string
NodeKey *ecdsa.PrivateKey
KeyFile string
KeyPasswd string
GenerateKey bool
Overwrite bool
StaticNodes []multiaddr.Multiaddr
KeepAlive time.Duration
AdvertiseAddresses []multiaddr.Multiaddr
ShowAddresses bool
LogLevel string
LogEncoding string
LogOutput string
NAT string
PersistPeers bool
UserAgent string
PProf bool
2022-10-23 13:13:43 +00:00
PeerExchange PeerExchangeOptions
2022-10-26 13:43:28 +00:00
Websocket WSOptions
Relay RelayOptions
Store StoreOptions
Swap SwapOptions
Filter FilterOptions
LightPush LightpushOptions
RLNRelay RLNRelayOptions
DiscV5 DiscV5Options
DNSDiscovery DNSDiscoveryOptions
2023-03-09 15:48:25 +00:00
Rendezvous RendezvousOptions
2022-10-26 13:43:28 +00:00
Metrics MetricsOptions
RPCServer RPCServerOptions
RESTServer RESTServerOptions
}