diff options
| author | Adam Soltys <[email protected]> | 2026-08-01 21:48:20 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-08-01 21:48:20 -0700 |
| commit | 2d1cce8b6b0e7454f187e7144d22f76466065528 (patch) | |
| tree | 78d01df33a6e97cae8902fa301c22e5441397e87 /src/i18n.js | |
| parent | 5c472442a4abf8768b25c544c73328467422538a (diff) | |
| download | coinosv3-2d1cce8b6b0e7454f187e7144d22f76466065528.tar.gz coinosv3-2d1cce8b6b0e7454f187e7144d22f76466065528.zip | |
Log in with Nostr, and link a wallet to a Nostr account
Three ways in: a NIP-07 browser extension, a NIP-46 remote signer
(Amber, Amethyst — paste its bunker:// address), or a pasted
nsec/hex key that lives in memory for the session and is never stored.
How an account gets a wallet depends on what we can see, and the two
cases are genuinely different:
* We hold the key (pasted nsec): the seed is DERIVED from it —
sha256("coinos:wallet-seed:v1" | privkey) as BIP-39 entropy. The
same Nostr key always opens the same wallet, on any device, with
nothing stored anywhere.
* We only have a signer: deriving is impossible (we never see the
key, and neither signatures nor NIP-44 ciphertexts reproduce), so
the seed is ASSOCIATED instead — generated once and published as a
replaceable event encrypted to the user's own key, which only their
signer can decrypt. Later logins find and decrypt it.
The second path means the Nostr key can recover the money; the UI says
so before publishing anything. Linking an already-open wallet uses the
same publish path and refuses to overwrite an account's existing wallet.
Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat (limited to 'src/i18n.js')
| -rw-r--r-- | src/i18n.js | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/i18n.js b/src/i18n.js index 7003769..825c9ad 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -428,6 +428,27 @@ const STR = { arkLnPayFailed: 'Payment failed', arkLnRefunded: 'Payment failed — funds returned to your Ark balance.', arkLnPaidTitle: 'Paid!', + nlTitle: 'Log in with Nostr', + nlDesc: 'Use your Nostr account to open your wallet — on any device, with the same account.', + nlExtension: 'Use browser extension', + nlKeyOrBunker: 'nsec, private key, or bunker://…', + nlGo: 'Log in', + nlHint: 'Works with Amber, Amethyst and other remote signers (paste their bunker:// address), or a browser extension. A pasted key is used once and never stored.', + nlApprove: 'Approve the request in your signer →', + nlUnrecognized: 'That doesn’t look like a private key or a bunker:// address.', + nlOpenedDerived: 'Wallet opened from your Nostr key', + nlOpenedRestored: 'Your wallet was restored', + nlNewTitle: 'Create a wallet for this account', + nlNewDesc: 'This Nostr account has no wallet yet. We’ll make one and save it, encrypted to your account, so you can open it anywhere you use this account.', + nlBackupWarning: 'Your wallet will be recoverable by anyone who controls this Nostr account — treat that account like a key to your money.', + nlCreateBtn: 'Create my wallet', + nlCreated: 'Wallet created and linked', + nlLinkTitle: 'Nostr account', + nlLinkDesc: 'Link this wallet to your Nostr account so you can open it on other devices by logging in with Nostr.', + nlLinkedDesc: 'This wallet opens when you log in with this Nostr account.', + nlLinked: 'Wallet linked to your Nostr account', + nlNeedSeed: 'This wallet has no recovery phrase loaded.', + nlAlreadyLinked: 'That Nostr account already has a different wallet.', namesTitle: 'Payment address', receiveNameTab: 'Payment address', namesCustom: 'Choose a custom name', |
