diff --git a/README.md b/README.md
index 1a287bdac..0f0d7a526 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,15 @@
+# Unsafe Fast Fork
+## DO NOT USE THIS LIBRARY
+
+This is an experimental fork with extreme changes that **intentionally break important security mechanisms and functionality** in favor of speed for certain security research workloads.
+
+The forked library version is **completely unsuitable for any type of production use** and receives no support or maintenance of any kind.
+It is published primarily as a reference for other researchers. You have been warned.
+
+The original documentation content and other references are kept as-is to limit the repository differences to upstream. However, be aware that none of the contact information, usage guidance or security guarantees still applies since this is a deliberately broken variant of the project.
+
+----
+
Rust Bitcoin
diff --git a/bitcoin/Cargo.toml b/bitcoin/Cargo.toml
index 2e3ff37a6..a555e35f9 100644
--- a/bitcoin/Cargo.toml
+++ b/bitcoin/Cargo.toml
@@ -1,6 +1,7 @@
[package]
name = "bitcoin"
-version = "0.33.0-alpha.0"
+# fake version for vendoring
+version = "0.99.0"
authors = ["Andrew Poelstra
"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin/"
@@ -33,7 +34,7 @@ hex = { package = "hex-conservative", version = "0.3.0", default-features = fals
internals = { package = "bitcoin-internals", path = "../internals", features = ["alloc", "hex"] }
io = { package = "bitcoin-io", path = "../io", default-features = false, features = ["alloc", "hashes"] }
primitives = { package = "bitcoin-primitives", path = "../primitives", default-features = false, features = ["alloc", "hex"] }
-secp256k1 = { version = "0.30.0", default-features = false, features = ["hashes", "alloc", "rand"] }
+secp256k1 = { version = "0.99.0", default-features = false, features = ["hashes", "alloc", "rand"] } # ensure the internal version is actually used
units = { package = "bitcoin-units", path = "../units", default-features = false, features = ["alloc"] }
arbitrary = { version = "1.4", optional = true }
diff --git a/bitcoin/src/bip32.rs b/bitcoin/src/bip32.rs
index 847335b4f..46ed7922d 100644
--- a/bitcoin/src/bip32.rs
+++ b/bitcoin/src/bip32.rs
@@ -805,10 +805,14 @@ impl Xpriv {
let tweaked =
sk.add_tweak(&self.private_key.into()).expect("statistically impossible to hit");
+ // BREAKING CHANGE
+ // parent_fingerprint: self.fingerprint(secp),
+ // this brings a strong performance improvement
+ // TODO check performance impact of error handling
Ok(Xpriv {
network: self.network,
depth: self.depth.checked_add(1).ok_or(DerivationError::MaximumDepthExceeded)?,
- parent_fingerprint: self.fingerprint(secp),
+ parent_fingerprint: Default::default(),
child_number: i,
private_key: tweaked,
chain_code: ChainCode::from_hmac(hmac),
@@ -963,10 +967,14 @@ impl Xpub {
let tweaked =
self.public_key.add_exp_tweak(secp, &sk.into()).expect("cryptographically unreachable");
+ // BREAKING CHANGE
+ // parent_fingerprint: self.fingerprint(),
+ // this brings less of a performance improvement
+ // TODO check performance impact of error handling
Ok(Xpub {
network: self.network,
depth: self.depth.checked_add(1).ok_or(DerivationError::MaximumDepthExceeded)?,
- parent_fingerprint: self.fingerprint(),
+ parent_fingerprint: Default::default(),
child_number: i,
public_key: tweaked,
chain_code,