diff --git a/libp2p.go b/libp2p.go index 7905461805b452d11ed8f0a30705e26f7721d6ed..831a9c8ac28037098bfc20bca0186905f67ed1ea 100644 --- a/libp2p.go +++ b/libp2p.go @@ -20,6 +20,7 @@ import ( yamux "github.com/whyrusleeping/go-smux-yamux" ) +// Config describes a set of settings for a libp2p node type Config struct { Transports []transport.Transport Muxer mux.Transport @@ -30,11 +31,18 @@ type Config struct { Reporter metrics.Reporter } -func Construct(ctx context.Context, cfg *Config) (host.Host, error) { +func New(ctx context.Context) (host.Host, error) { + return NewWithCfg(ctx, DefaultConfig()) +} + +// Construct instantiates a libp2p host using information from the given +// config. `nil` may be passed to use default options. +func NewWithCfg(ctx context.Context, cfg *Config) (host.Host, error) { if cfg == nil { cfg = DefaultConfig() } + // If no key was given, generate a random 2048 bit RSA key if cfg.PeerKey == nil { priv, _, err := crypto.GenerateKeyPairWithReader(crypto.RSA, 2048, rand.Reader) if err != nil { @@ -49,6 +57,7 @@ func Construct(ctx context.Context, cfg *Config) (host.Host, error) { return nil, err } + // Create a new blank peerstore if none was passed in ps := cfg.Peerstore if ps == nil { ps = pstore.NewPeerstore() @@ -70,14 +79,17 @@ func Construct(ctx context.Context, cfg *Config) (host.Host, error) { func DefaultMuxer() mux.Transport { // Set up stream multiplexer tpt := msmux.NewBlankTransport() + + // By default, support yamux and multiplex tpt.AddTransport("/yamux/1.0.0", yamux.DefaultTransport) tpt.AddTransport("/mplex/6.3.0", mplex.DefaultTransport) + return tpt } func DefaultConfig() *Config { - // Create a multiaddress - addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/0") + // Create a multiaddress that listens on a random port on all interfaces + addr, err := ma.NewMultiaddr("/ip4/0.0.0.0/tcp/0") if err != nil { panic(err) }