Skip to content

loop-ghost5rty/dlcdevkit

Repository files navigation

Dlc Dev Kit

Crate Documentation Crates.io Total Downloads

⚠️ dlcdevkit is alpha software and should not be used with real money. API is subject to change.

Application tooling to get started with DLCs build with rust-dlc and bdk.

Build DLC application by plugging in your own transport, storage, and oracle clients.

Get Started

$ cargo add ddk
use ddk::builder::Builder;
use ddk::storage::SledStorage;
use ddk::transport::lightning::LightningTransport; // with "lightning" feature
use ddk::oracle::KormirOracleClient;
use bitcoin::Network;
use std::sync::Arc;

type ApplicationDdk = ddk::DlcDevKit<LightningTransport, SledStorage, KormirOracleClient>;

#[tokio::main]
fn main() {
    let transport = Arc::new(LightningTransport::new([0u8;32], <port>, Network::Regtest));
    let storage = Arc::new(SledStorage::new("<storage path>")?);
    let oracle_client = Arc::new(KormirOracleClient::new("<oracle host>", None).await?);

    let ddk: ApplicationDdk = Builder::new()
        .set_seed_bytes([0u8;32])
        .set_network(Network::Regtest)
        .set_esplora_path("http://127.0.0.1:3000")
        .set_transport(transport.clone())
        .set_storage(storage.clone())
        .set_oracle(oracle_client.clone())
        .finish()
        .expect("could not build ddk node");

    ddk.start().expect("ddk could not start");
}

Crates

Ready-to-go clients for developing applications:

ddk - DLC management with an internal BDK wallet.

ddk-node - A ready-to-go node with an accompanying cli.

payouts - Functions to build DLC contracts.

You can create a custom DDK instance by implementing the required traits for storage and transport. DDK traits are defined in ddk/src/lib.rs. The traits are super traits from what is required in bdk and rust-dlc.

To quickly get started building a DDK application, there are pre-built components.

Storage

sled - A simple file based storage using sled

Transport

LDK Peer Manager - Communication over Lightning gossip using rust-dlc's implementation

nostr - DLC communication from the NIP-88 spec

Oracle Clients

P2PDerivatives - Spot price futures on the Bitcoin price repo

kormir - Enumeration based oracle with server and nostr support repo

Development

A bitcoin node, esplora server, and oracle server are required to run DDK. Developers can spin up a development environment with the justfile provided.

$ just deps

Go to the README in ddk-node to start the project's DDK node example and more development information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages