swarm, p2p: Prerequities for ENR replacing handshake (#19275)
* swarm/api, swarm/network, p2p/simulations: Prerequisites for handshake remove * swarm, p2p: Add full sim node configs for protocoltester * swarm/network: Make stream package pass tests * swarm/network: Extract peer and addr types out of protocol file * p2p, swarm: Make p2p/protocols tests pass + rename types.go * swarm/network: Deactivate ExecAdapter test until binary ENR prep * swarm/api: Remove comments * swarm/network: Uncomment bootnode record load
This commit is contained in:
@ -28,6 +28,7 @@ import (
|
||||
"github.com/ethereum/go-ethereum/node"
|
||||
"github.com/ethereum/go-ethereum/p2p"
|
||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||
"github.com/ethereum/go-ethereum/p2p/enr"
|
||||
"github.com/ethereum/go-ethereum/p2p/simulations/pipes"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
)
|
||||
@ -71,8 +72,13 @@ func (s *SimAdapter) NewNode(config *NodeConfig) (Node, error) {
|
||||
s.mtx.Lock()
|
||||
defer s.mtx.Unlock()
|
||||
|
||||
// check a node with the ID doesn't already exist
|
||||
id := config.ID
|
||||
// verify that the node has a private key in the config
|
||||
if config.PrivateKey == nil {
|
||||
return nil, fmt.Errorf("node is missing private key: %s", id)
|
||||
}
|
||||
|
||||
// check a node with the ID doesn't already exist
|
||||
if _, exists := s.nodes[id]; exists {
|
||||
return nil, fmt.Errorf("node already exists: %s", id)
|
||||
}
|
||||
@ -87,6 +93,24 @@ func (s *SimAdapter) NewNode(config *NodeConfig) (Node, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// dialer in simulations based on ENR records
|
||||
// doesn't work unless we explicitly set localhost record
|
||||
ip := enr.IP(net.IPv4(127, 0, 0, 1))
|
||||
config.Record.Set(&ip)
|
||||
tcpPort := enr.TCP(0)
|
||||
config.Record.Set(&tcpPort)
|
||||
|
||||
err := enode.SignV4(&config.Record, config.PrivateKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to generate ENR: %v", err)
|
||||
}
|
||||
nod, err := enode.New(enode.V4ID{}, &config.Record)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to create enode: %v", err)
|
||||
}
|
||||
log.Trace("simnode new", "record", config.Record)
|
||||
config.node = nod
|
||||
|
||||
n, err := node.New(&node.Config{
|
||||
P2P: p2p.Config{
|
||||
PrivateKey: config.PrivateKey,
|
||||
|
Reference in New Issue
Block a user