Speech bubbles

Why put chat on-chain?

Upon the re-launch of Bitchat, naturally questions arose of why store chat messages on a blockchain. Especially if the chat messages are plain text and public on the ledger, this approach appears non-sensical to “normies”. However, when these issues are critically analyzed past the surface level, we see the problems with existing chat and social media interactions in general.

First of all, the world has not seen a single public ledger with miniscule fees to transact. Therefore, humans are unable to comprehend what use cases make sense or possible when the floor on an online payment is around 30 cents due to the fundamental limitations of the financial system. As Bitcoin scales as intended and fees drop to 1/1000th of a cent and lower, more use cases to transact will be attempted. Now that the standard fee rate on BSV is 0.05 satoshis per byte, we can write simple messages adhering to a protocol for a lowly 20 satoshis (1/1000th of a cent).

By transacting via an open social protocol atop a public ledger, this solves fundamental issues with development of applications and integrations with others.

Bitchat
Source: Bitchat

If application A wants to integrate with application B, typically the developers from either side must initially communicate to map out and design the integration before starting to implement. With the data on-chain via a documented protocol, this step is bypassed completely. Developers can implement the protocol ASAP without unnecessary administration, speeding up innovation. As a result, we have seen four different clients (Bitchat, Nitro, Blockpost, retrofeed) implement the chat messaging protocol in just 15 days.

Bitchat
Source: Bitchat

Another benefit is the so-called “censorship resistance” the digital currency space has been pushing ad nauseam for over a decade. Ironically, it is found atop the maligned “legally complaint” blockchain, BSV. If many applications are writing messages to the public ledger, no single server can censor anyone. They still preserve the power of moderation on their domain, but they can no longer unilaterally shut someone up. If application A censors a user because they don’t like what they are posting, chat application B has a competitive incentive to display that content and attract the dissenters who agreed with that user. Back to the original point though, why would any app write messages on-chain in the first place?

As more applications implement this with the aforementioned benefits, then the growing network effects become hard to ignore. Any new messaging app will be faced with the question, “Why wouldn’t I implement this protocol?”

Currently a larger issue is storing the chats in plain text publicly. While this may be desired for niche cases, this can be solved easily by encrypting posts. Conveniently, the protocols utilized already support it! Messages can be encrypted at the channel or message level, and since they are still public, interpreting apps can easily store these (or not) based on how the message is constructed. If they want access to encrypted channels, they can partner with other apps to share the decryption keys.

Apps or users can truly own channels, moderating them how they wish with their own rulesets. Many new paradigms are possible such as content creators running their own, paid, truly private groups (i.e., Patreon) without the middleman. With micropayments thrown in the mix, we will witness an explosion of innovation the world has not seen.

Watch: BSV Global Blockchain Convention presentation, Making Blockchain Easy for Real World Use

New to Bitcoin? Check out CoinGeek’s Bitcoin for Beginners section, the ultimate resource guide to learn more about Bitcoin—as originally envisioned by Satoshi Nakamoto—and blockchain.

[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]