Skip to main content

Overview

The ZKScore Achievement Registry contract emits events for all significant actions including achievement creation, claiming, progress updates, and badge minting. These events are essential for tracking achievement lifecycle and building real-time applications.
Events are indexed on the blockchain and can be efficiently queried. They provide a complete audit trail for all achievement-related activities.

Achievement Events

AchievementCreated

Emitted when a new achievement is created.
Parameters:
  • achievementId (uint256 indexed): The unique achievement ID
  • name (string): Achievement name
  • category (uint8): Category index (0-7)
  • rarity (Rarity): Rarity level (0-4)
When Emitted:
  • When createAchievement() is successfully called
  • During batch achievement creation
Example Usage:

AchievementClaimed

Emitted when a user claims an achievement.
Parameters:
  • user (address indexed): User who claimed the achievement
  • achievementId (uint256 indexed): The claimed achievement ID
  • timestamp (uint256): Claim timestamp
When Emitted:
  • When claimAchievement() is successfully executed
  • During batch achievement claims
Example Usage:

AchievementUpdated

Emitted when an achievement’s configuration is updated.
Parameters:
  • achievementId (uint256 indexed): The updated achievement ID
  • updateData (bytes): Encoded update data
When Emitted:
  • When updateAchievement() is called
  • When achievement parameters are modified

AchievementDeactivated

Emitted when an achievement is deactivated.
Parameters:
  • achievementId (uint256 indexed): The deactivated achievement ID
  • timestamp (uint256): Deactivation timestamp
When Emitted:
  • When deactivateAchievement() is called
  • When achievement is permanently disabled

Progress Events

ProgressUpdated

Emitted when a user’s progress toward an achievement is updated.
Parameters:
  • user (address indexed): User whose progress was updated
  • achievementId (uint256 indexed): The achievement ID
  • progress (uint256): New progress value
When Emitted:
  • When updateProgress() is called
  • When automatic progress tracking updates
  • During batch progress updates
Example Usage:

Badge Events

BadgeMinted

Emitted when an NFT badge is minted for a claimed achievement.
Parameters:
  • user (address indexed): Badge recipient
  • achievementId (uint256 indexed): Associated achievement ID
  • tokenId (uint256): Minted badge token ID
When Emitted:
  • When achievement is successfully claimed
  • Immediately after AchievementClaimed event
Example Usage:

Event Monitoring

Real-time Achievement Tracker

Event Analytics

Best Practices

Event Handling

  1. Use Indexed Parameters: Filter events efficiently using indexed parameters
  2. Handle Missing Events: Implement retry logic for missed events
  3. Store Event Data: Cache important event data locally
  4. Monitor Gas Costs: Be aware of gas costs for event queries
  5. Error Recovery: Implement error handling for event listeners

Performance Optimization

  1. Limit Block Ranges: Query smaller block ranges to avoid timeouts
  2. Use Filters: Apply filters to reduce data processing
  3. Batch Processing: Process multiple events in batches
  4. Cache Results: Cache frequently accessed event data
  5. Pagination: Implement pagination for large event sets