Question to Nostr devs:

If 2 different devices sign the exact same message and broadcast it, will there be something that distinguishes them as separate messages, or will it appear merely as a second broadcast of the exact same note?

#asknostr

Reply to this note

Please Login to reply.

Discussion

The created_at would probably be different.

Ah crap, can you manually force that data easily? Like let’s say I have 2 devices online ready to sign that both get the message, but the device that sends it to them says “add created_at [exact time]”

Do you think that would produce the exact same apparent message or is there still something else likely to get in the way? 🤔

Isn't there some randomness to the signature algo? I don't know, just assumed that there is.

I guess it doesn't matter, if they're identical, tho. But then it's the same as just copy-pasting them and sort of pointless.

There are *a lot* of possible valid signatures per messages.

But no one cares and they still have the same ID

Yes, but it will always have the same sig given the same tags/inputss.

It has to be of course, otherwise it cannot be verified and repeated.

incorrect

Huh? Why not? if I have the same timestamp, pvt key, e tag, p tag, whatever, the signed and delivered note will always be the same.

Because r/k :)

Ok, because the signing includes a random element?

Yes. Can’t change it without rewriting the signing code from the ground up.

Not that it matters

Okay, I thought I was dreaming that up, since everyone else seemed so sure.

No, not at all. The params, inputs, tags are the hashing input, the sig is the output.

I’m gonna test it and see what happens. Will report back 😆🤔

…with the exact same keys if that wasn’t obvious. I’m wondering if there is some data, or hash, or entropy of some sort that’s unique to the device and time of the signing that would make it seem like I signed the same message and posted it two different times, or if it will just look like both devices are “relaying” the same message.

The signature will be different every time you sign even if the event is exactly the same

I worried this would be the case. Would be easier if I could somehow force it to be the same.

My understanding is that randomness is used in the signature to prevent some kind of cryptographic attack

Relays don’t care. As long as they know 1 valid signature it does not matter

Oh I know they wouldn’t care, it was more about preventing from having duplicate posts filling up a feed and trying to prevent that, but having redundant signers available without needing a system of “this device already signed so don’t do anything” that has to get around the whole network… basically a pseudo consensus system among my own devices if they are all in a closed network so one doesn’t repeat the actions of another and flood the feed with the same stuff 2, 3 or more times

They will look as one post if they have the same created_at and data

Why do you want it to be the same?

nostr:note1yfutz0f50pswrqdfxz84v8hspu6y27px0ejp0gdskp8kn9vnftjq2849qy

The signature is different, but the id is the same. Clients and relays have to deduplicate anyway, so whichever signature ends up on the event, only one will ever be displayed or stored in any given place.

Oh sweet! So it’s purely the ID that matters and the signature doesn’t denote anything about whether the post is a duplicate or not? Thats actually great!

Yep, the id is the hash of the event, so that's what makes it content addressable rather than the sig

They will be signed at different times so it shouldnt be the same signature

yup, it should create a duplicate note

not sure if you can edit the metadata to make it look like it was sent at the same time as that data (timestamp) might be what the relays provide rather than the user

You can easily set a same timestamp

I'm not a dev, in the end it's like broadcasting a note, if the event is signed it's signed

I’m aware of that, but my question is specifically about whether the two separately signed events will appear to relays as if it’s exactly the same event, or two separate events signing the same note.

The former being that it shows up once in my feed, the latter it shows up twice, one behind the other.

if the client has an internal database this should not happen or negentropy (sync id)

This a good question. The signatures may be different, but the ids will be the same.

Nostr uses bip340 for signing, which specifies that random data be included in signing. But this is optional, so it's up to the client doing the signing.

I would assume that because the ids are to same, the relays will just see it as a duplicate event, and ignore it.

Nonce?

It will be a different event.

As a developer i would have to pull a lot of tricks for the signature to be exactly the same. I think it's nearly impossible for good reasons.

I think a good way to think about it would be: the first event would be the 'real' event and the other client making the same message would be more like a broadcast/blastr similar to replaying events.