/backend-token-wallets

Backend for Ethereum & ERC-20 tokens

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Moon Wallet Backend module

Build Status

This is backend module of Moon Wallet backed with :heart: and :coffee: for the crypto community by secret_tech

Moon Wallet

This backend module can be used to build a typical ETH and ERC-20 tokens wallet. Currently it has the following functionality

  1. Registration & Authorization
  2. Register any Token by specified contract address
  3. Generate and manage multiple Ethereum wallets by one account
  4. Transfer ETH / ERC-20
  5. Transferring is protected by payment password
  6. Displaying transaction history for ETH/ERC-20
  7. Notification management
  8. 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

Moon Wallet Screenshot

Technology stack

  1. Typescript, Express, InversifyJS (DI), Mongoose
  2. Web3JS - interaction with Ethereum client. Backend supports any JSON-RPC compliant client. For development and testing purpose you can use Infura.io
  3. Mocha/chai - unit/functional tests
  4. Jincor Backend Verify - all kind of verifications
  5. Jincor Backend Auth - all kind of Authorization
  6. secrettech Backend Notify - notifications
  7. Docker

Changelog

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

How to start development and run tests?

  1. Clone this repo.
  2. Run $ docker-compose -f docker-compose.test.yml build --no-cache
  3. Run $ docker-compose -f docker-compose.test.yml run api /bin/sh
  4. To install dependencies run $ npm i
  5. Run tests watch mode $ npm run start:test

Contributing

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

How to generate API docs?

  1. Modify apiary.apib to match your API
  2. Install aglio npm install -g aglio
  3. Run mkdir /usr/local/lib/node_modules/aglio/node_modules/aglio-theme-olio/cache
  4. Generate aglio --theme-variables cyborg --theme-template triple -i apiary.apib -o ./docs/index.html

License

Apache 2.0 license

More details