What is Nostr?
ZmnSCPxj [ARCHIVE] /
npub1g5zā€¦ms3l
2023-06-07 18:26:13
in reply to nevent1qā€¦sa59

ZmnSCPxj [ARCHIVE] on Nostr: šŸ“… Original date posted:2020-08-20 šŸ“ Original message:Good morning Nadav, > Hey ...

šŸ“… Original date posted:2020-08-20
šŸ“ Original message:Good morning Nadav,

> Hey Chris and all,
>
> Looking good :) I have one major concern though
>
> >Ā  Ā  q = EC privkey generated by maker
> >Ā  Ā  Q = q.G = EC pubkey published by maker
> >
> >Ā  Ā  p = nonce generated by taker
> >Ā  Ā  P = p.G = nonce point calculated by taker
> >
> >Ā  Ā  R = Q + P = pubkey used in bitcoin transaction
> >Ā  Ā  Ā  = (q + p).G
>
> If I'm understanding this correctly (which I'm not sure I ame), it seems like the plan is to put R on-chain as the key to an output? As stated this is completelyĀ insecure as Q is known in advance so the taker can always choose a nonce p but then claim that their nonce point is p.G - Q so that the key that goes on-chain is (p.G - QĀ + Q) = p.G allowing them to steal the funds.

My reading from this is that nonce `p` has to be given by the taker to the maker outright.
In original post:

> Taker sends unsigned transaction which pays to multisig using pubkey Q,
> and also sends nonce p.

Thus, taker provides a proof-of-knowledge, i.e. the actual `p` scalar itself (not zero-knowledge, but what the maker needs is proof-of-knowledge, and could not care less if the proof is zero-knowledge or not).

On the other hand, I do not see the point of this tweak if you are going to use 2p-ECDSA, since my knowledge is that 2p-ECDSA uses the pubkey that is homomorphic to the product of the private keys.
And that pubkey is already tweaked, by the fresh privkey of the maker (and the maker is buying privacy and wants security of the swap, so is incentivized to generate high-entropy temporary privkeys for the actual swap operation).

Not using 2p-ECDSA of some kind would remove most of the privacy advantages of CoinSwap.
You cannot hide among `2 <A> <B> 2 OP_CHECKMULTISIG` scripts of Lightning, because:

* Lightning channel closes tend to be weeks at least after the funding outpoint creation, whereas CoinSwap envisions hours or days.
* Lightning mutual channel closes have a very high probability of spending to two P2WPKH addresses.

You need to hide among the much larger singlesig anonymity set, which means using a single signature (created multiparty by both participants), not two signatures (one from each participant).

Or is this intended for HTLCs in open-coded SCRIPTs `OP_DUP OP_IF OP_HASH160 <hash> OP_EQUAL <A> OP_ELSE <time> OP_CHECKSEQUENCEVERIFY OP_DROP <B> OP_ENDIF OP_CHECKSIG`?
This provides a slight privacy boost in a case (contract transaction publication) where most of the privacy is lost anyway.

Regards,
ZmnSCPxj
Author Public Key
npub1g5zswf6y48f7fy90jf3tlcuwdmjn8znhzaa4vkmtxaeskca8hpss23ms3l