Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seed recovery 🌱 #300

Merged
merged 80 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
68d2c79
bump cashu-ts to 0.9.0
KKA11010 Jan 27, 2024
19b1ac3
add screens for seed setup. add seed utils
KKA11010 Jan 27, 2024
5e42014
add seed screen in options
KKA11010 Jan 28, 2024
16212cc
add screens related to seed backup
KKA11010 Jan 28, 2024
bd3a249
add translations, clean up
Jan 29, 2024
06d59f5
Add SENTRY_AUTH_TOKEN to .example.env.dev
KKA11010 Jan 29, 2024
75616f3
Update translations and image sizes
KKA11010 Jan 29, 2024
dd7fd20
Update wallet/index.ts with restore method details
KKA11010 Jan 29, 2024
25344f6
wallet/index.ts update comment
KKA11010 Jan 29, 2024
9efb45d
update comment
KKA11010 Jan 29, 2024
ba38476
add missing translation. update mnemonic screen
KKA11010 Jan 29, 2024
133d6e1
Add counter increment
KKA11010 Jan 30, 2024
cdf6186
restore
Jan 31, 2024
1527461
Refactor wallet recovery and add recovered proofs
KKA11010 Jan 31, 2024
2d37281
test restore
Feb 1, 2024
fcc2ae1
update restore counters
KKA11010 Feb 1, 2024
2b54593
clean up
KKA11010 Feb 2, 2024
4087bf6
Remove unused screens and components
KKA11010 Feb 2, 2024
1896099
Remove unused functions and imports
KKA11010 Feb 2, 2024
06db115
clean up restore screen components
KKA11010 Feb 2, 2024
661493a
remove dashboard animation
KKA11010 Feb 2, 2024
5bd3717
Add TODO custom recovery mint URL input field
KKA11010 Feb 2, 2024
b407dbe
update restore screens
KKA11010 Feb 2, 2024
9c0f521
Update screens and utils
KKA11010 Feb 2, 2024
8e12a18
Fix input comparison bug in ConfirmMnemonicScreen
KKA11010 Feb 2, 2024
29d6cf8
Update wallet/restore.ts and screen components
KKA11010 Feb 3, 2024
8185ba5
Add RESTORE_OVERSHOOT, update wallet/restore.ts
KKA11010 Feb 3, 2024
ccba92b
Add TODOs
KKA11010 Feb 3, 2024
e17161a
Add comingFromOnboarding flag to Payment ProcessingError screen
KKA11010 Feb 3, 2024
b9c58fe
add restore to tx history
KKA11010 Feb 3, 2024
c466c9a
add hook useRestore
KKA11010 Feb 3, 2024
2a76f51
clean up imports
KKA11010 Feb 3, 2024
46fe6a0
add translations, clean up, lint
KKA11010 Feb 3, 2024
59f1f6a
add functionality to SelectRecoveryMint
KKA11010 Feb 3, 2024
d32e636
Remove TODO
KKA11010 Feb 3, 2024
4316418
Update "Add Mint URL" text to use translation key
KKA11010 Feb 3, 2024
8069711
clean up
KKA11010 Feb 3, 2024
4fe56af
add a disclaimer and recommendations screen
KKA11010 Feb 3, 2024
65e94ca
add TODO
KKA11010 Feb 3, 2024
fe68bcc
add basic tests
KKA11010 Feb 3, 2024
1242415
Update German translation and restore disclaimer
KKA11010 Feb 3, 2024
820ca83
Add TODOs
KKA11010 Feb 3, 2024
5c1c956
Update package.json version to 0.3.0
KKA11010 Feb 3, 2024
d58c48c
Update getBalance function to getMintBalance
KKA11010 Feb 3, 2024
b61a64a
Add seed migration hint to translation files
KKA11010 Feb 3, 2024
43ac0bf
Update seed migration hint for multiple mints
KKA11010 Feb 3, 2024
3e716cc
Update english and german translation
KKA11010 Feb 3, 2024
b913213
Commented out unused code in getCurrentKeySetId function
KKA11010 Feb 4, 2024
b1687ab
fix require cycle
KKA11010 Feb 4, 2024
7261030
Add new types and interfaces for PayLnInvoice and RequestToken
KKA11010 Feb 4, 2024
7a01034
Refactor screen imports in Navigator.tsx
KKA11010 Feb 4, 2024
e8bc673
Add InfoIcon to SeedScreen
KKA11010 Feb 4, 2024
bb3bbfc
Adjust header height in Restore/Seed screen
KKA11010 Feb 4, 2024
e5fcc6f
delete seed update screen component
KKA11010 Feb 4, 2024
38509c8
Refactor header actions styling in SeedScreen
KKA11010 Feb 4, 2024
32446b3
add flag and refactor pin setup screen
KKA11010 Feb 4, 2024
e1ec131
Add seed check before retrieving counters
KKA11010 Feb 4, 2024
6b292d2
update error handling
KKA11010 Feb 4, 2024
e5d509e
Fix seed screen navigation bug
KKA11010 Feb 4, 2024
c982024
prevent back navigation in recovering screen
Feb 5, 2024
7c9c89f
add warning in payment processing screen
Feb 5, 2024
78a135a
Refactor text alignment in ProcessingScreen
KKA11010 Feb 6, 2024
3e80007
Refactor payment process logic
KKA11010 Feb 6, 2024
192e69f
Add hasSeed parameter to initialParams
KKA11010 Feb 6, 2024
889586f
temporary ignore eslint error
KKA11010 Feb 6, 2024
9545ac7
Refactor error handling in Pool class
KKA11010 Feb 6, 2024
fa7bfc8
quick fix ci (fmtJson makes tsconfig.json invalid for jest)
KKA11010 Feb 6, 2024
b42d25c
Fix condition for skipping seed setup
KKA11010 Feb 6, 2024
9af69a3
Refactor MnemonicScreen component padding in warnContainer
KKA11010 Feb 6, 2024
ce577b0
Remove unused code and logging statements
KKA11010 Feb 6, 2024
4c51a0d
Update translations for wallet recovery messages
KKA11010 Feb 6, 2024
3d4399d
remove backupToken screens and utils
KKA11010 Feb 6, 2024
fc82038
lint
KKA11010 Feb 6, 2024
4874484
Remove separator
KKA11010 Feb 6, 2024
a17fdec
Remove commented out code in SecuritySettings
KKA11010 Feb 6, 2024
0392e6b
Add marginHorizontal to separator
KKA11010 Feb 6, 2024
d9a7d83
fix ci
KKA11010 Feb 6, 2024
750a8f6
add option to manually increase the restore counters by 50
KKA11010 Feb 7, 2024
48168e9
improve counter store by removing json methods
KKA11010 Feb 7, 2024
02691e5
remove debuging logs
KKA11010 Feb 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .example.env.dev
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
SENTRY_ORG=
SENTRY_PROJECT=
SENTRY_DSN=

