|
1 year ago | |
---|---|---|
cmd | 1 year ago | |
docs | 1 year ago | |
lndclient | 1 year ago | |
loopdb | 1 year ago | |
looprpc | 1 year ago | |
swap | 1 year ago | |
sweep | 1 year ago | |
test | 1 year ago | |
.gitignore | 1 year ago | |
.travis.yml | 1 year ago | |
LICENSE | 1 year ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
client.go | 1 year ago | |
client_test.go | 1 year ago | |
config.go | 1 year ago | |
executor.go | 1 year ago | |
go.mod | 1 year ago | |
go.sum | 1 year ago | |
interface.go | 1 year ago | |
log.go | 1 year ago | |
loopout.go | 1 year ago | |
loopout_test.go | 1 year ago | |
release.sh | 1 year ago | |
server_mock_test.go | 1 year ago | |
store_mock_test.go | 1 year ago | |
swap.go | 1 year ago | |
swap_server_client.go | 1 year ago | |
testcontext_test.go | 1 year ago | |
uncharge_state.go | 1 year ago |
Lightning Loop is a non-custodial service offered by Lightning Labs to bridge on-chain and off-chain Bitcoin using submarine swaps. This repository is home to the Loop client and depends on the Lightning Network daemon lnd. All of lnd’s supported chain backends are fully supported when using the Loop client: Neutrino, Bitcoin Core, and btcd.
In the current iteration of the Loop software, only off-chain to on-chain exchanges are supported, where the Loop client sends funds off-chain in exchange for the funds back on-chain.
The service can be used in various situations:
Future iterations of the Loop software will also allow on-chain to off-chain swaps. These swaps can be useful for additional use-cases:
The Loop client is current in an early beta state, and offers a simple command line application. Future APIs will be added to support implementation or use of the Loop service.
The GitHub issue tracker can be used to request specific improvements or register and get help with any problems. Community support is also available in the LND Slack .
LND and the loop client are using Go modules. Make sure that the GO111MODULE
env variable is set to on
.
In order to execute a swap, LND will need to be rebuilt with sub servers enabled.
master
make install tags="signrpc walletrpc chainrpc"
to build and install lnd
with required sub-servers enabled.
Make sure there are no macaroons in the lnd dir
~/.lnd/data/chain/bitcoin/mainnet
. If there are, lnd has been started
before and in that case, it could be that admin.macaroon
doesn't contain
signer permission. Stop lnd, delete *.macaroon
files, restart lnd to
regenerate them with the signer permission.
DO NOT DELETE wallet.db
!
Start lnd
git clone https://github.com/lightninglabs/loop.git
cd loop/cmd
go install ./...
Swaps are executed by a client daemon process. Run:
loopd
By default loopd
attempts to connect to an 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
.
loopd
only listens on localhost and uses an unencrypted and unauthenticated
connection.
To initiate a swap, run:
loop out <amt_sat>
When the swap is initiated successfully, loopd
will see the process through.
To query and track the swap status, run loop
without arguments.
When loopd
is terminated (or killed) for whatever reason, it will pickup
pending swaps after a restart.
Information about pending swaps is stored persistently in the swap database.
Its location is ~/.loopd/<network>/loop.db
.
It is possible to execute multiple swaps simultaneously.