What is a vanity address? An address which you choose yourself (or at least part of it).

How difficult is to generate one? Its depends on its exact structure.

Let’s assume that we want to generate an IOTA vanity address with a prefix X of length k. Each character of an IOTA address has 27 (=3³ [A-Z9]) possible values. Since the only way to find out the private key for a given address is to use brute force, and that the probability of finding an address that starts with X is 1 in 27^k (1:27, 2:279, 4:531.441, 6:387.420.489, …), it is easy to realize that the generation of an IOTA vanity address is a computationally expensive process.

If to this is added the fact that one of the characteristics of IOTA is that when an address is used to transfer IOTAs it should not be reused, it is easy to understand why there are not many articles on how to generate IOTA vanity addresses … .

In my opinion, an IOTA vanity address is not very useful, but what do you thing about a MAIA vanity address? It sounds much better, do not you think? 🙂

What is MAIA? A public MAM channel in which each message is an IOTA address and which always returns the last message. Since a MAIA is like a ‘fixed address’, generate a MAIA vanity address is not only useful but also advisable (if you want to generate a shareable address, do not you think that sometimes it’s better that it be recognizable?).

I have done some tests and I have developed a small tool using the IOTA rust implementation. It is programming using Rust and I do not know how to program in Rust, so you can get an idea of its simplicity … . Why it has been developed using Rust? Because it is said that it is quite fast (I can say that Rust is much faster than JavaScript for this).

In short, maia.vanity.gen is just a proof of concept for the generation of MAIA vanity addresses and there is a lot of room for optimization. While I write this on an i5-750, I am running the generator in the background. This is the last output of the tool (4 threads):

c = 115000, seconds = 6320 c = 115000, seconds = 6377 c = 115000, seconds = 6389 c = 115000, seconds = 6393

Translation: 460.000 addresses (4 threads * 115.000) in 6.393 seconds (the slower thread), or what is the same ~72 addresses per second.

Below I show you some of the MAIA vanity addresses generated (you should be very stupid to use any of these as your personal address… )

Prefix: IOT Seed: BONYLU9PJSMRSPBBZRFQKJEWEFBCWKFZWCEXPE9KIHUMTSRPGKQSRCQBUZVFRAIGQEQMFUIZVHOQCHBDQ Address: IOT9PVXIATCAUNDIXUTOFECXRQT9QGNDBNBBWCNDBDRERNSDPPCJWGDDTFGASUNVBISLPMC9QSABRFMSI Prefix: FJE // My name is Fco Javier Estrella Seed: BHPOLCQKYXJZHZIGNHQGVHWLFCFQAYPLNMWEBRKHCPDKWFJSAWRSIYEKTNXSUXADCSMWKIKEVVXQNGILP Address: FJE9SEOEFROKIDHIZREARZVUBVECL9ASRKMURNOGY9SUKMSGWLHKMLZFJCKWNDNLXUGUFGMXBNHPJHGXE Prefix: FJES // Fco Javier EStrella Seed: CGJBFDNTAZJQUKLKXVDUWGSDXZ9ZEBCXMLBIEVLNSXEPOVOJCPASUZIMTDGVBNODTUORUBMSMINKND9QA Address: FJESJKDENQLKIEXKGQSEMFAROQSXFOFIBEXENXRM99VBCIANETONHHQQIXKBXMCELWGFYZRSFOMLITBUV Prefix: JAVI // Abbreviation of Javier ... Seed: XHMWMZSEEQGSQRQGRF9TNUFTBSOBULAAAQFDLTHUTSFQXU9BNCDMHYKIPMVRSXMNGJWJZDIUOVSCFHTCV Address: JAVIVRPTDE9CSIOITQ9GBCDWOHVATXRKNENN9J9R9ZKFCOCTHCRFTSPOUPPHRPUPBJCHV9LDSHXFVZNKC Prefix: MAIA Seed: KFUFCZTJQEMCZTHOQPTIZUFUEANMV9LLBQAKKEDGW9WAIBGI9YSMWJNBFOFMKLAZNNLNDVFAUYELSMXIN Address: MAIAISICOTBGKDLZJUZFQLUVVRDYZKSRTMTZFQFLZJAUHLGJFOELQUT9EQYSE9PWEPKGJVXQMPXWCFIUL

That’s all folks! In case you want to donate some IOTAs to support my work, send them to my personal IOTA address:

KIFEHFFMQDPHLHGURUXDZGTJVDZMDLCFSVXXRNXKCIXJZSJNBWULBLQXYSNZNVGIJXVCITXREHUUKCHGDCSEBGYDEB (it is no longer my address, use my MAIA)

Or better yet, send them to my new MAIA (JAVIEMISWGJ… 🙂 ) We are making changes to the protocol and sometimes the node that we use is down, so for now it is better that we do not take risks :’): donation address.