Mutinynet
Mutiny is launching its own shitcoin! It's cooler and faster than bitcoin, it just has no value. (It's a custom signet)
Mutiny is launching its own shitcoin! It's cooler and faster than bitcoin, it just has no value.
Here at the Mutiny HQ we are building lot of tools for ourselves so we can move fast and validate our work. One of the first challenges we faced was the complexity of setting up a local test environment for the Bitcoin network. Normally this is easy, but Mutiny is building on a lot of technology and features that aren't available in traditional tools like Polar. To overcome this, we have created our own custom signet: we call it Mutinynet.
What's a Signet?
If you aren't familiar with Bitcoin's various test flavors, here's a quick rundown:
- Mainnet: it's real bitcoin!
- Testnet: it's like real bitcoin (it's mined, it's scarce), and it's a pain because it's mined irregularly and the testnet lightning network is a graveyard of unkempt test nodes.
- Regtest: it's like bitcoin except you can push a button to mine 100 blocks in a second. Great for automated testing and building demos, but it's not great for simulating a realistic "network"
- Signet: it's testnet's cool younger cousin and anyone can run one. Blocks are "signed" into existence (but also mined, confusingly). Like testnet there's also an official signet.
Why Mutinynet?
There are several key reasons why we decided to create Mutinynet:
- Simplified testing infrastructure: We wanted a simple test network with all the infrastructure already up and running to make it easier for us to test new features and enhancements. This includes pre-configured lightning nodes, an LSP (Lightning Service Provider), and a rapid gossip sync server.
- Faster block times: The default Signet block time of 10 minutes can slow down testing, so we've cut this down this to 30 seconds, allowing for more efficient testing of new features and bug fixes. The most obvious win here is we can have a channel "confirmed" much more quickly.
- Testing over time: A lightning channel isn't just a one-shot thing, it's a long-term, stateful, romantic relationship between two nodes. Plenty can go wrong, and by creating long-lived lightning channels between Mutiny Wallet and other nodes on Mutinynet we can make sure it's battle-hardened.
- Custom signets are cool: Everyone is setting up their own signets these days, we wanted to join the party and add our own block time twist. Why let Plebnet have all the fun?
Overcoming Complications
One of the main complications we faced when creating Mutinynet was adjusting the target block time from the default 10 minutes to our desired 30 seconds. To achieve this, we had to fork Bitcoin Core to allow configuring the target block time. This was a relatively simple change, but it required us to maintain our own fork of Bitcoin Core until this PR is merged, so please review if you can.
It was also a bit of a hassle getting everything deployed nicely to the cloud. After having ChatGPT fix my nginx config for the 100th time, we finally got it working. Mutinynet has a working mempool.space explorer, esplora instance, rapid gossip sync server, a few lightning nodes, and the Voltage LSP.
How to use Mutinynet
Because we had to fork Bitcoin Core, you will need to build it from source to be able to sync to Mutinynet. Once you do, you just use this configuration and you'll be good to go:
[signet]
signetchallenge=512102f7561d208dd9ae99bf497273e16f389bdbd6c4742ddb8e6b216e64fa2928ad8f51ae
addnode=45.79.52.207:38333
dnsseed=0
signetblocktime=30
However, if you are using Mutiny, you can just change your network to Signet
and set the esplora server to https://mutinynet.com/api
and it should work! If you need some coins go to the Mutinynet Faucet and get some for free.
If you're looking to set up something similar we have our docker deployment scripts available on Github. Reach out to us if you have any questions.
A special thanks to Richard Safier for helping out: at Zebedee they have open sourced their own signet docker deployment scripts, which we used as a base for our own.