sal/examples/hero_vault
2025-05-10 01:21:10 +03:00
..
advanced_example.rhai feat: introduce hero_vault 2025-05-08 17:44:37 +03:00
agung_contract_with_args.rhai Support conatrcts call args in rhai bindings 2025-05-10 00:42:21 +03:00
agung_send_transaction.rhai refactor and add peaq support 2025-05-09 16:57:31 +03:00
contract_example.rhai remove obsolete print 2025-05-09 19:15:34 +03:00
example.rhai feat: introduce hero_vault 2025-05-08 17:44:37 +03:00
key_persistence_example.rhai feat: introduce hero_vault 2025-05-08 17:44:37 +03:00
load_existing_space.rhai feat: introduce hero_vault 2025-05-08 17:44:37 +03:00
README.md Add docs 2025-05-10 01:21:10 +03:00

Hero Vault Cryptography Examples

This directory contains examples demonstrating the Hero Vault cryptography functionality integrated into the SAL project.

Overview

Hero Vault provides cryptographic operations including:

  • Key space management (creation, loading, encryption, decryption)
  • Keypair management (creation, selection, listing)
  • Digital signatures (signing and verification)
  • Symmetric encryption (key generation, encryption, decryption)
  • Ethereum wallet functionality
  • Smart contract interactions
  • Key-value store with encryption

Example Files

  • example.rhai - Basic example demonstrating key management, signing, and encryption
  • advanced_example.rhai - Advanced example with error handling, conditional logic, and more complex operations
  • key_persistence_example.rhai - Demonstrates creating and saving a key space to disk
  • load_existing_space.rhai - Shows how to load a previously created key space and use its keypairs
  • contract_example.rhai - Demonstrates loading a contract ABI and interacting with smart contracts
  • agung_send_transaction.rhai - Demonstrates sending native tokens on the Agung network
  • agung_contract_with_args.rhai - Shows how to interact with contracts with arguments on Agung

Running the Examples

You can run the examples using the herodo tool that comes with the SAL project:

# Run a single example
herodo --path example.rhai

# Run all examples using the provided script
./run_examples.sh

Key Space Storage

Key spaces are stored in the ~/.hero-vault/key-spaces/ directory by default. Each key space is stored in a separate JSON file named after the key space (e.g., my_space.json).

Ethereum Functionality

The Hero Vault module provides comprehensive Ethereum wallet functionality:

  • Creating and managing wallets for different networks
  • Sending ETH transactions
  • Checking balances
  • Interacting with smart contracts (read and write functions)
  • Support for multiple networks (Ethereum, Gnosis, Peaq, Agung, etc.)

Security

Key spaces are encrypted with ChaCha20Poly1305 using a key derived from the provided password. The encryption ensures that the key material is secure at rest.

Best Practices

  1. Use Strong Passwords: Since the security of your key spaces depends on the strength of your passwords, use strong, unique passwords.
  2. Backup Key Spaces: Regularly backup your key spaces directory to prevent data loss.
  3. Script Organization: Split your scripts into logical units, with separate scripts for key creation and key usage.
  4. Error Handling: Always check the return values of functions to ensure operations succeeded before proceeding.
  5. Network Selection: When working with Ethereum functionality, be explicit about which network you're targeting to avoid confusion.
  6. Gas Management: For Ethereum transactions, consider gas costs and set appropriate gas limits.