Hello!
I have been working on a protocol to map addresses to short mnemonic phrases, to make it easier and safer to handle them. The concept is simple: every address that “appears” on the chain (sends/receive a transaction, smart contract creation, etc…) is assigned a position number. This number is then converted to a mnemonic as BIP39 does it for seed phrases.
Since the number is still rather small (less than 300M addresses have been witnessed on mainnet), the resulting phrase is short. With 11 bits per word, 8 billion addresses could be “encoded” on 3 words.
A demo can be tested here. It also shows how this can be integrated with ENS and used on any wallet/explorer that supports ENS offchain resolution:
This demo reserves 4 bits for a checksum. I thought it would help lowering the risk of typing a wrong word and getting a different address. However, every bit of checksum divides the number of possible addresses by 2.
I considered using less bits for the checksum, and I’m wondering if I should use a checksum at all: most of the addresses are garbage (old wallets, spam…) and the risk of generating a close mnemonic to trick a user into sending funds to an attacker was low. Especially since the attacker must detect the address at its creation.
A bigger address space would help integrate Layer-2 addresses without overflowing to 4 words.
Note: mnemonics for 3 or more words are immutable, they will always point to the same address. I reserved the 2-words mnemonics for ENS-like registration that will be mutable and transferrable.
I would be happy to hear any feedback regarding this idea. Also, what would be your opinion on the checksum ?
Thank you!