Environment Variables

3. Environment Variables

This section explains how to set up environment variables for AI API keys and Multi-Chain Web3 providers.

AI API Keys

Set the AI provider API keys for your chosen AI service(s).

Basic Configuration

Windows CMD:

set OPENAI_API_KEY="your_openai_key_here"
set ANTHROPIC_API_KEY="your_anthropic_key_here"
set LLAMA_API_KEY="your_llama_key_here"

Windows PowerShell:

$env:OPENAI_API_KEY="your_openai_key_here"
$env:ANTHROPIC_API_KEY="your_anthropic_key_here"
$env:LLAMA_API_KEY="your_llama_key_here"

Mac/Linux:

export OPENAI_API_KEY="your_openai_key_here"
export ANTHROPIC_API_KEY="your_anthropic_key_here"
export LLAMA_API_KEY="your_llama_key_here"

Web3 Provider Configuration

Ethereum Settings

Windows CMD:

set ETH_PROVIDER_URL="https://mainnet.infura.io/v3/your_infura_key"
set ETH_NETWORK="mainnet"
set ETH_CHAIN_ID="1"
set ETH_GAS_PRICE_STRATEGY="medium"
set ETH_PRIVATE_KEY="your_private_key"

Windows PowerShell:

$env:ETH_PROVIDER_URL="https://mainnet.infura.io/v3/your_infura_key"
$env:ETH_NETWORK="mainnet"
$env:ETH_CHAIN_ID="1"
$env:ETH_GAS_PRICE_STRATEGY="medium"
$env:ETH_PRIVATE_KEY="your_private_key"

Mac/Linux:

export ETH_PROVIDER_URL="https://mainnet.infura.io/v3/your_infura_key"
export ETH_NETWORK="mainnet"
export ETH_CHAIN_ID="1"
export ETH_GAS_PRICE_STRATEGY="medium"
export ETH_PRIVATE_KEY="your_private_key"

Solana Settings

Windows CMD:

set SOL_PROVIDER_URL="https://api.mainnet-beta.solana.com"
set SOL_NETWORK="mainnet-beta"
set SOL_COMMITMENT="confirmed"
set SOL_WALLET_KEY="your_wallet_key"
set SOL_RATE_LIMIT="30"

Windows PowerShell:

$env:SOL_PROVIDER_URL="https://api.mainnet-beta.solana.com"
$env:SOL_NETWORK="mainnet-beta"
$env:SOL_COMMITMENT="confirmed"
$env:SOL_WALLET_KEY="your_wallet_key"
$env:SOL_RATE_LIMIT="30"

Mac/Linux:

export SOL_PROVIDER_URL="https://api.mainnet-beta.solana.com"
export SOL_NETWORK="mainnet-beta"
export SOL_COMMITMENT="confirmed"
export SOL_WALLET_KEY="your_wallet_key"
export SOL_RATE_LIMIT="30"

CI/CD Configuration

GitHub Actions

name: NAREON Multi-Chain Deployment

env:
  # Network configurations
  ETH_NETWORK: mainnet
  SOL_NETWORK: mainnet-beta
  SOL_COMMITMENT: confirmed

jobs:
  deploy:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v2
      
    - name: Configure Environment
      env:
        # AI API Keys
        OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        
        # Ethereum Configuration
        ETH_PROVIDER_URL: ${{ secrets.ETH_PROVIDER_URL }}
        ETH_PRIVATE_KEY: ${{ secrets.ETH_PRIVATE_KEY }}
        
        # Solana Configuration
        SOL_PROVIDER_URL: ${{ secrets.SOL_PROVIDER_URL }}
        SOL_WALLET_KEY: ${{ secrets.SOL_WALLET_KEY }}
      run: |
        echo "Setting up environment variables..."

Jenkins Pipeline

pipeline {
    agent any
    
    environment {
        // AI API Keys
        OPENAI_API_KEY = credentials('openai-api-key')
        ANTHROPIC_API_KEY = credentials('anthropic-api-key')
        
        // Ethereum Settings
        ETH_PROVIDER_URL = credentials('eth-provider-url')
        ETH_PRIVATE_KEY = credentials('eth-private-key')
        ETH_NETWORK = 'mainnet'
        
        // Solana Settings
        SOL_PROVIDER_URL = credentials('sol-provider-url')
        SOL_WALLET_KEY = credentials('sol-wallet-key')
        SOL_NETWORK = 'mainnet-beta'
    }
    
    stages {
        stage('Deploy') {
            steps {
                echo 'Deploying with configured environments...'
            }
        }
    }
}

Configuration Manager Implementation

using UnityEngine;
using System;

namespace NAREON.Config
{
    public static class EnvironmentManager
    {
        public static class AI
        {
            public static string OpenAIKey => GetRequiredEnvVar("OPENAI_API_KEY");
            public static string AnthropicKey => GetRequiredEnvVar("ANTHROPIC_API_KEY");
            public static string LlamaKey => GetRequiredEnvVar("LLAMA_API_KEY");
        }

        public static class Ethereum
        {
            public static string ProviderUrl => GetRequiredEnvVar("ETH_PROVIDER_URL");
            public static string Network => GetEnvVar("ETH_NETWORK", "mainnet");
            public static int ChainId => int.Parse(GetEnvVar("ETH_CHAIN_ID", "1"));
            public static string PrivateKey => GetRequiredEnvVar("ETH_PRIVATE_KEY");
        }

        public static class Solana
        {
            public static string ProviderUrl => GetRequiredEnvVar("SOL_PROVIDER_URL");
            public static string Network => GetEnvVar("SOL_NETWORK", "mainnet-beta");
            public static string Commitment => GetEnvVar("SOL_COMMITMENT", "confirmed");
            public static string WalletKey => GetRequiredEnvVar("SOL_WALLET_KEY");
        }

        private static string GetRequiredEnvVar(string key)
        {
            string value = Environment.GetEnvironmentVariable(key);
            if (string.IsNullOrEmpty(value))
            {
                throw new InvalidOperationException($"Required environment variable {key} not set");
            }
            return value;
        }

        private static string GetEnvVar(string key, string defaultValue)
        {
            return Environment.GetEnvironmentVariable(key) ?? defaultValue;
        }
    }
}

Important Notes

  1. Security Considerations

    • Never commit API keys or private keys to version control

    • Use secure secret management in CI/CD pipelines

    • Rotate keys regularly

    • Use different keys for development and production

  2. Network Selection

    • ETH_NETWORK options: mainnet, goerli, sepolia

    • SOL_NETWORK options: mainnet-beta, devnet, testnet

    • Use appropriate networks for development and testing

  3. Provider Selection

    • Ethereum providers: Infura, Alchemy, self-hosted nodes

    • Solana providers: Public RPC, private RPC endpoints

    • Consider using multiple providers for redundancy

  4. Usage in NAREON

    • These variables are used by:

      • NAREONAI class for AI service interactions

      • NAREONTokenManager for Ethereum transactions

      • NAREONSolanaManager for Solana transactions

      • Various utility classes for network interactions

  5. Error Handling

    • Implement proper error handling for missing variables

    • Validate environment variables at startup

    • Provide clear error messages for configuration issues

Last updated