This is backend module of Moon Wallet backed with :heart: and :coffee: for the crypto community by secret_tech
This backend module can be used to build a typical ETH and ERC-20 tokens wallet. Currently it has the following functionality
- Registration & Authorization
- Register any Token by specified contract address
- Generate and manage multiple Ethereum wallets by one account
- Transfer ETH / ERC-20
- Transferring is protected by payment password
- Displaying transaction history for ETH/ERC-20
- Notification management
- All important actions are protected with 2FA (email or google authenticator) by integration with Jincor Backend Verify You can disable some kind of verifications as well.
For more info check API DOCS
- Typescript, Express, InversifyJS (DI), Mongoose
- Web3JS - interaction with Ethereum client. Backend supports any JSON-RPC compliant client. For development and testing purpose you can use Infura.io
- Mocha/chai - unit/functional tests
- Jincor Backend Verify - all kind of verifications
- Jincor Backend Auth - all kind of Authorization
- secrettech Backend Notify - notifications
- Docker
Closed issues
- Fix wallets creation #47
- Payments add gas limit settings #38
- Preferences: add an ability to disable 2FA #35
- Preferences: changing password for the same should fail #34
- Preferences: save email notification settings #33
- Sending: address check is case-sensetive #29
- Registration: email check is case-sensetive #28
- Add ability to control notifications and verifications #19
- Add ability to retrieve all transactions for wallets. #16
- Add tests #12
- Ability to store encrypted privateKey in this service #11
- Fix emails #10
- Work with set of tokens #9
- Add documentation. #8
- Add integration with backend-notify #5
- Implement methods for sending eth and any erc20 #3
- Test any smart contract #2
- First project adaptation #1
Full changelog available here
- Clone this repo.
- Run
$ docker-compose -f docker-compose.test.yml build --no-cache
- Run
$ docker-compose -f docker-compose.test.yml run api /bin/sh
- To install dependencies run
$ npm i
- Run tests watch mode
$ npm run start:test
Contributions are appreciated. If you found any bugs or in trouble with installing or running this module, feel free to open new issues.
Contributing guideline can be found here
- Modify apiary.apib to match your API
- Install aglio
npm install -g aglio
- Run
mkdir /usr/local/lib/node_modules/aglio/node_modules/aglio-theme-olio/cache
- Generate
aglio --theme-variables cyborg --theme-template triple -i apiary.apib -o ./docs/index.html
Apache 2.0 license