RGB on Lightning
RGB on Lightning exists only for v0.11, through the RGB Lightning Node. See Two RGB lines.
The RGB Lightning Node (RLN, maintained by RGB-Tools) is a daemon that opens Lightning channels holding an RGB asset and routes payments of that asset. It is built on rgb-lib 0.3.0-beta.7 and on RGB-Tools' fork of rust-lightning (LDK), rebased on LDK v0.2.2. You control it through a REST API. It has no CLI.
The RLN README says the node "can be tested only in regtest or testnet environments", calls it "early alpha", and accepts no responsibility for loss of funds (README, 2026-09-17). On 2026-06-23 the maintainers listed these open safety issues (RGB Lightning roadmap):
- a fixed fee rate, which is safety-critical
- no CPFP or anchor fee bumping
- a static blinding factor
- consignments go through a proxy
- no re-org detection in rgb-lib yet
- no multi-asset channels, splicing or BOLT12
RLN has no tagged releases (Cargo version 0.1.0). Pin a commit.
How it works​
The design is described in the official Lightning Network compatibility page.
- One asset per channel. A channel holds bitcoin plus a balance of at most one RGB contract (
asset_id,asset_local_amount,asset_remote_amount). - Funding is an on-chain RGB transfer to the channel's 2-of-2 multisig output, and it needs 6 confirmations (
MIN_CHANNEL_CONFIRMATIONS,src/ldk.rs). - Commitments. Every commitment transaction gets an extra OP_RETURN output, an opret commitment, that anchors an RGB transition moving the asset from the funding output to the commitment outputs and HTLCs. RLN channels use opret, not tapret, and they require anchor outputs (
with_anchors: true). - Payments are HTLCs with an asset amount attached, and each one must also carry at least 3,000,000 msat (3,000 sats) (
HTLC_MIN_MSAT,src/routes.rs; alsorgb_htlc_min_msatinGET /nodeinfo). So an RGB payment always moves some bitcoin too. - Invoices are ordinary BOLT11 (
lnbc…,lntb…,lnbcrt…) with two extra tagged fields: 30 = RGB amount, 31 = RGB contract ID (lightning-invoice/src/lib.rsin the fork). - Routing fees are in msat. There are no fees paid in the asset. Routes use one contract end to end. See Routing.
- Closing: a cooperative or force close puts a normal on-chain RGB state on the closing or commitment outputs. RLN then holds it as a regular RGB allocation.
RLN also does maker/taker atomic swaps between two assets, or an asset and BTC, over Lightning (/makerinit, /makerexecute, /taker).
Install and run​
From the RLN README. RLN isn't on crates.io:
git clone https://github.com/RGB-Tools/rgb-lightning-node --recurse-submodules --shallow-submodules
cd rgb-lightning-node
cargo install --locked --path .
./regtest.sh start
regtest.sh starts bitcoind, electrs and an RGB proxy in Docker. Start a node with its data directory, ports and network:
rgb-lightning-node dataldk0/ --daemon-listening-port 3001 \
--ldk-peer-listening-port 9735 --network regtest \
--disable-authentication
--disable-authentication is for local tests only. Otherwise, pass --root-public-key and send a Biscuit token in an Authorization: Bearer header (see "Authentication" in the README). For testnet3 or testnet4, use --network testnet or --network testnet4 and the public services the README lists.
A first payment (regtest)​
These calls follow the RLN openapi.yaml. They weren't run for this page. Node A listens on port 3001 and node B on 3002.
# 1. create and unlock the node (repeat on :3002)
curl -X POST -H "Content-type: application/json" \
-d '{"password": "nodepassword"}' http://localhost:3001/init
curl -X POST -H "Content-type: application/json" \
-d '{"password": "nodepassword", "indexer_url": "127.0.0.1:50001", "announce_addresses": [],
"ldk_chain_sync": {"mode": "BlockSync", "config": {"bitcoind_rpc_username": "user",
"bitcoind_rpc_password": "password", "bitcoind_rpc_host": "localhost", "bitcoind_rpc_port": 18443}}}' \
http://localhost:3001/unlock
# 2. fund it (./regtest.sh sendtoaddress <address> 1), make UTXOs, issue an asset
curl -X POST http://localhost:3001/address
curl -X POST -H "Content-type: application/json" \
-d '{"up_to": false, "fee_rate": 5, "skip_sync": false}' http://localhost:3001/createutxos
curl -X POST -H "Content-type: application/json" \
-d '{"ticker": "DEMO", "name": "Demo Asset", "precision": 0, "amounts": [1000]}' \
http://localhost:3001/issueassetnia
# 3. open an RGB channel to B (B's pubkey from GET :3002/nodeinfo)
curl -X POST -H "Content-type: application/json" \
-d '{"peer_pubkey_and_opt_addr": "<B_pubkey>@localhost:9736", "capacity_sat": 30010,
"push_msat": 0, "asset_id": "<asset_id>", "asset_amount": 500,
"public": true, "with_anchors": true}' \
http://localhost:3001/openchannel
# mine 6 blocks (./regtest.sh mine 6), then wait until GET /listchannels shows is_usable: true
# 4. B creates an invoice for 10 units (plus the 3,000-sat minimum); A pays it
curl -X POST -H "Content-type: application/json" \
-d '{"amt_msat": 3000000, "expiry_sec": 420, "asset_id": "<asset_id>", "asset_amount": 10}' \
http://localhost:3002/lninvoice
curl -X POST -H "Content-type: application/json" \
-d '{"invoice": "<lnbcrt…>"}' http://localhost:3001/sendpayment
curl -X POST -H "Content-type: application/json" \
-d '{"asset_id": "<asset_id>"}' http://localhost:3002/assetbalance
assetbalance reports offchain_outbound and offchain_inbound next to the on-chain balances. /sendrgb and /rgbinvoice make ordinary on-chain RGB transfers from the same node.
POST /backup {"backup_path", "password"} writes an encrypted backup of the whole node, and /restore reads it back. Channel state changes with every payment, and restoring an old channel state can cost you the channel funds. As with any Lightning node, a backup isn't a substitute for keeping the node online and its data directory safe.
Who uses it​
The RLN README lists Iris Wallet desktop, KaleidoSwap, Lnfi, Spectrum, Thunderstack and Tiramisu Wallet (2026-09-17). Utexo's wdk-rgb-lightning module for Tether's WDK, announced in beta on 2026-08-28, also builds on RLN (rgb.info).
RGB-WG hasn't released a Lightning node for v0.12, and the old lnp-node (0.9, 2023) has no RGB support. Bitlight Labs develops its own v0.12 Lightning stack, which this site hasn't checked. As of 2026-10-19, there is nothing to document for Line A.
More​
- Asset channels: opening, limits and closing
- Routing
- RLN API reference (Swagger UI for
master)