GEMMA Mobile Wallet

GEMMA Mobile Wallet

The GEMMA mobile wallet will be a non-custodial wallet that will provide a safe ecosystem for users to store and send/receive their crypto assets. As a decentralized wallet, the user has sole control of the private keys, meaning the user has full control of their funds, which in turn control your cryptocurrency and proves ownership of the funds.

It will eliminate the need for users to complete their KYC. Furthermore, the wallet will be fortified with a 12-word mnemonic phrase that will enable users to seamlessly restore their wallets on a different mobile device. The self-explanatory interface will provide a great user experience.

Wallet can be seamlessly integrated with various decentralized applications and allows users to transmit GEMMA tokens and tokens provided in the blockchain below. In addition, people who created NFT can see their NFT and related metadata in their wallets.

Backend Architecture of GEMMA Wallet

Components

  • Postgres Database: It will be used to store user information including (but not limited to) the user’s wallet address, transaction history, notification history, wallet balance, and more.

  • Redis: It will store coin information and recent blocks that are further used to validate transactions. As it will store the information in the form of cache, it will accelerate the process to read the information.

  • Rabbit MQ: It will store the individual user transaction information in the form of a queue and the transactions will then be processed one by one and will be later updated in the database. RabbitMQ is preferred because it reduces the strain on the system and helps process the transactions in an organized manner.

  • GetBlocks: GetBlocks will be used for Ethereum and other prominent blockchain nodes to read blocks and process transactions.

  • BlockCypher: BlockCypher will process Bitcoin transactions using its in-built feature called 'webhooks'.

GEMMA Wallet Process Flow

Decentralized wallet registration

Step 1: A user enters their mnemonics. Step 2: User’s wallet address is sent to the backend. Step 3: User’s address and funds are validated. Step 4: Information is stored in the database (Postgres).

Transaction flow

Step 1: User initiates a transaction. Step 2: Backend receives a raw transaction with other information like gas fee, gas price etc. Step 3: The funds are validated with the user’s address. Step 4: Transaction is broadcasted to the blockchain. Step 5: The data of the transaction is stored in the database.

Crypto Microprocesses (Ethereum & Bitcoin)

  • The transaction that is read from the block will be initially checked with the database to check if it matches with the recipient of the transaction and also against the coins data stored in Redis cache.

  • The transaction will then be added to the RabbitMQ queue.

  • The transaction will be consumed from RabbitMQ.

  • The MQ is updated in the database one at a time.

  • In the case of BTC, we will receive a webhook of the transaction and add the transaction to the queue.

  • This will be later saved to the database.

Last updated