Skip to content

Releases: The-Sycorax/DenaroWalletClient

v0.0.6-beta

20 Jan 23:37
Compare
Choose a tag to compare

Overview:

This is the 6th beta release of the Denaro Wallet Client, developed by The Sycorax. This version introduces several new features and improvements, focusing on enhancing the functionality, efficiency, and user experience of the wallet client.

A significant enhancement in this version is the ability for users to view the real-world monetary value of their Denaro balances. Additionally, users also have the option to convert the value of their balances in various international fiat currencies and major cryptocurrencies, with USD as the default. This functionality adds a layer of convenience, allowing users to understand the value of their holdings in a currency that is more familiar and relevant to them.

The introduction of Denaro paper wallets is another major addition in this version, offering users with a secure and physical alternative for wallet storage. Additionally, the wallet client has been updated to support backup capabilities for wallet files via the CLI. Wallet generation has also been refined, and now incorporates the option to use a 12-word mnemonic phrase, facilitating the recoverability of deterministic wallets.

Improvements have been made to the wallet decryption process, focusing on making it more efficient in decrypting, accessing, and viewing the contents of wallet files. Modifications have also been made to the command-line interface, including the introduction of new sub-commands and options to facilitate these new features.

Due to the amount of new features and changes that have been made in this version and the previous, there is an increased likelihood of encountering bugs in this version. As such, this beta release is considered experimental. It is recommended that users thoroughly read the disclaimer and changelog before using this version.

DISCLAIMER:

Neither The-Sycorax nor contributors of this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is an experimental beta release, and is not recommended for production use.

User are solely responsible for the security and management of their assets! Therefore, it is strongly recommended that users back up their cryptographic keys and wallets before using this software.

The use of this software acknowledges acceptance of ALL associated risks, including financial losses, with no liability on The-Sycorax or contributors of this project. This software is provided 'as is' under the MIT License without guarantees or warranties of any kind, expressed or implied.

Full Changelog:

  • New Features:

    • The ability to view the real-world value of Denaro balances.
    • Generating Denaro paper wallets.
    • Support for backing up wallet files.
    • Generating wallets based on a mnemonic phrase.
    • Improved wallet decryption.

  • Command-line Interface:

    • Changes:

      • Reorganized the command structure for wallet and address generation with a new generate sub-command.

        • The generatewallet sub-command has been updated to generate wallet.

        • The generateaddress sub-command has been updated to generate address.

        • This change simplifies the command structure and improves usability by grouping related functionalities under a single sub-command.

      • The -pretty option for the decryptwallet sub-command has been replaced with -json.

      • The -filter option has been removed from the decryptwallet sub-command. It has been removed in support of the decryptwallet filter sub-command which has the same exact functionality, dose not require a specific syntax, and is easier to use.

      • Updated help messages for better documentation and consistency.

    • New Sub-commands and Options:

      • A generate paperwallet sub-command has been added to facilitate the creation of Denaro paper wallets either by using an address that is associated with a wallet file, or directly via a private key that corresponds to a particular address (See Paper Wallet Support for more details).

      • A backupwallet sub-command has been added which allow users to create backups of their wallet files. Users can specify the filepath of a directory to save a wallet backup file. If no specific filepath is provided then wallet backup files will be saved to the ./wallets/wallet_backups/ directory by default.

      • A -phrase option has been added to the generate wallet sub-command to allow the creation of wallets based on a 12 word mnemonic phrase. This option will enable deterministic address generation by default, therefore it can be used to recover determinisitic addresses as long as the mnemonic phrase and password are correct.

      • A -convert-to option has been added to the balance sub-command which allows users to convert the monetary value of their balances to a specified currency, factoring in current exchange rates against the USD price of DNR. This option supports 161 international currencies and major cryptocurrencies, and requires three letter currency code (See New Balance Checking Features for more details).


  • wallet_client.py Changelog:

    • The generateAddressHelper and main functions have been slightly modified to support the creation of wallets based on a 12 word mnemonic phrase.

    • Added a custom parameter to the ensure_wallet_directories_exist function. This is used to create a custom directory at a specific filepath.

    • Various operations that are responsible for retrieving address and private key data in the prepareTransaction function have been moved to single get_address_and_private_key function.

    • Added console message when filtering wallet entries by origin.

    • Fixed various typos throughout the codebase.

    • Introduced a generatePaperWallet function to facilitate paper wallet generation.

    • Significant improvements have been introduced to the balance checking system.

      • The checkBalance function has been updated.
      • Added new functions: is_valid_currency_code and get_price_info.
      • See New Balance Checking Features for more details.
    • Updated various CLI sub-commands to accommodate the newly added features.

    • Modified the check_args function to accommodate changes made to the CLI.

    • Refactored decryptWalletEntries Function:

      • This sub-section documents the modifications and enhancements made to the decryptWalletEntries function, highlighting significant improvements in it's performance, efficiency, and code structure.

        Details
        • Addressed issues related to code verbosity and structural organization.
        • Resolved inefficiencies in processing large wallet files.
        • Implemented more concise and Pythonic determination of wallet type.
        • Enhanced the function's capability to handle deterministic wallets.
        • Refined logic for handling both encrypted and non-encrypted wallets.
        • Replaced the pretty parameter with to_json.
        • Introduced a nested function handle_entry_decryption for entry processing.
        • Introduced a nested function filter_entries for more efficient filtering of wallet entries.
        • Improved handling for specific scenarios involving sub-commands (balance, send, generate paperwallet).
        • Improved conditional output formatting based on user input.
        • Enhanced the mechanism for sorting and filtering fields in the output.
        • Removed disorganized address filtering logic from the main code block.
        • Applied address filtering separately to generated and imported entries.
        • Implemented support for non-JSON output, providing a more readable format with clear differentiation between internally generated and imported entry types.
        • Expanded the use of DataManipulation.secure_delete, ensuring enhanced data security.
  • wallet_generation_util.py Changelog:

    • An is_valid_mnemonic function has been added to validate mnemonic phrases.
  • data_manipulation_util.py Changelog:

    • A backup_wallet method has been added to facilitate backing up wallet files.
  • cryptographic_util.py Changelog:

    • Fixed a none type error in get_failed_attempts method.

  • New Balance Checking Features:

    • This release of the wallet client introduces significant improvements to the balance checking system. It now allows users to view the real-world value of their Denaro (DNR) balances. Additionally, it introduces the -convert-to option in the balance sub-command, enabling users to view their balances in over 161 international currencies or the top 100 cryptocurrencies. Detailed technical information about these features are outlined below.

      Technical Details:
      • Modified checkBalance Function:

        • New function parameters have been introduced:
          • currency_code: This parameter is used to specify the currency in which the user wants to view the real-world value of their DNR balance. Standard currency abbreviations are used (e.g., 'USD', 'EUR', 'BTC').
            • If a currency code is not provided or is invalid, USD is used by default.
          • currency_symbol: This parameter represents the symbol of the currency (e.g., '$', '€', ect...)
            ...
