The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
woop/p2p/p2pimpl/p2pimpl.go

34 lines
1006 B

package p2pimpl
import (
"net"
"github.com/harmony-one/harmony/p2p"
"github.com/harmony-one/harmony/p2p/host/hostv1"
"github.com/harmony-one/harmony/p2p/host/hostv2"
"github.com/harmony-one/harmony/internal/utils"
p2p_crypto "github.com/libp2p/go-libp2p-crypto"
)
// Version The version number of p2p library
// 1 - Direct socket connection
// 2 - libp2p
const Version = 2
// NewHost starts the host for p2p
// for hostv2, it generates multiaddress, keypair and add PeerID to peer, add priKey to host
// TODO (leo) the PriKey of the host has to be persistent in disk, so that we don't need to regenerate it
// on the same host if the node software restarted. The peerstore has to be persistent as well.
func NewHost(self *p2p.Peer, key p2p_crypto.PrivKey) (p2p.Host, error) {
if Version == 1 {
h := hostv1.New(self)
return h, nil
}
h := hostv2.New(self, key)
utils.GetLogInstance().Info("NewHost", "self", net.JoinHostPort(self.IP, self.Port), "PeerID", self.PeerID)
return h, nil
}