
Show HN: P2P decentralized messaging application over Bitcoin Cash - sumanthneppalli
https://www.keyport.cash/
======
kemonocode
This really looks like Bitcoin Cash propaganda, and really, not a very
efficient way to do messaging at all.

If you're interested in more practical approaches to do this instead of just
shoving messages into a blockchain, Twister [1] does decentralized
microblogging (a la Twitter) with e2e encryption for direct messages. Instead
of using its "blockchain" to store every message, a Bitcoin-like protocol is
used for authentication and a DHT network is used for the messages themselves.
If the push came to shove, it'd be far easier to implement scaling or message
pruning with this approach, while keeping the auth layer relatively limber.
There's also Bitmessage [2] which uses a different approach and aims to hide
metadata as well.

Disclaimer: I've contributed to the Twister project.

[1] [http://twister.net.co/](http://twister.net.co/)

[2]
[https://bitmessage.org/wiki/Main_Page](https://bitmessage.org/wiki/Main_Page)

~~~
marknadal
Twister looks cool, I haven't seen it before. How long have you been helping
with it?

Using BitTorrent for these things seems like an obvious solution compared to
everybody trying to do it on some blockchain (just not scalable). Although
BitTorrent, in my experience, isn't the best at small rapid data, like tweets,
versus large files/assets. Which is why I've worked on similar tech, for doing
P2P stuff (short tutorial here: [https://hackernoon.com/so-you-want-to-build-
a-p2p-twitter-wi...](https://hackernoon.com/so-you-want-to-build-
a-p2p-twitter-with-e2e-encryption-f90505b2ff8) ), so I'd love to chat with you
about how you did it for Twister and compare notes.

Like, why couldn't you have done it all with BitTorrent, why did you need
Bitcoin pieces? How did you get microblogging on BitTorrent to work
efficiently?

~~~
kemonocode
My contributions to Twister are relatively minor- mostly focused towards UI/UX
stuff, something I personally loathe, but figured it'd be good learning. Also,
out of all projects that itch for a nail to smash with the Bitcoin hammer,
it's one of the few that make the most sense to me.

The reasoning to use a Bitcoin-based protocol for the auth layer is detailed
in the whitepaper [1] but it's basically in order to have unique identities
tied to a given username while still remaining decentralized. Just like with
Bitcoin, there's Proof of Work needed to perform these validations, but
instead of getting paid in coin, whoever finds a block has a chance to get a
given message promoted for people to find more easily on their client. Does it
scale? I'm not sure myself, it's working pretty well right now, but it
certainly scales way better than using Bitcoin for every damn thing.

In theory, you could use different protocols to those the original developer
chose for all three layers since they're mostly independent (the user
registration/auth layer, the DHT layer for messages themselves and the
BitTorrent swarm layer for distribution and notification)

[1] [https://arxiv.org/abs/1312.7152](https://arxiv.org/abs/1312.7152)

------
makomk
This involves saving an encrypted copy of the message and _unencrypted_
metadata about which identities are messaging each other when to the publicly-
accessible Bitcoin Cash blockchain forever. Not only is this rather
inefficient (every single full Bitcoin Cash node carries a copy of every
user's messaging history forever), it's not good for privacy and definitely
not "uncensorable". You're entirely reliant on miners including the messages
in blocks and those full nodes giving you a copy of your messages on request.

~~~
sumanthneppalli
The unencrypted metadata is a transaction between Bitcoin addresses, not
mapped to any identity. This is similar to the Bitcoin network, where we just
know that addresses contain a certain amount of Bitcoin but we cannot identify
who the address belongs to. Compared to privacy apps such as Signal or
Telegram, they have some metadata about users.

One should think of a message as a small transaction that embeds some
encrypted data on the blockchain. Miners are including messages on blocks
because they get paid a small miner fee. These transactions are uncensorable
because the Bitcoin network is uncensorable. Traffic of apps such as Telegram
can be identified and blocked as Russia has done so in the past.

~~~
ShorsHammer
Bitcoins pseudonymous nature is getting weaker daily and blockchain analysis
is maturing as a technology, the biggest coin mixer recently admitted that
their services were useless and shutdown. There's very few exchanges if any in
the western world where you can swap cash for bitcoin and not hand over ID.

Blockchains are forever.

------
stephengillie
The page shows little beyond a Play store link, a Youtube video, and some
buzzwords that seem split between messaging and payment.

> _Start uncensorable chatting! You can soon start sending and receiving money
> from friends._

From the video, the chats don't seem to be connected to any Coin - there's no
mention of transaction fees to send or receive messages, and they seem to send
and arrive nearly instantaneously - more like a Hangouts message than a
Bitcoin payment. The app stores your private key too, so this chat service
could be using standard public/private key encryption, and a chat server that
uses public keys as usernames. Like a PGP chat server - that's in the same app
as a Coin payment system, so you can have your private chats and your
surreptitious payments in the same central location.

~~~
sumanthneppalli
We should have explained better and we will improve our website, sorry about
that.

The blockchain that we are connected to is Bitcoin Cash(BCH). Bitcoin Cash is
a fork of Bitcoin that aims at instant, cheap transactions. Bitcoin Cash
transactions are instant unlike Bitcoin transactions. Each message costs
around a cent as the fees is
1satoshi/byte([https://bitinfocharts.com/comparison/bitcoin%20cash-
transact...](https://bitinfocharts.com/comparison/bitcoin%20cash-
transactionfees.html)).

The private key is being stored on the client side and we will open source the
code soon so that users can verify that we do not store their private key.
This is similar in functionality to Bitcoin wallets.

------
nickodell
It looks like every message in this system create a new Bitcoin Cash
transaction. Is that a good idea? You don't really need the consistency
guarantees of the blockchain, so any gossip protocol would work equally well,
and you wouldn't need to keep every message around forever.

Also, this leaks unnecessary metadata. If you know Alice's address, and you
know that she talked to Bob at 8:05 yesterday, you can figure out Bob's
address by following the money.

~~~
sumanthneppalli
There is no gossip protocol that is built over Bitcoin Cash right now. The
only way to send data over the network is to create a transaction.

If we want to use a gossip protocol, users will have to run federated servers
and that requires a different incentive system. In this system, users pay a
small fee and are assured that their message reaches the intended party.

New addresses can be used for new chats, since these addresses can be
generated randomly, there is no way to connect them to an identity. Money can
be routed to the address through a Bitcoin mixer to increase anonymity.
([https://news.bitcoin.com/coingeek-to-fund-the-bch-
anonymizer...](https://news.bitcoin.com/coingeek-to-fund-the-bch-anonymizer-
mixing-platform-cash-shuffle/))

~~~
nickodell
>Money can be routed to the address through a Bitcoin mixer to increase
anonymity. [...]

That's a cool solution to the problem, but you didn't need attach bitcoin
addresses to it at all. For example, in Bitmessage, the source address is
inside the encrypted portion. You can tell how many messages someone received,
but not where they came from. If you separate your routing from your anti-spam
incentives, your protocol will be more secure.

------
MertsA
Ehhh... I like cryptocurrencies as much as the next guy but this feels like an
attempt to shoehorn something into cryptocurrency "because blockchain". As far
as I can see, ordering of messages is not protected at all without using the
method that provides forward secrecy. Deniability is non-existent with this
scheme. Every person you've ever sent a text to is saved accessible to
everyone forever. It looks like messages aren't even padded at all other than
just up to the 32 byte block.

As far as the claim that it's somehow censorship proof, there's absolutely
nothing at all here to prevent an adversary from identifying and blocking
messages. It's a Bitcoin Cash transaction, but it's not magic. If Eve is in a
position to block a message from Alice to Bob, Eve is also in a position to
block a transaction from Alice to a miner.

Also that Satoshi Nakamoto conversation is farcical to say the least. I
honestly don't see a single advantage to this over existing solutions.

------
rawrmaan
Just cause it CAN be done doesn’t mean it SHOULD be done.

~~~
EGreg
WHY!

------
mtw
I didn't get how the parties knows about new incoming messages. The app has a
wallet that watches the blockchain for new transactions involving the user?
What if the app is turned off? Or you guys have a central server that watches
the blockchain and then updates users? In the case of a central server, does
that mean this can be taken down if authorities take over the central server?

------
woah
This is just putting messages directly on the blockchain

------
zero_kool
Video demo: [https://youtu.be/9LqJeqwzwJs](https://youtu.be/9LqJeqwzwJs)

------
dotsh
So many buzzwords but nothing interesting.

------
sschueller
Why bitcoin cash and not bitcoin core or etherium?

~~~
sumanthneppalli
Bitcoin and Ethereum are clogged and have hit their transaction capacity.
Bitcoin cash is the only blockchain that has a scaling solution that works
today and doesn't need any new innovation.

~~~
nipponese
Huge blocks are not a scaling solution, they are technical debt.

------
tehabe
Does this mean I would need an own power plant to sent and receive message
with this protocol?

~~~
sumanthneppalli
While the Bitcoin network does consume a lot of power, the Bitcoin Cash
network is highly efficient and can process a lot of transactions with the
same energy requirements.

You would need to pay a fees of around a cent to send each message. You need
not pay anything to receive a message. We believe that as the Bitcoin Cash
network becomes stronger, transaction fees would get even cheaper.

~~~
aafdginionio
>the Bitcoin Cash network is highly efficient and can process a lot of
transactions with the same energy requirements.

Untrue. It's _one_ order of magnitude better. That doesn't make it "highly
efficient." Bitcoin is well over _four_ orders of magnitude less efficient
than Visa, which is appalling. Even a tenfold improvement over Bitcoin is
still dog shit.

And that's comparing to Visa, which isn't reasonable. Chat messages don't need
the same guarantees as financial transactions. There's no need to put every
chat message in a single ACID database. A system built specifically for chat
(like Tox) can scale far better.

>You would need to pay a fees of around a cent to send each message.

Only because Bitcoin Cash isn't used for anything. If people start building
applications that stress the network (like your chat application!), those fees
will skyrocket. Fees are only low as long as the system has spare capacity.

Low transaction fees are only evidence that the system is underused, which
means no one's found a use case yet.

>We believe that as the Bitcoin Cash network becomes stronger, transaction
fees would get even cheaper.

Blockchains are _anti_ -scalable. As the network gets bigger and more popular,
it gets no faster at all. It just gets vastly less efficient. More miners
means more power consumption and more users means more congestion. There is no
known way to scale these systems.

