We both know, crypto wallet addresses are weird, complex, difficult to recognize or remember, that was our first impression when we first learned about bitcoin and today it is also the first, second and third impression of friends and family we are onboarding to crypto-land.
The problem
You can hardly memorize, recognize or distinguish this
0x6719a70e3b9652d0cd3d4cd28a93556497e2bf96 From
0x6719a25fd0b48da00cd865e1f45ea6216b90bf96
You can hardly transmit the address or QR code via a voice channel
Solution
Human brain has great capacity to recognize patterns and retain complex visual perceptions, when he can make sense of it, and the most recognizable in this context are geometric shapes & colors, what if the wallet address could be express (encoded) in Colorful Symbols string (using basic 6 unambiguous colors and set of universally recognizable symbols like triangle, square, circle, star, heart arrowā¦ etc)
So this address: 0x6719a70e3b9652d0cd3d4cd28a93556497e2bf96
Arenāt those ārobot facesā that we get every time we generate new addresses from MyEtherWallet or MyCrypto good enough for the same purpose of memorization, recognition, and differentiation?
The ārobot facesā take up far less space and can sometimes look cute too.
I got one ārobot faceā that looks like a cyclops sheep, while another one that looks like an innocent-looking smurf.
What will imitate / produce all the myriads of differing voices (assuming a holder has multiple addresses) for transmission? If it requires the press of a button, then what limitation do the ārobot facesā pose that technology cannot resolve?
Or maybe we should find a way to scan those ārobot facesā for their corresponding addresses? Then all we need is just carry our ārobot facesā around.
Edit: My mistake for misunderstanding what author meant by voice transmission but now that I do, I still do not understand how superior / effective / efficient is āred scissorā to ānine sixā, or āgreen speakerā to āsix sevenā. Neither do I understand in what situation would voice transmission be the only viable option.
BIP39 mnemonic is a fabulous gadget for generating deterministic keys (private key), but you canāt express your Wallet Address (public key) with that 2048 words. however PGP word list can do that, encode any hex hash in word list, and despite the fact itās only English, Momcode Geometrical Shapes and Colors are to recognize, memorize, and highly recognizable across nations/languages
Do you remember your Identicons, or Blockies of myEtherWallet, myCrypto, Ethereum wallet and Mist?
I do remember last 3 digits of my wallet address (and i know widely people memorize first or last digits of their addresses) but I canāt remember my Blockie icon at all, itās just great for comparing and matching.
Secondly, all Identicon family including Blockies, MonsterID, Retro, Vash, Jdenticon, Jazzicon, IdentiHeart, and Robohash works beautifully as 1) avatar 2) comparing and matching,
but it is not transmittable via voice/phone and much harder online (for decoding)
itās something you will have along-side your wallet address (will never replace it for day-to-day use)
While Momcode could be used with some adjustments as 1) replacement of Idneticion/blockies (avatar / matching and comparing 2) with Momcode keyboard -something like emoji keyboard but for wallets- can replace the address on day-to-day use completely 3) Scan on similar fashion to QR code
I would say Momcode could be seen as just describable Identicon, with higher recognizability and Memorability.
I hear you, and I totally agree, green speaker šŖ isnāt superior to 67
but as a string of arbitrary hex ex. 0xA3F0272F35 is inferior to ā²š§š” ā„ā in terms of memorability, distinguishability and transmit-ability particularly for non-english speakers
Transmit-ability over voice channel is actually what triggered the research at first place, Iāve introduced and successfully installed wallets for friends and family, and had a hard time assisting (over the phone) my mom to send Ether from her smart-phone wallet. so we call it Momcode : p
Important to mention particularly speaker, scissor, airplane, telephone arenāt necessarily going to be there on final version, itās just on current lists today for experimentalā¦ and some characters like start, triangle, heart, squareā¦ iām confident it will stay, but the idea of test-lab is to find the simplest unambiguous set 16 to 32 shapes to be used in combination with basic colors, and then sorted by frequency.
@Cygnusfear your approach with IdentiAddress is very interesting, I look forward Etherscan has that kind of built-in instead of chrome extension, Iāve responded over there and your PoC inspired me to add new Encoding Dictionary for testing, check it out https://momcode.io/lab/
Hmm, actually I do. I donāt ārememberā it in the sense that I canāt describe it, but I recognize it every time I see it. If I canāt recognize the image, I will know it. This is how visual pattern recognition works. I can not describe face of my sister to you, but I easily recognize her.
So a single complex picture is probably better for visual confirmation than a series of simpler ones.
Would be really interesting to see an alternative to blockies that better resembles faces.
Letās narrow down the problem. You want to be able to transmit the whole address over phone? Or you want to make sure that the address youāve sent over some digital channel is complete and untampered?
The former seems a really rare use-case: to send āinternet moneyā address to somebody who doesnāt have internet? For the latter, the PGP word list would work just fine: one person reads the words aloud, the other one checks. We will apply the transformation to the hash of the address, so changing just one digit will change the entire series.
BIP39 words are less distinct on pronounciation, but since you only need to compare the phrases this will probably work. The upsides: 1) itās a standard with multiple languages, 2) since a BIP39 word has higher entropy, you only need 16 of them to describe the address (as opposed to 20 words from the PGP list).
@drhus
The lab is great! Is there a repository where I could submit a PR / tweak the encoding?
@gluk64
This proposal appears to address several goals/problems regarding addresses.
Communicability: addresses are difficult to communicate verbally
Currently: very prone to human error and a horrible experience
Identification: Replace the address with something that can be humanly verified / compared / hashed
Currently: Frequently occurring attack vector. URLs are actively targeted this way. Very prone to human error
Blockies only solve identification, there are some downsides to them:
Downscaling Blockies really hurts their legibility/function (they merge into similar icons)
Their implementation differs between implementers (metamask blockies are different from etherscan)
They do not automatically appear for addresses āin the wildā (this can only be done by a browser extension)
Identification & recognition only works if people have the time to actually develop that pattern recognition (not very useful for new users)
I would prefer these problems to be remedied by ENS. This hinges on the pace of ENS adoption.
To me it appears that momcode appears to be an interim solution for ENS adoption. It addresses some of the shortcomings of Blockies but without large scale adoption suffers from the same adoption problem as ENS (and there are several implementation issues).
Iād say an npm package/library that implements either of these techniques is interesting and might help adoption; however if the implementation is left to the dApp then it creates a false sense of security for the user. All things considered, wallets may be the only third party to which the user can delegate such ātrustā.
Quick thought:
A simple website that converts address from and to emoticons would be a solution to the verbal communication problem (it basically delegates the problem to using an URL)
Take note that the author tries to innovate the UI for older generations. āMomcodeā may be more practical to generations before us, but as younger generations come into the picture, such āmomcodeā standard may not last. Besides, the older we get, the less likely for us to adapt to newer innovations to the extent that someone else need to go backward to accommodate us. Pattern recognition is an inherent self-evolving neural capability and need not be developed as of now by anyone except newborns. In my opinion, the identicons (thank you drhus for educating me on that, I had no idea what they are called before this) remain the most viable if we can find the solutions to scan them for both input and output purposes. So far I only see them being an output from a new address generation. If they can be scanned / analyzed as an input, then I think we can open up some possibilities to better UI/UX.
The key is to understand the user, even if in a broad category such as āan elderly personā.
How would we do this? Well, as scientifically as possible. This means proposing a hypothesis, making sure the hypothesis can be disproven (Popperās falsifiability), testing/validating the hypothesis, enabling peer review, enabling alternative hypotheses to be a part of the process.
What users actually need has to be established concretely, using an agreed-upon process, or we will imagine/speculate/guess, and end up with solutions that are not optimal.
Iām familiar with bip-39 seed phrase implementation for private key and derived addresses but not for public key, would you be so kind to refer me to a such implementation? a library that I could test to generate Bip39 mnemonic phrase of a wallet address.
@Cygnusfear do you mean by a website to convert from and to emoticons? an input (copy/past or with special keyboard) to decode the symbols back to hash address? It is something I was thinking about a lot, I donāt have an easy solution for copy/past but on the road-map a milestone for Momcode keyboard (16-32 symbols with 8 colors) which could be used on a website or integrated with Crypto Wallet (in a similar fashion to emoji keyboards), check out Milestones - drhus/MomCode Ā· GitHub
You said it all
A Better UI/UX and Security! for 30-40 year we mainly used hashs for db/ssh/pgp and store it safely to be used once a while copy/past, Today with cryptocurrencies weāve to transmit and use it in a daily base, not just me and you but people much less sensitive to all types of associated risk!
a deterministic (rule-based) visual linkage which serves in the capacity of identicon as distinguishable, +scannable and describable could replace both QR code and Identicon, and would provide a simpler and safer usage.
I donāt know any implementation, but itās easy to build one. What programming language do you use?
How it can work: you split the 160-bit address into 16 10-bit parts. Like PGP words, each part is appended with evenness bit (0 for even words in the phrase, 1 for odd ones). The resulting 11-bit number is the number of word in BIP39 list.
indeed, that works like a charm 16 words of already existing standard list multi-lang. a small online javascript gadget will definitely be useful, and the fact that itās 16 words and Ethereum address has no checksum (but for case-sensitivity) we could add 4 bytes or 1 -2 words checksum later!
If you prefer a checksum, then I think evenness bits are not necessary, so we can keep 16 words length with a 16 bit checksum. Iām not sure even that is necessary for our use-case of phrase verification, itās just a way to create some redundancy.
I believe all/majority of wallets/dApps will use name systems (such as ENS) in the future. Thatās what weāre all used to, so I guess thatās the best choice if we want mass adoption.
However, your idea is interesting and I guess it could be worth exploring (along with similar ideas) for some alternative use cases. For example, crypto community is very inclusive and open (one of the reasons I like it so much), so it would be awesome if we have good UX solutions in place for people with disabilities, too.
Yes, itās an easy way to get an ENS now subdomain. It will help solve the āover the phoneā issue and is easy to manually check for correctness. So this a great solution to many of the problems we associate with public keys.
Many people I know have an @gmail or @icloud email address and do not buy their own domain. So it is similar to the user experience they are familiar with.