Read more

v0.0.5-beta

31 Dec 09:11
Compare
Choose a tag to compare
v0.0.5-beta Pre-release
Pre-release

Overview:

This is the 5th beta release of the Denaro Wallet Client, developed by The Sycorax. This release introduces a number of significant features and enhancements, marking a major milestone in the ongoing commitment to develop a robust, efficient, and secure wallet client for the Denaro cryptocurrency.

This release brings a comprehensive overhaul to the wallet client and introduces a wide range of new features such as transaction support, balance checking, choosing a Denaro node, the ability to import wallet entries, multi-address generation, Wallet Annihilation, and new CLI options. This release also introduces numerous improvements and additions to core features, organizational restructuring of the internal code-base, and changes to the JSON data structure of wallet files.

Due to the amount of new features and changes that have been made, there is an increased likelihood of encountering bugs in this version. As such, this beta release is considered experimental. It is recommended that users thoroughly read the disclaimer and changelog before using this version.

DISCLAIMER:

Neither The-Sycorax nor contributors of this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is an experimental beta release, and is not recommended for production use.

User are solely responsible for the security and management of their assets! Therefore, it is strongly recommended that users back up their cryptographic keys and wallets before using this software.

The use of this software implies acceptance of ALL associated risks, including financial losses, with no liability on The-Sycorax or contributors of this project. This software is provided 'as is' under the MIT License without guarantees or warranties of any kind, express or implied.

Full Changelog:

Organizational Changes:

  • Restructured cryptographic_util.py:
    • Divided various classes into separate utility modules for enhanced optimization and organization.
    • Renamed 'TOTP_Utils' to 'TOTP'.
    • Renamed 'CryptoWallet' to 'EncryptDecryptUtils'.
    • Merged 'EncryptionUtils' class methods into 'EncryptDecryptUtils'.
    • Renamed 'VerificationUtils' to 'Verification' and relocated to a new module verification_utils.py.
    • Moved 'DataManipulation' class to a new module data_manipulation_util.py.
    • Retained 'ProofOfWork', 'TOTP', and 'EncryptDecryptUtils' classes in cryptographic_util.py.
    • Renamed 'key_generation.py' to 'wallet_generation_util.py'.
    • Relocated all utility modules to denaro/wallet/utils directory.

