> For the complete documentation index, see [llms.txt](https://aether-framework.gitbook.io/aetherframework/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aether-framework.gitbook.io/aetherframework/blockchain-integration.md).

# Blockchain Integration

**Aether integrates blockchain technology for secure, on-chain decision-making.**

It allows agents to interact with blockchain networks like Ethereum and Solana, enabling **trustless operations** and **verifiable task execution**.

***

#### **Key Features**

* **Smart Contract Deployment**: Deploy contracts to automate task verification and execution.
* **On-Chain Decision-Making**: Nodes interact with blockchain for trustless operations and decentralized coordination.
* **Secure Wallet Management**: Wallet configurations are securely managed using environment variables for paths and private keys.

***

#### **Example: Deploying a Smart Contract**

Here’s how to deploy and interact with a smart contract on Ethereum using Aether’s Blockchain Integration module:

```python
from src.utils.blockchain_manager import BlockchainManager

# Initialize the Blockchain Manager
blockchain = BlockchainManager()

# Define contract ABI and Bytecode
abi = [
    {
        "constant": True,
        "inputs": [],
        "name": "getValue",
        "outputs": [{"name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    }
]
bytecode = "0x608060405234801561001057600080fd5b5060405161010038038061010083398101806040528101908080518201929190505050806000819055505060d58061003e6000396000f3fe6080604052600080fdfea165627a7a723058202cfa2cf67d..."

# Deploy the contract
contract_address = blockchain.deploy_contract(abi, bytecode)
print(f"Contract deployed at: {contract_address}")

# Interact with the contract
result = blockchain.call_contract_function(contract_address, abi, "getValue")
print(f"Result from contract: {result}")
```

***

#### **Managing Wallets Securely**

Aether supports **secure wallet management** by dynamically retrieving wallet configurations using **environment variables**.

***

**Solana Wallet**

Set the wallet path using the `SOLANA_WALLET_PATH` environment variable:

```plaintext
SOLANA_WALLET_PATH=/path/to/solana-wallet.json
```

**Ethereum Wallet**

Set the private key using the `ETHEREUM_WALLET_PRIVATE_KEY` environment variable:

```plaintext
ETHEREUM_WALLET_PRIVATE_KEY=your_ethereum_private_key_here
```

***

#### **Code Snippet for Wallet Loading**

```python
import os

# Load wallets securely
solana_wallet_path = os.getenv("SOLANA_WALLET_PATH")
ethereum_private_key = os.getenv("ETHEREUM_WALLET_PRIVATE_KEY")

print(f"Solana Wallet Path: {solana_wallet_path}")
print("Ethereum Private Key Loaded.")
```

***

#### **Common Issues and Troubleshooting**

* **Problem**: `FileNotFoundError: Solana wallet path not found.`\
  **Solution**: Ensure the `SOLANA_WALLET_PATH` environment variable is set correctly.
* **Problem**: `ValueError: Ethereum private key not configured.`\
  **Solution**: Set the `ETHEREUM_WALLET_PRIVATE_KEY` environment variable.
* **Problem**: Contract deployment failed.\
  **Solution**:
  * Verify your RPC URL is correct.
  * Ensure your Ethereum account has sufficient funds for gas fees.

***

#### **Wallet Configuration**

**Environment Variables for Wallets**

Wallet paths and private keys are securely managed using environment variables. This approach ensures **sensitive data is protected** and avoids hardcoding values in source files.

***

**Referencing Wallets in YAML**

In the `config.yaml` file, wallets are referenced dynamically using their respective environment variables:

```yaml
blockchain:
  solana:
    wallet_env_var: "SOLANA_WALLET_PATH"
  ethereum:
    wallet_env_var: "ETHEREUM_WALLET_PRIVATE_KEY"
```

***

#### **Instructions for Developers**

1. **Set the Environment Variables**: Add variables to your `.env` file or export them in your shell:

   ```plaintext
   export SOLANA_WALLET_PATH=/path/to/solana-wallet.json
   export ETHEREUM_WALLET_PRIVATE_KEY=your_private_key_here
   ```
2. **Edit the YAML File**: Specify the environment variable names for wallet configurations:

   ```yaml
   solana:
     wallet_env_var: "SOLANA_WALLET_PATH"
   ethereum:
     wallet_env_var: "ETHEREUM_WALLET_PRIVATE_KEY"
   ```
3. **Run the Framework**: The framework automatically loads these variables at runtime:

   ```python
   from src.utils.blockchain_manager import BlockchainManager
   blockchain = BlockchainManager()
   balance = blockchain.solana_get_balance("your_solana_address_here")
   print(f"Solana balance: {balance}")
   ```

***

#### **Security Benefits**

* **Environment-Specific**: Easily set different wallets for development, staging, and production environments.
* **No Hardcoding**: Protects sensitive data from being exposed in source control.
* **Scalability**: Works seamlessly in CI/CD pipelines and cloud-based deployments.

***
