signum-network / signum-chain-walker

This is a reusable NodeJS server that listens to blocks/transactions and/or walks over the chain. Useful, if you need to react on transactions or want to make analysis of the ledgers data.

Home Page:https://signum-network.github.io/signum-chain-walker/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Coverage Maintainability Rating Vulnerabilities Code Smells Bugs

signum-chain-walker

This is a reusable NodeJS server that listens to blocks/transactions and/or walks over the chain. Useful, if you need to react on transactions or want to make analysis of the ledgers data.


Quick Start

Just install using either npm i signum-chain-walker or yarn add signum-chain-walker

Example

Listen to the Signum blocks and/or transactions

const walker = new ChainWalker({
  nodeHost: "http://localhost:6876",
})
  // handlers can be asynchronous or synchronous
  .onBlock(async (block) => {
    await sleep(100); // simulate an async task
    console.log("Block #", block.height);
  })
  .onTransaction((tx) => {
    console.log("Transaction #", tx.transaction);
  });

(async () => {
  await walker.listen();
})();

Example Collecting Data

const StartBlock = 552_000;
let countedBlocks = 0;
let countedTransactions = 0;
let movedSigna = Amount.Zero();

const walker = new ChainWalker({ nodeHost: "http://localhost:6876" })
  .onBlock(() => {
    countedBlocks++;
  })
  .onTransaction((tx) => {
    countedTransactions++;
    movedSigna.add(Amount.fromPlanck(tx.amountNQT));
  });

(async () => {
  await walker.walk(StartBlock);
  console.log(
    `Counted ${countedTransactions} transactions since Block ${StartBlock} (in ${countedBlocks} blocks)`
  );
  console.log(`${movedSigna} were moved`);
  console.log(
    `This is ${movedSigna.clone().divide(countedTransactions)} per tx`
  );
  console.log(`This is ${movedSigna.clone().divide(countedBlocks)} per block`);
  process.exit(0); // graceful shutdown
})();

Documentation

Full documentation can be found here: Documentation

Examples

Look into the examples folder for fully functional code.

You can run the examples using:

  • npm run example:listen
  • npm run example:walk
  • npm run example:walk-listen
  • npm run example:account-listen

About

This is a reusable NodeJS server that listens to blocks/transactions and/or walks over the chain. Useful, if you need to react on transactions or want to make analysis of the ledgers data.

https://signum-network.github.io/signum-chain-walker/

License:Apache License 2.0


Languages

Language:TypeScript 99.0%Language:Shell 0.7%Language:JavaScript 0.4%