Skip to content

Commit 9fa2581

Browse files
committed
f - grind_signatures
1 parent ce1c39b commit 9fa2581

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

lightning/src/ln/channel.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17402,19 +17402,19 @@ mod tests {
1740217402
// 2 inputs, initiator, 2000 sat/kw feerate
1740317403
assert_eq!(
1740417404
estimate_v2_funding_transaction_fee(&two_inputs, &[], true, false, 2000),
17405-
1516,
17405+
if cfg!(feature = "grind_signatures") { 1512 } else { 1516 },
1740617406
);
1740717407

1740817408
// higher feerate
1740917409
assert_eq!(
1741017410
estimate_v2_funding_transaction_fee(&two_inputs, &[], true, false, 3000),
17411-
2274,
17411+
if cfg!(feature = "grind_signatures") { 2268 } else { 2274 },
1741217412
);
1741317413

1741417414
// only 1 input
1741517415
assert_eq!(
1741617416
estimate_v2_funding_transaction_fee(&one_input, &[], true, false, 2000),
17417-
972,
17417+
if cfg!(feature = "grind_signatures") { 970 } else { 972 },
1741817418
);
1741917419

1742017420
// 0 inputs
@@ -17432,13 +17432,13 @@ mod tests {
1743217432
// splice initiator
1743317433
assert_eq!(
1743417434
estimate_v2_funding_transaction_fee(&one_input, &[], true, true, 2000),
17435-
if cfg!(feature = "grind_signatures") { 1738 } else { 1740 },
17435+
if cfg!(feature = "grind_signatures") { 1736 } else { 1740 },
1743617436
);
1743717437

1743817438
// splice acceptor
1743917439
assert_eq!(
1744017440
estimate_v2_funding_transaction_fee(&one_input, &[], false, true, 2000),
17441-
544,
17441+
if cfg!(feature = "grind_signatures") { 542 } else { 544 },
1744217442
);
1744317443
}
1744417444

@@ -17463,7 +17463,7 @@ mod tests {
1746317463

1746417464
// positive case, inputs well over intended contribution
1746517465
{
17466-
let expected_fee = if cfg!(feature = "grind_signatures") { 2282 } else { 2284 };
17466+
let expected_fee = if cfg!(feature = "grind_signatures") { 2278 } else { 2284 };
1746717467
assert_eq!(
1746817468
check_v2_funding_inputs_sufficient(
1746917469
220_000,
@@ -17481,7 +17481,7 @@ mod tests {
1748117481

1748217482
// negative case, inputs clearly insufficient
1748317483
{
17484-
let expected_fee = if cfg!(feature = "grind_signatures") { 1738 } else { 1740 };
17484+
let expected_fee = if cfg!(feature = "grind_signatures") { 1736 } else { 1740 };
1748517485
assert_eq!(
1748617486
check_v2_funding_inputs_sufficient(
1748717487
220_000,
@@ -17501,7 +17501,7 @@ mod tests {
1750117501

1750217502
// barely covers
1750317503
{
17504-
let expected_fee = if cfg!(feature = "grind_signatures") { 2282 } else { 2284 };
17504+
let expected_fee = if cfg!(feature = "grind_signatures") { 2278 } else { 2284 };
1750517505
assert_eq!(
1750617506
check_v2_funding_inputs_sufficient(
1750717507
(300_000 - expected_fee - 20) as i64,
@@ -17519,7 +17519,7 @@ mod tests {
1751917519

1752017520
// higher fee rate, does not cover
1752117521
{
17522-
let expected_fee = if cfg!(feature = "grind_signatures") { 2511 } else { 2513 };
17522+
let expected_fee = if cfg!(feature = "grind_signatures") { 2506 } else { 2513 };
1752317523
assert_eq!(
1752417524
check_v2_funding_inputs_sufficient(
1752517525
298032,
@@ -17540,7 +17540,7 @@ mod tests {
1754017540

1754117541
// barely covers, less fees (no extra weight, not initiator)
1754217542
{
17543-
let expected_fee = 1088;
17543+
let expected_fee = if cfg!(feature = "grind_signatures") { 1084 } else { 1088 };
1754417544
assert_eq!(
1754517545
check_v2_funding_inputs_sufficient(
1754617546
(300_000 - expected_fee - 20) as i64,

lightning/src/ln/funding.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,13 @@ impl FundingTxInput {
143143
/// [`TxIn::sequence`]: bitcoin::TxIn::sequence
144144
/// [`set_sequence`]: Self::set_sequence
145145
pub fn new_p2wpkh(prevtx: Transaction, vout: u32) -> Result<Self, ()> {
146-
let witness_weight = Weight::from_wu(P2WPKH_WITNESS_WEIGHT);
146+
let witness_weight = Weight::from_wu(P2WPKH_WITNESS_WEIGHT)
147+
- if cfg!(feature = "grind_signatures") {
148+
// Guarantees a low R signature
149+
Weight::from_wu(1)
150+
} else {
151+
Weight::ZERO
152+
};
147153
FundingTxInput::new(prevtx, vout, witness_weight, Script::is_p2wpkh)
148154
}
149155

lightning/src/ln/interactivetxs.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3372,7 +3372,11 @@ mod tests {
33723372

33733373
let total_inputs: Amount = input_prevouts.iter().map(|o| o.value).sum();
33743374
let total_outputs: Amount = outputs.iter().map(|o| o.value).sum();
3375-
let fees = Amount::from_sat(1740);
3375+
let fees = if cfg!(feature = "grind_signatures") {
3376+
Amount::from_sat(1734)
3377+
} else {
3378+
Amount::from_sat(1740)
3379+
};
33763380
let common_fees = Amount::from_sat(234);
33773381

33783382
// There is leftover for change

lightning/src/util/test_utils.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2226,10 +2226,16 @@ impl TestWalletSource {
22262226
utxo.output.value,
22272227
EcdsaSighashType::All,
22282228
)?;
2229+
#[cfg(not(feature = "grind_signatures"))]
22292230
let signature = self.secp.sign_ecdsa(
22302231
&secp256k1::Message::from_digest(sighash.to_byte_array()),
22312232
&self.secret_key,
22322233
);
2234+
#[cfg(feature = "grind_signatures")]
2235+
let signature = self.secp.sign_ecdsa_low_r(
2236+
&secp256k1::Message::from_digest(sighash.to_byte_array()),
2237+
&self.secret_key,
2238+
);
22332239
let bitcoin_sig =
22342240
bitcoin::ecdsa::Signature { signature, sighash_type: EcdsaSighashType::All };
22352241
tx.input[i].witness =

0 commit comments

Comments
 (0)