I'll be honest: I'm not sure blockchain messaging is a great idea. Blockchains are great for consensus among peers who don't trust each other, but data storage? We'll see.

However I do love free speech and the censorship-resistance of the blockchain, and I love people trying new things, so I've been watching Memo and Blockpress with great interest. I think there's a relatively simple protocol addition that would make for a better user experience.

Currently messages are all separate from each other, with the exception of the "Reply to memo" transaction which includes the transaction hash (txhash) of the message that it's replying to. Because messages are treated on their own, users are limited in the space available for their messages or forced to use the old "1/2.....2/2" manual signalling system to indicate messages belong together.

With a new protocol addition, messages could contain information that group them together. A user would be able to create a message of arbitrary length, which would then be broken down into multiple individual transactions. Platforms and clients reading the blockchain would then reassemble and display all the separate transactions together in one message.

This would effectively mean that blockchain messaging platforms could remove the character limits for messages from their interface entirely. They might display the required fee size instead. These platforms may still want some limits in place for a better user experience or ease of manipulating the data, but the limits would no longer be based on what can fit into a single transaction.

By adding a new prefix (0x6d0D?) onto messages in a group you would know they are part of a group of messages and should not be displayed individually. The message itself would contain a transaction hash of the next message in the grouping, and a simple numbering system to know where this message fits into the message order. The last message in the grouping would include data that indicates it's the final message.

Anyone who sees any message with this prefix should be able to find all the other messages in the grouping and reconstruct the original message.

This would require clients posting messages to:

Split the original arbitrary length message into a group of multiple messages Add the new prefix to these messages indicating they are part of a group as well as information in each message indicating where it is in the message order Determine the transaction hash of the final message in the group and include that in the penultimate message, then chain transaction hashes backwards to the first message.

This would require clients reading messages to:

When seeing a message with the group prefix, don't post the message individually Use the transaction hash to find other messages in group, and continuing finding all linked transactions until the entire group is found Reorder the messages according to the message order information in each transaction

Example

User wants to post the following message:

As Satoshi said in the original paper that started it all, “We have proposed a system for electronic transactions without relying on trust.” For the first time since the digital age began, you can now make an electronic transaction without trusting in central banks, traditional banks, the regulatory apparatus of nation-states and the payment processors that are bound by them. A technological innovation so profound is certain to have a bright future.

To post this message as a group, the user's client would first split it into how ever many transactions are needed to include the message - let's assume three are sufficient. It would use the following transaction structure:

OP_RETURN [Message Group Prefix] [txhash to next message in group] [message order (1/3)] [message text] OP_RETURN [Message Group Prefix] [txhash to next message in group] [message order (2/3)] [message text] OP_RETURN [Message Group Prefix] [txhash?] [message order (final)] [message text]

As they might look before encoding:

OP_RETURN 0x6d0D txhashof2 1x3 As Satoshi said in the original paper that started it all, “We have proposed a system for electronic transactions without relying on trust.” For the first time since the OP_RETURN 0x6d0D txhashof3 2x3 digital age began, you can now make an electronic transaction without trusting in central banks, traditional banks, the regulatory apparatus of nation-states and the OP_RETURN 0x6d0D txhash? 3x3 payment processors that are bound by them. A technological innovation so profound is certain to have a bright future.

I'm unsure how to point the final message towards other messages in the group, suggestions welcome.

I’m unsure how transaction malleability impacts this scheme, and if so how to avoid that problem.

I know that people have been splitting up data to insert into the blockchain for a long time, so if I'm overcomplicating this or missing something I'd love to hear it.

Please let me know if this idea makes sense or any improvements you might have.

Edit #1 : Reddit user /u/tcrypt pointed out that this could be done within a single transaction using multiple OP_RETURN entries, which would eliminate the need to daisy chain the transactions. Though using multiple OP_RETURNS is valid, it's non-standard (they won't propagate), so we'd need to get input from the community as to whether or not making them a standard transaction in the software would be valuable in order to facilitate use cases like this.



