# 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.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aether-framework.gitbook.io/aetherframework/blockchain-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
