2019-03-06 23:25:04 +00:00
# Lightning Loop
2019-03-07 00:58:12 +00:00
Lightning Loop is a non-custodial service offered by
2021-03-19 00:20:53 +00:00
[Lightning Labs ](https://lightning.engineering/ ) that makes it easy to move
bitcoin into and out of the Lightning Network.
2019-03-07 00:58:12 +00:00
2021-03-19 00:20:53 +00:00
## Features
- Automated channel balancing
- Privacy-forward non-custodial swaps
- Opportunistic transaction batching to save on fees
- Progress monitoring of in-flight swaps
2019-03-07 00:58:12 +00:00
2021-03-19 00:20:53 +00:00
## Use Cases
- Automate channel balancing with AutoLoop ([Learn more](https://github.com/lightninglabs/loop/blob/master/docs/autoloop.md))
2021-03-21 19:10:17 +00:00
- 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
2019-03-07 00:58:12 +00:00
2021-03-19 00:20:53 +00:00
## Installation
Download the latest binaries from the [releases ](https://github.com/lightninglabs/loop/releases ) page.
2019-03-07 00:58:12 +00:00
2021-03-19 00:20:53 +00:00
## Execution
The Loop client needs its own short-lived daemon to facilitate swaps. To start `loopd` :
2019-03-19 19:02:29 +00:00
```
2021-03-19 00:20:53 +00:00
loopd
2019-03-19 19:02:29 +00:00
```
2019-03-07 00:39:59 +00:00
2021-03-25 06:36:24 +00:00
To use Loop in testnet, simply pass the network flag:
2019-03-19 19:02:29 +00:00
```
2019-03-22 23:03:53 +00:00
loopd --network=testnet
2019-03-19 19:02:29 +00:00
```
2019-03-07 00:39:59 +00:00
2021-03-19 00:20:53 +00:00
By default `loopd` attempts to connect to the `lnd` instance running on
2019-03-19 19:02:29 +00:00
`localhost:10009` and reads the macaroon and tls certificate from `~/.lnd` .
This can be altered using command line flags. See `loopd --help` .
2021-03-19 00:20:53 +00:00
## Usage
2019-03-07 00:39:59 +00:00
2021-03-19 00:20:53 +00:00
### AutoLoop
2021-03-21 19:10:17 +00:00
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.
2020-10-30 07:41:20 +00:00
2021-03-19 00:20:53 +00:00
### Loop Out
Use Loop Out to move bitcoins on Lightning into an on-chain Bitcoin address.
2020-04-20 16:14:46 +00:00
2021-03-19 00:20:53 +00:00
To execute a Loop Out:
2020-04-20 16:14:46 +00:00
```
2021-03-19 00:20:53 +00:00
loop out < amt_in_satoshis >
2019-06-26 16:45:51 +00:00
```
2021-03-19 00:20:53 +00:00
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)
2019-06-26 16:45:51 +00:00
2021-03-19 00:20:53 +00:00
Run `loop monitor` to monitor the status of a swap.
2019-06-26 16:45:51 +00:00
2021-03-19 00:20:53 +00:00
### Loop In
Use Loop In to convert on-chain bitcoin into spendable Lightning funds.
2019-06-26 16:45:51 +00:00
2021-03-19 00:20:53 +00:00
To execute a Loop In:
2019-06-26 16:45:51 +00:00
```
loop in < amt_in_satoshis >
```
2020-04-20 16:14:46 +00:00
2021-03-21 19:10:17 +00:00
### 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"
```
2020-04-20 16:14:46 +00:00
2021-03-19 00:20:53 +00:00
## 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).
2020-09-03 12:33:40 +00:00
2020-09-03 12:35:45 +00:00
The gRPC and REST connections of `loopd` are encrypted with TLS and secured with
macaroon authentication the same way `lnd` is.
2020-09-03 12:33:40 +00:00
If no custom loop directory is set then the TLS certificate is stored in
2020-09-03 12:35:45 +00:00
`~/.loop/<network>/tls.cert` and the base macaroon in
`~/.loop/<network>/loop.macaroon` .
2020-09-03 12:33:40 +00:00
2020-09-03 12:35:45 +00:00
The `loop` command will pick up these file automatically on mainnet if no custom
2020-09-03 12:33:40 +00:00
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.
2020-09-03 12:35:45 +00:00
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` .
2021-03-19 00:20:53 +00:00
## Build from source
If you’ d prefer to build from source:
```
git clone https://github.com/lightninglabs/loop.git
cd loop/cmd
go install ./...
```