Skip to content

Commit 24ded33

Browse files
committed
Change library structure
-sys now only generates raw bindings The top-level library exposes the safe rust wrappers The example binary is moved to the example directory
1 parent cdfc65d commit 24ded33

File tree

13 files changed

+1281
-1248
lines changed

13 files changed

+1281
-1248
lines changed

Cargo.toml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
[package]
2-
name = "rust-bitcoinkernel"
2+
name = "bitcoinkernel"
33
version = "0.0.1"
44
edition = "2021"
5+
authors = ["TheCharlatan <[email protected]>"]
6+
description = "Safe Rust bindings to libbitcoinkernel"
7+
license = "MIT"
8+
repository = "https://github.com/TheCharlatan/rust-bitcoinkernel"
9+
documentation = "https://docs.rs/bitcoinkernel"
10+
keywords = ["bitcoin", "ffi", "libbitcoinkernel"]
11+
categories = ["cryptography::cryptocurrencies"]
12+
readme = "README.md"
513

614
[dependencies]
7-
silentpayments = "0.1"
8-
bitcoin = "0.31"
9-
secp256k1 = "0.28"
10-
env_logger = "0.11"
11-
log = "0.4"
1215
libbitcoinkernel-sys = { path = "libbitcoinkernel-sys" }
1316

1417
[dev-dependencies]
1518
hex = "0.4"
1619
env_logger = "0.11"
1720
log = "0.4"
18-
libbitcoinkernel-sys = { path = "libbitcoinkernel-sys" }
21+
bitcoin = "0.31"
1922
tempdir = "0.3"
2023

2124
[workspace]
2225
members = [
23-
"libbitcoinkernel-sys",
24-
"fuzz"
26+
"examples",
27+
"fuzz",
28+
"libbitcoinkernel-sys"
2529
]

README.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
`rust-bitcoinkernel` is a wrapper around
66
[libbitcoinkernel](https://github.com/bitcoin/bitcoin/issues/24303), a C++
7-
library exposing Bitcoin Core's validation engine.
7+
library exposing Bitcoin Core's validation engine. It supports both validation
8+
of blocks and transaction outputs as well as reading block data.
89

910
## Building
1011

@@ -29,14 +30,11 @@ dependencies. Once setup, run:
2930
cargo b
3031
```
3132

32-
And for the example binary (takes the path to a previously used Bitcoin Core
33-
regtest directory):
33+
## Examples
3434

35-
```bash
36-
cargo run -- /path/to/.bitcoin/regtest
37-
```
38-
39-
The example binary implements a silent payments scanner.
35+
Examples for the usage of the library can be found in the `examples/` directory
36+
and the `tests`. For now, the example binary implements a bare-bones silent
37+
payments scanner.
4038

4139
## Fuzzing
4240

examples/Cargo.toml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[package]
2+
name = "examples"
3+
edition = "2021"
4+
publish = false
5+
6+
[[bin]]
7+
name = "silentpaymentscanner"
8+
path = "src/silentpaymentscanner.rs"
9+
10+
[dependencies]
11+
silentpayments = "0.1"
12+
bitcoin = "0.31"
13+
secp256k1 = "0.28"
14+
env_logger = "0.11"
15+
log = "0.4"
16+
bitcoinkernel = { path = ".." }

examples/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Example
2+
3+
The example binary implements a silent payments scanner. To run it:
4+
5+
cargo run -- /path/to/.bitcoin/regtest
6+

src/main.rs renamed to examples/src/silentpaymentscanner.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ use std::process;
55
use bitcoin::consensus::deserialize;
66
use bitcoin::hashes::Hash;
77
use bitcoin::{PrivateKey, XOnlyPublicKey};
8-
use env_logger::Builder;
9-
use libbitcoinkernel_sys::{
8+
use bitcoinkernel::{
109
BlockManagerOptions, ChainType, ChainstateLoadOptions, ChainstateManager,
1110
ChainstateManagerOptions, Context, ContextBuilder, KernelError,
1211
KernelNotificationInterfaceCallbackHolder, Log, Logger,
1312
};
13+
use env_logger::Builder;
1414
use log::LevelFilter;
1515
use secp256k1::{PublicKey, Secp256k1, SecretKey};
1616
use silentpayments::receiving::{Label, Receiver};

fuzz/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ cargo-fuzz = true
1111
libfuzzer-sys = "0.4"
1212
arbitrary = { version = "1.1", features = ["derive"] }
1313

14-
[dependencies.libbitcoinkernel-sys]
15-
path = "../libbitcoinkernel-sys"
14+
[dependencies.bitcoinkernel]
15+
path = ".."
1616

1717
[[bin]]
1818
name = "fuzz_target_chainman"

fuzz/fuzz_targets/fuzz_target_block.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![no_main]
22

3-
use libbitcoinkernel_sys::Block;
3+
use bitcoinkernel::Block;
44
use libfuzzer_sys::fuzz_target;
55

66
fuzz_target!(|data: &[u8]| {

fuzz/fuzz_targets/fuzz_target_chainman.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ use libfuzzer_sys::fuzz_target;
66

77
use arbitrary::Arbitrary;
88

9-
use libbitcoinkernel_sys::{
9+
use bitcoinkernel::{
1010
disable_logging, Block, BlockManagerOptions, ChainType, ChainstateLoadOptions,
11-
ChainstateManager, ChainstateManagerOptions, Context, ContextBuilder,
11+
ChainstateManager, ChainstateManagerOptions, Context, ContextBuilder, KernelError,
1212
KernelNotificationInterfaceCallbackHolder,
1313
};
1414

@@ -78,7 +78,7 @@ fuzz_target!(|data: ChainstateManagerInput| {
7878
let blocks_dir = format!("{}/blocks", data_dir);
7979
let chainman_opts = match ChainstateManagerOptions::new(&context, &data_dir) {
8080
Ok(opts) => opts,
81-
Err(libbitcoinkernel_sys::KernelError::CStringCreationFailed(_)) => return,
81+
Err(KernelError::CStringCreationFailed(_)) => return,
8282
Err(err) => panic!("this should never happen: {}", err),
8383
};
8484
let blockman_opts = BlockManagerOptions::new(&context, &blocks_dir).unwrap();
@@ -91,7 +91,7 @@ fuzz_target!(|data: ChainstateManagerInput| {
9191
.set_block_tree_db_in_memory(data.block_tree_db_in_memory)
9292
.set_chainstate_db_in_memory(data.chainstate_db_in_memory),
9393
) {
94-
Err(libbitcoinkernel_sys::KernelError::Internal(_)) => {
94+
Err(KernelError::Internal(_)) => {
9595
return;
9696
}
9797
Err(err) => {

fuzz/fuzz_targets/fuzz_target_verify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use arbitrary::Arbitrary;
44
use libfuzzer_sys::fuzz_target;
55

6-
use libbitcoinkernel_sys::{verify, ScriptPubkey, Transaction, TxOut};
6+
use bitcoinkernel::{verify, ScriptPubkey, Transaction, TxOut};
77

88
#[derive(Debug, Arbitrary)]
99
pub struct UtxoWrapper {

libbitcoinkernel-sys/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
name = "libbitcoinkernel-sys"
33
version = "0.0.1"
44
edition = "2021"
5+
authors = ["TheCharlatan <[email protected]>"]
6+
description = "Raw Rust bindings to libbitcoinkernel"
7+
license = "MIT"
8+
repository = "https://github.com/TheCharlatan/rust-bitcoinkernel"
59
links = "libbitcoinkernel"
610
build = "build.rs"
711

0 commit comments

Comments
 (0)