Commit 3ff1214a authored by Anatol's avatar Anatol Committed by GitHub

refactor: remove standalone mode (#2331)

parent b90e92cd
...@@ -40,7 +40,6 @@ const ( ...@@ -40,7 +40,6 @@ const (
optionNameNetworkID = "network-id" optionNameNetworkID = "network-id"
optionWelcomeMessage = "welcome-message" optionWelcomeMessage = "welcome-message"
optionCORSAllowedOrigins = "cors-allowed-origins" optionCORSAllowedOrigins = "cors-allowed-origins"
optionNameStandalone = "standalone"
optionNameTracingEnabled = "tracing-enable" optionNameTracingEnabled = "tracing-enable"
optionNameTracingEndpoint = "tracing-endpoint" optionNameTracingEndpoint = "tracing-endpoint"
optionNameTracingHost = "tracing-host" optionNameTracingHost = "tracing-host"
...@@ -217,7 +216,6 @@ func (c *command) setAllFlags(cmd *cobra.Command) { ...@@ -217,7 +216,6 @@ func (c *command) setAllFlags(cmd *cobra.Command) {
cmd.Flags().String(optionNameDebugAPIAddr, ":1635", "debug HTTP API listen address") cmd.Flags().String(optionNameDebugAPIAddr, ":1635", "debug HTTP API listen address")
cmd.Flags().Uint64(optionNameNetworkID, 10, "ID of the Swarm network") cmd.Flags().Uint64(optionNameNetworkID, 10, "ID of the Swarm network")
cmd.Flags().StringSlice(optionCORSAllowedOrigins, []string{}, "origins with CORS headers enabled") cmd.Flags().StringSlice(optionCORSAllowedOrigins, []string{}, "origins with CORS headers enabled")
cmd.Flags().Bool(optionNameStandalone, false, "whether we want the node to start with no listen addresses for p2p")
cmd.Flags().Bool(optionNameTracingEnabled, false, "enable tracing") cmd.Flags().Bool(optionNameTracingEnabled, false, "enable tracing")
cmd.Flags().String(optionNameTracingEndpoint, "127.0.0.1:6831", "endpoint to send tracing data") cmd.Flags().String(optionNameTracingEndpoint, "127.0.0.1:6831", "endpoint to send tracing data")
cmd.Flags().String(optionNameTracingHost, "", "host to send tracing data") cmd.Flags().String(optionNameTracingHost, "", "host to send tracing data")
......
...@@ -173,7 +173,6 @@ inability to use, or your interaction with other nodes or the software.`) ...@@ -173,7 +173,6 @@ inability to use, or your interaction with other nodes or the software.`)
WelcomeMessage: c.config.GetString(optionWelcomeMessage), WelcomeMessage: c.config.GetString(optionWelcomeMessage),
Bootnodes: networkConfig.bootNodes, Bootnodes: networkConfig.bootNodes,
CORSAllowedOrigins: c.config.GetStringSlice(optionCORSAllowedOrigins), CORSAllowedOrigins: c.config.GetStringSlice(optionCORSAllowedOrigins),
Standalone: c.config.GetBool(optionNameStandalone),
TracingEnabled: c.config.GetBool(optionNameTracingEnabled), TracingEnabled: c.config.GetBool(optionNameTracingEnabled),
TracingEndpoint: tracingEndpoint, TracingEndpoint: tracingEndpoint,
TracingServiceName: c.config.GetString(optionNameTracingServiceName), TracingServiceName: c.config.GetString(optionNameTracingServiceName),
......
...@@ -62,8 +62,6 @@ password-file: /var/lib/bee/password ...@@ -62,8 +62,6 @@ password-file: /var/lib/bee/password
# postage-stamp-address: "" # postage-stamp-address: ""
## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url ## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url
# resolver-options: [] # resolver-options: []
## whether we want the node to start with no listen addresses for p2p
# standalone: false
## enable swap (default true) ## enable swap (default true)
# swap-enable: true # swap-enable: true
## swap ethereum blockchain endpoint (default "ws://localhost:8546") ## swap ethereum blockchain endpoint (default "ws://localhost:8546")
......
...@@ -45,7 +45,6 @@ services: ...@@ -45,7 +45,6 @@ services:
- BEE_PAYMENT_TOLERANCE - BEE_PAYMENT_TOLERANCE
- BEE_POSTAGE_STAMP_ADDRESS - BEE_POSTAGE_STAMP_ADDRESS
- BEE_RESOLVER_OPTIONS - BEE_RESOLVER_OPTIONS
- BEE_STANDALONE
- BEE_SWAP_ENABLE - BEE_SWAP_ENABLE
- BEE_SWAP_ENDPOINT - BEE_SWAP_ENDPOINT
- BEE_SWAP_FACTORY_ADDRESS - BEE_SWAP_FACTORY_ADDRESS
......
...@@ -69,8 +69,6 @@ BEE_CLEF_SIGNER_ENABLE=true ...@@ -69,8 +69,6 @@ BEE_CLEF_SIGNER_ENABLE=true
# BEE_POSTAGE_STAMP_ADDRESS= # BEE_POSTAGE_STAMP_ADDRESS=
## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url ## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url
# BEE_RESOLVER_OPTIONS=[] # BEE_RESOLVER_OPTIONS=[]
## whether we want the node to start with no listen addresses for p2p
# BEE_STANDALONE=false
## enable swap (default true) ## enable swap (default true)
# BEE_SWAP_ENABLE=true # BEE_SWAP_ENABLE=true
## swap ethereum blockchain endpoint (default ws://localhost:8546) ## swap ethereum blockchain endpoint (default ws://localhost:8546)
......
...@@ -62,8 +62,6 @@ password-file: /usr/local/var/lib/swarm-bee/password ...@@ -62,8 +62,6 @@ password-file: /usr/local/var/lib/swarm-bee/password
# postage-stamp-address: "" # postage-stamp-address: ""
## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url ## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url
# resolver-options: [] # resolver-options: []
## whether we want the node to start with no listen addresses for p2p
# standalone: false
## enable swap (default true) ## enable swap (default true)
# swap-enable: true # swap-enable: true
## swap ethereum blockchain endpoint (default "ws://localhost:8546") ## swap ethereum blockchain endpoint (default "ws://localhost:8546")
......
...@@ -52,8 +52,6 @@ password-file: ./password ...@@ -52,8 +52,6 @@ password-file: ./password
# postage-stamp-address: "" # postage-stamp-address: ""
## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url ## ENS compatible API endpoint for a TLD and with contract address, can be repeated, format [tld:][contract-addr@]url
# resolver-options: [] # resolver-options: []
## whether we want the node to start with no listen addresses for p2p
# standalone: false
## enable swap (default true) ## enable swap (default true)
# swap-enable: true # swap-enable: true
## swap ethereum blockchain endpoint (default "ws://localhost:8546") ## swap ethereum blockchain endpoint (default "ws://localhost:8546")
......
...@@ -128,7 +128,6 @@ type Options struct { ...@@ -128,7 +128,6 @@ type Options struct {
Bootnodes []string Bootnodes []string
CORSAllowedOrigins []string CORSAllowedOrigins []string
Logger logging.Logger Logger logging.Logger
Standalone bool
TracingEnabled bool TracingEnabled bool
TracingEndpoint string TracingEndpoint string
TracingServiceName string TracingServiceName string
...@@ -212,25 +211,23 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -212,25 +211,23 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
cashoutService chequebook.CashoutService cashoutService chequebook.CashoutService
pollingInterval = time.Duration(o.BlockTime) * time.Second pollingInterval = time.Duration(o.BlockTime) * time.Second
) )
if !o.Standalone { swapBackend, overlayEthAddress, chainID, transactionMonitor, transactionService, err = InitChain(
swapBackend, overlayEthAddress, chainID, transactionMonitor, transactionService, err = InitChain( p2pCtx,
p2pCtx, logger,
logger, stateStore,
stateStore, o.SwapEndpoint,
o.SwapEndpoint, signer,
signer, pollingInterval,
pollingInterval, )
) if err != nil {
if err != nil { return nil, fmt.Errorf("init chain: %w", err)
return nil, fmt.Errorf("init chain: %w", err) }
} b.ethClientCloser = swapBackend.Close
b.ethClientCloser = swapBackend.Close b.transactionCloser = tracerCloser
b.transactionCloser = tracerCloser b.transactionMonitorCloser = transactionMonitor
b.transactionMonitorCloser = transactionMonitor
if o.ChainID != -1 && o.ChainID != chainID { if o.ChainID != -1 && o.ChainID != chainID {
return nil, fmt.Errorf("connected to wrong ethereum network: got chainID %d, want %d", chainID, o.ChainID) return nil, fmt.Errorf("connected to wrong ethereum network: got chainID %d, want %d", chainID, o.ChainID)
}
} }
var debugAPIService *debugapi.Service var debugAPIService *debugapi.Service
...@@ -266,19 +263,17 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -266,19 +263,17 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
b.debugAPIServer = debugAPIServer b.debugAPIServer = debugAPIServer
} }
if !o.Standalone { // Sync the with the given Ethereum backend:
// Sync the with the given Ethereum backend: isSynced, _, err := transaction.IsSynced(p2pCtx, swapBackend, maxDelay)
isSynced, _, err := transaction.IsSynced(p2pCtx, swapBackend, maxDelay) if err != nil {
if err != nil { return nil, fmt.Errorf("is synced: %w", err)
return nil, fmt.Errorf("is synced: %w", err) }
} if !isSynced {
if !isSynced { logger.Infof("waiting to sync with the Ethereum backend")
logger.Infof("waiting to sync with the Ethereum backend")
err := transaction.WaitSynced(p2pCtx, logger, swapBackend, maxDelay) err := transaction.WaitSynced(p2pCtx, logger, swapBackend, maxDelay)
if err != nil { if err != nil {
return nil, fmt.Errorf("waiting backend sync: %w", err) return nil, fmt.Errorf("waiting backend sync: %w", err)
}
} }
} }
...@@ -362,7 +357,6 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -362,7 +357,6 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
NATAddr: o.NATAddr, NATAddr: o.NATAddr,
EnableWS: o.EnableWS, EnableWS: o.EnableWS,
EnableQUIC: o.EnableQUIC, EnableQUIC: o.EnableQUIC,
Standalone: o.Standalone,
WelcomeMessage: o.WelcomeMessage, WelcomeMessage: o.WelcomeMessage,
FullNode: o.FullNodeMode, FullNode: o.FullNodeMode,
Transaction: txHash, Transaction: txHash,
...@@ -422,56 +416,52 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -422,56 +416,52 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
) )
var postageSyncStart uint64 = 0 var postageSyncStart uint64 = 0
if !o.Standalone { chainCfg, found := config.GetChainConfig(chainID)
chainCfg, found := config.GetChainConfig(chainID) postageContractAddress, startBlock := chainCfg.PostageStamp, chainCfg.StartBlock
postageContractAddress, startBlock := chainCfg.PostageStamp, chainCfg.StartBlock if o.PostageContractAddress != "" {
if o.PostageContractAddress != "" { if !common.IsHexAddress(o.PostageContractAddress) {
if !common.IsHexAddress(o.PostageContractAddress) { return nil, errors.New("malformed postage stamp address")
return nil, errors.New("malformed postage stamp address")
}
postageContractAddress = common.HexToAddress(o.PostageContractAddress)
} else if !found {
return nil, errors.New("no known postage stamp addresses for this network")
}
if found {
postageSyncStart = startBlock
} }
postageContractAddress = common.HexToAddress(o.PostageContractAddress)
} else if !found {
return nil, errors.New("no known postage stamp addresses for this network")
}
if found {
postageSyncStart = startBlock
}
eventListener = listener.New(logger, swapBackend, postageContractAddress, o.BlockTime, &pidKiller{node: b}) eventListener = listener.New(logger, swapBackend, postageContractAddress, o.BlockTime, &pidKiller{node: b})
b.listenerCloser = eventListener b.listenerCloser = eventListener
batchSvc, err = batchservice.New(stateStore, batchStore, logger, eventListener, overlayEthAddress.Bytes(), post, sha3.New256)
if err != nil {
return nil, err
}
erc20Address, err := postagecontract.LookupERC20Address(p2pCtx, transactionService, postageContractAddress) batchSvc, err = batchservice.New(stateStore, batchStore, logger, eventListener, overlayEthAddress.Bytes(), post, sha3.New256)
if err != nil { if err != nil {
return nil, err return nil, err
} }
postageContractService = postagecontract.New( erc20Address, err := postagecontract.LookupERC20Address(p2pCtx, transactionService, postageContractAddress)
overlayEthAddress, if err != nil {
postageContractAddress, return nil, err
erc20Address,
transactionService,
post,
)
} }
if !o.Standalone { postageContractService = postagecontract.New(
if natManager := p2ps.NATManager(); natManager != nil { overlayEthAddress,
// wait for nat manager to init postageContractAddress,
logger.Debug("initializing NAT manager") erc20Address,
select { transactionService,
case <-natManager.Ready(): post,
// this is magic sleep to give NAT time to sync the mappings )
// this is a hack, kind of alchemy and should be improved
time.Sleep(3 * time.Second) if natManager := p2ps.NATManager(); natManager != nil {
logger.Debug("NAT manager initialized") // wait for nat manager to init
case <-time.After(10 * time.Second): logger.Debug("initializing NAT manager")
logger.Warning("NAT manager init timeout") select {
} case <-natManager.Ready():
// this is magic sleep to give NAT time to sync the mappings
// this is a hack, kind of alchemy and should be improved
time.Sleep(3 * time.Second)
logger.Debug("NAT manager initialized")
case <-time.After(10 * time.Second):
logger.Warning("NAT manager init timeout")
} }
} }
...@@ -488,19 +478,16 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -488,19 +478,16 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
} }
var bootnodes []ma.Multiaddr var bootnodes []ma.Multiaddr
if o.Standalone {
logger.Info("Starting node in standalone mode, no p2p connections will be made or accepted")
} else {
for _, a := range o.Bootnodes {
addr, err := ma.NewMultiaddr(a)
if err != nil {
logger.Debugf("multiaddress fail %s: %v", a, err)
logger.Warningf("invalid bootnode address %s", a)
continue
}
bootnodes = append(bootnodes, addr) for _, a := range o.Bootnodes {
addr, err := ma.NewMultiaddr(a)
if err != nil {
logger.Debugf("multiaddress fail %s: %v", a, err)
logger.Warningf("invalid bootnode address %s", a)
continue
} }
bootnodes = append(bootnodes, addr)
} }
var swapService *swap.Service var swapService *swap.Service
...@@ -510,7 +497,7 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo ...@@ -510,7 +497,7 @@ func NewBee(addr string, publicKey *ecdsa.PublicKey, signer crypto.Signer, netwo
return nil, fmt.Errorf("unable to create metrics storage for kademlia: %w", err) return nil, fmt.Errorf("unable to create metrics storage for kademlia: %w", err)
} }
kad := kademlia.New(swarmAddress, addressbook, hive, p2ps, metricsDB, logger, kademlia.Options{Bootnodes: bootnodes, StandaloneMode: o.Standalone, BootnodeMode: o.BootnodeMode}) kad := kademlia.New(swarmAddress, addressbook, hive, p2ps, metricsDB, logger, kademlia.Options{Bootnodes: bootnodes, BootnodeMode: o.BootnodeMode})
b.topologyCloser = kad b.topologyCloser = kad
b.topologyHalter = kad b.topologyHalter = kad
hive.SetAddPeersHandler(kad.AddPeers) hive.SetAddPeersHandler(kad.AddPeers)
......
...@@ -87,7 +87,6 @@ type Options struct { ...@@ -87,7 +87,6 @@ type Options struct {
NATAddr string NATAddr string
EnableWS bool EnableWS bool
EnableQUIC bool EnableQUIC bool
Standalone bool
FullNode bool FullNode bool
LightNodeLimit int LightNodeLimit int
WelcomeMessage string WelcomeMessage string
...@@ -178,10 +177,6 @@ func New(ctx context.Context, signer beecrypto.Signer, networkID uint64, overlay ...@@ -178,10 +177,6 @@ func New(ctx context.Context, signer beecrypto.Signer, networkID uint64, overlay
transports = append(transports, libp2p.Transport(libp2pquic.NewTransport)) transports = append(transports, libp2p.Transport(libp2pquic.NewTransport))
} }
if o.Standalone {
opts = append(opts, libp2p.NoListenAddrs)
}
opts = append(opts, transports...) opts = append(opts, transports...)
h, err := libp2p.New(ctx, opts...) h, err := libp2p.New(ctx, opts...)
......
...@@ -66,7 +66,6 @@ var noopSanctionedPeerFn = func(_ swarm.Address) bool { return false } ...@@ -66,7 +66,6 @@ var noopSanctionedPeerFn = func(_ swarm.Address) bool { return false }
type Options struct { type Options struct {
SaturationFunc binSaturationFunc SaturationFunc binSaturationFunc
Bootnodes []ma.Multiaddr Bootnodes []ma.Multiaddr
StandaloneMode bool
BootnodeMode bool BootnodeMode bool
BitSuffixLength int BitSuffixLength int
} }
...@@ -90,7 +89,6 @@ type Kad struct { ...@@ -90,7 +89,6 @@ type Kad struct {
peerSig []chan struct{} peerSig []chan struct{}
peerSigMtx sync.Mutex peerSigMtx sync.Mutex
logger logging.Logger // logger logger logging.Logger // logger
standalone bool // indicates whether the node is working in standalone mode
bootnode bool // indicates whether the node is working in bootnode mode bootnode bool // indicates whether the node is working in bootnode mode
collector *im.Collector collector *im.Collector
quit chan struct{} // quit channel quit chan struct{} // quit channel
...@@ -136,7 +134,6 @@ func New( ...@@ -136,7 +134,6 @@ func New(
manageC: make(chan struct{}, 1), manageC: make(chan struct{}, 1),
waitNext: waitnext.New(), waitNext: waitnext.New(),
logger: logger, logger: logger,
standalone: o.StandaloneMode,
bootnode: o.BootnodeMode, bootnode: o.BootnodeMode,
collector: im.NewCollector(metricsDB), collector: im.NewCollector(metricsDB),
quit: make(chan struct{}), quit: make(chan struct{}),
...@@ -529,10 +526,6 @@ func (k *Kad) manage() { ...@@ -529,10 +526,6 @@ func (k *Kad) manage() {
default: default:
} }
if k.standalone {
continue
}
oldDepth := k.NeighborhoodDepth() oldDepth := k.NeighborhoodDepth()
k.connectNeighbours(&wg, peerConnChan, peerConnChan2) k.connectNeighbours(&wg, peerConnChan, peerConnChan2)
k.connectBalanced(&wg, peerConnChan2) k.connectBalanced(&wg, peerConnChan2)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment