/Daefen

A library for encoding and decoding large numbers into a pronounceable, high density, string, that uses 3456 syllables as its base.

Primary LanguageJavaScriptMIT LicenseMIT

Daefen

A library for encoding and decoding large numbers into a pronounceable, high density, string. The library converts any number into a base 3456 and then replaces each of these by a syllable. There is then a basic logic into joining some syllables as full words.

This is intended to build mnemonic seed phrases for private keys. This library doesn't handle creation of random digits, just converts it to and from the words. The rationale being that when users are creating "mnemonic" phrases, often the goal is not actually memorize them, but instead just to be able to jot them down in a piece of paper. The pseudo-words generated here are easier to write down are less than half the size of actual English words. The words do not sound like any particular language, rather sound like an arcane magical script or a sci-fi alien language.

Examples

This has the bits equivalent of a 12 word seed phrase (from a dictionary of 1000 words): <<<<<<< HEAD

Icuzgak Raowah Kavnik Evmub Usalon

The library accepts numbers as strings, both in decimal and in hex format, meaning that it can convert any ethereum public or private key to and from a phrase. They can be used for a paper wallet although using Daefen as a deterministic phrase seed is probably more useful. You don't need to convert the phrase into a number using this library, just use it as a seed source.

0xdc9974d8d61ebb673b1d132e0b767f4e38fba057 : Dy Lokgym Panviz Ymyvoy Jycbiz Campue Gubcil Ogo

Both words below represent numbers with about 55 bits of entropy. Combined they make up 115 bits of entropy, into a short, but writable seed. If you try hard enough you might even be able to memorize them (how many names of fictional places have you memorized?), but it's not really recommended. This library is just concerned in converting the numbers: you still need to generate your own randomness.

64,244,571,162,838,560 : Joadyl Meczak Hib

393,417,545,048,166,200 : Zofwus Kubzoj Wyi

It might be very useful for naming a large amount of things into pronounceable names not tied to any language. For instance, earth has 510,000,000,000,000 squared meters. If you wanted to give a unique name for each one of them, the last one would be named: Afnik Paa Ydjej. This ideally could be combined with variable amounts of precision, so only Afnik Paa could describe an area about 11 square kilometer (a city) or you could add an extra syllable (Afnik Paa Ydjej Bo) to describe an area with a precision of less than 3 cm.

There are about 8 billions Internet connection devices on the planet. If you wanted everyone to have a unique name on this schema, then the last one would be called Roozit Aci. There is an estimate of 10 quintillion insects on earth, if you wanted to name each individual, the last one would be named Edcah Ocudug Usalon.

The name of the library is the name given to a million: Daefen

It works like a base as you can see here:

0 : Ab

1 : Ac

2 : Ad

...

3,454 : Yzu (This is a single syllable)

3,455 : Yzy

3,456 : Acab (Ac + Ab)

3,457 : Acac (Ac + Ac)

And so on.

Also, while this library is not meant for making English phrases, it can incidentally make some:

6,145,430,305,248 : Juicy Kebab

376,430,100,097,166,371 : Winter has come