artimonist

Crates.ioartimonist
lib.rsartimonist
version2.0.1
created_at2025-01-15 07:50:48.593285+00
updated_at2025-08-22 01:03:43.410341+00
descriptionA tool for generating mnemonics and wallets.
homepagehttps://artimonist.org/
repositoryhttps://github.com/artimonist/core/
max_upload_size
id1517230
size434,281
Artimonist (artimonist)

documentation

README

Artimonist

A tool for generating mnemonics based on diagrams.

Crate Info API Docs cli web

Sample diagram

  let mut mx = [[None; 7]; 7];
  mx[1][1] = Some('🍔');
  mx[1][5] = Some('🍟');
  mx[3][3] = Some('🍩');
  mx[5][1] = Some('🍦');
  mx[5][5] = Some('🌭');
  let diagram = SimpleDiagram(mx);
             
🍔 🍟
 
🍩
 
🍦 🌭
 

Generate mnemonic

  let master = diagram.to_master("🚲🍀🌈".as_bytes())?;
  let mnemonic = master.bip85_mnemonic(0, 15, Default::default())?;

"nice dumb debris type pair until convince pet depend dragon seed exchange rebel belt alcohol"

Generate wallet

  let priv_key = master.bip85_wallet(0)?;

L3X74sTsPBpoJx7MNWt36qnsGE1ubdf2BQVTczU7i14D94BhNdmc

Generate master key

  let xpriv = master.bip85_master(0)?;

xprv9s21ZrQH143K3Dm1EavEpwYyfZD7su3245k5CES8qnt6VVxznxnPqMnUx5cFLJDao9mcyELm9UVNbBTMYodNabKmvcj3WazUaRNqpz4qd7A

Generate password

  let pwd = master.bip85_password(0, 20, Password::Emoji)?;

🐬🔑🍎🐔🔒🚗🐸💧🌷✋🐍🚲💀💪💀🍄✈🍀🍉⚡

Entropy Evaluation

mnemonic 12 words entropy = (2048)¹² = (2¹¹)¹² = 2¹³²
mnemonic 24 words entropy = (2048)²⁴ = (2¹¹)²⁴ = 2²⁶⁴
(In fact, because the tail of 4bits/8bits is a checksum, the real entropy is 2¹²⁸/2²⁵⁶.)

Only Emoji Characters

emoji characters amount 1,431 ≈ 2¹⁰
9 cells permutation in 7 * 7 grid = (A₄₉⁹) = 49! / 40! ≈ 2⁴⁹
9 emoji characters in simple diagram = (2¹⁰)⁹ * 2⁴⁹ = 2¹³⁹ > 2¹³²
18 cells permutation in 7 * 7 grid = (A₄₉¹⁸) = 49! / 31! ≈ 2⁹⁵
18 emoji characters in simple diagram = (2¹⁰)¹⁸ * 2⁹⁵ = 2²⁷⁵ > 2²⁶⁴

So, 9 emoji characters provide the equivalent encryption strength of 12 mnemonics.
and 18 emoji characters provide the equivalent encryption strength of 24 mnemonics.

mnemonic words emoji characters entropy
12 9 2¹³⁹
15 11 2¹⁷⁰
18 13 2²⁰⁰
21 16 2²⁴⁵
24 18 2²⁷⁵

Any Unicode Characters

unicode characters amount 155,063 ≈ 2¹⁷
6 cells permutation in 7 * 7 grid = (A₄₉⁶) = 49! / 43! ≈ 2³³
6 unicode characters in simple diagram = (2¹⁷)⁶ * 2³³ = 2¹³⁵ > 2¹³²
12 cells permutation in 7 * 7 grid = (A₄₉¹²) = 49! / 37! ≈ 2⁶⁵
12 unicode characters in simple diagram = (2¹⁷)¹² * 2⁶⁵ = 2²⁶⁹ > 2²⁶⁴

So, 6 unicode characters provide the equivalent encryption strength of 12 mnemonics.
and 12 unicode characters provide the equivalent encryption strength of 24 mnemonics.

mnemonic words unicode characters entropy
12 6 2¹³⁵
15 8 2¹⁸⁰
18 9 2²⁰²
21 11 2²⁴⁷
24 12 2²⁶⁹

ComplexDiagram can be filled with 50 unicode characters in a cell, providing better encryption strength.
(In fact, higher entropy values are meaningless because the length of the private key is 256 bits. So, we support multisig address derivation.)

Commit count: 179

cargo fmt