/NLoop

Generic Lightning Loop

Primary LanguageF#OtherNOASSERTION

nloop-logo

What is NLoop?

It is a submarine swap client against the boltz-backend Currently it imitates the api of the lightning loop.

Read the anouncement blogpost for more detail.

Why use NLoop?

  • Supports liquidity management with autoloop (experimental)
  • Supports multi-asset swap.
  • The server side is boltz, which is OSS. (Which is not the case for lightning loop.)
  • Complete immutable audit log with event-sourcing. Which enables you to easily audit how much you have paied as fee during swaps.
  • Minimum trust against the server. It validates every information we get from the server.
  • Minimize the direct interaction against the server and instead get the information from the blockchain as much as possible.
  • As an real-world example of F#/ASP.NET/DDD/EventSourcing

Caution:

NLoop is an open beta: Please use at your own risk. we may introduce backward incompatible changes.

How to

Quick start

We have a two binaries for you to work with.

  • nloopd ... standalone daemon to perform/manage the submarine swap.
  • nloop-cli ... command line tool to work with nloopd (TBD)

Download the latest binary from the release page and run with --help to see the possible configuration option.

nloopd must connect to following services to work correctly.

  1. bitcoind
  • or litecoind if you want to work with litecoin.
  1. lnd
  2. EventStoreDB
  • For saving the application's state.

Probably the best way to check its behaviour is to run it in the regtest. Check the following guide for how-to.

How to try nloopd with local docker-compose environment in regtest.

Check README.md in test project

REST API

Check out our openapi.yml (or its rendered version) for the REST API specification.

There is a one endpoint which is not included in the spec. That is a WebSocket endpoint for listening to events.

  • /v1/events

configuration options

You can see the complete list of startup configuration options with --help But CLI option is not the only way to specify those variables. You can also use environment variables start from NLOOP_.

e.g. for cli options --eventstoreurl, NLOOP_EVENTSTOREURL is equivalent.

Future plans

  • loop-in autoloop
  • support interacting with multiple swap-server
  • support swap against lightning-loop-server
  • grpc interface