The main DLC Dev Kit library for building DLC applications with an integrated BDK wallet.
DDK provides a high-level, pluggable framework with an actor-based architecture for thread-safe, lock-free DLC operations. It integrates wallet management, transport layers, storage backends, and oracle clients into a unified API.
$ cargo add ddk
use ddk::builder::{Builder, SeedConfig};
use ddk::oracle::kormir::KormirOracleClient;
use ddk::storage::sled::SledStorage;
use ddk::transport::lightning::LightningTransport;
use std::sync::Arc;
type ApplicationDdk = ddk::DlcDevKit<LightningTransport, SledStorage, KormirOracleClient>;
#[tokio::main]
async fn main() -> Result<(), ddk::error::Error> {
let transport = Arc::new(LightningTransport::new(&[0u8; 32], 1776, logger.clone())?);
let storage = Arc::new(SledStorage::new("/tmp/ddk-example", logger.clone())?);
let oracle = Arc::new(KormirOracleClient::new("http://localhost:8082", None, logger.clone()).await?);
let mut builder: Builder<LightningTransport, SledStorage, KormirOracleClient> = Builder::new();
builder.set_seed_bytes(SeedConfig::Random)?;
builder.set_transport(transport);
builder.set_storage(storage);
builder.set_oracle(oracle);
let ddk: ApplicationDdk = builder.finish().await?;
ddk.start()?;
// Send a DLC offer
let offer = ddk.send_dlc_offer(&contract_input, counterparty, announcements).await?;
// Accept a DLC offer
let (contract_id, counter_party, accept) = ddk.accept_dlc_offer(contract_id).await?;
// Get wallet balance
let balance = ddk.balance().await?;
ddk.stop()?;
Ok(())
}| Type | Description |
|---|---|
DlcDevKit |
Main entry point managing the DLC runtime, wallet, and background tasks |
Builder |
Builder pattern for constructing DlcDevKit instances |
Transport |
Trait for DLC message communication between peers |
Storage |
Trait for contract and wallet data persistence |
Oracle |
Trait for oracle client implementations |
| Feature | Description |
|---|---|
lightning |
Lightning Network transport using LDK |
nostr |
Nostr protocol transport |
sled |
Sled embedded database storage |
postgres |
PostgreSQL storage |
kormir |
Kormir HTTP oracle client |
p2pderivatives |
P2P Derivatives oracle client |
nostr-oracle |
Nostr-based oracle client |
This project is licensed under the MIT License.