-
-
Notifications
You must be signed in to change notification settings - Fork 7
Detailed Developer Milestones
Refactor the application to use Cosmos SDK v0.47 and the easier to maintain/extend DefiantLabs/Probe repository. The Probe repository provides the RPC querying functionality necessary for the application to query blockchain data and parse protobuf type implementations for Transaction Messages.
- Dependence on Cosmos SDK: Use version 0.47 for all base Cosmos module functionality.
- Easy Extension: Support Transaction message types in the future by including protobuf type implementations for custom/non-base modules.
- Custom Querying: Extend custom querying methodology for module-specific query commands for custom indexing capabilities.
- Replace and Update Cosmos SDK: Move to the official v0.47 release of Cosmos SDK and update the codebase accordingly.
- Probe Dependency: Depend on the simplified Probe repository for all RPC querying and Protobuf Message type definition support.
- Extend and Validate Protobuf Definitions: Handle all supported Protobuf Message type definitions and validate the dependency on the latest definitions for Messages in base Cosmos modules and custom modules.
Rework the application indexer loop to index all data in the lifecycle of a block and transaction. The indexer will index a blockchain with customizable configuration values to indicate the desired level of granularity for the generalized indexer implementation.
-
If Indexing Blocks Only, Then Index:
- Basic Block data
- All Block BeginBlocker events
- All Block EndBlocker events
- Events with all key/value pairs indexed
-
If Indexing Block Transactions, Then Index:
- Basic Block data
- For each Transaction in a block, index basic Transaction data
- For each Message in each Transaction, index:
- Basic Message data
- All events per Message
- Events with all key/value pairs indexed
- Rework database models to extend indexed data for Blocks, Transactions, and Messages
- Extend models for Block and Transaction Message Events and Key/Value Attributes
- Add configuration values for fine-grained control over event indexing
Implement generalized custom Block Event and Message parser interfaces for developer indexing extensions. Extend the indexer parsing loop for both Generalized Indexer implementations (from Milestone 1) and custom block event/message parser interfaces.
- Implement interface definitions for adding custom Block Event indexer parsers, handlers, and models
- Implement interface definitions for custom Transaction Message indexer parsers, handlers, and models
- Add pre-validation functionality
- Manage custom models with database handling functionality
- Include custom parsers and handlers for Block Event indexing
- Include custom parsers and handlers for Transaction Message indexing
- Index data returned from custom parsers and handlers
- Add error handling methods for ease-of-development/debugging for custom implementation errors
Follow Go best practices in module implementation. Organize each repository package into discrete and useful sets of functionalities. Simplify and extend the codebase as needed to provide generic functions and interfaces across the application. Publish Cosmos Indexer as a well-formed Go module to allow developer usage as an Indexer SDK.
- Modularity: Organize the codebase into clearly defined modules to enable easy integration and customization.
- Documentation: Provide comprehensive documentation, including API references, tutorials, and examples to assist developers in using the SDK.
- Performance Optimization: Optimize the code for performance and efficiency, ensuring that it runs smoothly and doesn't consume unnecessary resources.
- Compatibility: Ensure that the SDK is compatible with different versions of Go and various platforms and environments.
- Extensibility: Design the SDK to be extensible so that new features can be easily added in the future.
- Error Handling: Implement robust error handling to allow developers to easily diagnose and correct issues.
- Security: Incorporate security best practices to protect the integrity of the data and the overall system.
- Testing: Implement comprehensive testing strategies including unit tests, integration tests, and end-to-end tests to ensure the stability and reliability of the SDK.
- User-Friendly Interfaces: Develop intuitive and user-friendly interfaces to enhance developer experience and productivity.
These objectives outline the main areas of focus when building a robust and user-friendly SDK. By adhering to these principles, the Cosmos Indexer SDK aims to be a powerful tool for developers, providing flexibility, efficiency, and ease of use.