92580d69d3
This commit affects p2p/discv5 "topic discovery" by running it on the same UDP port where the old discovery works. This is realized by giving an "unhandled" packet channel to the old v4 discovery packet handler where all invalid packets are sent. These packets are then processed by v5. v5 packets are always invalid when interpreted by v4 and vice versa. This is ensured by adding one to the first byte of the packet hash in v5 packets. DiscoveryV5Bootnodes is also changed to point to new bootnodes that are implementing the changed packet format with modified hash. Existing and new v5 bootnodes are both running on different ports ATM.
77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
// Copyright 2016 The go-ethereum Authors
|
|
// This file is part of the go-ethereum library.
|
|
//
|
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Lesser General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// The go-ethereum library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Lesser General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Lesser General Public License
|
|
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package node
|
|
|
|
import (
|
|
"os"
|
|
"os/user"
|
|
"path/filepath"
|
|
"runtime"
|
|
|
|
"github.com/ethereum/go-ethereum/p2p"
|
|
"github.com/ethereum/go-ethereum/p2p/nat"
|
|
)
|
|
|
|
const (
|
|
DefaultHTTPHost = "localhost" // Default host interface for the HTTP RPC server
|
|
DefaultHTTPPort = 8545 // Default TCP port for the HTTP RPC server
|
|
DefaultWSHost = "localhost" // Default host interface for the websocket RPC server
|
|
DefaultWSPort = 8546 // Default TCP port for the websocket RPC server
|
|
)
|
|
|
|
// DefaultConfig contains reasonable default settings.
|
|
var DefaultConfig = Config{
|
|
DataDir: DefaultDataDir(),
|
|
HTTPPort: DefaultHTTPPort,
|
|
HTTPModules: []string{"net", "web3"},
|
|
WSPort: DefaultWSPort,
|
|
WSModules: []string{"net", "web3"},
|
|
P2P: p2p.Config{
|
|
ListenAddr: ":30303",
|
|
MaxPeers: 25,
|
|
NAT: nat.Any(),
|
|
},
|
|
}
|
|
|
|
// DefaultDataDir is the default data directory to use for the databases and other
|
|
// persistence requirements.
|
|
func DefaultDataDir() string {
|
|
// Try to place the data folder in the user's home dir
|
|
home := homeDir()
|
|
if home != "" {
|
|
if runtime.GOOS == "darwin" {
|
|
return filepath.Join(home, "Library", "Ethereum")
|
|
} else if runtime.GOOS == "windows" {
|
|
return filepath.Join(home, "AppData", "Roaming", "Ethereum")
|
|
} else {
|
|
return filepath.Join(home, ".ethereum")
|
|
}
|
|
}
|
|
// As we cannot guess a stable location, return empty and handle later
|
|
return ""
|
|
}
|
|
|
|
func homeDir() string {
|
|
if home := os.Getenv("HOME"); home != "" {
|
|
return home
|
|
}
|
|
if usr, err := user.Current(); err == nil {
|
|
return usr.HomeDir
|
|
}
|
|
return ""
|
|
}
|