January 16, 2026

Cerberus Wallet. Part 4. Backend development – Mikael Lazarev

Cerberus Wallet. Part 4. Backend development – Mikael Lazarev

For the backend, I decided to use Golang for the following reasons:

  • It uses strong typing, which means that many errors will be excluded at the compilation stage.
  • In my experience it works very stably in production
  • It’s convenient to use goroutines to monitor transactions.

I use MongoDB to store information, and go-ethereum to work with ether

User authorisation / registration

The current version uses simple login / password authorisation using JWT tokens. Authorisation is required in order to transfer the list of user wallets and provide the ability to receive data. Currently, the binding of wallets to the token for push notifications also uses authorisation.

Transaction monitoring

The Cerberus Wallet server saves all user wallets and constantly monitors events at connected addresses. To monitor events for each wallet, a separate goroutine is used.

As soon as the NewPaymentRegistered event occurs, the server sends a push notification to all devices connected by the user. The structure of push notifications includes a code that must be entered to confirm the transaction (more simple logic is currently implemented).

Sending push notification

As you know, the push notification delivery system is quite reliable and has proven itself in banking applications. In this version I developed only iOS notifications.

To implement iOS push notifications you need an Apple Developer account and have registered your application.

Also, in addition to sending push notifications, the system can send notifications to email clients, via SMS and instant messengers (a number of these functions are under development)

Transaction Confirmations

When the monitoring system detects a new transaction, a push notification is sent to the user, and the transaction itself falls into the list of transactions for confirmation.

If the user logged in to the application within the specified time, the system will mark this in the database and confirm it upon request from the Oracle Cerberus.

At the same time, the logic is arranged in such a way that if at least one device rejected the transaction, then it is already impossible to confirm it. This is done to provide greater security.

Published at Thu, 07 Nov 2019 11:52:37 +0000

{flickr|100|campaign}

Previous Article

Swell the News? XRP Drops 5% as Ripple’s Flagship Event Kicks Off

Next Article

Swell the News? XRP Drops 5% as Ripple’s Flagship Event Kicks Off

You might be interested in …