# NDLC support

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 use

You need to add ndlc's docker fragment to your install with:

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:

ndlc.sh oracle generate MyOwnOracle

Read our documentation on our GitHub repository (opens new window).