/eth-wallet-monitor

An abstraction on top of web3.js that allows anyone to subscribe to ethereum wallets events (be it a smart contract or a personal wallet).

Primary LanguageTypeScript

eth-wallet-monitor

An abstraction on top of web3.js that allows anyone to subscribe to ethereum wallets events (be it a smart contract or an personal wallet).

Depending on the type of wallet being monitored, different events are subscribed:

  • pendingTransactions - if the wallet is a personal address then the subscritpion is to all pending transactions and cross reference the trx to and from with the addresses being monitored.

  • logs - if the address is a smart contract, then the subscription is to all logs emited by that contract. In this case it is also possible to fine tune the log events by the intended topics.

Instalation

npm install eth-wallet-monitor

Usage

Instantiate an address monitor and then register the listeners. This will hook a subscription to either logs or pendingTransactions events.

Whenever one of those events is received, the corresponding transaction is fetched and passed to the callback specified when registering the listeners.

  const EthAddressMonitor = new AddressMonitor(
    {
      addressesToMonitor, // list of addresses that we want to monitor
      monitorType, // type of addresses that we want to monitor
      httpProvider, // ethereum node http provider
      wssProvider, // ethereum node webSocket provider
    },
  );

  const callback = (...args) => {...}

  EthAddressMonitor.registerListeners(callback);

Building

Requirements

  • node 14

We recommend using nvm to manage your node versions. Once nvm is installed, take adavantage of .nvmrc to load the correct node version.

nvm use

Development

In order to start developing:

git clone git@github.com:cryptotavares/eth-wallet-address.git
npm install
npm test
npm run eslint
npm run coverage

This will clone this repo, install the dependencies, run the tests, eslint and coverage reports.

You can find the coverage report under coverage/lcov-report/index.html after running the coverage task.