Awesome
Pertinax wallet
<div align="center"> <img src="/src/assets/img/icon-128.png" title="pertinax wallet"> </div>This repository contains source code for web-extension that allow interaction with everscale blockchain from your browser.
Security
- Based on EVER SDK with minimal required dependencies
- Wallet keys decrypt only when needs and via in-memory password, that stores in the one variable
- IndexedDb stores only common information, like transaction history, etc.
- Key pair is encrypted with AES-GCM
- Password checking is provided by the comparison of a random hex key with length 256 that is stored in indexedDb and its encrypted hash that was obtained by AES-GCM with password inclusion. In this case to get master password needs to decrypt encrypted data that must be equal to the hex string by 256 length
- Code develops accordance with state-of-the-art security standards
Browser supporting
Architecture
Application
<img src="docs/architecture.png" title="architecture pertinax wallet"/>User flow
<img src="docs/user-flow.png" title="user flow pertinax wallet"/>Tests
Testing system is based on selenium and mochajs for e2e testing and testing-library for components
To test need to run:
npm run test
Technical stack
- rollup.js for building processes
- svelte.js for javascript framework
- chota for style
- idb for internal db
- ton-client-js for interaction with Everscale blockchain
- safemultisig for multisig wallet smart contract
- webextension-polyfill for cross browser supporting
- gulp.js for building distributives for browsers
- selenium for e2e testing
- testing-library for component testing
Contribution
Anyone can participate in contribution. Pull request (PR) is welcome.
License
This repository provides by Apache License 2.0
Distribution and mode for developers
To prepare environment need to run:
npm i
To run developer mode:
npm start
To prepare build need to run:
npm run dist
This command will generate a zip file for each browser.
For the best developer environment we recommend to use launch tonlabs/local-node
To run local EVER node you have to install docker
To start the local EVER node just run:
npm run run-tonos
Documentation
All documentation you can find by this link
Translations
For now the extension is available on the followed languages:
- English
- Arabic
- Amharic
- Bulgarian
- Bengali
- Catalan
- Czech
- Danish
- German
- Greek
- Spanish
- Estonian
- Persian
- Finnish
- Filipino
- French
- Gujarati
- Hebrew
- Hindi
- Croatian
- Hungarian
- Indonesian
- Italian
- Japanese
- Kannada
- Korean
- Lithuanian
- Latvian
- Malayalam
- Marathi
- Malay
- Dutch
- Norwegian
- Polish
- Portuguese (Brazil)
- Portuguese (Portugal)
- Romanian
- Russian
- Slovak
- Slovenian
- Serbian
- Swedish
- Swahili
- Tamil
- Telugu
- Thai
- Turkish
- Ukrainian
- Vietnamese
- Chinese (China)
- Chinese (Taiwan)
If you are native speaker on any other language and can help with translation, please use this file as source
Steps for a new release
- Run tests
npm run test
-
Create a commit with a description
-
Increase a version in package.json and manifest.json and update CHANGELOG file
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
Usually after common commit needs to use patch
npm version patch
- Create builds for browsers
npm run build
Requested features
- Multi accounts
- Dapp connector for the signing transactions, the signing messages, the encrypt/decrypt messages
- Creating multisign wallet (many owners, requirement count more than 0)
- Adding tokens and interactions with them
- DePools supporting
- Loading ABI for the smart contract interaction
- Mobile version for IOS/Android platforms with the same functionality as in browsers
- Qr codes for the payment system via the mobile version (the payment sending, ask payment, the deep link)
- Onboarding library for Dapp for the quick installation of the web extension or the mobile version
- Swipe operations
- DEX supporting
- Buying on external exchanges
- Supporting of easy conversion between currencies
- Hard wallet supporting
- Fishing blacklist with the voting process on Everscale blockchain