Musa is a lean bootstrapper for any libp2p-based network. It's called like that to capture the 🍌 vibes around here.
The current bootstrappers run by Protocol Labs are instances of Kubo and one other written in Rust [blog post]. It is good to have implementation diversity in case of a regression that could render the network unreachable. We have already shipped a feature that uses previously identified peers as backup bootstrap peers. However, it will take time until peers will upgrade their Kubo installation and therefore won't benefit from that feature for a while. With Musa we're adding to the effort of diversifying the fleet of bootstrap peers.
Because of the way it is built, it can be configured to bootstrap into any libp2p-based network. Further, we expect it to require minimal resources
Just run
$ go run *.go
in the root directory of this repository.
To enable tracing, first start the Jaeger container:
docker run --rm --name jaeger -p 16686:16686 -p 4317:4317 jaegertracing/all-in-one:1.49
Then provide the --trace-host
and --trace-port
command line flags:
$ go run *.go --trace-host localhost --trace-port 4317
Traces will be available at http://localhost:16686.
There are plenty of configuration options. Just provide the --help
command line flag
NAME:
musa - a lean bootstrapper process for any network
USAGE:
musa [global options] command [command options] [arguments...]
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--host value the network musa should bind on (default: "127.0.0.1") [$MUSA_HOST]
--port value the port on which musa should listen on (default: random) [$MUSA_PORT]
--private-key value base64 private key identity for the libp2p host (default: "127.0.0.1") [$MUSA_PRIVATE_KEY]
--protocol value the libp2p protocol for the DHT (default: "/ipfs/kad/1.0.0") [$MUSA_PROTOCOL]
--metrics-host value the network musa metrics should bind on [$MUSA_METRICS_HOST]
--metrics-port value the port on which musa metrics should listen on (default: 0) [$MUSA_METRICS_PORT]
--trace-host value the network musa trace should be pushed to [$MUSA_TRACE_HOST]
--trace-port value the grpc otlp port to which musa should push traces to (default: 0) [$MUSA_TRACE_PORT]
--log-level value the structured log level (default: 0) [$MUSA_LOG_LEVEL]
--help, -h show help
Feel free to dive in! Open an issue or submit PRs.
MIT © Protocol Labs