Skip to content

bitbankinc/NLoop

Repository files navigation

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

nloop is published as single file executable named nloopd.

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

Check tutorial documents under docs

REST API

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

Subscribing to events

If you want to react to the changes caused by nloop, (e.g. notify to slack/discord when the swap starts and/or finished.) we recommend subscribing to eventstoredb directly rather than long-polling the api. Please see the official documentation for how to. Actual object you get is json-encoded Events with metadata.

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 c-lightning
  • [ ] support swap against lightning-loop-server We decided not to support lightning-loop server, see: #13 (comment)