# Watcher Data Extractor ### Table of Contents - [Description](#description) - [Related Projects](#related-projects) - [How to Use the Watcher Data Extractor](#how-to-use-the-watcher-data-extractor) - [Install](#install) - [Usage](#usage) - [Contributing](#contributing) - [License](#license) ## Description Data extractors are modules that are integrated within a scanner. They drive the required information from the scanned blocks and store them in their own database. The watcher data extractor is responsible for tracking all watcher-related data in the network. These data includes permit, commitment and event trigger boxes; all these boxes are created in the network by the watchers. The watchers use their permits to create new commitments, and need to track created commitments and triggers to continue their procedures. On the other side, guards need to track event trigger boxes to verify the related user payment and start an agreement on the exchange transaction. ## Related Projects This module is used within the [Scanner](https://github.com/rosen-bridge/scanner) project. As stated above, this module is used in the [Watcher](https://github.com/rosen-bridge/watcher) service to drive the related boxes. It also used in the [Guard](https://github.com/rosen-bridge/watcher) to track the created event triggers. ## How to Use the Watcher Data Extractor ### Install This project is written in node-js using Esnext module and typeorm database. Extractors are not standalone projects and should be used as scanner modules. You can easily install it using npm with the command: ```shell npm install @rosen-bridge/watcher-data-extractor ``` Alternatively, you can build and use it manually by cloning the project and running: ```shell npm install npm run build ``` ### Usage In the first step, you need to create a scanner instance; follow the steps [here](https://github.com/rosen-bridge/scanner) to create a running instance of the scanner. Then, you need to instantiate your desired extractors and register them to your ergo scanner: ```javascript const commitmentExtractor = new CommitmentExtractor( , >, , dataSource ) const permitExtractor = new PermitExtractor( , dataSource, , ) const eventTriggerExtractor = new EventTriggerExtractor( , dataSource, , ) ergoScanner.registerExtractor(commitmentExtractor) ergoScanner.registerExtractor(permitExtractor) ergoScanner.registerExtractor(eventTriggerExtractor) ``` ## Contributing TBD ## License TBD