contract.watch

contract.watch is an in-development continuous monitoring tool for the open source contracts submitted to Etherscan. It facilitates the tracking of the verified source contracts beyond the latest 500 that are made available and also functions as a pipeline to run modularized scripts on them. Those contracts (and the output generated by the modules) are accessible through a REST API.

Important: An Etherscan account is required to generate the API Key Token, Etherscan offers a free plan with 5 calls per second; when initializing a consumer a timeout can be configured with the --timeout flag in order to prevent being rate-limited.

Current modules:

Modules are self-contained functions that can be executed on the contracts published to the work queue a consumer is subscribed to. The consumer’s module can specified with the --module flag.

  • solhint: fetches the source code of each newly tracked contract and runs it through solhint (a solidity linter), with security rules applied to it.
Please refer to solhint’s security rules and configure the /consumer/.solhint.json config file based on your requirements.

Instructions

  1. Run rabbitmq:
    • docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management
  2. Install/run Postgres:
    • docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
  3. Install the node.js dependencies for the contract.watch tool and the consumer: npm install
  4. Create the necessary tables found on contractwatch/configs/database.db
  5. Put your Postgres, Rabbitmq & Etherscan credentials on the .env files of the contract.watch tool and the consumer

GitHub

View Github