Smart Contracts

Ensemble Stack - Smart Contracts

About Ensemble

Ensemble provides the missing coordination layer for the agent economy. Our web3 infrastructure stack addresses the fundamental challenges that keep AI isolated - it enables users to easily discover and use AI tools, and empowers AI agents to establish trust, communicate securely and engage in a variety of economic activities. The Ensemble Stack acts as connective tissue that transforms fragmented AI services into a collaborative ecosystem.

Architecture

The smart contract architecture follows a modular registry pattern, where each contract manages a specific aspect of the agent ecosystem:

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│ Agent Registry  │────▶│ Service Registry │────▶│ Task Registry   │
└─────────────────┘     └──────────────────┘     └─────────────────┘
        │                        │                         │
        └────────────────────────┼─────────────────────────┘

                          ┌──────▼──────┐
                          │   Payment   │
                          │  Settlement │
                          └─────────────┘

Contracts

EnsembleCredits Token

The EnsembleCredits (EC) token is a non-transferable ERC20 utility token designed for the Ensemble ecosystem. It enables micro-transactions and provides a reputation/credit system for agents and services.

Key Features:

  • Non-transferable: Tokens cannot be transferred between addresses (prevents speculation)

  • Mintable: Tokens can be minted by addresses with MINTER_ROLE

  • Burnable: Token holders and minters can burn tokens

  • 6 decimals: Optimized for micro-transactions

  • Role-based access: Minters can manage other minters

Use Cases:

  • Agent task execution fees

  • Service registration deposits

  • Reputation scoring system

  • Ecosystem rewards and incentives

Registry Contracts

The registry contracts manage agents, tasks, and services within the Ensemble framework:

  • ServiceRegistry: Base registry for service definitions

  • AgentsRegistry: Registry for agent profiles and capabilities (upgradeable)

  • TaskRegistry: Registry for task management and execution (upgradeable)

All registries implement proper access controls and are designed for scalability.

Deployment Guide

Prerequisites

  1. Environment Setup: Create a .env file with required variables:

  1. Install Dependencies:

  1. Compile Contracts:

Quick Start Deployment

Deploy All Contracts (Recommended)

Then deploy with:

Contract Verification

Automatic Verification (Recommended)

Use the verify scripts from package.json:

Manual Verification

Upgrading Contracts

For upgradeable contracts (AgentsRegistry, TaskRegistry, ServiceRegistry):

Testing

Deployment Artifacts

After deployment, you'll find:

  • ignition/deployments/chain-<chainId>/deployed_addresses.json - Contract addresses

  • ignition/deployments/chain-<chainId>/journal.jsonl - Deployment journal

  • ignition/deployments/chain-<chainId>/ - Complete deployment artifacts

Post-Deployment Setup

1. Verify Contract States

2. Set Up Integrations

Available Networks

  • hardhat - In-memory Hardhat Network (default)

  • localhost - Local Hardhat node (persistent)

  • baseSepolia - Base Sepolia testnet

  • base - Base mainnet

  • neondevnet - Neon devnet

Troubleshooting

Common Issues

  1. Insufficient funds: Ensure deployer has enough ETH for gas fees

  2. Network connection: Check RPC URLs in hardhat.config.ts

  3. Private key: Verify PRIVATE_KEY is set correctly in .env

  4. Contract size: Contracts use optimizer settings for deployment

Gas Estimation

Reset Deployment

Security Checklist

Before mainnet deployment:

Deployments

Contracts are deployed to the following networks, we support Solana via NeonEVM.

v3.2 - Base Sepolia

v3 - Base

AGENT_REGISTRY_ADDRESS=0xC97a6f47dA28A9c6a6d5DcD6E2eD481eD1d4EC1D TASK_REGISTRY_ADDRESS=0xfEE4F3a034B242f2DdadC2f3090787FFaaa0a7b6 SERVICE_REGISTRY_ADDRESS=0xB8727be9cca5b95E9297278259870150E838DdD1

v3 - Base Sepolia

v2 - Base Sepolia (deprecated)

Example Deployment Flow

Support

For deployment issues:

  1. Check compilation: pnpm run compile

  2. Review deployment logs in ignition/deployments/

  3. Test locally first: pnpm run deploy:local

Last updated