Nigiri provides a command line interface that manages a selection of docker-compose batteries included to have a ready-to-use Bitcoin regtest development environment. Out of the box, you get:
- Bitcoin Node: A Bitcoin Core node running in regtest mode
- Electrum: Backend and frontend explorer for quick blockchain inspection
- Chopsticks: A JSON HTTP proxy that adds handy endpoints like
/faucetand automatic block generation
You can extend your setup with:
- Ark: A Bitcoin layer two implementation for scalable off-chain transactions
- Elements/Liquid sidechain with
--liquidflag - Lightning Network nodes with
--lnflag (Core Lightning, LND, and Taproot Assets)
- Download and install
nigiricommand line interface
$ curl https://getnigiri.vulpem.com | bash
This will also install several configurable files, such as bitcoin.conf and elements.conf, that can be edited. These can be found browsing the following directory:
POSIX (Linux/BSD): ~/.nigiri
macOS: $HOME/Library/Application\ Support/Nigiri
Windows: %LOCALAPPDATA%\Nigiri
Plan 9: $home/nigiri
- Lauch Docker daemon (Mac OSX)
$ open -a Docker
You may want to Manage Docker as a non-root user
- Close and reopen your terminal, then start Bitcoin and Ark
$ nigiri start --ark
That's it.
Go to http://localhost:5000 for quickly inspect the Bitcoin blockchain.
Want more? Add Elements/Liquid, Lightning nodes, or Ark:
$ nigiri start --ark --liquid # Add Elements/Liquid sidechain
$ nigiri start --ark --ln # Add Lightning Network nodes
$ nigiri start --liquid --ln # Add both Liquid and Lightning
$ nigiri start --ark --liquid --ln # Add all featuresNote for users of macOS Monterey an onward
Show more...
When trying to start Nigiri, you might get an error similar to the following:Error response from daemon: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use
exit status 1This is due to AirPlay Receiver using port 5000, conflicting with Esplora trying to run using the very same port.
There are two ways to deal with this issue:
- Uncheck AirPlay Receiver in
System Preferences β Sharing β AirPlay Receiver - Change Esploraβs port to something other than 5000. This can be done by changing it in docker-compose.yml found in your data directory. If you previously tried starting Nigiri getting an error β you might have to run
nigiri stop --deletebefore restarting it.
At the moment bitcoind, elements and electrs are started on regtest network.
$ nigiri start-
Use the
--liquidflag to let you do experiments with the Liquid sidechain. A liquid daemon and a block explorer are also started when passing this flag. -
Use the
--lnflag to start a Core Lightning node, a LND node and a Tap daemon.
$ nigiri stopUse the --delete flag to not just stop Docker containers but also to remove them and delete the config file and any new data written in volumes.
# Bitcoin
$ nigiri faucet <bitcoin_address>
## Fund the Core Lightning node
$ nigiri faucet cln 0.01
## Fund the LND node
$ nigiri faucet lnd 0.01
# Elements
$ nigiri faucet --liquid <liquid_address>$ nigiri faucet --liquid <liquid_address> <amt> <liquid_asset>$ nigiri mint <liquid_address> 1000 VulpemToken VLP# Bitcoin
$ nigiri push <hex>
# Elements
$ nigiri push --liquid <hex># Bitcoind
$ nigiri logs bitcoin
# Electrs
$ nigiri logs electrs
# Chopsticks
$ nigiri logs chopsticks# Elementsd
$ nigiri logs liquid
# Electrs Liquid
$ nigiri logs electrs-liquid
# Chopsticks Liquid
$ nigiri logs chopsticks-liquid# Core Lightning
$ nigiri logs cln
# LND
$ nigiri logs lnd$ nigiri rpc getnewaddress "" "bech32"
bcrt1qsl4j5je4gu3ecjle8lckl3u8yywh8rff6xxk2r$ nigiri rpc --liquid getnewaddress "" "bech32"
el1qqwwx9gyrcrjrhgnrnjq9dq9t4hykmr6ela46ej63dnkdkcg8veadrvg5p0xg0zd6j3aug74cv9m4cf4jslwdqnha2w2nsg9x3# Core Lightning
$ nigiri cln listpeers
# LND
$ nigiri lnd listpeers
# Tap (Taro)
$ nigiri tap assets list$ nigiri cln connect `nigiri lnd getinfo | jq -r .identity_pubkey`@lnd:9735$ nigiri lnd openchannel --node_key=`nigiri cln getinfo | jq -r .id` --local_amt=100000
$ nigiri cln fundchannel `nigiri lnd getinfo | jq -r .identity_pubkey` 100000$ nigiri lnd payinvoice `nigiri cln invoice 21000 $(date +%s) "test" | jq -r .bolt11`
$ nigiri cln pay `nigiri lnd addinvoice 21 | jq -r .payment_request`# Check versions
$ nigiri ark --version # or -v
$ nigiri arkd --version # or -v
# Initialize the Ark client (only needed once)
$ nigiri ark init --network regtest --password secret --server-url localhost:7070 --explorer http://chopsticks:3000
# Use the Ark client
$ nigiri ark config # Show wallet configuration
$ nigiri ark receive # Show receiving addresses
$ nigiri ark balance # Show wallet balance
# Use the Ark daemon client
$ nigiri arkd wallet status # Show wallet status
$ nigiri arkd wallet create --password secret # Create a new wallet
$ nigiri arkd wallet unlock --password secret # Unlock the wallet$ nigiri update
Nigiri uses the default directory ~/.nigiri to store configuration files and docker-compose files.
To set a custom directory use the --datadir flag.
Run the help command to see the full list of available flags.
| Preparation Time: 5 min | Cooking Difficulty: Easy |
|---|
- Clone the repo:
$ git clone https://github.com/vulpemventures/nigiri.git- Enter project directory and install dependencies:
$ make install- Build binary
$ make build
Done! You should be able to find the binary in the local ./build folder. Give it permission to execute and move/rename into your PATH.
- Clean
Remeber to always clean Nigiri before running install to upgrade to a new version.
$ make clean
Chopsticks service exposes on port 3000 (and on 3001 if started with --liquid flag) all Esplora's available endpoints and extends them with the following:
POST /faucetwhich expects a body{ "address": <receiving_address> }POST /txhas been extended to automatically mine a block when is called.
POST /mintwhich expects a body{"address": "ert1q90dz89u8eudeswzynl3p2jke564ejc2cnfcwuq", "quantity": 1000, "name":"VULPEM", "ticker":"VLP"}POST /registryto get extra info about one or more assets likenameandtickerwhich expects a body with an array of assets{"assets": ["2dcf5a8834645654911964ec3602426fd3b9b4017554d3f9c19403e7fc1411d3"]}
If you really do love Sathoshi's favourite dish like us at Vulpem Ventures, check the real recipe out and enjoy your own, delicious, hand made nigiri sushi.