1
0
Fork 0
mirror of https://github.com/ACINQ/eclair.git synced 2025-03-13 19:37:35 +01:00

Remove feature graph validation in payment request

Due to changes in the features system (#1253), feature graph
validation would fail with legacy 1.0.1 Phoenix wallet. This check
should be disabled as long as there are 1.0.1 Phoenix wallet in
the wild.
This commit is contained in:
dpad85 2020-01-10 14:56:21 +01:00
parent 641174db25
commit 9f8f8e43ac
No known key found for this signature in database
GPG key ID: 574C8C6A1673E987
2 changed files with 7 additions and 5 deletions

View file

@ -45,8 +45,8 @@ case class PaymentRequest(prefix: String, amount: Option[MilliSatoshi], timestam
amount.foreach(a => require(a > 0.msat, s"amount is not valid"))
require(tags.collect { case _: PaymentRequest.PaymentHash => }.size == 1, "there must be exactly one payment hash tag")
require(tags.collect { case PaymentRequest.Description(_) | PaymentRequest.DescriptionHash(_) => }.size == 1, "there must be exactly one description tag or one description hash tag")
private val featuresErr = validateFeatureGraph(features.bitmask)
require(featuresErr.isEmpty, featuresErr.map(_.message))
// Phoenix special case: we do not check the graph to be able to pay legacy 1.0.1 Phoenix wallets.
// todo: add the check back once most 1.0.1 phoenix wallet have been upgraded
if (features.allowPaymentSecret) {
require(tags.collect { case _: PaymentRequest.PaymentSecret => }.size == 1, "there must be exactly one payment secret tag when feature bit is set")
}

View file

@ -372,10 +372,12 @@ class PaymentRequestSpec extends FunSuite {
PaymentRequest.read("lnbc1230p1pwljzn3pp5qyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqdq52dhk6efqd9h8vmmfvdjs9qypqsqylvwhf7xlpy6xpecsnpcjjuuslmzzgeyv90mh7k7vs88k2dkxgrkt75qyfjv5ckygw206re7spga5zfd4agtdvtktxh5pkjzhn9dq2cqz9upw7")
)
// Phoenix special case: ignore payment secret invoice validation
// todo: reinstate this assert once legacy 1.0.1 Phoenix wallet have been upgraded
// A multi-part invoice must use a payment secret.
assertThrows[IllegalArgumentException](
PaymentRequest(Block.LivenetGenesisBlock.hash, Some(123 msat), ByteVector32.One, priv, "MPP without secrets", features = Some(Features(BasicMultiPartPayment.optional, VariableLengthOnion.optional)))
)
// assertThrows[IllegalArgumentException](
// PaymentRequest(Block.LivenetGenesisBlock.hash, Some(123 msat), ByteVector32.One, priv, "MPP without secrets", features = Some(Features(BasicMultiPartPayment.optional, VariableLengthOnion.optional)))
// )
}
test("trampoline") {