Skip to content

Releases: zarca-ai/CryptoExplorer

v1.3 - QuickNodeAPI: The Slim Edition

Choose a tag to compare

@m-marqx m-marqx released this 28 Dec 23:20

Overview

This release refactor QuickNodeAPI class to be more a clean and less redundant and made error handling more robust. The API now handles edge cases that previously went unnoticed.


🎯 Core Improvements

Streamlined Architecture

  • DRY Principle Applied: Consolidated duplicate request logic into a single _make_request() method that handles all API calls
  • Modular Error Handling: Extracted error handling into dedicated methods (_check_response, _handle_request_exception) for cleaner, more maintainable code
  • Configurable Constants: Introduced class-level constants for timeouts and retry delays, making adjustments a breeze:
    RATE_LIMIT_SECONDS = 1
    CONNECTION_RETRY_SECONDS = 300
    TIMEOUT_RETRY_SECONDS = 120
    REQUEST_TIMEOUT = 60

Bug Fixes

  • Fixed logger identity crisis: renamed from moralis_API to quicknode_API 🐛

New Error Handling

  • SSLError Support: Now skips to the next API key on SSL failures
  • 403 Forbidden: Properly logs and fails over instead of crashing
  • Exhausted Keys: Clear "All API keys exhausted" message when all endpoints fail
  • JSON Decode Errors: Handles malformed API responses without breaking

Developer Experience

  • Added input validation for api_keys and default_api_key_idx parameters
  • Added return type hints across all methods for better IDE support

🧪 Test Suite Revamp

  • Reorganized tests into focused, logical test classes
  • Added comprehensive coverage for all new helper methods
  • New integration tests for complete failover scenarios
  • Edge case coverage for initialization and error paths

Full Changelog: v1.2.1...v1.3

v1.2.1 - The (un)necessary refactor

Choose a tag to compare

@m-marqx m-marqx released this 23 Jul 02:23

🔧 Refactor

• Removed unnecessary current block fetching from get_wallet_blocks() method
• Simplified get_wallet_blocks() to return only transaction block numbers
• Cleaned up method logic by removing redundant fetch_block("now") call

📝 Changes

• Updated version from 1.2 to 1.2.1 in setup.py
• Streamlined get_wallet_blocks() implementation for better performance
• Updated corresponding unit tests to reflect the refactored behavior

🧪 Testing

• Updated test expectations to match new get_wallet_blocks() behavior
• Removed mock dependencies for fetch_block in related tests
• Minor code formatting improvements


This patch release refactors the get_wallet_blocks() method to be more focused and efficient by removing the automatic inclusion of the current block number, providing cleaner and more predictable results for block analysis workflows.


Full Changelog: v1.2...v1.2.1

v1.2 - Enhanced Transaction Processing & Database Support

Choose a tag to compare

@m-marqx m-marqx released this 18 Jul 02:23

🚀 Major Features

• Added pagination support for large transaction datasets
• Implemented database integration with SQLAlchemy and PostgreSQL support
• Enhanced spam filtering with verified contract checking
• Added cursor-based transaction fetching for improved performance

🔧 New Methods

• fetch_paginated_transactions() - Handle large transaction sets efficiently
• fetch_unpaginated_transactions() - Process smaller datasets quickly
• fetch_first_and_last_transactions() - Get wallet transaction boundaries
• Enhanced get_wallet_blocks() with improved filtering

⚡ API Improvements

• fetch_block() now supports "now" parameter for current timestamp
• Switched to get_wallet_token_balances_price endpoint for better balance data
• Added exclude_unverified_contracts filtering
• Improved balance formatting using balance_formatted field
• Enhanced swap processing with better direction detection

🛠️ Technical Enhancements

• Added SQLAlchemy >=2.0.41 and psycopg2 >=2.9.10 dependencies
• Improved error handling and type hints
• Better separation of concerns in transaction processing
• Enhanced parameter validation

🧪 Testing

• Significantly expanded test coverage
• Added comprehensive tests for new methods
• Improved error handling test scenarios
• Better mocking and edge case coverage

🔍 Quality Improvements

• Enhanced logging functionality
• Better spam detection for ERC20 transfers
• Improved API response structure handling
• More robust pagination support


This release focuses on scalability, data quality, and database integration, making CryptoExplorer more suitable for production environments and large-scale data processing.


Full Changelog: v1.1.4...v1.2

v1.1.4 - Filter spam tokens

Choose a tag to compare

@m-marqx m-marqx released this 19 Jun 04:21

MoralisAPI

  • refactor get_wallet_token_balances to filter spam tokens.

Full Changelog: v1.1.3...v1.1.4

v1.1.3 fix Overflow Error

Choose a tag to compare

@m-marqx m-marqx released this 16 May 02:23
  • Fix OverflowError: int too big to convert caused by fetching tokens with many high decimal values.

Full Changelog: v1.1.2...v1.1.3

v1.1.2 - fix Overflow Error

Choose a tag to compare

@m-marqx m-marqx released this 04 May 19:41
  • Fix OverflowError: int too big to convert caused by fetching tokens with many high decimal values.

Full Changelog: v1.1.1...v1.1.2

v1.1.1

Choose a tag to compare

@m-marqx m-marqx released this 19 Apr 22:10

MoralisAPI

  • Add get_wallet_blocks method that retrieves the historical token balances for a specific wallet.

Full Changelog: v1.1.0...v1.1.1

v1.1 - Hotfix Update

Choose a tag to compare

@m-marqx m-marqx released this 18 Mar 04:55
  • Fix ModuleNotFoundError chaging import paths.
  • Relocated the unit tests from the root tests directory to src/tests.
  • Updated the import paths in the test files accordingly.

Full Changelog: v1.0.2...v1.1.0

v1.0.3rc1

v1.0.3rc1 Pre-release
Pre-release

Choose a tag to compare

@m-marqx m-marqx released this 18 Mar 04:41
fix: fix import paths excluding `src` path

v1.0.2 - Unit Tests update

Choose a tag to compare

@m-marqx m-marqx released this 17 Mar 01:25

Unit Test Update


Full Changelog: v1.0.0...v1.0.2