# Lightning Loop Lightning Loop is a non-custodial service offered by [Lightning Labs](https://lightning.engineering/) that makes it easy to move bitcoin into and out of the Lightning Network. ## Features - Automated channel balancing - Privacy-forward non-custodial swaps - Opportunistic transaction batching to save on fees - Progress monitoring of in-flight swaps ## Use Cases - Automate channel balancing with AutoLoop ([Learn more](https://github.com/lightninglabs/loop/blob/master/docs/autoloop.md)) - Deposit to a Bitcoin address without closing channels with Loop In - Convert outbound liquidity into inbound liquidity with Loop Out - Refill depleted Lightning channels with Loop In ## Installation Download the latest binaries from the [releases](https://github.com/lightninglabs/loop/releases) page. ## Execution The Loop client needs its own short-lived daemon to facilitate swaps. To start `loopd`: ``` loopd ``` To use Loop in testnet, simply pass the network flag: ``` loopd --network=testnet ``` By default `loopd` attempts to connect to the `lnd` instance running on `localhost:10009` and reads the macaroon and tls certificate from `~/.lnd`. This can be altered using command line flags. See `loopd --help`. ## Usage ### AutoLoop AutoLoop makes it easy to keep your channels balanced. Checkout our [autoloop documentation](https://docs.lightning.engineering/advanced-best-practices/advanced-best-practices-overview/autoloop) for details. ### Loop Out Use Loop Out to move bitcoins on Lightning into an on-chain Bitcoin address. To execute a Loop Out: ``` loop out ``` Other notable options: - Use the `--fast` flag to swap immediately (Note: This opts-out of fee savings made possible by transaction batching) - Use the `--channel` flag to loop out on specific channels - Use the `--addr` flag to specify the address the looped out funds should be sent to (Note: By default funds are sent to the lnd wallet) Run `loop monitor` to monitor the status of a swap. ### Loop In Use Loop In to convert on-chain bitcoin into spendable Lightning funds. To execute a Loop In: ``` loop in ``` ### More info For more information about using Loop checkout our [Loop FAQs](./docs/faqs.md). ## Development ### Regtest To get started with local development against a stripped down dummy Loop server running in a local `regtest` Bitcoin network, take a look at the [`regtest` server environment example documentation](./regtest/README.md). ### Testnet To use Loop in testnet, simply pass the network flag: ``` loopd --network=testnet ``` ### Submit feature requests The [GitHub issue tracker](https://github.com/lightninglabs/loop/issues) can be used to request specific improvements or report bugs. ### Join us on Slack Join us on the [LND Slack](https://lightning.engineering/slack.html) and join the #loop channel to ask questions and interact with the community. ## LND Note that Loop requires `lnd` to be built with **all of its subservers**. Download the latest [official release binary](https://github.com/lightningnetwork/lnd/releases/latest) or build `lnd` from source by following the [installation instructions](https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md). If you choose to build `lnd` from source, use the following command to enable all the relevant subservers: ``` make install tags="signrpc walletrpc chainrpc invoicesrpc" ``` ## API The Loop daemon exposes a [gRPC API](https://lightning.engineering/loopapi/#lightning-loop-grpc-api-reference) (defaults to port 11010) and a [REST API](https://lightning.engineering/loopapi/index.html#loop-rest-api-reference) (defaults to port 8081). The gRPC and REST connections of `loopd` are encrypted with TLS and secured with macaroon authentication the same way `lnd` is. If no custom loop directory is set then the TLS certificate is stored in `~/.loop//tls.cert` and the base macaroon in `~/.loop//loop.macaroon`. The `loop` command will pick up these file automatically on mainnet if no custom loop directory is used. For other networks it should be sufficient to add the `--network` flag to tell the CLI in what sub directory to look for the files. For more information on macaroons, [see the macaroon documentation of lnd.](https://github.com/lightningnetwork/lnd/blob/master/docs/macaroons.md) **NOTE**: Loop's macaroons are independent from `lnd`'s. The same macaroon cannot be used for both `loopd` and `lnd`. ## Build from source If you’d prefer to build from source: ``` git clone https://github.com/lightninglabs/loop.git cd loop/cmd go install ./... ```