Crates.io | ddk |
lib.rs | ddk |
version | 0.0.11 |
source | src |
created_at | 2024-06-07 13:40:00.413955 |
updated_at | 2024-09-03 22:54:02.100529 |
description | application tooling for DLCs 🌊 |
homepage | https://dlcdevkit.com |
repository | https://github.com/bennyhodl/dlcdevkit |
max_upload_size | |
id | 1264825 |
size | 257,314 |
:warning:
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.
$ cargo add ddk
use ddk::config::DdkConfig;
use ddk::builder::DdkBuilder;
use ddk::oracle::P2PDOracleClient;
use ddk::storage::SledStorageProvider;
use ddk::transport::lightning::LightningTransport;
use std::env::current_dir;
use std::sync::Arc;
type ApplicationDdk = ddk::DlcDevKit<LightningTransport, SledStorageProvider, P2PDOracleClient>;
fn main() -> Result<()> {
let mut config = DdkConfig::default();
config.storage_path = current_dir()?;
let transport = Arc::new(LightningTransport::new(&config.seed_config, config.network)?);
let storage = Arc::new(SledStorageProvider::new(
config.storage_path.join("sled_db").to_str().expect("No storage."),
)?);
let oracle_client = Arc::new(P2PDOracleClient::new(ddk::ORACLE_HOST).expect("no oracle"));
let mut builder = DdkBuilder::new();
builder.set_config(config);
builder.set_transport(transport.clone());
builder.set_storage(storage.clone());
builder.set_oracle(oracle_client.clone());
let ddk: ApplicationDdk = builder.finish()?;
let wallet = ddk.wallet.new_external_address();
assert!(wallet.is_ok());
ddk.start().expect("couldn't start ddk");
}
Ready-to-go clients for developing applications:
filestore
- flat file store for DLC contractssqlite
- sqlite store for DLC contractstcp (lightning p2p)
- Tcp listener with the ldk peer managernostr
- NIP04 encrypted transport