9.4 KiB
Wallet Basics for hermes Agents
Level: Beginner
Prerequisites: Basic Python knowledge, AITBC CLI installed
Estimated Time: 20 minutes
Last Updated: 2026-05-02
Version: 1.0
🧭 Navigation Path:
🏠 Documentation Home → 🎭 Agent Scenarios → You are here
breadcrumb: Home → Scenarios → Wallet Basics
🎯 See Also:
- 📖 Next Scenario: 02 Transaction Sending
- 🤖 Agent SDK: Agent SDK Documentation
- 👛 Wallet Documentation: Wallet App
📚 Scenario Overview
This scenario demonstrates how hermes agents create, import, and manage AITBC wallets for blockchain operations. Wallets are essential for agents to hold AIT tokens, sign transactions, and interact with the blockchain.
Use Case
An hermes agent needs a wallet to:
- Hold AIT tokens for payments and rewards
- Sign transactions securely
- Participate in marketplace operations
- Earn rewards from mining or staking
What You'll Learn
- Create a new wallet with encrypted keystore
- Import an existing wallet from private key
- Check wallet balance
- List all wallets
- Export private key (with security warnings)
- Send AIT tokens to another address
- Request payment from another address
- Create multisig wallets
- Stake liquidity in pools
Features Combined
- Basic Wallet Operations: Wallet creation, import, and management
- Security: Encrypted keystore and private key handling
- CLI Integration: Command-line wallet operations
📋 Prerequisites
Knowledge Required
- Basic Python programming
- Understanding of public/private key cryptography
- Command-line interface usage
Tools Required
- AITBC CLI installed
- Python 3.13+
- Access to AITBC blockchain node
Setup Required
- AITBC blockchain node running
- Keystore directory configured (
/etc/aitbc/keystore)
Wallet Authentication
The CLI supports multiple methods for wallet password authentication:
# Interactive prompt (default)
aitbc wallet create my-agent-wallet
# Password file (recommended for scripts)
aitbc wallet create my-agent-wallet --password-file /path/to/password.txt
# Direct password (not recommended for production)
aitbc wallet create my-agent-wallet --password mypassword
# Environment variable
export KEYSTORE_PASSWORD=mypassword
aitbc wallet create my-agent-wallet
Security Best Practices:
- Use password files with restricted permissions (chmod 600)
- Store password files outside the repository
- Avoid hardcoding passwords in scripts
- Use environment variables for CI/CD pipelines
- Never commit passwords to version control
🔧 Step-by-Step Workflow
Step 1: Create a New Wallet
Create a new wallet with AES-256-GCM encryption for your agent.
# Using AITBC CLI
aitbc wallet create my-agent-wallet
# You'll be prompted for a password
# Enter password: ********
# Confirm password: ********
The wallet will be created with:
- Ed25519 key pair
- Encrypted keystore file
- AIT address (ait1...)
- Public key for verification
Step 2: List All Wallets
View all available wallets in your keystore.
aitbc wallet list
Output:
Wallet Name Address Source
----------------------------------------------------------
my-agent-wallet ait1abc123... file
Step 3: Check Wallet Balance
Query the blockchain for your wallet's balance.
aitbc wallet balance my-agent-wallet
Output:
Wallet: my-agent-wallet
Address: ait1abc123...
Balance: 1000.0 AIT
Nonce: 0
Step 4: Import Existing Wallet
Import a wallet from a private key (use with caution).
aitbc wallet import imported-wallet <private_key_hex>
Step 5: Export Private Key
Export private key for backup (security risk - use carefully).
aitbc wallet export my-agent-wallet
You'll be prompted for the wallet password to decrypt the key.
Step 6: Send AIT Tokens
Transfer AIT tokens to another address.
aitbc wallet my-agent-wallet send ait1recipient... 100
Output:
Transaction sent
{
"tx_id": "0xabc123...",
"from": "ait1sender...",
"to": "ait1recipient...",
"amount": 100,
"fee": 1,
"status": "pending"
}
Step 7: Request Payment
Generate a payment request for another address to send funds.
aitbc wallet my-agent-wallet request-payment 500
Output:
Payment request generated
{
"request_id": "req_1716789123",
"address": "ait1sender...",
"amount": 500,
"status": "pending",
"expires_at": "2026-05-28T08:30:00"
}
Step 8: Fund Wallet from Faucet
Request testnet funds from faucet (testnet only).
aitbc wallet my-agent-wallet fund
Output:
Faucet request submitted
{
"address": "ait1sender...",
"amount": 1000000,
"status": "processing",
"tx_id": "0xdef456..."
}
Step 9: Create Multisig Wallet
Create a multi-signature wallet requiring multiple signers.
aitbc wallet multisig-create ait1signer1... ait1signer2... ait1signer3...
Output:
Multisig wallet created
{
"wallet_name": "multisig_wallet_001",
"signers": ["ait1signer1...", "ait1signer2...", "ait1signer3..."],
"threshold": 2,
"address": "ait1multisig..."
}
Step 10: Stake Liquidity
Stake tokens in a liquidity pool to earn rewards.
aitbc wallet my-agent-wallet liquidity-stake 1000 --pool main
Output:
Liquidity stake created
{
"stake_id": "liquidity_1716789123",
"amount": 1000,
"pool": "main",
"apy": 8.5,
"status": "active"
}
💻 Code Examples Using Agent SDK
Example 1: Create Wallet Programmatically
from aitbc_agent_sdk import Agent, AgentConfig
from pathlib import Path
# Configure agent with wallet
config = AgentConfig(
name="my-agent",
blockchain_network="mainnet",
wallet_name="my-agent-wallet",
wallet_password="secure_password",
keystore_dir=Path("/etc/aitbc/keystore")
)
# Create agent (wallet will be created if it doesn't exist)
agent = Agent(config)
agent.start()
# Get wallet info
wallet_info = agent.get_wallet_info()
print(f"Address: {wallet_info['address']}")
print(f"Balance: {wallet_info['balance']} AIT")
Example 2: Check Balance and Sign Transaction
from aitbc_agent_sdk import Agent, AgentConfig
config = AgentConfig(
name="trading-agent",
blockchain_network="mainnet",
wallet_name="trading-wallet"
)
agent = Agent(config)
agent.start()
# Check balance
balance = agent.get_balance()
print(f"Current balance: {balance} AIT")
# Sign a transaction
transaction = {
"type": "TRANSFER",
"to": "ait1recipient...",
"amount": 100,
"fee": 1
}
signed_tx = agent.sign_transaction(transaction)
print(f"Signed transaction: {signed_tx['hash']}")
Example 3: Batch Wallet Operations
from aitbc_agent_sdk import Agent, AgentConfig
import asyncio
async def manage_multiple_wallets():
# Create multiple agents with different wallets
agents = []
for i in range(3):
config = AgentConfig(
name=f"worker-agent-{i}",
blockchain_network="mainnet",
wallet_name=f"worker-wallet-{i}"
)
agent = Agent(config)
await agent.start()
agents.append(agent)
# Check all balances
for agent in agents:
balance = await agent.get_balance()
print(f"{agent.name}: {balance} AIT")
asyncio.run(manage_multiple_wallets())
🎯 Expected Outcomes
After completing this scenario, you should be able to:
- Create encrypted wallets for your agents
- Manage multiple wallets securely
- Check balances and transaction history
- Use wallets programmatically via Agent SDK
- Understand wallet security best practices
🧪 Validation
Validate this scenario with the shared 3-node harness:
bash scripts/workflow/44_comprehensive_multi_node_scenario.sh
Node coverage:
aitbc1: genesis / primary node checksaitbc: follower / local node checksgitea-runner: automation / CI node checks
Validation guide:
Expected result:
- Scenario-specific commands complete successfully
- Cross-node health checks pass
- Blockchain heights remain in sync
- Any node-specific step is documented in the scenario workflow
🔗 Related Resources
AITBC Documentation
External Resources
Next Scenarios
- 02 Transaction Sending - Learn to send transactions
- 21 Compute Provider Agent - Use wallet in marketplace
- 27 Cross Chain Trader - Multi-chain wallet management
📊 Quality Metrics
- Structure: 10/10 - Clear workflow from creation to management
- Content: 10/10 - Comprehensive wallet operations coverage
- Code Examples: 10/10 - Working Agent SDK examples
- Status: Active scenario
Last updated: 2026-05-02
Version: 1.0
Status: Active scenario document