|
@@ -7,6 +7,7 @@ import (
|
|
|
"blockchain-go/p2p/enr"
|
|
"blockchain-go/p2p/enr"
|
|
|
"blockchain-go/p2p/nat"
|
|
"blockchain-go/p2p/nat"
|
|
|
"blockchain-go/p2p/rlpx"
|
|
"blockchain-go/p2p/rlpx"
|
|
|
|
|
+ "blockchain-go/params"
|
|
|
"crypto/ecdsa"
|
|
"crypto/ecdsa"
|
|
|
"errors"
|
|
"errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
@@ -67,6 +68,10 @@ func (server *Server) Start() (err error) {
|
|
|
server.checkpointPostHandshake = make(chan *conn)
|
|
server.checkpointPostHandshake = make(chan *conn)
|
|
|
server.checkpointAddPeer = make(chan *conn)
|
|
server.checkpointAddPeer = make(chan *conn)
|
|
|
|
|
|
|
|
|
|
+ if err := server.setupBootstrapNodes(); err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if err := server.setupLocalNode(); err != nil {
|
|
if err := server.setupLocalNode(); err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
@@ -129,10 +134,10 @@ func (server *Server) setupDiscovery() (err error) {
|
|
|
// sconn = &sharedUDPConn{conn, unhandled}
|
|
// sconn = &sharedUDPConn{conn, unhandled}
|
|
|
//}
|
|
//}
|
|
|
cfg := discover.Config{
|
|
cfg := discover.Config{
|
|
|
- PrivateKey: server.PrivateKey,
|
|
|
|
|
- //NetRestrict: server.NetRestrict,
|
|
|
|
|
- //Bootnodes: server.BootstrapNodes,
|
|
|
|
|
- Unhandled: unhandled,
|
|
|
|
|
|
|
+ PrivateKey: server.PrivateKey,
|
|
|
|
|
+ NetRestrict: server.NetRestrict,
|
|
|
|
|
+ Bootnodes: server.BootstrapNodes,
|
|
|
|
|
+ Unhandled: unhandled,
|
|
|
//Log: server.log,
|
|
//Log: server.log,
|
|
|
}
|
|
}
|
|
|
ntab, err := discover.ListenV4(conn, server.localnode, cfg)
|
|
ntab, err := discover.ListenV4(conn, server.localnode, cfg)
|
|
@@ -145,6 +150,23 @@ func (server *Server) setupDiscovery() (err error) {
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (server *Server) setupBootstrapNodes() (err error) {
|
|
|
|
|
+ urls := params.MainnetBootNodes
|
|
|
|
|
+
|
|
|
|
|
+ server.BootstrapNodes = make([]*enode.Node, 0, len(urls))
|
|
|
|
|
+ for _, url := range urls {
|
|
|
|
|
+ if url != "" {
|
|
|
|
|
+ node, err := enode.Parse(enode.ValidSchemes, url)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ server.BootstrapNodes = append(server.BootstrapNodes, node)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 设置拨号调度器
|
|
// 设置拨号调度器
|
|
|
func (server *Server) setupDialScheduler() {
|
|
func (server *Server) setupDialScheduler() {
|
|
|
config := dialConfig{
|
|
config := dialConfig{
|