1.41.0,
# 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, and coverage generation
1.45.2,
- # 1.49.0 is MSRV for no_std builds using hashbrown
- 1.49.0]
+ # 1.47.0 will be the MSRV for no_std builds using hashbrown once core2 is updated
+ 1.47.0]
include:
- toolchain: stable
build-net-tokio: true
build-net-tokio: true
build-no-std: false
coverage: true
- - toolchain: 1.49.0
- build-no-std: true
+ - toolchain: 1.47.0
+ build-no-std: false
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout source code
[dependencies]
afl = { version = "0.4", optional = true }
lightning = { path = "../lightning", features = ["fuzztarget"] }
-bitcoin = { version = "0.26", features = ["fuzztarget", "secp-lowmemory"] }
+bitcoin = { version = "0.27", features = ["fuzztarget", "secp-lowmemory"] }
hex = "0.3"
honggfuzz = { version = "0.5", optional = true }
libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git", optional = true }
edition = "2018"
[dependencies]
-bitcoin = "0.26"
+bitcoin = "0.27"
lightning = { version = "0.0.99", path = "../lightning", features = ["allow_wallclock_use"] }
lightning-persister = { version = "0.0.99", path = "../lightning-persister" }
rpc-client = [ "serde", "serde_json", "chunked_transfer" ]
[dependencies]
-bitcoin = "0.26"
+bitcoin = "0.27"
lightning = { version = "0.0.99", path = "../lightning" }
tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
readme = "README.md"
[dependencies]
-bech32 = "0.7"
+bech32 = "0.8"
lightning = { version = "0.0.99", path = "../lightning" }
secp256k1 = { version = "0.20", features = ["recovery"] }
num-traits = "0.2.8"
-bitcoin_hashes = "0.9.4"
+bitcoin_hashes = "0.10"
[dev-dependencies]
lightning = { version = "0.0.99", path = "../lightning", features = ["_test_utils"] }
honggfuzz = { version = "0.5", optional = true }
afl = { version = "0.4", optional = true }
lightning-invoice = { path = ".."}
-bech32 = "0.7"
+bech32 = "0.8"
# Prevent this from interfering with workspaces
[workspace]
type Err = ParseError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
- let (hrp, data) = bech32::decode(s)?;
+ let (hrp, data, var) = bech32::decode(s)?;
+
+ if var == bech32::Variant::Bech32m {
+ // Consider Bech32m addresses to be "Invalid Checksum", since that is what we'd get if
+ // we didn't support Bech32m (which lightning does not use).
+ return Err(ParseError::Bech32Error(bech32::Error::InvalidChecksum));
+ }
if data.len() < 104 {
return Err(ParseError::TooShortDataPart);
let mut data = self.raw_invoice.data.to_base32();
data.extend_from_slice(&self.signature.to_base32());
- bech32::encode_to_fmt(f, &hrp, data).expect("HRP is valid")?;
+ bech32::encode_to_fmt(f, &hrp, data, bech32::Variant::Bech32).expect("HRP is valid")?;
Ok(())
}
edition = "2018"
[dependencies]
-bitcoin = "0.26"
+bitcoin = "0.27"
lightning = { version = "0.0.99", path = "../lightning" }
tokio = { version = "1.0", features = [ "io-util", "macros", "rt", "sync", "net", "time" ] }
unstable = ["lightning/unstable"]
[dependencies]
-bitcoin = "0.26"
+bitcoin = "0.27"
lightning = { version = "0.0.99", path = "../lightning" }
libc = "0.2"
unsafe_revoked_tx_signing = []
unstable = []
-no_std = ["hashbrown"]
-std = []
+no_std = ["hashbrown", "bitcoin/no-std"]
+std = ["bitcoin/std"]
default = ["std"]
[dependencies]
-bitcoin = "0.26"
+bitcoin = "0.27"
hashbrown = { version = "0.11", optional = true }
hex = { version = "0.3", optional = true }
regex = "0.1.80"
[dev-dependencies.bitcoin]
-version = "0.26"
+version = "0.27"
features = ["bitcoinconsensus"]
[package.metadata.docs.rs]
#![cfg_attr(all(any(test, feature = "_test_utils"), feature = "unstable"), feature(test))]
#[cfg(all(any(test, feature = "_test_utils"), feature = "unstable"))] extern crate test;
+#[macro_use]
extern crate alloc;
extern crate bitcoin;
extern crate core;
mod tests {
use bitcoin::hashes::Hash;
use bitcoin::hashes::sha256::Hash as Sha256;
- use core::sync::atomic::{AtomicBool, Ordering};
use core::time::Duration;
use ln::{PaymentPreimage, PaymentHash, PaymentSecret};
- use ln::channelmanager::PersistenceNotifier;
use ln::features::{InitFeatures, InvoiceFeatures};
use ln::functional_test_utils::*;
use ln::msgs;
use routing::router::{get_keysend_route, get_route};
use util::events::{Event, MessageSendEvent, MessageSendEventsProvider};
use util::test_utils;
- use std::sync::Arc;
- use std::thread;
#[cfg(feature = "std")]
#[test]
fn test_wait_timeout() {
+ use ln::channelmanager::PersistenceNotifier;
+ use sync::Arc;
+ use core::sync::atomic::{AtomicBool, Ordering};
+ use std::thread;
+
let persistence_notifier = Arc::new(PersistenceNotifier::new());
let thread_notifier = Arc::clone(&persistence_notifier);