What can I say, I'm an ASS man. 🍑

Jokes aside. Just trying to understand this.

So I can receive a thing that let's me sign for something but the signature is invalid until the sender of the thing adds their own signature.

Is that what I am reading here?

I was going to try to follow up with an example using cashu, but if the mint is the signature jssuer, then any "swap" thing must be between you and the mint right?

What is a practical example here?

I didn't want to give my nsec to play with the GM protocol. So I don't get that either.

Reply to this note

Please Login to reply.

Discussion

This would allow me to defer the signing of something to someone else.

Like allowing a third party to sign a penalty transaction for a p2p exchange trade.

So I imagine:

Two parties agree to trade 1 BTC for $1M.

They create a multisig address and just like lightning, they first setup refund transactions, use this protocol to partially sign them and give this to an Arbiter.

The benefit here is that the arbiter cannot claim that the signatures were leaked if something unexpected happened because it requires the arbiters signature to become valid.

Now the deposit is made.

Then if the trade is successful, they collaboratively spend as appropriate.

If there is a dispute, then the arbiter decides who gets the 1BTC and releases the funds in the appropriate direction.

If combined with a timelock, then the dispute transactions can include a fee for the arbiter. Nice.

...... Or am I misunderstanding completely?

"So I can receive a thing that let's me sign for something but the signature is invalid until the sender of the thing adds their own signature."

No, the "thing" is an invalid signature until YOU add your signature to it. By doing that and using this now valid signature publicly (publishing to a relay, claiming a Cashu token or sending a taproot transaction to the mempool).

The mint is not the signature issue, it is just the signature "verifier". You can swap signatures with anyone else, just relying on the mint as a neutral independent and mutually trusted escrow.

One practical example I am working on is a decentralized marketplace for sponsored content on Nostr. Advertisers will publish campaigns (like to promote a new podcast, book or bitcoin conference) and you could send them a proposal (price and the actual content of a note) if you think this would be of interest to your followers. If both of you agree on those terms, you can atomically swap a cashu/taproot payment for the signature of such a Nostr note.

I just sent you a GM proposal there, you can accept it without giving your nsec because only one party (me in this case) must generate the adaptor signature that is still not supported by NIP-07 and remote signers. You will notice that you'll be asked to pre-sign your GM note, without reveailing it yet, just saving the encrypted signature within an event (it could also be kept locally on your client but then it would not interoperate with other clients). You will just reveal the public nonce of that signature, which I am going to use next to send you an adaptor signature back (the "thing" we talked about).

Okay, I clicked login without an nsec, then typed my npub.

I saw a GM swap which I assume was your offer and I clicked on the CTA.

Now it is pending a nonce....

Oh, no I see, it generated a new nsec for me and I have initiated a swap with my anon-anon-self.

So where can I go to complete this swap?

I think I need to improve the UX, but the npub field is for sending proposals to other people, it will probably not work sending it to oneself. Don't you see the proposal I've sent you? It should have an "Accept" button for you to generate and send me a nonce back.

Where? I don't know where to look.

To be clear, I also can't log in with NIP-07. I use a mobile client and use Amber to login (nsec bunker)

Oh that's why then, you would need to sign in using NIP-07 for now since the client still lacks remote signer integration... I will let you know when I have that in place so we can swap those friendly GMs.

nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq3zamnwvaz7tmwdaehgu3wwa5kuef0qqsqm9a74et8lnkfcet578rw7cfxa2tf6jvjcvvcu5wqltzjc5n559qgajfmh I just implemented NIP-46 (remote signers) in https://gm-nostr.vercel.app/ but I do not have an Android phone to test it on Amber (nsec.app works fine) can you try it to help me test it?

Looks like it's working great!

I copied the nsecbunker connection string from the webpage into amber and it worked... May try a few more times because I don't think it was completely smooth, but it works!

https://cdn.nostrcheck.me/0d97beae567fcec9c6574f1c6ef6126ea969d4992c3198e51c0fac52c5274a14/47cd5cd84183302bd82d88260db1cb3782e23398f1e06df4985b80e91046a060.webp

The login experience wasn't completely smooth to be clear. Once logged in, it is all good.

So the website doesn't remember the connection to Amber. That's not great since I need to create a new connection and I have to go back and clean up the old one every time.

You're right, I think I can implement it now using applesauce v1.0, I will give it a try.

Now it is persisting nip-46 connections!

Thanks! I just sent you my adaptor signature, now you can claim my GM sir.