[package]
edition = "2021"
rust-version = "1.83"
name = "blvm-consensus"
version = "0.1.10"
authors = ["Bitcoin Commons Team"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Bitcoin Commons BLVM: Direct mathematical implementation of Bitcoin consensus rules from the Orange Paper"
homepage = "https://btcdecoded.org"
documentation = "https://docs.rs/blvm-consensus"
readme = "README.md"
keywords = [
"bitcoin",
"consensus",
"blockchain",
"cryptocurrency",
"proof",
]
categories = [
"cryptography::cryptocurrencies",
"algorithms",
]
license = "MIT"
repository = "https://github.com/BTCDecoded/blvm-consensus"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
benchmarking = []
blvm-secp256k1 = ["dep:blvm-secp256k1"]
bolero = []
csfs = []
ctv = []
default = [
"production",
"blvm-secp256k1",
]
local-spec-lock = []
parallel-verification = ["rayon"]
production = [
"lru",
"rayon",
"smallvec",
"rustc-hash",
"hashbrown",
"crossbeam-queue",
"siphasher",
"blvm-secp256k1",
"blvm-primitives/production",
]
profile = []
property-tests = ["dep:proptest"]
rayon = ["dep:rayon"]
runtime-invariants = []
test-utils = []
utxo-commitments = []
utxo-proof-verification = []
[lib]
name = "blvm_consensus"
path = "src/lib.rs"
[[example]]
name = "cpu_features"
path = "examples/cpu_features.rs"
[[test]]
name = "api_tests"
path = "tests/api_tests.rs"
[[test]]
name = "bip66_consensus_script_flags"
path = "tests/bip66_consensus_script_flags.rs"
[[test]]
name = "bip_activation_heights_verification"
path = "tests/bip_activation_heights_verification.rs"
[[test]]
name = "block_164676_ibd_repro"
path = "tests/block_164676_ibd_repro.rs"
[[test]]
name = "block_header_validation_verification"
path = "tests/block_header_validation_verification.rs"
[[test]]
name = "block_ibd_repro"
path = "tests/block_ibd_repro.rs"
[[test]]
name = "block_ibd_snapshot_tests"
path = "tests/block_ibd_snapshot_tests.rs"
[[test]]
name = "block_sigop_limits_verification"
path = "tests/block_sigop_limits_verification.rs"
[[test]]
name = "block_weight_edge_cases"
path = "tests/block_weight_edge_cases.rs"
[[test]]
name = "bolero_fuzz"
path = "tests/bolero_fuzz.rs"
[[test]]
name = "coinbase_maturity"
path = "tests/coinbase_maturity.rs"
[[test]]
name = "coinbase_maturity_edge_cases"
path = "tests/coinbase_maturity_edge_cases.rs"
[[test]]
name = "coinbase_validation_verification"
path = "tests/coinbase_validation_verification.rs"
[[test]]
name = "compile_time_bip_verification"
path = "tests/compile_time_bip_verification.rs"
[[test]]
name = "comprehensive_unit_tests"
path = "tests/comprehensive_unit_tests.rs"
[[test]]
name = "config_golden"
path = "tests/config_golden.rs"
[[test]]
name = "config_tests"
path = "tests/config_tests.rs"
[[test]]
name = "consensus_flags"
path = "tests/consensus_flags.rs"
[[test]]
name = "consensus_property_tests"
path = "tests/consensus_property_tests.rs"
[[test]]
name = "consensus_regression_tests"
path = "tests/consensus_regression_tests.rs"
[[test]]
name = "core_vector_extractor"
path = "tests/core_vector_extractor.rs"
[[test]]
name = "cross_bip_property_tests"
path = "tests/cross_bip_property_tests.rs"
[[test]]
name = "crypto_comprehensive_tests"
path = "tests/crypto_comprehensive_tests.rs"
[[test]]
name = "difficulty_adjustment_verification"
path = "tests/difficulty_adjustment_verification.rs"
[[test]]
name = "duplicate_input_verification"
path = "tests/duplicate_input_verification.rs"
[[test]]
name = "error_path_tests"
path = "tests/error_path_tests.rs"
[[test]]
name = "fee_calculation_verification"
path = "tests/fee_calculation_verification.rs"
[[test]]
name = "historical_consensus"
path = "tests/historical_consensus.rs"
[[test]]
name = "integer_overflow_edge_cases"
path = "tests/integer_overflow_edge_cases.rs"
[[test]]
name = "integration_opportunities"
path = "tests/integration_opportunities.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "little_endian_verification"
path = "tests/little_endian_verification.rs"
[[test]]
name = "mainnet_blocks"
path = "tests/mainnet_blocks.rs"
[[test]]
name = "mainnet_script_flags_fork_split"
path = "tests/mainnet_script_flags_fork_split.rs"
[[test]]
name = "mempool_helper_tests"
path = "tests/mempool_helper_tests.rs"
[[test]]
name = "mempool_rbf_edge_cases"
path = "tests/mempool_rbf_edge_cases.rs"
[[test]]
name = "merkle_mutation_detection"
path = "tests/merkle_mutation_detection.rs"
[[test]]
name = "optimizations_comprehensive_tests"
path = "tests/optimizations_comprehensive_tests.rs"
[[test]]
name = "orange_paper_property_tests"
path = "tests/orange_paper_property_tests.rs"
[[test]]
name = "p2sh_redeem_script"
path = "tests/p2sh_redeem_script.rs"
[[test]]
name = "pow_target_expansion"
path = "tests/pow_target_expansion.rs"
[[test]]
name = "script_limits_verification"
path = "tests/script_limits_verification.rs"
[[test]]
name = "script_opcode_tests"
path = "tests/script_opcode_tests.rs"
[[test]]
name = "script_opcodes_exhaustive"
path = "tests/script_opcodes_exhaustive.rs"
[[test]]
name = "signature_validation_edge_cases"
path = "tests/signature_validation_edge_cases.rs"
[[test]]
name = "soft_fork_activation"
path = "tests/soft_fork_activation.rs"
[[test]]
name = "spec_property_tests"
path = "tests/spec_property_tests.rs"
[[test]]
name = "taproot_script_path"
path = "tests/taproot_script_path.rs"
[[test]]
name = "test_helpers"
path = "tests/test_helpers.rs"
[[test]]
name = "testnet_fork_activation_integration"
path = "tests/testnet_fork_activation_integration.rs"
[[test]]
name = "time_based_consensus"
path = "tests/time_based_consensus.rs"
[[test]]
name = "transaction_finality_edge_cases"
path = "tests/transaction_finality_edge_cases.rs"
[[test]]
name = "transaction_size_edge_cases"
path = "tests/transaction_size_edge_cases.rs"
[[test]]
name = "varint_edge_cases"
path = "tests/varint_edge_cases.rs"
[[test]]
name = "witness_commitment"
path = "tests/witness_commitment.rs"
[[test]]
name = "witness_stack_size"
path = "tests/witness_stack_size.rs"
[[bench]]
name = "block_validation"
path = "benches/block_validation.rs"
[[bench]]
name = "block_validation_realistic"
path = "benches/block_validation_realistic.rs"
[[bench]]
name = "blvm_optimizations"
path = "benches/blvm_optimizations.rs"
[[bench]]
name = "hash_operations"
path = "benches/hash_operations.rs"
[[bench]]
name = "mempool_operations"
path = "benches/mempool_operations.rs"
[[bench]]
name = "performance_focused"
path = "benches/performance_focused.rs"
[[bench]]
name = "segwit_operations"
path = "benches/segwit_operations.rs"
[[bench]]
name = "transaction_validation"
path = "benches/transaction_validation.rs"
[[bench]]
name = "utxo_commitments"
path = "benches/utxo_commitments.rs"
[dependencies.anyhow]
version = "=1.0.93"
[dependencies.bincode]
version = "=1.3.3"
[dependencies.bitcoin_hashes]
version = "=0.11.0"
[dependencies.blvm-primitives]
version = ">=0.1, <1"
default-features = false
[dependencies.blvm-secp256k1]
version = ">=0.1, <1"
optional = true
[dependencies.blvm-spec-lock]
version = ">=0.1.3, <1"
default-features = false
[dependencies.crossbeam-queue]
version = "0.3"
optional = true
[dependencies.digest]
version = "0.10"
[dependencies.hashbrown]
version = "0.14"
optional = true
[dependencies.hex]
version = "=0.4.3"
[dependencies.lru]
version = "0.12"
optional = true
[dependencies.proptest]
version = "=1.5.0"
optional = true
[dependencies.rand]
version = "=0.8.5"
optional = true
[dependencies.rayon]
version = "1.8"
optional = true
[dependencies.ripemd]
version = "=0.1.3"
[dependencies.rustc-hash]
version = "=2.1.1"
optional = true
[dependencies.secp256k1]
version = "0.28"
default-features = true
[dependencies.serde]
version = "=1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "=1.0.108"
[dependencies.sha1]
version = "=0.10.6"
[dependencies.siphasher]
version = "0.3"
optional = true
[dependencies.smallvec]
version = "1.11"
features = [
"serde",
"const_generics",
]
optional = true
[dependencies.sparse-merkle-tree]
version = "0.6"
optional = true
[dependencies.thiserror]
version = "=1.0.69"
[dev-dependencies.blvm-muhash]
version = ">=0.1, <1"
[dev-dependencies.bolero]
version = "0.11"
[dev-dependencies.criterion]
version = "0.5"
[dev-dependencies.proptest]
version = "=1.5.0"
[dev-dependencies.reqwest]
version = "0.11"
features = ["json"]
default-features = false
[dev-dependencies.tokio]
version = "1.35"
features = [
"rt",
"macros",
]
[target.'cfg(not(target_os = "windows"))'.dependencies.sha2]
version = "=0.10.9"
features = ["asm"]
[target.'cfg(target_os = "windows")'.dependencies.sha2]
version = "=0.10.9"
[target.x86_64-pc-windows-gnu.dependencies.sha2]
version = "=0.10.9"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 16
debug = 0
strip = false
[profile.release]
opt-level = 3
lto = false
codegen-units = 1
panic = "abort"
strip = true
[profile.release.package.blvm-secp256k1]
opt-level = 3
codegen-units = 1
[profile.release.package."*"]
opt-level = 3
[profile.release-fast]
opt-level = 2
codegen-units = 16
inherits = "release"
[profile.release-fast.package.blvm-secp256k1]
opt-level = 2
codegen-units = 16
[profile.release-fast.package."*"]
opt-level = 2