Turms Anonymous Message Transport is a completely decentralized, peer-to-peer messaging system for sending encrypted messages between Ethereum addresses. (Find out more here). It’s cool that it’s anonymous — but you might be wondering who is ever going to send a message to an anonymous Ethereum address. One good answer is that the Turms anonymous commerce DApp will be released very soon. Vendors in that marketplace will no doubt want to advertise their goods to every Ethereum address that’s registered with Turms AMT. And the way that most vendors will advertise is by using the Turms Bulk Mailer. In this article I’ll walk you through how the bulk mailer works.

Before we get start though, if you haven’t already registered your Ethereum address with Turms AMT, do that now. Here’s a step-by-step guide.

Getting an Address List

As soon as the Turms decentralized marketplace is released I’m going to open my own “store”. So right now I’m going to create an advertisement that will be sent to everyone who has already registered their Ethereum address with Turms AMT. To get a list of those addresses I’ll use the makeAddrList utility. Note: the makeAddrList utility uses a particular version of nodejs; it took me a couple of tries to find the right version using the node version manager, nvm. At least these steps worked on Ubuntu 18.04; you might need to modify something if you run the utility on a different system.

git clone https://github.com/TomJBarr/makeAddrList.git

nvm install 8.11.4

nvm use 8.11.4

npm install

./makeAddrList.sh — all-turms all-turms-addrs.txt

The result is a text file (named all-turms-addrs.txt) that has a list of all the Ethereum addresses that have registered with Turms AMT.

Getting the Bulk Mailer

The Turms AMT bulk mailer is not hosted on any website. This is because it requires you to enter the private key of your Ethereum account (so that you don’t need to manually sign every message you send). Since you need to enter a private key in the bulk mailer, hosting it on a website would be insecure. For more background on this issue I recommend reading this post by Taylor Monahan.

So you need to clone the bulk mailer github repository, and install it locally. You’ll also need to install the browserfy utility. Here are the steps:

git clone https://github.com/AlejandroDiaz666/bulk-mailer.git

npm install -g browserify

cd bulk-mailer/ui/

npm install

Finally make the bulk-mailer web app, and copy the build directory to whatever directory you use to serve webbsite locally, (in my case /var/www/html):

make

sudo mkdir /var/www/html/bulk-mailer

sudo cp -R build/* /var/www/html/bulk-mailer/

Running the Bulk Mailer Web App

If you executed the steps above, then you can load the bulk-mailer from

http://localhost/bulk-mailer/index.html

As usual you’ll see the MetaMask confirmation dialog, and then the Turms AMT dialog to generate your Turms encryption key:

The Status Line

Since it shares much of the same code, the Turms bulk mailer looks similar to the Turms AMT DApp. One difference is that it has a status line towards the top of the page that always tells you the next thing you you need to do:

Click the Enter-Private-Key button and enter your private key:

Once you’ve entered your private key the status line asks you to load the address list.

Click the Load-Address-File button to bring up a dialog to select an address list. I’m going to load the list that I made above using the makeAddrList utility:

As soon as the utility loads the address file it begins verifying all the addresses and tallying the message fees to send to each address. This process can take several minutes. In the end the status line will tell you that you need to “set filters”. The filters allow you to set rules that will control addresses you send to. Clicking on the Set-Filters buttons brings up the following dialog:

You can see that I set the maximum-fee to 2 Finney. This is important, because I don’t want to send a message to someone if it’s going to cost me an arm and a leg. I figure 2 Finney is a fair price to pay to someone for reading my little advertisement. The other filter options help to weed out sybil accounts. That is, I only want to send to an account that actually has a little bit of Ether in it; and only an account that has sent at least one message. After clicking the Save button, the utility calculates the total amount that I’ll need to pay in fees — (In this case 18.5 Finney).

Composing my Advertisement

My advertisement is very simple. I just want people to know that I’m going to have an online store when the Turms decentralized commerce DApp is ready. Here’s what I wrote:

Sending the message

The last step is to click the Send-To-Recipients button. After confirming that is really what you want to do, the bulk sender starts to do it’s magic.

The bulk mailer sends out the messages sequentially, one at a time — so it can take a while. While it’s processing it keeps you apprised of status with a screen like the one below:

Summary

In this article I made an advertisement for my (soon to be created) Turms decentralized store. I sent the advertisements to Ethereum addresses that are registered with Turms AMT (slowly, we’re beginning to see more people registering their Ethereum addresses)— I paid a “spam fee” to each of those addresses for the privilege of sending the advertisements, for a total fee of 18.5 Finney (about five USD today). I think that’s a reasonable fee, considering that my audience is pre-screened and have indicated openness to receiving these sorts of advertisements.

If you registered an Ethereum address with Turms AMT (and you didn’t set your spam fee too high), then you should have received my advertisement — and a small payment! If you haven’t already registered an Ethereum address with Turms AMT, then you’re leaving money on the table — because this sort of advertising will surely become more popular after the Turms decentralized marketplace launches. If you haven’t registered your address yet, check out my step-by-step guide, or you can just wing it here.

Ananya Agarwal