Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Successful in 3s
Deploy to Testnet / deploy-testnet (push) Successful in 1m34s
Documentation Validation / validate-docs (push) Failing after 12s
Documentation Validation / validate-policies-strict (push) Successful in 5s
Multi-Node Stress Testing / stress-test (push) Successful in 2s
Node Failover Simulation / failover-test (push) Failing after 3s
330 lines
7.9 KiB
Markdown
330 lines
7.9 KiB
Markdown
# Transaction Sending for hermes Agents
|
|
|
|
**Level**: Beginner
|
|
**Prerequisites**: Wallet Basics (Scenario 01), AITBC CLI installed
|
|
**Estimated Time**: 25 minutes
|
|
**Last Updated**: 2026-05-02
|
|
**Version**: 1.0
|
|
|
|
## 🧭 **Navigation Path:**
|
|
**🏠 [Documentation Home](../README.md)** → **🎭 [Agent Scenarios](./README.md)** → *You are here*
|
|
|
|
**breadcrumb**: Home → Scenarios → Transaction Sending
|
|
|
|
---
|
|
|
|
## 🎯 **See Also:**
|
|
- **📖 Previous Scenario**: [01 Wallet Basics](./01_wallet_basics.md)
|
|
- **📖 Next Scenario**: [03 Genesis Deployment](./03_genesis_deployment.md)
|
|
- **🤖 Agent SDK**: [Agent SDK Documentation](../agent-sdk/README.md)
|
|
- **⛓️ Blockchain**: [Blockchain Documentation](../blockchain/README.md)
|
|
|
|
---
|
|
|
|
## 📚 **Scenario Overview**
|
|
|
|
This scenario demonstrates how hermes agents send transactions on the AITBC blockchain, including single transfers, batch transactions, and transaction monitoring.
|
|
|
|
### **Use Case**
|
|
An hermes agent needs to send transactions to:
|
|
- Pay for GPU compute resources
|
|
- Transfer AIT tokens between wallets
|
|
- Participate in marketplace operations
|
|
- Execute smart contract calls
|
|
|
|
### **What You'll Learn**
|
|
- Send single transactions
|
|
- Send batch transactions efficiently
|
|
- Monitor transaction status
|
|
- Estimate transaction fees
|
|
- Handle transaction failures
|
|
|
|
### **Features Combined**
|
|
- **Wallet Operations** (Scenario 01)
|
|
- **Blockchain Transactions**: Single and batch transfers
|
|
- **Transaction Monitoring**: Status tracking and fee estimation
|
|
|
|
---
|
|
|
|
## 📋 **Prerequisites**
|
|
|
|
### **Knowledge Required**
|
|
- Completed Scenario 01 (Wallet Basics)
|
|
- Understanding of blockchain transactions
|
|
- Transaction fee concepts
|
|
|
|
### **Tools Required**
|
|
- AITBC CLI installed
|
|
- Wallet with AIT tokens
|
|
- Access to AITBC blockchain node
|
|
|
|
### **Setup Required**
|
|
- Wallet created with sufficient balance
|
|
- Blockchain node running and accessible
|
|
|
|
### **Wallet Authentication**
|
|
For transaction signing, the CLI requires wallet authentication:
|
|
|
|
```bash
|
|
# Interactive prompt (default)
|
|
aitbc transaction send --from my-wallet --to <address> --amount 100
|
|
|
|
# Password file (recommended for scripts)
|
|
aitbc transaction send --from my-wallet --to <address> --amount 100 --password-file /path/to/password.txt
|
|
|
|
# Environment variable
|
|
export KEYSTORE_PASSWORD=mypassword
|
|
aitbc transaction send --from my-wallet --to <address> --amount 100
|
|
```
|
|
|
|
**Security Best Practices:**
|
|
- Use password files with restricted permissions (chmod 600)
|
|
- Store password files outside the repository
|
|
- Avoid hardcoding passwords in scripts
|
|
|
|
---
|
|
|
|
## 🔧 **Step-by-Step Workflow**
|
|
|
|
### **Step 1: Send a Single Transaction**
|
|
Transfer AIT tokens from one wallet to another.
|
|
|
|
```bash
|
|
aitbc transaction send \
|
|
--from my-agent-wallet \
|
|
--to ait1recipient123... \
|
|
--amount 100 \
|
|
--fee 1
|
|
```
|
|
|
|
You'll be prompted for wallet password to sign the transaction.
|
|
|
|
Output:
|
|
```
|
|
Transaction submitted: 0xabc123...
|
|
From: my-agent-wallet
|
|
To: ait1recipient123...
|
|
Amount: 100 AIT
|
|
Fee: 1 AIT
|
|
```
|
|
|
|
### **Step 2: Check Transaction Status**
|
|
Monitor the status of your transaction.
|
|
|
|
```bash
|
|
aitbc transaction status 0xabc123...
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Transaction Hash: 0xabc123...
|
|
Status: confirmed
|
|
Block Height: 12345
|
|
Timestamp: 2026-05-02 10:30:00
|
|
```
|
|
|
|
### **Step 3: Estimate Transaction Fee**
|
|
Calculate the fee before sending.
|
|
|
|
```bash
|
|
aitbc transaction estimate-fee \
|
|
--from my-agent-wallet \
|
|
--to ait1recipient123... \
|
|
--amount 100
|
|
```
|
|
|
|
### **Step 4: Send Batch Transactions**
|
|
Send multiple transactions efficiently.
|
|
|
|
```bash
|
|
aitbc transaction batch \
|
|
--from my-agent-wallet \
|
|
--transactions transactions.json
|
|
```
|
|
|
|
transactions.json:
|
|
```json
|
|
[
|
|
{
|
|
"to": "ait1recipient1...",
|
|
"amount": 50,
|
|
"fee": 1
|
|
},
|
|
{
|
|
"to": "ait1recipient2...",
|
|
"amount": 75,
|
|
"fee": 1
|
|
}
|
|
]
|
|
```
|
|
|
|
### **Step 5: View Pending Transactions**
|
|
Check transactions waiting in mempool.
|
|
|
|
```bash
|
|
aitbc transaction pending
|
|
```
|
|
|
|
---
|
|
|
|
## 💻 **Code Examples Using Agent SDK**
|
|
|
|
### **Example 1: Send Single Transaction**
|
|
```python
|
|
from aitbc_agent_sdk import Agent, AgentConfig
|
|
|
|
config = AgentConfig(
|
|
name="payment-agent",
|
|
blockchain_network="mainnet",
|
|
wallet_name="payment-wallet"
|
|
)
|
|
|
|
agent = Agent(config)
|
|
agent.start()
|
|
|
|
# Send transaction
|
|
tx_hash = agent.send_transaction(
|
|
to="ait1recipient...",
|
|
amount=100,
|
|
fee=1
|
|
)
|
|
|
|
print(f"Transaction sent: {tx_hash}")
|
|
|
|
# Wait for confirmation
|
|
status = agent.wait_for_confirmation(tx_hash, timeout=60)
|
|
print(f"Transaction status: {status}")
|
|
```
|
|
|
|
### **Example 2: Batch Transactions with Error Handling**
|
|
```python
|
|
from aitbc_agent_sdk import Agent, AgentConfig
|
|
import asyncio
|
|
|
|
async def send_batch_transactions():
|
|
config = AgentConfig(
|
|
name="batch-agent",
|
|
blockchain_network="mainnet",
|
|
wallet_name="batch-wallet"
|
|
)
|
|
|
|
agent = Agent(config)
|
|
await agent.start()
|
|
|
|
# Define transactions
|
|
transactions = [
|
|
{"to": "ait1recipient1...", "amount": 50, "fee": 1},
|
|
{"to": "ait1recipient2...", "amount": 75, "fee": 1},
|
|
{"to": "ait1recipient3...", "amount": 100, "fee": 1}
|
|
]
|
|
|
|
# Send batch
|
|
results = await agent.send_batch_transactions(transactions)
|
|
|
|
# Process results
|
|
for i, result in enumerate(results):
|
|
if result['success']:
|
|
print(f"Transaction {i+1}: {result['hash']} - Success")
|
|
else:
|
|
print(f"Transaction {i+1}: Failed - {result['error']}")
|
|
|
|
asyncio.run(send_batch_transactions())
|
|
```
|
|
|
|
### **Example 3: Transaction Monitoring**
|
|
```python
|
|
from aitbc_agent_sdk import Agent, AgentConfig
|
|
import asyncio
|
|
|
|
async def monitor_transaction(tx_hash):
|
|
config = AgentConfig(
|
|
name="monitor-agent",
|
|
blockchain_network="mainnet"
|
|
)
|
|
|
|
agent = Agent(config)
|
|
await agent.start()
|
|
|
|
# Monitor transaction status
|
|
while True:
|
|
status = await agent.get_transaction_status(tx_hash)
|
|
print(f"Status: {status['status']}, Block: {status.get('block_height', 'pending')}")
|
|
|
|
if status['status'] == 'confirmed':
|
|
print("Transaction confirmed!")
|
|
break
|
|
elif status['status'] == 'failed':
|
|
print("Transaction failed!")
|
|
break
|
|
|
|
await asyncio.sleep(5)
|
|
|
|
asyncio.run(monitor_transaction("0xabc123..."))
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 **Expected Outcomes**
|
|
|
|
After completing this scenario, you should be able to:
|
|
- Send single and batch transactions
|
|
- Monitor transaction status
|
|
- Estimate transaction fees
|
|
- Handle transaction failures gracefully
|
|
- Use transactions in agent workflows
|
|
|
|
---
|
|
|
|
## 🧪 **Validation**
|
|
|
|
Validate this scenario with the shared 3-node harness:
|
|
|
|
```bash
|
|
bash scripts/workflow/44_comprehensive_multi_node_scenario.sh
|
|
```
|
|
|
|
**Node coverage**:
|
|
- `aitbc1`: genesis / primary node checks
|
|
- `aitbc`: follower / local node checks
|
|
- `gitea-runner`: automation / CI node checks
|
|
|
|
**Validation guide**:
|
|
- [Scenario Validation Guide](./VALIDATION.md)
|
|
|
|
**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**
|
|
- [Blockchain Documentation](../blockchain/README.md)
|
|
- [Transaction Models](../apps/coordinator-api/src/app/domain/payment.py)
|
|
- [Gas Economics](../apps/blockchain-node/src/aitbc_chain/economics/gas.py)
|
|
|
|
### **External Resources**
|
|
- [Blockchain Transaction Basics](https://www.investopedia.com/terms/t/transaction.asp)
|
|
|
|
### **Next Scenarios**
|
|
- [06 Basic Trading](./06_basic_trading.md) - Use transactions for trading
|
|
- [21 Compute Provider Agent](./21_compute_provider_agent.md) - Payment workflows
|
|
- [27 Cross Chain Trader](./27_cross_chain_trader.md) - Cross-chain transactions
|
|
|
|
---
|
|
|
|
## 📊 **Quality Metrics**
|
|
- **Structure**: 10/10 - Clear transaction workflow
|
|
- **Content**: 10/10 - Comprehensive transaction operations
|
|
- **Code Examples**: 10/10 - Working Agent SDK examples
|
|
- **Status**: Active scenario
|
|
|
|
---
|
|
|
|
*Last updated: 2026-05-02*
|
|
*Version: 1.0*
|
|
*Status: Active scenario document*
|