Key protection and isolation
- Bundled monero-ts and Monero WebAssembly create keys, scan and sign locally. No remote executable code is loaded into the extension.
- AES-256-GCM encrypts the vault with PBKDF2-SHA256, 600,000 iterations, fresh salt and IV on each save. Strong passwords matter against offline guessing.
- The offscreen document and dedicated worker hold the unlocked session. Closing the popup does not lock it or stop a confirmed payment. Lock ends the session; auto-lock waits for active operations to finish.
- Seed and view-key reveal require the wallet password after the initial creation backup. The private spend key is never displayed.
- No content scripts, externally-connectable wallet API or website wallet connection is provided.
These measures do not protect against a compromised browser, operating system, altered package or attacker with access to an unlocked process. JavaScript cannot guarantee erasure of every memory copy.
Payment safety
- Sending requires completed synchronization no older than two minutes. This is not independent full-node consensus validation.
- The wallet validates address/network, signs without relay and shows the full address, amount, fee and transaction ID.
- Confirmation consumes a one-shot draft; drafts expire after five minutes. An optional password gate is available.
- A recovery marker is written before broadcast. Uncertain outcomes are never automatically retried. Check the recorded transaction before sending again.
Once a node has received a transaction, closing or locking cannot undo it.
Always-on public node monitoring
The service worker sends a fixed public get_info POST to every bundled mainnet, stagenet and testnet node, including the vendor/community-operated XMRtab Node at https://node.monero-tab.com, every four hours and shortly after browser startup/install via alarms. No opt-in or toggle is provided; no wallet or open popup is needed. Operators see IP addresses and request timing, and HTTP is unencrypted. Your own node does not stop catalog monitoring.
No wallet data, addresses, balances, keys or history are sent, and there is no telemetry collector. Requests are bounded to 8 seconds and 256 KiB each, with no retries, cookies/credentials, redirects, referrer or cache. Only latest status, reported height and check time are kept in chrome.storage.session, cleared on browser restart, without sample histories. Operator logs are separate.
The monitor never chooses a node, polls custom nodes, synchronizes or wakes the wallet engine, and does not extend auto-lock. Manual checks, selection and wallet sync retain explicit privacy consent and user action. Availability is only a latest sample, not continuous uptime, node honesty or wallet/network synchronization proof; browser sleep and delayed alarms can leave it stale.
External referral boundary
The mainnet referral link opens https://trocador.app/?ref=CODE in a separate tab after disclosure and explicit consent. It includes only ref, not wallet addresses, balance, amount or secrets. There is no iframe, exchange API call, automatic payment or website access to the wallet.
The wallet does not validate external offers or orders, automatically create order subaddresses, enforce provider filters or track exchange status. Manually verify all networks, addresses, amounts, deadlines, fees and provider rules. Normal Send validation checks the payment, not the truth of an external order.
The project may earn commission. No custom 3% markup or no-KYC guarantee is provided. External sites may use cookies, request identity information or hold funds; completion and refunds are not guaranteed. Never provide your seed or private keys.
Honest limitations
- There is no independent security audit. Automated tests are not proof of safety or live exchange fulfillment.
- Public nodes can harm privacy, censor or mislead. Plain HTTP exposes traffic. Own-node addresses are not application-level DNS/IP pinned.
- Malware, browser-profile compromise and clipboard hijacking can defeat application protections. Compare full addresses.
- Deleting extension data or losing a device can destroy local wallets. unlimitedStorage is not a backup.
- Hardware wallets, multisig, Polyseed, OpenAlias and cold signing are not supported.
- The external exchange service is untrusted. Affiliate referral does not establish provider solvency or guarantee commission earnings.
The optional developer API implementation is described separately in the source SECURITY.md; its validation and safeguards are not features of this referral release.
Good practices
- Practice on stagenet; only use small amounts initially on mainnet.
- Keep your seed offline and never enter it in websites, chats or support requests.
- Keep encrypted backups, strong passwords and a secure updated browser.
- Lock when stepping away. Prefer HTTPS nodes or a node you control.
- Verify downloads and all payment details before use.
Report a vulnerability
Report privately to [email protected] with the extension/browser versions, impact, reproduction steps and a proof of concept if available. Test only on wallets you own, ideally on stagenet. Do not attack public services or other people's funds.
Never send a real recovery phrase, private key, password or wallet backup. Use a fresh throwaway test wallet if needed. Allow time to investigate before public disclosure. There is no bug bounty program.