|
@@ -5,6 +5,8 @@ import (
|
|
|
"blockchain-go/p2p/enode"
|
|
"blockchain-go/p2p/enode"
|
|
|
"blockchain-go/p2p/enr"
|
|
"blockchain-go/p2p/enr"
|
|
|
"blockchain-go/p2p/nat"
|
|
"blockchain-go/p2p/nat"
|
|
|
|
|
+ "blockchain-go/p2p/rlpx"
|
|
|
|
|
+ "crypto/ecdsa"
|
|
|
"errors"
|
|
"errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
@@ -186,12 +188,31 @@ func (server *Server) listenLoop() {
|
|
|
fmt.Printf("Accepted connection, addr: %v.", fd.RemoteAddr())
|
|
fmt.Printf("Accepted connection, addr: %v.", fd.RemoteAddr())
|
|
|
}
|
|
}
|
|
|
gopool.Submit(func() {
|
|
gopool.Submit(func() {
|
|
|
- //server.setupConn(fd, inboundConn, nil)
|
|
|
|
|
|
|
+ server.SetupConn(fd, inboundConn, nil)
|
|
|
slots <- struct{}{}
|
|
slots <- struct{}{}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (server *Server) newRLPX(conn net.Conn, dialDest *ecdsa.PublicKey) transport {
|
|
|
|
|
+ return &rlpxTransport{conn: rlpx.NewConn(conn, dialDest)}
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (server *Server) SetupConn(fd net.Conn, flags connFlag, dialDesk *enode.Node) error {
|
|
|
|
|
+ c := &conn{fd: fd, flags: flags, cont: make(chan error)}
|
|
|
|
|
+ c.transport = server.newRLPX(fd, nil)
|
|
|
|
|
+
|
|
|
|
|
+ err := server.setupConn(c, nil)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ c.close(err)
|
|
|
|
|
+ }
|
|
|
|
|
+ return err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (server *Server) setupConn(c *conn, dialDest *enode.Node) error {
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 配置节点发现逻辑
|
|
// 配置节点发现逻辑
|
|
|
func (server *Server) setupDiscovery() (err error) {
|
|
func (server *Server) setupDiscovery() (err error) {
|
|
|
return nil
|
|
return nil
|