Turms Anonymous Message Transport — Step by Step

Ananya Agarwal
Jun 3, 2019 · 6 min read

Turms Anonymous Message Transport is a peer-to-peer messaging system for sending encrypted messages between Ethereum addresses. It’s completely decentralized: It runs on the Ethereum blockchain with no backend server at all. The user interface, which runs in your browser, can be loaded from IPFS. If you haven’t heard of Turms AMT, here’s an introduction. In this article I’m going to walk you through your first time setting up and using Turms Anonymous Message Transport.

Registering an Account

Browse to the Turms AMT DApp. The first time you load the DApp you’ll be presented with a set of slides that go over the main features. I do recommend that you read through the slides: it only takes a minute or two, and they’re worth your time. In this article I’m going to skip the slides, so the next thing that you’ll need to do is unlock and connect MetaMask. Here are some images to show you these steps:

If you have Privacy Mode enabled in MetaMask, then you’ll see this screen:

As soon as MetaMask is connected you’ll be asked to sign a special message. This message is never sent on the Ethereum blockchain, and you can see the text of what you’re signing:

We create a unique encryption key for each sender/receiver pair of Ethereum addresses. By signing this message you will create a secret code to unlock your half of each pairwise-key. Your secret code is never shared, transmitted, or even saved on your own computer. That is the reason you need to sign this message each time you load Turms Anonymous Message Transport.

Go ahead and sign the message so that you create your secret key.

Note: Sometimes the MetaMask dialog doesn’t “pop up” in front of the browser window. If you see a green box that says “Waiting for MetaMask signature,” but you don’t see the MetaMask dialog, then just click on the small MetaMask fox icon in the top-right corner of your browser.

Once the message is signed you need to register your account. It doesn’t cost anything to register an account, but you will be sending a transaction on the Ethereum blockchain, so there will be gas costs. To register, click the “Register Account” button. Note: You’re not giving anything away when you register your Ethereum address with Turms AMT — You’re just listing your Ethereum address with the Turms AMT smart contract as a potential recipient of Turms messages. Even when someone sends you a message, it never actually touches your Ethereum address — it’s stored in the Turms AMT smart contract for you to retrieve whenever you want…

You’ll be asked to fill in two fields: The spam-fee is the amount that you want to be paid for every message that is sent to you from someone to whom you have never sent a message. If you set this to a high value, anything above 1 or 2 Finney, then you won’t receive much spam at all. The other field is the message-fee. This is the amount that you’ll be paid for every other message that you receive. You should probably leave this at zero, or at most set it to a few hundred Szabo — if you set it much higher, then even your friends won’t want to send you messages. After you set your message-fee and spam-fee, click the Submit button, and confirm the transaction:

Congratulations! You have now (after the transaction is mined) registered your Ethereum address with Turms AMT. By the way, if you ever decide that you want to change your message-fee or spam-fee, you can do so by selecting the “modify account” button (where the register account button used to be).

Your First Test Message

Most people want to send a test message to themselves as soon as they register with Turms AMT. If you send a message to yourself then you’ll need to pay your own spam- fee (since you’ve never received a message from your own address). It might not bother you at all to pay a 2 Finney spam-fee, since most of the fee goes to you anyhow. But if you would rather not pay yourself the 2 Finney, then simply send yourself an empty message. (Don’t forget to delete the word “Subject” which is automatically populated in the message area). The idea is that whenever you send an empty message you don’t need to pay any fee at all — And once you’ve received the empty message, for subsequent messages from you to you, you’ll only pay the message fee.

If you want you can send a test message to me, perhaps to tell me how much you enjoyed this article… You’ll have to pay my spam-fee, which I’ve set to 200 Szabo — But so long as your message-fee is somewhere around 200 Szabo, I’ll write back to you, so you’ll recoup the couple of cents-worth of ETH.

Regardless of who you decide to send to, sending your first message is easy. Just click on the “compose” button and enter the Ethereum address (or ENS name) of the recipient. To send a message to yourself it might be convenient to copy your address from the account area in the upper-right corner of the screen. If you want to send to me, then just enter my ENS name, ananyalasagna.eth.

When you click the validate button you’ll see what the fees will be (unless the message is empty, in which case you won’t see that the fees are zero except in the MetaMask dialog):

After you type your message (or erase the word “subject” if you’re sending an empty message) click the send button, and then confirm the MetaMask transaction.

Withdrawing Your Fees

Having to pay a fee when you send a message can take some getting used-to, even if it’s just a few cents. But the idea has grown on me: There’s an impersonal coldness when you send messages by email or twitter… Sometimes it leads people to take the recipient of their message for granted. Having to drop someone a nickel when you send them a message forces you to appreciate that you’re interacting with a real human, and you’re asking them to give you some of their attention to read your message.

Aside from the polite messaging etiquette that it promotes, on the flip side it’s exciting when you see that your message fees are adding up. You can see your accumulated message fees in the account area, at the upper-right corner of the screen. To withdraw your accumulated fees to your Ethereum address, just click the “Withdraw Fees” button, and confirm the transaction in MetaMask.


There’s a lot more to explore in Turms AMT. When you think about it, it’s pretty important to be able to send messages between Ethereum addresses — And the authors of Turms AMT are already working on other DApps that will be built on this capability. Visit diazgonewild.com to learn more about Turms AMT, and the other DApps that are coming. Or you can just jump in and start using the Turms AMT DApp right now — I’d love to hear from you!

-Ananya Agarwal

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade