AEMonitor - Aeternity blockchain monitor (https://aemonitor.mobycrypt.com)

AEMonitor - Aeternity blockchain monitor (https://aemonitor.mobycrypt.com)

Description

AEMonitor is live Aeternity blockchain monitor. Periodically fetches the data from blockchain and saves in internal db allowing in-depth analytics.

I developed the project for Aeternity Dashboard Bounty and it was awarded by Aeternity team (https://blog.aeternity.com/blockchain-dashboard-bounty-winners-788a2c8a5f79).

Customizable features:

  • different networks (testnet, mainnet, edgenet)
  • fetch the data from first block (on default from current time block)
  • fetch interval seconds (on client and server)

Core stats:

  • key blocks list table (including micro blocks and transactions count) [last 20]
  • miners percentage chart [Last 24h]
  • micro blocks in generation [last 20 key blocks]
  • block height
  • block difficulty
  • block reward
  • last transactions (last block)
  • avg block mine time [last 1h]

Transactions stats:

  • ‘timeframe’ switch – 1h, 24h, 7d, 1m
  • last transactions table [last 20]
  • transactions done count per hour chart [from last ‘timeframe’]
  • transactions per type chart [last ‘timeframe’]
  • transactions done count [last ‘timeframe’]
  • avg fee [last ‘timeframe’]
  • avg transactions per generation [last ‘timeframe’]

Token stats:

  • AE token exchanges stats table (currently Binance, Bithumb, Gate.io, Uex)

Problem to solve

Blockchain node is responsible fo producing the blockchain what means saving new blocks, processing transactions, executing smart contracts and communicating with other nodes.

Node provides communication interface however information provided by the node are limited.

The middleware layer is dedicated to provide more sophisticated blockchain data (data aggregation, e.g. last 100 transactions). It also take the responsibility from node of providing the blockchain data letting the node doing its job – producing the blockchain.

Technologies

Technical overview

Backend server (Node.js) periodically fetches all key blocks, micro blocks and transactions from the Aeternity node. Data is saved in PostgreSQL relational database.

Data returned by Aeternity server is JSON format, always structured in the same way. Tables in AEMonitor database matching the format of JSON responses so the save to the tables is always easy.

Async driver to PostgreSQL allows for non blocking operations on database from Node.js. Operations on database are fast and efficient.

Having the data in relational database allows for very efficient data read e.g. reading transactions from last 24h is nothing more than simple SQL query. PostgreSQL having efficient indexes on the tables will deliver maximum speed.

Client side of AEMonitor every given period of time is fetching data from the server (using JSON API). Data are fetched in the parent scope component and distributed for the child components (so every chart, table, etc.).

Gallery


I recently suspended the project. It's no longer online.