SENTRY_AUTH_TOKEN=

NODE_ENV=development
NODE_ENV_SHORT=dev
Expand Down
46 changes: 36 additions & 10 deletions assets/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,39 @@
"contacts": "Kontakte"
},
"common": {
"copy": "Kopieren",
"cycle": "Zyklus",
"manualCounterIncrease": "Zähler erhöhen",
"manualCounterIncreaseHint": "Die Zähler erhöhen sich automatisch nach jeder Transaktion, aber in seltenen Fällen kann dies fehlschlagen, was zu Fehlern während des Wiederherstellungsprozesses führt. Das manuelle Erhöhen der Zähler kann den Zustand beheben.",
"increaseCounterHint": "Sind Sie sicher, dass Sie die Zähler erhöhen möchten? Dies sollte nur geschehen, wenn Sie sicher sind, dass die Zähler nicht synchron sind.",
"noMintForCounter": "Sie haben keine Mints, für die Sie die Zähler erhöhen könnten.",
"counterIncreased": "Zähler um {{counterIncreased}} erhöht!",
"doneSafety": "Fast fertig... Sicherheitsüberprüfung",
"noProofsRestored": "Keine Beweise gefunden, um deine Wallet wiederherzustellen.",
"restoreErr": "Ein Fehler ist aufgetreten bei der Wiederherstellung Ihrer Wallet.",
"dontClose": "Bitte schließen Sie die App während des Vorgangs nicht.",
"recoveryHint": "Schreiben oder fügen Sie Ihren 12-Wort-Mnemonic in der richtigen Reihenfolge ein, getrennt durch Leerzeichen.",
"walletRecovery": "Wallet-Wiederherstellung",
"walletRecoveryHint": "Verwenden Sie ein Seed-Backup, um Ihre Wallet wiederherzustellen.",
"seedBackup": "Seed-Backup",
"12WordMnemonic": "12-Wort Mnemonic",
"secureWallet": "Sichere Wallet",
"secureWalletHint": "Generieren Sie und notieren Sie ein Seed-Backup, um Ihre Wallet zu sichern.",
"quickWallet": "Schnelle Wallet",
"quickWalletHint": "Erstellen Sie sofort eine neue Wallet. Der Seed-Backup kann später generiert werden.",
"skipSeedHint": "Sie können diesen Prozess überspringen und später ein Seed-Backup generieren.",
"mnemonicHint": "Die Seed-Phrase wird nie wieder angezeigt. Schreiben Sie sie auf und teilen Sie sie niemals mit jemandem.",
"confirmMnemonicErr": "Falsches Wort! Stellen Sie sicher, dass Sie Ihre Seed-Phrase korrekt und in der richtigen Reihenfolge aufschreiben.",
"selectRestoreMint": "Bitte wählen Sie die Mint aus, die zur Wiederherstellung Ihrer Mittel verwendet wird.",
"recoveringWallet": "Die Mint stellt Ihr Guthaben wieder her...",
"seedEnabled": "Seed-Wiederherstellung aktiviert!",
"confirmSeed": "Bestätigen Sie bitte Ihren Seed, indem Sie das richtige Wort eingeben.",
"aboutToLeaveTo": "Sie sind im Begriff die App zu verlassen",
"accept": "Annehmen",
"addEnutsMint": "eNuts mint verwenden",
"amount": "Betrag",
"back": "Zurück",
"backToDashboard": "Zurück zu Wallet",
"backupErr": "Etwas ist schief gelaufen während dem Sicherungsprozess.",
"balance": "Guthaben",
"balanceAfterTX": "Guthaben nach Zahlung",
"balTooLow": "Nicht genug Guthaben",
Expand All @@ -44,6 +70,7 @@
"cashOutFromMint": "Mint Auszahlung",
"change": "Rückgeld",
"claimed": "beansprucht",
"restored": "wiederhergestellt",
"claimSuccess": "{{amount}} Sats erhalten:\n{{mintUrl}}\nMemo: {{memo}}",
"claimToken": "Token in Anspruch nehmen",
"clear": "Löschen",
Expand All @@ -56,7 +83,6 @@
"copied": "Kopiert",
"shareInvoice": "Rechnung teilen",
"copyToken": "Token kopieren",
"createBackup": "Sicherung erstellen",
"createInvoice": "Rechnung erstellen",
"createToken": "Token Erstellen",
"createTokenErr": "Es konnte kein Cashu-Token erstellt werden. Bitte versuchen Sie es später noch einmal.",
Expand All @@ -73,6 +99,14 @@
"resetQ": "Wallet zurücksetzen?",
"delHistoryTxt": "Die Daten können nachträglich nicht wiederhergestellt werden.",
"disclaimer": "Haftungsausschluss",
"restoreDisclaimer": "Diese Funktion ist noch experimentell und sollte mit Vorsicht verwendet werden. Es wird nicht empfohlen, sie mit großen Geldbeträgen zu verwenden. Verwenden Sie es nach eigenem Ermessen. Die Entwickler, Mitwirkenden oder Betreuer dieser Software können nicht für Schäden, Verluste oder nachteilige Auswirkungen haftbar gemacht werden, die durch die Verwendung dieser Funktion entstehen.",
"restoreBattery": "Mindestens 20% Batterie.",
"restoreBatteryHint": "Wir empfehlen, dass Sie mindestens 20% Batterie haben, bevor Sie den Wiederherstellungsprozess starten. Je nach Datenmenge kann der Prozess eine Weile dauern.",
"restoreWifi": "Verwenden Sie Wi-Fi.",
"restoreWifiHint": "Wir empfehlen, dass Sie für den Wiederherstellungsprozess eine stabile Wi-Fi-Verbindung verwenden, um Unterbrechungen zu vermeiden und eine schnelle und sichere Wiederherstellung zu gewährleisten.",
"restoreForeground": "Halten Sie die App im Vordergrund.",
"restoreForegroundHint": "Bitte halten Sie die App im Vordergrund und schließen Sie sie während des Wiederherstellungsprozesses nicht, um Unterbrechungen zu vermeiden.",
"seedMigrationHint": "Der Seed gilt für alle Mints, allerdings können diese nur einzeln wiederhergestellt werden, notieren Sie also häufig verwendete Mint-URLs. Wenn Sie bereits Guthaben haben, jedoch noch kein Seed, erstellen Sie nach dem Generieren eines neuen Seeds einen Token und beanspruchen Sie ihn selbst mit der gewünschten Mint. Wiederholen Sie diesen Vorgang für jede Mint, die Sie sichern möchten.",
"ecashPayment": "Ecash Zahlung",
"english": "Englisch",
"spanish": "Spanisch",
Expand Down Expand Up @@ -113,7 +147,6 @@
"noFunds": "Nicht genügend Guthaben",
"noFundsForFee": "Nicht genug Guthaben, bitte lassen Sie Platz für eventuelle Gebühren: ~{{fee}} Sats",
"noMint": "Keine Mint gefunden",
"noProofsToBackup": "Keine Beweise verfügbar für eine Sicherung.",
"notQrCode": "Kein QR-Code!",
"noTX": "Noch keine Transaktionen",
"optionalMemo": "Optionales Memo",
Expand Down Expand Up @@ -229,9 +262,6 @@
"trustMintOpt": "Mint vertrauen",
"swapHint": "Diese Option erfordert eine Lightning-Zahlung, bringt Gebühren mit sich und kann die unbekannte Mint dennoch zur Liste hinzufügen, wenn eine Gebühren-Rückzahlung erfolgt.",
"trustHint": "Die mit dem Token verbundene Mint wird zu Ihrer Vertrauensliste hinzugefügt.",
"backupQ": "Wie funktioniert es?",
"backupHint": "Der aktuelle Sicherungsprozess stellt eine rudimentäre Umsetzung dar. Er erstellt ein Cashu-Token aus allen Mints und zugehörige Beweise, das nach neuen Transaktionen ungültig wird. Um den Token auf einem neuen Gerät wiederherzustellen, folgen Sie dem vertrauten Beanspruchungsprozess, und der alte Kontostand wird ungültig. Vermeiden Sie es, es auf dem aktuellen Kontostand einzulösen, um Fehler vorzubeugen. Es sei darauf hingewiesen, dass wir aktiv an der Entwicklung einer Sicherungslösung mit Passphrase arbeiten, um die Sicherheit und Bequemlichkeit zu verbessern.",
"singleBackupHint": "Hinweis: Sie können auch eine Sicherung für eine einzelne Mint erstellen unter 'Optionen' > 'Mint Management' > 'Mint auswählen' > 'Guthabensicherung'.",
"noDefaultHint": "Sie müssen eine Standard-Mint einrichten, um einen automatischen Tausch durchzuführen.",
"autoSwapSuccess": "Tausch erfolgreich!"
},
Expand Down Expand Up @@ -269,7 +299,6 @@
"addNewMint": "Neue Mint hinzufügen",
"atLeast2Mints": "Sie brauchen mindestens 2 Mints um einen Multimint-Tausch auszuführen.",
"awaitingInvoice": "Rechnung ausstehend.",
"backupNotCreated": "Mint-Sicherung konnte nicht erstellt werden.",
"cashOutAmountHint": "Es können Lightning-Gebühren anfallen, daher wird eine geschätzte Gebühr hinzugefügt und eventuell zu viel gezahlte Gebühren werden erstattet.",
"checkProofs": "Beweise überprüfen",
"checkProofsQ": "Alle Beweise überprüfen?",
Expand All @@ -296,7 +325,6 @@
"invalidUrl": "URL invalid",
"invoiceAmountHint": "Wählen Sie den Betrag an Ecash aus, den Sie erhalten möchten. Die Mint wird eine Rechnung erstellen, die Sie mit einer Lightning-Wallet bezahlen müssen.",
"invoiceHint": "Das kann einige Sekunden dauern...",
"lowBackupBal": "Kein Guthaben für eine Mint-Sicherung",
"lowBal": "Kein Guthaben verfügbar",
"meltAddressbookHint": "Wählen Sie Ihre eigene LNURL oder einen anderen Kontakt als Zahlungsempfänger aus.",
"meltInputHint": "Erstellen Sie eine Lightning-Rechnung oder geben Sie eine LNURL ein.",
Expand Down Expand Up @@ -338,11 +366,9 @@
"about": "Über uns",
"addressBook": "Adressbuch",
"advancedFunctions": "Erweiterte Funktionen",
"backup": "Sicherung",
"display": "Anzeige",
"history": "Transaktionsverlauf",
"language": "Sprache",
"mintBackup": "Guthabensicherung",
"mintSettings": "Mint Management",
"security": "Sicherheit",
"settings": "Optionen",
Expand Down
46 changes: 36 additions & 10 deletions assets/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,39 @@
"contacts": "Contacts"
},
"common": {
"copy": "Copy",
"cycle": "Cycle",
"manualCounterIncrease": "Increase counters",
"manualCounterIncreaseHint": "The counters increment automatically after each transaction, but in rare cases, this may fail, leading to errors during the restoration process. Manually raising the counters can resolve the state.",
"increaseCounterHint": "Are you sure you want to increase the counters? This should only be done if you are sure that the counters are out of sync.",
"noMintForCounter": "You have no mints to increase the counters for.",
"counterIncreased": "Counters increased by {{counterIncreased}}!",
"doneSafety": "Almost done... Safety check",
"noProofsRestored": "Found no proofs to restore your wallet.",
"restoreErr": "Something went wrong while restoring your wallet.",
"dontClose": "Please do not close the app during the process.",
"recoveryHint": "Write or paste your 12-word mnemonic in the right order, separated by blank spaces.",
"walletRecovery": "Wallet Recovery",
"walletRecoveryHint": "Use a backup seed to restore your wallet.",
"seedBackup": "Seed Backup",
"12WordMnemonic": "12-word mnemonic",
"secureWallet": "Secure wallet",
"secureWalletHint": "Generate and write down a seed backup to secure your wallet.",
"quickWallet": "Quick wallet",
"quickWalletHint": "Create a new wallet instantly. Backup seed can be generated later.",
"skipSeedHint": "You can skip this process and generate a seed backup later.",
"mnemonicHint": "The seed phrase will never be shown again. Write it down and never share it with anyone.",
"confirmMnemonicErr": "Wrong word! Please make sure to write down your seed phrase correctly in the right order.",
"selectRestoreMint": "Please select the mint that will be used to restore your funds.",
"recoveringWallet": "The mint is restoring your funds...",
"seedEnabled": "Seed recovery enabled!",
"confirmSeed": "Please confirm your seed by typing the correct word.",
"aboutToLeaveTo": "You are about to leave",
"accept": "Accept",
"addEnutsMint": "Use the eNuts mint",
"amount": "Amount",
"back": "Back",
"backToDashboard": "Back to dashboard",
"backupErr": "Something went wrong while creating the backup token.",
"balance": "Balance",
"balanceAfterTX": "Balance after TX",
"balTooLow": "Balance too low",
Expand All @@ -44,6 +70,7 @@
"cashOutFromMint": "Cash out from mint",
"change": "Change",
"claimed": "claimed",
"restored": "restored",
"claimSuccess": "Claimed {{amount}} Sats:\n{{mintUrl}}\nMemo: {{memo}}",
"claimToken": "Claim token",
"clear": "Clear",
Expand All @@ -56,7 +83,6 @@
"copied": "Copied",
"shareInvoice": "Share invoice",
"copyToken": "Copy token",
"createBackup": "Create a backup token",
"createInvoice": "Create invoice",
"createToken": "Create Token",
"createTokenErr": "Could not create a cashu token. Please try again later.",
Expand All @@ -73,6 +99,14 @@
"resetQ": "Reset your wallet?",
"delHistoryTxt": "The data can not be retrieved afterwards.",
"disclaimer": "Disclaimer",
"restoreDisclaimer": "This feature is still experimental and should be used with caution. It is not recommended to use it with large amounts of funds. Use at your own discretion. The developers, contributors, or maintainers of this software cannot be held liable for any damages, losses, or adverse effects arising from using this feature.",
"restoreBattery": "At least 20% battery.",
"restoreBatteryHint": "We recommend that you have at least 20% battery before starting the recovery process. Depending on the amount of data, the process may take a while.",
"restoreWifi": "Use Wi-Fi.",
"restoreWifiHint": "We recommend that you use a stable Wi-Fi connection for the recovery process to avoid any interruptions and to ensure a fast and secure recovery.",
"restoreForeground": "Keep the app in the foreground.",
"restoreForegroundHint": "Please keep the app in the foreground and do not close it during the recovery process to avoid any interruptions.",
"seedMigrationHint": "The seed applies to all mints, but each needs an individual restore, so note down frequently used mint URLs. If you have a balance but no seed yet, create a token from a desired mint and self-claim it after generating a new seed. Repeat for each mint you wish to backup.",
"ecashPayment": "Ecash payment",
"english": "English",
"swahili": "Swahili",
Expand Down Expand Up @@ -113,7 +147,6 @@
"noFunds": "Not enough funds",
"noFundsForFee": "Not enough funds, please leave room for potential fees: ~{{fee}} Sats",
"noMint": "Found no mint",
"noProofsToBackup": "Found no proofs to create a backup.",
"notQrCode": "Not a QR code!",
"noTX": "No transactions yet",
"optionalMemo": "Optional memo",
Expand Down Expand Up @@ -229,9 +262,6 @@
"trustMintOpt": "Trust mint",
"swapHint": "This option requires a Lightning payment, involves fees, and may still add the unknown mint to the list if a fee refund occurs.",
"trustHint": "The mint associated with the token will be added to your trusted list.",
"backupQ": "How does it work?",
"backupHint": "The existing backup process represents a rudimentary implementation. It creates a Cashu token from mints and proofs which becomes invalid after new transactions. To restore the token on a new device, follow the familiar claiming process and the old balance becomes invalid. Avoid redeeming on top of the current balance to prevent errors. It's worth mentioning that we're actively engaged in developing a seed phrase backup solution for enhanced security and convenience.",
"singleBackupHint": "Note: You can also create a backup for a single mint under 'Options' > 'Mint management' > 'Select mint' > 'Backup funds'.",
"noDefaultHint": "You need to setup a default mint to perform an auto swap.",
"autoSwapSuccess": "Swap successful!"
},
Expand Down Expand Up @@ -269,7 +299,6 @@
"addNewMint": "Add a new mint",
"atLeast2Mints": "You need at least 2 mints to perform an multimint-swap.",
"awaitingInvoice": "Awaiting invoice",
"backupNotCreated": "Backup token could not be created.",
"cashOutAmountHint": "Lightning fees may occur, so an estimated fee is added, and any overpaid fees will be refunded.",
"checkProofs": "Check proofs",
"checkProofsQ": "Check all the proofs?",
Expand All @@ -296,7 +325,6 @@
"invalidUrl": "Invalid URL",
"invoiceAmountHint": "Select the amount of Ecash you would like to receive. The mint will then create an invoice which you will have to pay using a Lightning wallet.",
"invoiceHint": "This can take a few seconds...",
"lowBackupBal": "The mint has no balance for a backup!",
"lowBal": "Mint balance too low!",
"meltAddressbookHint": "Choose your own LNURL or any other contact as a payment receiver.",
"meltInputHint": "Create a Lightning invoice or paste a LNURL into an input field.",
Expand Down Expand Up @@ -338,11 +366,9 @@
"about": "About us",
"addressBook": "Address book",
"advancedFunctions": "Advanced functions",
"backup": "Backup",
"display": "Display",
"history": "Transaction history",
"language": "Language",
"mintBackup": "Backup funds",
"mintSettings": "Mint management",
"security": "Security",
"settings": "Options",
Expand Down
Loading
Loading