Dear community,
I’m really fascinated to see such activity at this contest. The more applications, the better the result!
I would also like to present to you the fruit of our hard work - the Crystal Wallet Chrome extension.
Abstract
Crystal Wallet is well-known to all community members of FreeTON. The Broxus team has remastered it from scratch and is proud to present it to you in the form of a browser extension.
You don’t need to have any technical knowledge to use Crystal Wallet - just install it from the Chrome Store and let it guide you.
Key features
For users
Crystal Wallet is a Google Chrome extension that lets you manage your seed phrases, private and public keys, and wallets securely without leaving your favorite browser.
Import existing keys or create new ones; choose popular wallet contracts to use and deploy them at the convenient moment; accept and send transactions with memos or encoded payload; add and remove tokens; manage permissions you provide to dApps (DEXes, bridges, multisig wallets, etc.); protect your data with encrypted local key storage.
For dApps
Crystal Wallet injects the Free TON API into every website’s DOM context so that the distributed applications can read from the blockchain and interact with smart contracts. Be it a decentralized exchange, browser game, cross-chain bridge, or multi-signature wallet; Crystal Wallet will serve you as a lightweight, configurable, and reliable Free TON client.
Privacy and permissions
The extension does not and will not collect any data from you.
However, it will require your permission to read and write to any webpage, as it enhances the functionality of the standard browser context. You can always view the source code of Crystal Wallet on Github.
Extension architecture
Wallet core
It is powerful yet elegant:
- Transport is used to interact with the blockchain through GraphQL (default method) or ADNL;
- Keystore contains encrypted data and keys generation methods;
- Storage keeps data caches;
- TON and token wallets wrap methods for working with different asset types.
Extension UI
This is what a user sees. It contains the popup window and browser notifications you receive once Crystal Wallet finds any incoming or outgoing transaction.
WEB3
The most interesting and complex part of the wallet allows various dApps to interact with FreeTON directly from the browser.
The extension injects a content script into the page, which interacts with the background script through the inpage one.
Supported wallet contracts
- Wallet V3 (legacy) - to let users of the old version of Crystal Wallet quickly move to the new one.
- SafeMultisig
- SafeMultisig24
- SetCodeMultisig
- Surf
User flows
Create a new account
- User selects “Create a new wallet”
- Signs the Decentralization policy
- Selects the wallet type from one of the popular contracts
- Saves the seed phrase securely
- Confirms they saved it correctly
- Sets the password to encrypt the local storage
- Voila! The wallet is ready to accept funds.
The user may use this wallet already to accept funds or sign transactions with its key. However, once they decide to withdraw funds, they will need to first deploy the wallet contract by pressing the “Deploy” button.
Restoring the wallet
- User selects “Sign in with seed phrase”
- Signs the Decentralization policy
- Selects the type of the wallet
- Inputs the seed phrase
- Sets the password to encrypt the local storage
- Voila! The wallet is ready to accept funds.
Adding new assets
- User clicks “Select assets”
- Selects assets of their choice
- That’s it! Assets are shown in the wallet.
Links
Sources
Build manual
Chrome store
Contact information
Telegram: Telegram: Contact @broxus_chat
Email: [email protected]
Wallet: 0:3f5bf06393c69462d0488f658d28be6062b66d8d7986da743286ad01837e517c