I write DApps. But the most compelling DApps I could imagine needed a messaging system that could be integrated into smart contracts — and for all the impressive Ethereum development work, I couldn’t find a contract-integrate-able messaging system.

So I wrote Turms AMT (Anonymous Message Transport). It’s a peer-to-peer, fully encrypted, pseudonymous messaging system based on the Ethereum blockchain (See Introducing Turms Anonymous Message Transport). In the initial release of Turms AMT all messages were stored on the Ethereum blockchain as event logs. I chose this approach because:

It was the simplest technique with the fewest “moving parts;” that is, the Ethereum blockchain is mature, stable, and represents the lowest risk in terms of breaking developments. The DApps that I was envisioning would require guaranteed persistence for message storage — I was thinking about a blockchain-based marketplace for high-value transactions — and currently other decentralized storage solutions don’t have guaranteed persistence. Using event logs to store data isn’t prohibitively expensive for the applications I envisioned, which would pass much less data than a general-purpose mail system. (Note: storing data in an event log consumes much less gas than storing it in the state trie.)

But since introducing Turms AMT I realized that enabling optional Swarm storage of message-data would open it up new application possibilities. Today I’m happy to announce that this feature is available in Turms AMT Version 1.4+.

Enabling Swarm storage of message-data provides the following benefits:

Sending large messages is much cheaper when the data is stored on swarm. That’s because no matter the size of the message you only need to store the Swarm hash (32 bytes) on the blockchain.

The maximum size of a message stored on Swarm is governed by the Swarm-gateway-imposed limit. For swarm-gateways.net this is about ten times greater that the maximum amount of data that can be stored as an Ethereum event log.

Of course when you store a message on Swarm you lose the guarantee of persistence, so it’s not be appropriate for all applications (such as the decentralized commerce DApp, which I’m working on now).

To enable Swarm storage in Turms AMT just open the ‘options panel’:

In the drop-down selector labeled ‘Select message storage’ you have three options:

The default is to store all message data as Ethereum event logs. Your second option is to store all message data on Swarm Lastly, you can choose to store any messages that have attachments on Swarm, and all other messages as Event logs.

Whenever you choose to save message data on Swarm you’ll have the opportunity to specify a gateway:

Turms AMT is still slower than email; and it’s still more expensive; and less user-friendly. But now with the ability to store message data either on the Ethereum blockchain or on Swarm, I expect it will find plenty of applications (including the aforementioned commerce DApp).

Turms AMT is encrypted, peer-to-peer, completely 100% decentralized, accessible to smart-contracts, and pseudonymous — Your Ethereum address is your recipient address. You can try it out at:

https://ipfs.io/ipns/messagetransport.turmsanonymous.io/

Alejandro Diaz