Nostr is going to be great for bitcoin privacy. Here's something small I hacked together in an hour that lets you use nostr as an alternate bitcoin transaction broadcast mechanism!

https://github.com/nostr-protocol/nips/pull/476

Reply to this note

Please Login to reply.

Discussion

Dumb question(?): Relays can capture my IP address just as easily, no?

They sure can.

Using Nostr for this is a different trust tradeoff. Not a categorically better one (modulo the lack of encryption on the Bitcoin P2P layer).

Yeah they can but bitcoin nodes can be run by chain analysis companies, nostr relays likely aren't.

I read your comments on the commit. Would it not be fairly easy for a chain analysis company to run a nostr node to scan for notes containing bitcoin transactions? If the node seems trustworthy otherwise (they pretend to be a good actor), how would we know not to connect nostr clients to it?

https://github.com/nostr-protocol/nips/pull/476/commits/b77a747c8ab266dd3e6c9c5fcb53c4fd6786aff2

Sorry, meant to type relay, not node.

Yeah they could, but this should be like 0.0001% of the relays traffic, there would be a lot of overhead to do so. Most likely it would end up being a shitty relay because they aren't supporting the use cases actual nostr users want.

Fair enough. It's never a bad idea to have another option to improve privacy, even if the privacy gained is incremental. Thanks!

Not sure how is it better than connecting to some random bitcoin nodes and broadcasting your transactions

Bitcoin nodes are more likely ran my chain analysis

edits are good 🤣

God dammit 😭

What exactly would it be "good for privacy" if I publish my bitcoin tx on Nostr - and tie it to my Nostr identity(!) - only so that someone else I can publish it to the mempool.space API??

I can do the same thing with `curl`, without posting my tx publicly on Nostr.

You should use an ephermal key for this, not your main nostr identity.

The point is to not leak your IP address to potential chain analysis companies and instead a nostr relay which has a much greater anonymity set.

If you had a way to discover many nostr relays in a decentralized way, without relying on the mutual relay model, then this could be even more interesting. Fun research.

Yes, luckily that is more of a nostr problem so maybe I'll be solved eventually for me.

Hm, I would have create a fresh identity for every tx I publish as to not allow clustering - but yeah doable.

But why would I not simply publish my tx directly to a trusted API (mempool, blockstream, etc)?? That's exactly what your code does..

Your wallet would just generate a key and publish, super simple, wouldn't require any extra work from the user.

You wouldn't publish to the api because you shouldn't trust mempool or blockstream, they could be selling the data.

Yeah but that (publishing to a third party Bitcoin node) is what your code does - which is why I was a bit dumbfounded. Because i could do that myself, without jumping through all these hoops in generating ephemeral no ups, publishing it to Nostr, some other third party running a watcher (which would de facto be another queue aka mempool) and in the end just do an API call.

` .post(&format!("https://mempool.space/api/tx"))`

#[2]

People need to understand that their IPs and message content is seen by Nostr relays. Pretty soon we’ll wonder why there are so many nostr nodes out there. #honeypot

is it possible to develop a nostr bot where everyone can send a psbt, the bot take all psbts and then broadcast a transaction with n input and n output.

it make sense?

ca be good for btc privacy?

can be called coinjoin?

The signatures wouldn't be valid once you added an extra input or output.

There is a project joinstr that does coinjoins over nostr, last i looked at it it was vulnerable to ddos attacks tho.

right, thank you

It is possible using `joinpsbts` RPC in bitcoin core.

As #[2]mentioned I am already working on a coinjoin implementation, however still a work in progress. It uses `combinepsbt` RPC though because inputs and outputs for a round are known after 2 phases: https://gitlab.com/1440000bytes/joinstr

TIL joinpsbts. I’ve always wanted to build a psbt combiner/joiner widget is damus somehow. Like pasting psbts in DMs automatically combines psbts. Would be more useful in private group chats.

Check out Coinstr: https://youtu.be/FyyMz259AZY

Why not just use Tor to connect to a site that allows broadcast tx and send that way?

Tor is the ideal but not very reliable and isn't always available. Your mobile wallet probably isn't running a tor daemon

not sure how good mobile support is, but i2p is awesome

💪💜⚡️

Did a python implementation of this at https://github.com/monty888/txbroadcastr.

Thinking about how events could be wrapped, decrypted and relayed so even without TOR it wouldn't be easy to know who posted the original event. Also thinking about adding some steganography to the mix...

And if nothing else it finally force me to write some code to monitor a directory and post any TX to the bitcoin network so I don't have to mess around manually opening a wallet to post signed txs from offline signer.