atropos/environments/community/ethereum_virtual_machine/setup.sh
Jeremy Melvin 3bed7c64b9
Ethereum Virtual Machine Text to Transaction Environment (#187)
* EVM-text_to_transaction

* update structure

* Update README

---------

Co-authored-by: Jeremy Melvin <jeremy@openblocklabs.com>
2025-06-20 09:16:00 +10:00

165 lines
4.2 KiB
Bash

#!/bin/bash
# Ethereum Virtual Machine Environment Setup Script
# This script installs Foundry/Anvil and sets up the Python environment
set -e # Exit on any error
echo "🔧 Setting up Ethereum Virtual Machine Environment..."
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${GREEN}[INFO]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Check if Foundry is already installed
check_foundry() {
if command -v anvil &> /dev/null && command -v cast &> /dev/null && command -v forge &> /dev/null; then
print_status "Foundry is already installed"
anvil --version
return 0
else
return 1
fi
}
# Install Foundry
install_foundry() {
print_status "Installing Foundry..."
# Download and install Foundry
curl -L https://foundry.paradigm.xyz | bash
# Source the profile to update PATH
if [ -f ~/.bashrc ]; then
source ~/.bashrc
elif [ -f ~/.zshrc ]; then
source ~/.zshrc
fi
# Run foundryup to install the latest version
if command -v foundryup &> /dev/null; then
foundryup
else
print_warning "foundryup not found in PATH. Please restart your terminal and run 'foundryup'"
print_warning "Then run this setup script again."
exit 1
fi
}
# Verify installation
verify_installation() {
print_status "Verifying installation..."
if ! command -v anvil &> /dev/null; then
print_error "Anvil not found. Installation may have failed."
print_error "Please restart your terminal and try again."
exit 1
fi
if ! command -v cast &> /dev/null; then
print_error "Cast not found. Installation may have failed."
exit 1
fi
print_status "✅ Foundry tools installed successfully:"
echo " - $(anvil --version)"
echo " - $(cast --version)"
echo " - $(forge --version)"
}
# Install Python dependencies
install_python_deps() {
print_status "Installing Python dependencies..."
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
print_status "Installed EVM-specific dependencies from requirements.txt"
else
print_warning "requirements.txt not found. Installing minimal dependencies..."
pip install pyyaml>=6.0
fi
print_status "Note: Main dependencies (openai, pydantic, requests) are provided by atroposlib"
}
# Check for OpenAI API key
check_openai_key() {
if [ -z "$OPENAI_API_KEY" ]; then
print_warning "OPENAI_API_KEY environment variable not set"
echo " Set it with: export OPENAI_API_KEY='your-api-key-here'"
echo " This is required for question generation"
else
print_status "✅ OPENAI_API_KEY is set"
fi
}
# Test the configuration
test_config() {
print_status "Testing configuration..."
python -c "
try:
from anvil import AnvilConfig
config = AnvilConfig()
print('✅ Configuration loaded successfully')
print(f' - Config file: {config.config_file}')
print(f' - Network port: {config.anvil.port}')
print(f' - Fork URL: {config.anvil.fork_url}')
print(f' - Custom wallet: {config.funding.custom_wallet}')
except Exception as e:
print(f'❌ Configuration test failed: {e}')
exit(1)
"
}
# Main setup process
main() {
echo "🚀 Starting setup process..."
echo
# Check if already installed
if check_foundry; then
print_status "Foundry already installed, skipping installation"
else
install_foundry
verify_installation
fi
echo
install_python_deps
echo
check_openai_key
echo
test_config
echo
print_status "🎉 Setup completed successfully!"
echo
echo "Next steps:"
echo " 1. Configure configs/token_transfers.yaml if needed"
echo " 2. Set OPENAI_API_KEY if not already set"
echo " 3. Run inference: python evm_server.py process --env.data_path_to_save_groups evm_rollouts.jsonl"
echo " 4. Or run training: python evm_server.py serve"
echo
echo "For troubleshooting, see README.md"
}
# Run main function
main "$@"