Skip to content

Shadow Harvester 0.3.0

Latest

Choose a tag to compare

@disassembler disassembler released this 15 Nov 04:29
· 8 commits to master since this release
9629ae0

📦 Changelog for Shadow Harvester v0.3.0

This release focuses on significantly expanding the application's debugging, testing, and operational capabilities by implementing a powerful local Mock API and finalizing the infrastructure for WebSocket and mass donation operations.


🛡️ Operational Resilience and Testing Infrastructure

  • Mock API Integration (--mock-api-port): A fully functional local Mock Scavenger API server has been implemented using the warp framework. This allows developers to run comprehensive integration tests and debug the submission, registration, and polling logic without contacting the live upstream API.
  • API Client Hardening: Improved error handling in src/api.rs to better parse detailed JSON error messages and status codes from the upstream API during registration and submission attempts.
  • Fatal Error Handling: The application now correctly terminates the entire process and prints a FATAL THREAD ERROR message if any critical worker thread (Manager, Submitter, Polling) fails.
  • Challenge Expiration Enforcement: Added logic to immediately halt the mining process if a challenge submission deadline has been passed, preventing wasted hashing time.

🚀 Wallet and Advanced Submission Features

  • Mass Donation Sweep (wallet donate-all): Implemented a comprehensive command to automate the donation process for Mnemonic wallets.
    • Supports base and enterprise address derivation.
    • Includes a 404 tolerance window to gracefully stop sweeping when unregistered indices are encountered.
    • Handles network retries, ALREADY MAPPED (409), and bad signature errors.
  • Challenge ID Simplification: The main --challenge flag now accepts a simple Challenge ID string (e.g., D07C21). The application automatically looks up the full parameters from the local Sled database, simplifying command usage.

💻 New CLI and Debugging Tools

The synchronous CLI toolkit has been expanded to support state inspection and data management:

Database Management (shadow-harvester db)

Command Functionality
db export --file <path> Dumps the entire contents of the Sled database to a portable JSON file.
db import --file <path> Imports data from a JSON backup file, using a non-duplicative logic to ensure existing keys are not overwritten.

Challenge & Wallet Inspection

Command Functionality
challenge details --id <ID> Outputs structured challenge details (ROM Key, Deadline) alongside local counts of completed solutions and pending submissions.
wallet list Lists unique wallet identifiers (<Mnemonic Hash>:<Account Index>) stored in the database.
wallet addresses --wallet <hash:account> Lists all known derived Cardano addresses and their corresponding payment indexes for a given wallet.