Transaction Support:

  • New modules have been added to facilitate transaction support.

    • These new modules include: transaction.py, transaction_input.py, transaction_output.py, and coinbase_transaction.py.
  • Various functions have been added to wallet_client.py to facilitate transaction and balance management.

    • These new functions include: prepareTransaction, create_transaction, get_address_info, checkBalance, get_balance_info, validate_and_select_node, and initialize_wallet.

New Sub-commands and Options:

Note: This changelog dose not include full usage documentation. Documentation will be made available at a later time to reflect these changes.

  • A send sub-command with multiple options has been added, allowing users to initiate transactions.

  • A balance sub-command with multiple options has been added, allowing users to check the balance of addresses associated with their wallet.

  • An import sub-command has been added to facilitate the import of wallet entries based on the private key associated with an address.

  • Introduced a -show option to the decryptwallet filter and balance sub-commands, allowing users to selectively filter wallet entries based on their origin (See the 'Changes to Wallet JSON Data' section for more information). This option includes two choices:

    • -show generated: Retrieves only wallet entries that have been internally generated.
    • -show imported: Retrieves only wallet entries that have been imported by the user.
  • Introduced a -node option for the send and balance sub-commands, allowing users to choose a preferred Denaro node for conducting transactions or checking balances. This option requires a valid IP or URL string. If a node is not specified by the user, then the wallet client will use the default Denaro node (https://denaro-node.gaetano.eu.org)

  • Introduced an -amount option to the generateaddress sub-command, enabling users to generate multiple addresses in a single command, with a maximum limit of 256 addresses (subject to change).

Improvements and Additions:

  • Conducted a thorough refactoring of verbose logging mechanisms within the generateAddressHelper function for improved clarity and efficiency.

  • Enhanced the generateAddressHelper function to support multi-address generation and to streamline the process of importing wallet entries.

  • After wallet data has been generated, a warning about the risks of disclosing mnemonic phrases or private keys will be shown to the user.

  • After wallet data has been generated, the cryptographic keys along with the Denaro address associated with the data will be shown to the user. For non-deterministic wallet data, the mnemonic phrase, private key, and address are displayed, while for deterministic wallet data, only the private key and address are shown. The master mnemonic is also displayed but only when a new wallet is generated.

  • Added a generate_from_private_key function to wallet_generation_util.py for generating wallet data directly from a private key.

  • Refactored the decryptWalletEntries function to allow for both the output of unencrypted wallet data and the capability to filter and process wallet entries based on their origin (See the 'Changes to Wallet JSON Data' section and the new -show option for more information).

  • Incorporated various messages within the decryptWalletEntries function to accommodate the newly introduced transaction and balance checking features.

  • Integrated a feature in the wallet decryption process to display a count of decrypted entries out of the total number of entries (e.g. "Decrypting wallet entry 3 of 15").

  • Implemented validation of wallet addresses and private keys using regular expression patterns.

  • Modified the sort_arguments_based_on_input and check_args functions to ensure proper usage of CLI arguments and to prevent erroneous combinations that could lead to errors.

  • Addressed and corrected various typos throughout the codebase.

  • Slightly optimized some functions for enhanced efficiency and performance.

  • The Wallet Annihilation feature now only performs a single deletion pass instead of two, reducing operational overhead.

  • Eliminated repetitive code in the update_failed_attempts and reset_failed_attempts methods by consolidating common functionalities into a singular get_failed_attempts method, thereby reducing code redundancy.

  • Implemented robust validation using regular expressions for IP addresses, URLs, and port numbers. This specifically applies when utilizing the -node option. The validation process rigorously checks the format of the entered values, ensuring they conform to standard IP, URL, and port number patterns. This also ensures secure and error-free connections for subsequent web requests.

    • Node verification has also been implemented to check if the user-provided IP or URL might be associated with actual Denaro node (See the 'Denaro Node Verification' section for more information).

Wallet Annihilation:

Changes to Wallet JSON Data Structure:

  • The imported_entries object array is a new addition to the wallet architecture, and has been implemented to accommodate the new import feature. This array is used specifically for storing wallet entries that have been imported by the user, and will be added to the JSON structure of a wallet file whenever a user first performs an import. The imported_entries is distinct from the entries array which holds internally generated wallet entries. The introduction of imported_entries serves several critical purposes:

    1. Data Segregation: It provides a clear separation between entries originating from what has been internally generated by the wallet client (stored in entries) and those imported by the user (stored in imported_entries). This segregation is vital for maintaining data organization and clarity within wallet JSON data.

    2. Deterministic Wallet Data Generation: The deterministic generation of wallet data relies on the total number of objects stored in the entries array. Specifically, this count (+1) is used as an index in the address derivation path for generating child keys and their corresponding addresses. Introducing data from external sources into the entries array would disrupt this deterministic process. The separation of imported_entries ensures the integrity and consistency of the deterministic generation of wallet data by isolating imported data from the internal generation process.

    3. Operational Integrity: By keeping imported entries in a separate array, the wallet system avoids potential conflicts and errors that could arise from mixing externally sourced data with internally generated data. This separation is fundamental to the reliable and secure operation of the wallet.

In summary, imported_entries enhances the wallet's functionality by providing a dedicated space for user-imported entries, thereby protecting the integrity of the determi...

Read more

v0.0.4-beta

11 Nov 20:28
Compare
Choose a tag to compare
v0.0.4-beta Pre-release
Pre-release

Overview:

This is the 4th beta release of the Denaro Wallet Client, developed by The Sycorax. This beta release introduces a complete overhaul of the wallet client update mechanism.

This release transitions the wallet client update mechanism from a module-based approach to a standalone utility script. The script now uses a functional architecture with a command-line interface, providing enhanced GitHub API interactions and improved backup procedures.

This release also includes optimized processes for fetching and decoding file content from GitHub, as well as improved local file storage and cleanup operations. The update logic has been restructured to support manual updates and downgrades, allowing users to choose specific versions from various release channels.

Configuration management is also expanded to include update channels, while retaining its core functionality. The auto-update feature has been refactored to operate based on the channel set in the configuration file.

Changelog:

Architectural Refactoring:

  • Shift from a module within wallet_client.py to a standalone script.
  • Integration of argparse for command-line interface.
  • Removal of redundant code and streamlining of functions.

GitHub API Integration:

  • Refined GitHub API interactions for more efficient operation.
  • Comprehensive error handling and logging for GitHub API interactions.

Update Logic:

  • Introduction of manual update and downgrade capabilities, allowing users to select versions from stable, beta, or dev channels.
  • Auto-update feature refactored to operate based on the channel set in the configuration file.
  • Improved update process with comprehensive file tree fetching and processing.

Backup and File Management:

  • Extracts file paths and URLs from GitHub tree data.
  • Fetches and decodes file content from GitHub.
  • Local saving of decoded content from the GitHub API, with clean-up of non-existing files.
  • Enhanced backup functionality.

Configuration Management:

  • Expansion of configuration management to include update channels.
  • Preserved the core functionality of reading and writing configuration while introducing additional settings for user preferences.

User Interaction:

  • Integration of argparse for command-line interface.
  • Introduction of argument parsing to facilitate manual and automatic updates/downgrades.

Content Fetching and SHA1 Calculation:

  • Optimized content fetching and decoding from GitHub.
  • Refined SHA1 calculation for file integrity verification.

Additional Functionalities and Fixes:

  • Better functionality for fetching commit SHA and verifying version tags.
  • Functionality to determine if a version change is a downgrade.
  • Enhanced path and URL extraction from JSON data.
  • Fixed a NoneType error when using the filter subparser without the address argument

Installation:

For detailed installation procedures, CLI usage, and example commands, refer to the README.md file in the repository.

Disclaimer:

Neither The Sycorax nor any contributors to this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is a beta release, and is not recommended for production use. It is strongly recommended that users back up their cryptographic keys. Users are solely responsible for the security of their assets!

Feedback:

Feedback is invaluable for ongoing development. Users are encouraged to report issues or provide feedback for improvement.

v0.0.3-beta

23 Oct 19:40
Compare
Choose a tag to compare
v0.0.3-beta Pre-release
Pre-release

Overview:

This is the 3rd beta release of the Denaro Wallet Client, developed by The Sycorax. This beta release introduces a number of significant changes aimed at improving security, performance, and usability. Users are encouraged to update to this new version. Below is a summary of key modifications.

  • Update Mechanism:

    • The wallet client now includes an automated update feature. It connects to the GitHub repository to fetch the latest version of the software files. If an update is available, the user is prompted for confirmation to proceed with the update. All local files that differ from the repository version will be replaced.

    • An option is also provided for creating a backup of the existing wallet client version before an update. After a successful update, the wallet client will have to be ran again.

    • The update mechanism is designed to be efficient and user-friendly. Additionally, it uses SHA-1 hashing to ensure data integrity during the update process.

  • Performance Improvements:

    • Wallets now have a hard cap of 256 address entries. This has been implemented to enhance performance, especially during decryption operations.

    • Garbage collection has been removed from the 'secure_delete' function and is only called after the entry point in wallet_client.py, resulting in significant performance gains.

  • Security Enhancements:

    • A mechanism to thwart brute-force attacks has been implemented in the backup_and_overwrite_helper function. This added layer of security protects against unauthorized access to encrypted wallet passwords during overwrites.
  • Code Refactoring:

    • Multiple functions have been relocated to optimize the code structure. This makes future updates easier and ensures that the software follows best coding practices.

    • Redundant code has been removed, and minor clean-up tasks have been carried out to improve code quality.

  • Bug Fixes:

    • A bug involving wallet type verification during overwrites has been fixed. The issue stemmed from incorrect usage of 'deterministic' or 'non-deterministic' flags from user input rather than the wallet file.
  • Future Considerations:

    • The possibility of implementing update channels such as dev, beta, and release is being considered, which would offer users more flexibility in choosing software versions.

Installation:

For detailed installation procedures, CLI usage, and example commands, refer to the README.md file in the repository.

Disclaimer:

Neither The Sycorax nor any contributors to this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is a beta release, and is not recommended for production use. It is strongly recommended that users back up their cryptographic keys. Users are solely responsible for the security of their assets!

Feedback:

Feedback is invaluable for ongoing development. Users are encouraged to report issues or provide feedback for improvement.

v0.0.2-beta

19 Oct 06:02
Compare
Choose a tag to compare
v0.0.2-beta Pre-release
Pre-release

Overview:
This is the second beta release of the Denaro Wallet Client, developed by The Sycorax.

Changelog:

  • Various updates to the README file.
  • Updates to CLI help messages.
  • Moved 'secure_cleanup' in 'wallet_client.py' to the 'DataManipulation' class of 'cryptographic_util.py'.
  • Removed redundant 'secure_delete' function from 'wallet_client.py' because it was already in the 'DataManipulation' class.
  • Most functions will now call the 'secure_cleanup' method in the 'DataManipulation' class whenever there is an error, return statement, or basically any exit point. This ensures that any (potential) sensitive variables are deleted but also purged from memory. This minimizes the potential risks associated with sensitive data lingering in memory. However performance is slower as a result.
  • Fixed the path to the Denaro logo in the 'handle_new_encrypted_wallet' function. It was causing the script to error out when generating a new encrypted wallet with 2-Factor Authentication.

Installation:
For detailed installation procedures, CLI usage, and example commands, refer to the README.md file in the repository.

Disclaimer:
Neither The Sycorax nor any contributors to this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is a beta release, and is not recommended for production use. It is strongly recommended that users back up their cryptographic keys. Users are solely responsible for the security of their assets!

Feedback:
Feedback is invaluable for ongoing development. Users are encouraged to report issues or provide feedback for improvement.

Denaro Wallet Client v0.0.1-beta

18 Oct 04:42
ca8dc80
Compare
Choose a tag to compare
Pre-release

Overview:
This is the first beta release of the Denaro Wallet Client, developed by The Sycorax. The client is tailored for managing assets in the Denaro cryptocurrency and places a strong emphasis on security features. It employs dual-layer encryption, utilizing the ChaCha20-Poly1305 and AES-GCM algorithms, to secure cryptographic keys. While the initial focus is on Denaro, the architecture allows for adaptation to other cryptocurrencies.

Installation:
For detailed installation procedures, CLI usage, and example commands, refer to the README.md file in the repository.

Features:

  • Security: The client integrates multiple security features, including dual-layer encryption with ChaCha20-Poly1305 and AES-GCM. Refer to the function overviews within the codebase for in-depth explanations of these mechanisms.

  • Command-Line Interface: The client comes with a CLI that supports a range of sub-commands and options. These facilitate various tasks like wallet generation, address creation, and wallet decryption.

Disclaimer:
Neither The Sycorax nor any contributors to this project assume liability for any loss of funds incurred through the use of this software! Be advised that this is a beta release, and is not recommended for production use. It is strongly recommended that users back up their cryptographic keys. Users are solely responsible for the security of their assets!

Feedback:
User feedback is invaluable for ongoing development. Users are encouraged to report issues or provide feedback for improvement.