Good morning uSEkaCIO, This is certainly interesting, though I lack the mathematical background to double-check this.
I believe ajtowns has a SCRIPT useable today that enables payment points as well, using 3 `OP_CODESEPARATOR`s. This was rejected in the Adelaide meeting in 2018, I believe partly because `OP_CODESEPARATOR` is difficult enough to understand by itself, and having a SCRIPT that used 3 of them was an even bigger difficulty. Another is that it required three different signatures in the witness as well, if my memory serves correctly. Regards, ZmnSCPXj > Hi list, > > It is generally believed that in order to do "payment points" we need either > the two party multisignature scheme 2p-ECDSA or 2p-Schnorr. > > I think we can do it without them. > > TL;DR Just use 2-of-2 OP_CHECKMULTISIG and do a single signer ECDSA adaptor > signature on one of the keys. > > Background > > -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > There are many nice features that could be enabled by using "payment points" > instead of hashes as the core lock mechanism for lightning as discussed in > the threads below. The consensus from these threads seems to be that it is > best to wait for BIP-Schnorr/Taporoot to hit (which could be years away) than > to try and implement and specify a 2p-ECDSA protocol (which I think is very > wise). > > March'17: Andrew demonstrates scripltess lightning: > https://lists.launchpad.net/mimblewimble/msg00086.html > Apr'18: Pedro shows you can do it for ECDSA: > https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-April/001221.html > > Nov'18: Long discussion on the impact of scriptless scripts: > https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001489.html > Oct'19: ZmnSCPxj shares thoughts on the choice between 2p-ECDSA and waiting > for Schnorr: > https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-October/002211.html > > The core idea I will present is that the 2pECDSA adaptor signature Pedro and > Aniket introduced can be applied to single signer ECDSA and OP_CHECKMULTISIG > can fill the gap. > > Payment points today, without 2p-ECDSA, Hip hip Hoorayy! > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Here's how to create the core discrete log based lock required to do payment > points without a proper multisignature scheme. Let's say Alice wants to give > Bob 1 BTC if he can reveal y, the discrete log of Y to her. > > 1. Alice tells Bob about her public key A, her 1 BTC input and her refund > address > 2. Bob tells Alice about his public key B and his redeem address > 3. They both can calculate the txid of the fund transaction which spends > Alice's inputs to an OP_CHECKMULTISIG 2-of-2 with A B as the keys > 4. Bob also sends to Alice a signature under B on a refund transaction > spending the OP_CMS output to her refund address > 5. Alice sends an adaptor signature under A with "auxiliary point" Y on the > redeem transaction which spends the OP_CMS output to Bob's redeem address > 6. Bob completes the adaptor signature under A with y and makes his own > signature on the redeem tx under B and broadcasts it. > 7. Alice sees the redeem tx and her completed signature and extracts y from > it. > > Note that Y or y never go on-chain, all anyone sees is a plain 2-of-2 > OP_CMS. > > Single Signer ECDSA adaptor signatures > > > For the completeness of this post I'll show my version of the single signer > ECDSA adaptor algorithms (please verify). This is just a single signer > protocol translated from Pedro and Aniket's original work. The only > semi-exotic thing is the DLEQ proof. A description of the interactive > protocol can be found > inhttps://cs.nyu.edu/courses/spring07/G22.3220-001/lec3.pdf (and can be made > non-interactive by Fiat-Shamir transform). > > // Sign such that y = DLOG(Y) is needed to complete signature > AdaptorSign((x,X),Y,m): > > 1. Choose k randomly, R' = k*G > 2. R = k*Y; > 3. proof = DLEQ_prove((G,R'),(Y, R)) > 4. s' = k⁻¹(H(m) + x_coord(R)x) > 5. return (R, R', s', proof) > > // Verify Adaptor signature is correct for the given message and keys > AdaptorVerify(X, Y, m , (R, R', s', proof)) > > 6. DLEQ_verify((G,R'),(Y, R)) > 7. return x_coord(R') == x_coord(s'⁻¹(H(m) * G + x_coord(R) * X)) > > // Complete the adaptor with the secret > AdaptorComplete(y, (R, R', s', proof)) > s = s'y⁻¹ > return (x_coord(R),s) > > // Extract y from the completed adaptor > AdaptorExtract(s',s, Y) > y' = s⁻¹s' > return y' * G == -Y ? -y : y; // Deal with ECDSA malleability > > Security > > > I am doing a security analysis on this scheme in a paper that will be in > review soon (which is why I am posting this anonymously). Unlike in 2pECDSA > case, the DLEQ NIZK proof is the only proof required. However, there is one > flaw in scheme that I should warn about: from the ECDSA adaptor signature you > can calculate the Diffie-Hellman key between the signer's key X and the > auxiliary point Y e.g xY = yX (to see this start with s'*R and go from > there). Therefore care should be taken when composing this with any scheme > that relies on the Computational Diffie-Hellman assumption. In practice, I > don't know of any proposal that would be affected by this. Keep in mind that > X and Y are usually both transient keys and so learning a DDH keys doesn't > help an attacker at all. > > Discussion > > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Using this scheme I think it's possible to do anything you can do with > 2p-ECSA/Schnorr scriptless scripts except that instead of a normal > p2pkh/public key output you have a 2-of-2 OP_CMS P2WSH output. Aside from > this the scheme has some nice advantages: > > 1. The key exchange protocol is far simpler than 2pECDSA and simpler even > than 2pSchnorr. This makes it a natural step up in complexity from the > current HTLCs towards Schnorr (2pECDSA is like 5 steps up in complexity and > then 3 down towards Schnorr). > 2. Because of its simplicity it is much easier to specify -- A single BOLT > spec could cover the key generation, transaction structure and signing > without too much pain (actually trying to write and review the spec for > 2pECDSA would take far longer) > 3. The actual transaction structure can be moved towards the ideal Schnorr > based endpoint (i.e. almost completely scriptless except for OP_CMS) or you > could even keep the transaction structure the same as it is today and just > replace the pre-image spending path in script with OP_CMS > > I think this is practical but there are still a number of ways you could > go about it so I'd be interested to hear your thoughts. Any feedback on this > would be greatly appreciated :) > > Cheers, > > uSEkaCIO > > > Lightning-dev mailing list > Lightning-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev _______________________________________________ Lightning-dev mailing list Lightning-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev