Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@xadahiya
Copy link
Member

@xadahiya xadahiya commented May 30, 2023

Includes changes from #21, #20, #22, #23, and #26

Fixes #11, #9, #8, #14

Checklist

  • My branch is up-to-date with upstream/develop branch.
  • Everything works and tested for Python 3.8.0 and above.
  • I ran pre-commit checks against my changes.

Summary

This PR introduces a significant simplification of our architecture, eliminating the notion of DAG chains. All entities are now treated as projects, offering a flexible configuration that supports a variety of data source setups.

A project can be configured in several ways:

  1. Sourced from a single data source
  2. Aggregated from multiple individual data sources
  3. Aggregated from a combination of single data sources and other aggregates
  4. Aggregated purely from multiple aggregates

These improvements enhance the versatility of the underlying data sources and the datasets that can be generated using Powerloom's snapshotting agents.

Major Changes

  • Code and Configuration Overhaul: The code and configurations have been restructured according to the new architecture.
  • Protocol State Contract ABI: The Protocol state contract ABI has been updated.
  • Aggregation Modules: Enhanced aggregation workers, configuration, and Uniswapv2-specific aggregation modules have been implemented.
  • Decentralized Data Fetching: New helper functions have been introduced to fetch data in a decentralized manner, simplifying the building of snapshots.
  • Error Handling and Performance: Exception handling and logging have been improved, alongside various performance enhancements.
  • Library Cleanups: The AsyncIPFSClient library has been moved and unused libraries have been cleaned up.
  • Core API: A generic Core API has been implemented for fetching snapshot data for any project and epoch, replacing the old Core API.
  • RPC Updates: The RPC helper global cursor on the node list has been changed to a local context for better performance.
  • Settings Cleanups: Outdated test files have been removed and settings cleaned up.
  • Alerting Flow: A new alerting flow has been implemented that sends failure notifications to Slack, and to PowerLoom's centralized logging service if configured.
  • Remote IPFS support: Snapshotters can now use a 3rd party IPFS service like Infura, basic auth support has been added
  • Data Caching: Finalized snapshot data is now cached in a local filesystem.
  • Configuration: All settings and configuration details are now consolidated in the config directory.
  • Decoupled Use case developement: This new design enables faster and easier use case development with Pooler (see Decouple Pooler from UniswapV2 use case #2 for more details)
    Additional performance improvements and bug fixes have also been implemented.

Please refer to the image below for a visual representation of the new architecture:

image

Settings and Other Configurations

Due to the extensive modifications, we recommend cloning from examples and filling in your own settings.json and aggregator.json files respectively.

… retry in register projects, logs cleanup and minor fix
…ack indexing in registration, other minor fixes
@xadahiya xadahiya marked this pull request as ready for review June 4, 2023 06:31
Copy link
Member

@anomit anomit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving as has been observed to be running stably on production scale instances.

@xadahiya xadahiya merged commit aba39be into main Jun 5, 2023
@anomit anomit mentioned this pull request Jun 5, 2023
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve Pooler Core API for generic use cases and new architecture

4 participants