This repository provides a complete Lightning Network stack running on Mutinynet (custom signet) with Taproot Assets support.
git clone https://github.com/echennells/mutinynet-litd-lnbits.git
cd mutinynet-litd-lnbits
./setup.sh# With Tor support (recommended)
ENABLE_TOR=true ./start.sh
# Or without Tor
./start.sh- Lightning Terminal: https://localhost:8443 (password:
your_secure_password) - LNbits: http://localhost:5000
- Bitcoin RPC: localhost:38332 (user:
bitcoin, pass:bitcoin)
- Bitcoin Core (custom build for Mutinynet)
- Lightning Terminal (LND + Loop + Pool + Faraday + Taproot Assets)
- LNbits (Lightning wallet/payment processor)
- Tor (for privacy and P2P connectivity)
- Non-root containers: LNbits runs as user 1000 instead of root
- Updated Tor: Uses Tor 0.4.8.14 instead of outdated 0.4.7.13
- Custom images: Built from source for better security
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets mint --type normal --name mycoin --supply 1000 --meta_bytes "My first Taproot Asset"Parameters explained:
--type normal: Creates a fungible asset (alternative:collectible)--name mycoin: The name of your asset--supply 1000: Total asset quantity to mint--meta_bytes "...": Metadata associated with the asset
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets mint finalizeThis commits the mint to the blockchain, creating an on-chain transaction.
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets listNote the asset_id from the output - you'll need it for future operations.
Check Universe Information
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe infoView Universe Roots
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe roots1. Configure Universe Access in tapd.conf
[taproot-assets.universe]
public-access=r
Add this to your tapd.conf file then restart tapd:
docker restart lit2. Configure Federation Settings
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation config global --proof_type issuance --allow_insert true --allow_export true
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation config global --proof_type transfer --allow_insert true --allow_export true3. Check Federation Configuration
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation config infoSync with Another Universe
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe sync --universe_host <host:port> --asset_id <asset_id>Add Universe to Federation
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation add --universe_host <host:port>List Federation Universes
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation listRemove Universe from Federation
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon universe federation del --universe_host <host:port>Generate Receiving Address
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon addrs new --asset_id <asset_id> --amt <amount>Send Assets
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets send --addr <encoded_address>-
Ensure Prerequisites
- Running
lndnode with Bitcoin (testnet/signet/mainnet) - Running
tapdnode connected tolnd - Some bitcoin in your wallet for transaction fees
- Running
-
Create the Asset
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets mint --type normal --name mycoin --supply 1000 --meta_bytes "My first Taproot Asset"
-
Finalize the Mint
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets mint finalizeThis creates an on-chain transaction. Wait for at least one confirmation before proceeding.
-
Verify Your Asset
docker exec lit tapcli --network signet --rpcserver localhost:10009 --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.tapd/data/signet/admin.macaroon assets listNote your
asset_idfrom the output. -
Publish to Universe (Optional, for public discovery)
- Configure your universe for public access
- Ensure your federation settings allow exporting proofs
- Anyone can now sync your asset by its ID
-
Use Your Asset
- Generate addresses to receive the asset
- Send portions of your asset to other addresses
- Verify balances using the
assets listcommand
-
Network Parameter: Always include the correct
--networkparameter (mainnet, testnet, signet) to avoid confusion. -
Asset Types:
normal: Fungible assets (can be split into units)collectible: Non-fungible assets (unique, indivisible)
-
Universe Access Levels:
r: Read-only access (others can only read your universe)rw: Read-write access (others can read and write to your universe)