# 2.3 Backup the seed phrase mnemonic
Anybody who discovers your 24 seed phrase can steal everything, tokens, ID, sigantures, documents. For this reason it must be kept absolutely kept safe at all cost. It should never be kept in digital form, unless encrypted inside the phone secure enclave. Taking a picture of the seed phrase is really a bad idea As an app developer you need to undertand this, and find ways to educate and force your users to back it up on paper.
Here's some suggestions:
Step 1. Show user the 24 words and ask thme to back it up on paper, and warn them not to take a screenshoot Step 2. Ask in a different page 3 random words. They must be different each time they open this page! (i.e. the 5th, the 17th and the 23rd ) Step 3. If they enter them correctly you can be almost sure they have them back them up. If not bo back to step 1
# Use cases
Save mnemonic words.
# Background
From Wikipedia:
Mnemonics make use of elaborative encoding, retrieval cues, and imagery as specific tools to encode any given information in a way that allows for efficient storage and retrieval. Mnemonics aid original information in becoming associated with something more accessible or meaningful—which, in turn, provides better retention of the information.
# Step by step sequence
- Ask for 3 random words;
- Finally, compare the 3 words with those of mnemonic.
# Code Examples
Here's an example of the implementation in all the available languages.
# Dart
final randomNumbers = [22, 1, 10];
final mnemonic = ['push', 'grace', 'power', 'desk', 'arrive', 'horror', 'gallery', 'physical', 'kingdom', 'ecology', 'fat', 'firm', 'future', 'service', 'table', 'little', 'live', 'reason', 'maximum', 'short', 'motion', 'planet', 'stage', 'second'];
final question = [
mnemonic[randomNumbers[0]],
mnemonic[randomNumbers[1]],
mnemonic[randomNumbers[2]],
];
final answer = ['stage', 'grace', 'fat'];
final eq = const ListEquality().equals;
final result = eq(question, answer) ? 'Right answer' : 'Wrong answer';
2
3
4
5
6
7
8
9
10
11
12
# Kotlin
val randomNumbers = listOf(22, 1, 10)
val mnemonic = listOf("push", "grace" , "power" , "desk" , "arrive" , "horror" , "gallery" , "physical" , "kingdom" , "ecology" , "fat" , "firm" , "future" , "service" , "table" , "little" , "live" , "reason" , "maximum" , "short" , "motion" , "planet" , "stage" , "second")
val question = listOf(
mnemonic[randomNumbers[0]],
mnemonic[randomNumbers[1]],
mnemonic[randomNumbers[2]]
)
val answer = listOf("stage", "grace", "fat")
val result = if (question.equals(answer)) "Right answer" else "Wrong answer"
2
3
4
5
6
7
8
9
10