go-ethereum/statediff/docs/database.md
Abdul Rabbani b609d4d6c2 Statediff Geth
* Handle conflicts (#244)

* Handle conflicts

* Update go mod file versions

* Make lint changes

* Disassociate block number from the indexer object

* Update ipld-eth-db ref

* Refactor builder code to make it reusable

* Use prefix comparison for account selective statediffing

* Update builder unit tests

* Add mode to write to CSV files in statediff file writer (#249)

* Change file writing mode to csv files

* Implement writer interface for file indexer

* Implement option for csv or sql in file mode

* Close files in CSV writer

* Add tests for CSV file mode

* Implement CSV file for watched addresses

* Separate test configs for CSV and SQL

* Refactor common code for file indexer tests

* Update indexer to include block hash in receipts and logs (#256)

* Update indexer to include block hash in receipts and logs

* Upgrade ipld-eth-db image in docker-compose to run tests
2022-07-14 08:14:23 -05:00

998 B

Overview

This document will go through some notes on the database component of the statediff service.

Components

  • Indexer: The indexer creates IPLD and DB models to insert to the Postgres DB. It performs the insert utilizing and atomic function.
  • Builder: The builder constructs the statediff object that needs to be inserted.
  • Known Gaps: Captures any gaps that might have occured and either writes them to the DB, local sql file, to prometeus, or a local error.

Making Code Changes

Adding a New Function to the Indexer

If you want to implement a new feature for adding data to the database. Keep the following in mind:

  1. You need to handle sql, file, and dump.
    1. sql - Contains the code needed to write directly to the sql db.
    2. file - Contains all the code required to write the SQL statements to a file.
    3. dump - Contains all the code for outputting events to the console.
  2. You will have to add it to the interfaces.StateDiffIndexer interface.