Over the past few weeks we have been working to encapsulate and open-source another library meant to be included in some way or the other into the final Deviota Manager. The result is quite interesting and it may serve the community as a playground and maybe as a catalyst for further innovation. Meet Deviota Romeo (ULL).

What is Romeo?

Simply put, Romeo (apart of being another sort of carrot, as you might have guessed) is a ledger. You might call it a “wallet”, but it really goes beyond that definition. Here are the feats:

1. Login using a username and password

Romeo uses a username/password combination to login. It has a minimal length (10 chars for username and 12 for password) and certain character requirements like lowercase/uppercase, symbols and number usage. You could even use emoticons, spaces and any possible variation of unicode to create strong login details. Everything is valid and, obviously, the longer the username/password the higher the protection.


Using the login details a seed is produced with “Kerl”, which is used to login into your ledger. But, what is this ledger? It is a set of pages:

2. Ledger Pages

One of the most “annoying” things with the former, stateless wallet was the time needed to login. Trinity Wallet might solve it with statefulness. I am pretty sure it will accelerate the things quite a lot. However, nevertheless, when a seed has too many addresses and/or transactions, it will still take longer and longer to synchronise. You might be able to login faster into Trinity, but how long will it take to sync up-to-date?

Our approach is a little different. Just like in a paper ledger shown above, Romeo Ledger uses “pages”. The seed that is created when you log in, is not a seed for the “wallet”, but a seed that is used to create page-seeds.

You start with one page. When it gets full and too slow to sync, you can just create a new page, automatically passing the balance from the old page to the new one — just like on the old-school ledger!


What’s the advantage? The new page is the only one that is being constantly synced. And a fresh-new page is lightning-fast! The login process to a new page actually takes a few seconds. The same time it takes to sync.

Old ledger pages are not automatically synchronised, but still can be accessed and synced manually.


Each page’s seed can be copied and used in a wallet of your choice. Each page has its own addresses and transactions. All page’s addresses are shown in a comprehensive overview. You can see at a glance, which addresses are empty, which hold IOTAs and which have been used and should be discarded:

3. No Bundles

To prevent certain kind of attacks and performance issues, Romeo does not load complete bundles, but only transactions related to the given address(es). It links the transaction and the bundle at thetangle.org (which will be replaced by a custom on-demand view in the future), but does not load that information by default.

4. Deviota Field backend

To get rid of manual re-attachments, promotions and server selections, Romeo uses Deviota Field load balancer. As soon as the service is decentralised, it will automatically select the nearest Field service.

5. Single HTML file

Romeo is compiled into a single 3.7MB HTML file, including all images, fonts, stylesheets and scripts. It has zero dependencies from the outside world.

Why? Because it can be saved on your computer, your USB stick or your server, accessible from anywhere. It does not need installation and just needs a browser to work. One file, zero dependencies — million usage ways.

6. Statefulness

Just as the recently alpha-released Trinity Wallet, Romeo caches all the data. It is stored encrypted in your browser. Without your login details, the cached data is just a soup of letters and numbers. This allows faster login and quicker sync.

The cached ledger data can be backed up and restored anytime. This is particularly useful, if you intend to use Romeo on another computer/browser and do not want to wait for the sync, or after a public snapshot.


7. Transfers with donations

Romeo’s transfer screen comes with an integrated option to donate to the Deviota Field Nodes working hard behind the curtains. With each transaction the user can tip the nodes with just one click.


It is just a small additional incentive for the Field Nodes, but the technology behind will be used in the future to add multiple-destination payments and paid services support.

8. Static addresses

Next frontier that we will be pushing is a kind of “static addresses”. Romeo ULL will automatically publish your most recent address similar to a MAM stream of data. Another user can add the stream to its own “contacts”, which will always display the most recent address when making a payment.

9. Semi-automatic payments: direct debits and standing orders

The platform we are building will be used as a base to test and fine-tune the direct debits and standing order protocols for the Deviota Manager. Just like the static addresses, these features are still being developed and tested.

Our main focus until now was innovating new features, so there is not much of an eye-candy compared to Trinity, for example. There is also no responsiveness, hence the ledger looks ugly on a smartphone. All this can be done with enough resources, but is not our number one priority at the moment.

When Romeo?

Too late for a pre-announcement, because it’s already here! At least the features 1–7 can already be tested. Just get your copy of romeo.html file and take it for a spin.

Wherever you download Romeo, please check it’s MD5 signature using your OS’es command-line tools or online tool like OnlineMD5. The signature should be identical to the one published on our release page on GitHub.

A better way is to download the source-code, build locally and compare the signatures.


Romeo is not intended to replace your wallet. At least not for the time being. It’s main raison d’etre is experimental. It is not audited and might very well never be so. So be careful and test it at your own risk.

Feedback, bug reports and ideas are always welcome!

Thanks for reading!

Roman Semko

IOTA Donations welcome: