# Ronin Transaction Indexer Development Task
## Objective
Develop a Node.js application to index transactions related to staking, unstaking, and rewards on the Ronin blockchain, specifically for Luganodes. The backend should provide an API to query transactions with multiple filters, including date range and transaction type. Implement API key management for secure access.
## Requirements
### Technology Stack
- **Primary Language:** JavaScript (Node.js)
- **Database:** Choose a suitable database (e.g., MongoDB, PostgreSQL).
### Indexing Focus
- **Target Validator:** Luganodes (`ronin:6aaabf51c5f6d2d93212cf7dad73d67afa0148d0`).
- **Transaction Types:** Staking, Unstaking, and Reward transactions.
### API Endpoint
- **Endpoint:** `/transactions`
- **Filters:** Date range, transaction type (Stake, Unstake, Reward).
- **Response Format:** JSON containing transaction details.
### API Key Management
- System for generating, validating, and revoking API keys.
- Authenticate each request using an API key.
## Development Steps
1. **Setup Node.js Project**
- Initialize a new Node.js project.
- Install necessary libraries.
2. **Blockchain Interaction**
- Develop functionality for Ronin blockchain interaction.
- Logic to filter and index transactions for Luganodes.
3. **Database Integration**
- Setup and integrate a database.
- Design schema for transaction data.
4. **API Development**
- Create the `/transactions` endpoint.
- Query logic based on provided filters.
5. **API Key System**
- Develop the API key management system.
- Integrate API key validation.
6. **Testing and Validation**
- Test the application thoroughly.
- Validate data accuracy and filter effectiveness.
7. **Documentation**
- Document API usage and setup instructions.
## Bonus Features
1. **Rate Limiting**
2. **Advanced Filtering**
3. **Analytics**
## Deliverables
1. Source code repository.
2. Documentation for setup, usage, and API.
3. (Optional) Deployment on a test server.