btcpayserver-docker/docs/ndlc.md
2021-10-04 08:48:50 +02:00

50 lines
1.8 KiB
Markdown

# NDLC support
:::danger Disclaimer
This project is experimental and based on a protocol which is still evolving everyday.
Use with caution.
I will take no attempt at maintaining backwards compatibility at this stage.
:::
## Introduction
A DLC can be seen as a smart contract involving two `parties`, a future `event`, a set of outcomes and a `payoff function`.
An `outcome` can be `attested` by an `oracle`. The `oracle` does not need to interact with either party, and its only role is to `attest` the outcome of the event.
The `payoff function` determines the two parties' profit or loss depending on which outcome get `attested`.
The `oracle` roles is to define the `event` and `attest` a single outcome of the event.
Let's call Alice and Bob the two parties of the contract, and Olivia the oracle.
A DLC will show two transactions on the chain:
* The Funding Transaction
* The Contract Execution Transaction (CET)
The `Funding Transaction` is a transaction built by the two parties of the contract, locking their collateral for the contract.
The `Contract Execution Transaction` (or `CET`) is the transaction distributing the locked collateral according to the `payoff function` for the outcome attested by the oracle.
The following documentation is also explained in this video.
[![How to make a DLC with NDLC-CLI](https://img.youtube.com/vi/DakwshnNkho/mqdefault.jpg)](https://www.youtube.com/watch?v=DakwshnNkho)
## How to use
You need to add ndlc's docker fragment to your install with:
```bash
BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-add-ndlc"
. btcpay-setup.sh -i
```
You can then use `ndlc-cli.sh` to run use ndlc-cli, for example:
```bash
ndlc.sh oracle generate MyOwnOracle
```
Read our documentation on our [GitHub repository](https://github.com/dgarage/NDLC/blob/master/docs/Concepts.md).