Skip to content

bennyhodl/dlcdevkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

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::DdkBuilder;
use ddk::storage::SledStorageProvider;
use ddk::transport::lightning::LightningTransport;
use ddk::oracle::P2PDOracleClient;
use ddk::Network;
use std::sync::Arc;

type ApplicationDdk = ddk::DlcDevKit<LightningTransport, SledStorageProvider, P2PDOracleClient>;

fn main() -> Result<(), Error> {
    let transport = Arc::new(LightningTransport::new("lightning-transport", Network::Regtest));
    let storage = Arc::new(SledStorageProvider::new("<storage path>")?);
    let oracle_client = Arc::new(P2PDOracleClient::new("<oracle host>")?);

    let ddk: ApplicationDdk = DdkBuilder::new()
        .set_name("dlcdevkit")
        .set_esplora_url(ddk::ESPLORA_HOST)
        .set_network(bitcoin::Network::Regtest)
        .set_transport(transport.clone())
        .set_storage(storage.clone())
        .set_oracle(oracle_client.clone())
        .finish()
        .expect("could not build ddk");

    let wallet = ddk.wallet.new_external_address();

    assert!(wallet.is_ok());

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

Crates

Ready-to-go clients for developing applications:

  • ddk - Contains DLC management w/ rust-dlc and the internal wallet w/ bdk.

Storage

  • filestore - file storage for DLC contracts
  • sqlite - coming soon...

Transport

Oracle Clients

Examples

  • bella - Example client built with tauri to test dlcdevkit
  • payouts - example payout curves for DLC applications

Development

Running the example client bella requires running a bitcoin node, esplora server, & oracle. Dependencies can be started with the docker-compose.yaml file.

git clone git@github.com:bennyhodl/dlcdevkit.git
cd dlcdevkit

docker-compose up -d --build

# Alias for interacting w/ bitcoin node
source alias
bc -generate

cd bella && pnpm install && pnpm tauri dev

About

application tooling for dlc's ๐ŸŒŠ

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages