Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Launching a Memecoin with Built-in Buyback and Burn

A technical guide for developers on implementing an automated buyback and burn mechanism in a memecoin. Covers contract architecture, fee routing, and economic design.
Chainscore © 2026
introduction
TOKENOMICS

Launching a Memecoin with Built-in Buyback and Burn

A technical guide to implementing automated buyback and burn mechanisms in a memecoin smart contract to create deflationary pressure and align incentives.

Buyback and burn is a deflationary tokenomics mechanism where a project uses its treasury or a portion of transaction fees to permanently remove tokens from circulation. For memecoins, which often lack intrinsic utility, this creates a fundamental supply/demand driver. The core process involves a smart contract that autonomously acquires tokens from the open market (the buyback) and sends them to a dead address like 0x000...dead (the burn), making them irrecoverable. This reduces the total supply, increasing the relative scarcity of remaining tokens if demand holds steady.

Implementing this requires designing a fee structure within your token's transfer function. A common model for an ERC-20 memecoin on Ethereum or an EVM-compatible chain like Base or Solana (using Neon EVM) allocates a percentage of each transfer—for example, 5%—to a dedicated buyback contract. This contract accumulates the collected fees (in the native chain's currency, like ETH or SOL) and uses them to execute market buys. The critical security consideration is to perform the buyback via a decentralized exchange's router (e.g., Uniswap V2) to ensure a fair, transparent price and avoid manipulation.

Here is a simplified Solidity snippet for a transfer function with a buyback fee, assuming a 5% tax where 2% goes to a buyback contract address:

solidity
function _transfer(address sender, address recipient, uint256 amount) internal virtual override {
    uint256 buybackFee = (amount * 200) / 10000; // 2%
    uint256 netAmount = amount - buybackFee;

    super._transfer(sender, address(this), buybackFee); // Send fee to contract
    super._transfer(sender, recipient, netAmount); // Send net to recipient

    // Logic to trigger buyback once accumulated fees exceed a threshold
    _accumulatedFees += buybackFee;
    if (_accumulatedFees >= _buybackThreshold) {
        _executeBuybackAndBurn();
    }
}

The _executeBuybackAndBurn function would swap the accumulated native currency for the token via a DEX and send the purchased tokens to the burn address.

Key design parameters you must define include the fee percentage, the buyback trigger threshold (e.g., execute when 1 ETH is accumulated), and the burn address. It's crucial to make the mechanism transparent and verifiable on-chain. Projects like Shiba Inu (SHIB) and Baby Doge Coin popularized this model, using portions of transaction taxes to fund automatic buybacks. However, the effectiveness depends on sustained trading volume to generate fees and community trust in the autonomous execution.

Beyond basic implementation, consider advanced patterns. A liquidity-backed buyback uses fees to add to the token's DEX liquidity pool instead of burning, increasing price stability. A manual, governance-triggered burn allows the community to vote on executing large burns from the treasury. Regardless of the model, clearly communicate the mechanics in your project's documentation and verify the contract code on a block explorer like Etherscan. This transparency is essential for building the trust required for the deflationary mechanism to positively impact token perception and value.

prerequisites
GETTING STARTED

Prerequisites and Setup

Before launching a memecoin with a buyback and burn mechanism, you need to establish your development environment and understand the core components. This guide covers the essential tools and foundational knowledge required.

You will need a development environment capable of writing, testing, and deploying smart contracts. The primary tools are Node.js (v18+), npm or yarn, and a code editor like VS Code. The core of your project will be a Solidity contract, so you must install the Hardhat or Foundry framework. These frameworks provide a local blockchain, testing suite, and deployment scripts. For example, initialize a Hardhat project with npx hardhat init and install the OpenZeppelin Contracts library for secure, audited base code using npm install @openzeppelin/contracts.

Understanding the token standard is critical. Most memecoins use the ERC-20 standard for fungibility and easy exchange integration. Your contract will extend this standard. The buyback and burn mechanism is not a standard feature; you must design it. At its core, the contract needs to autonomously use a portion of its treasury or transaction fees to purchase its own tokens from the market and send them to a dead address, permanently removing them from circulation. This requires logic to handle the native currency (like ETH) and interact with a Decentralized Exchange (DEX) router.

You must also set up a wallet for deployment and testing. Install MetaMask and fund it with testnet ETH from a faucet (e.g., for Sepolia). Securely store your wallet's private key or mnemonic phrase. Configure your hardhat.config.js to connect to a testnet like Sepolia using a node provider such as Alchemy or Infura. This setup allows you to run tests on a live test network that mimics mainnet conditions, which is essential for verifying the buyback function's interaction with real DEX pools before any real funds are at stake.

Finally, plan your tokenomics and mechanism details. Decide on the source of funds for buybacks: will it be a dedicated treasury wallet, a tax on transfers, or a percentage of transaction fees? You must code these rules into the contract. For testing, you will need to simulate a liquidity pool. Using the Hardhat Mainnet Forking feature or deploying mock DEX contracts (like Uniswap V2) on your local network allows you to test the buyback function's execution path end-to-end before proceeding to a public testnet.

core-architecture
CORE CONTRACT ARCHITECTURE

Launching a Memecoin with Built-in Buyback and Burn

This guide details the essential smart contract components for a memecoin with automated buyback and burn mechanics, focusing on Solidity implementation and security considerations.

The foundation of a buyback-and-burn memecoin is a standard ERC-20 token with a custom tax mechanism. A typical approach is to implement a fee on transfers (e.g., 5-10%) that is split between a liquidity pool and a dedicated buyback wallet. The contract uses a _transfer function override to deduct this fee before sending the net amount to the recipient. The fee tokens are then automatically swapped for the native chain currency (like ETH) via the integrated DEX router and sent to the buyback contract. It's critical to use a well-audited DEX router interface, such as Uniswap V2's IUniswapV2Router02, to handle these swaps securely.

The buyback contract's core function is to execute market buys of the token using the accumulated native currency and then permanently destroy the purchased tokens. A simple yet effective pattern is a buybackAndBurn function that calls the DEX router to swap ETH for tokens and then sends those tokens to the address(0) dead wallet or a burn address. To prevent manipulation, this function should be callable by anyone (permissionless) or triggered automatically when the buyback wallet balance exceeds a threshold. Implementing a minimum threshold prevents wasteful gas fees on tiny, frequent transactions.

Security is paramount. Common vulnerabilities include reentrancy during swaps, integer overflows in fee calculations, and centralization risks from privileged functions. Use OpenZeppelin's ReentrancyGuard and SafeMath libraries (or Solidity 0.8+'s built-in checks). Avoid owner functions that can modify the tax rate or wallet addresses after deployment, as this erodes trust. Instead, hardcode these parameters or use a timelock and multi-signature wallet for any necessary upgrades. Thorough testing on a testnet like Sepolia is non-negotiable before mainnet launch.

For transparency, events should be emitted for all key actions: TaxCollected, BuybackExecuted, and TokensBurned. These allow users and tracking tools to verify the contract's activity on-chain. The contract should also include view functions to return the total burned supply and the current balance of the buyback wallet. This architecture, combining a taxed ERC-20 with an autonomous buyback/burn mechanism, creates a deflationary economic model that can incentivize holding, but its success ultimately depends on community trust and the project's underlying utility or meme value.

design-patterns
MECHANISMS

Buyback Design Patterns

Explore the core smart contract designs for implementing automated buyback and burn mechanisms in memecoins and DeFi tokens.

02

Liquidity Pair (LP) Acquisition & Burn

Instead of buying tokens from the open market, the protocol uses fees to permanently remove liquidity provider (LP) tokens from the primary DEX pair (e.g., TOKEN/ETH).

Process:

  1. Fees accumulate as the base asset (ETH, BNB).
  2. The contract uses half to buy the native token and half to provide liquidity, minting new LP tokens.
  3. These newly minted LP tokens are sent to a dead address, permanently locking the liquidity and increasing the price floor.

This method, pioneered by tokens like SafeMoon, directly increases the pool's price impact and reduces sell pressure but is irreversible.

03

Reflection Tax with Auto-Liquidity

A tax on every transaction (e.g., 8-10%) is split between several functions. A portion is automatically swapped for the native token and paired with the other portion to add liquidity, which is then locked. The remaining tokens for the buyback are burned.

Typical Tax Distribution:

  • 2% Reflected to existing holders.
  • 3% Added to auto-liquidity pool (locked).
  • 3% Swapped for buyback & burn.

This creates a positive feedback loop: volume increases liquidity, reflections, and burn rate. It's common in BSC and Ethereum memecoins but can be complex to audit.

05

Burn-on-Transfer with Blackhole Mechanics

A simple, gas-efficient pattern where a percentage of every token transfer is immediately destroyed. This is not a traditional buyback but achieves a similar deflationary effect.

Implementation:

  • Override the _transfer function in an ERC-20 contract.
  • Calculate a burn amount (e.g., 1% of amount).
  • Subtract from the recipient's received amount and add to total supply burned.

Pros: Extremely simple, no treasury or swap logic required. Cons: Purely deflationary; doesn't actively support the price with buying pressure. Used by early tokens like Burn Token (BURN).

step-by-step-implementation
STEP-BY-STEP IMPLEMENTATION

Launching a Memecoin with Built-in Buyback and Burn

This guide details the technical implementation of a Solidity-based memecoin with an automated buyback and burn mechanism, using a real-world contract structure.

The core of a buyback-and-burn memecoin is a smart contract that automatically uses a portion of its transaction fees to purchase its own tokens from the open market and permanently destroy them. This creates a deflationary pressure on the token's supply. A standard implementation involves a base ERC-20 token with a custom tax mechanism. For example, a contract might levy a 5% fee on every transfer, splitting it between a liquidity pool and a dedicated buyback wallet. The funds in the buyback wallet are then programmatically used to execute buybacks, often triggered by volume thresholds or manual functions callable by the contract owner.

Here is a simplified Solidity code snippet illustrating the key tax and distribution logic within the token's _transfer function. This example uses a 5% total tax, sending 3% to a liquidity pool address and 2% to a buyback fund. The remaining 95% is sent to the recipient.

solidity
function _transfer(address sender, address recipient, uint256 amount) internal virtual override {
    uint256 taxAmount = amount * 5 / 100;
    uint256 liquidityTax = taxAmount * 3 / 5; // 3%
    uint256 buybackTax = taxAmount * 2 / 5;   // 2%
    uint256 netAmount = amount - taxAmount;

    super._transfer(sender, address(this), liquidityTax);
    super._transfer(sender, buybackWallet, buybackTax);
    super._transfer(sender, recipient, netAmount);
}

The buybackWallet accumulates the 2% tax from all transactions, building a treasury for market operations.

The actual buyback function is typically separate and can be automated or manually executed. It uses the accumulated funds in the buybackWallet to swap the native currency (e.g., ETH, BNB) for the token via a decentralized exchange router like Uniswap or PancakeSwap, then sends the purchased tokens to a dead address. A basic manual buyback function might look like this:

solidity
function executeBuyback(uint256 amountNative) external onlyOwner {
    address[] memory path = new address[](2);
    path[0] = IUniswapV2Router(router).WETH();
    path[1] = address(this);

    IUniswapV2Router(router).swapExactETHForTokensSupportingFeeOnTransferTokens{
        value: amountNative
    }(0, path, DEAD_ADDRESS, block.timestamp);
}

The DEAD_ADDRESS (e.g., 0x000...dead) is a wallet with no private key, ensuring tokens sent there are permanently burned and removed from circulation.

Critical security and design considerations must be addressed before deployment. The contract owner functions, like executeBuyback and the ability to adjust tax rates, should include timelocks or multi-signature requirements to prevent rug pulls. The contract must also renounce ownership of the liquidity pool (LP) tokens after initial creation to ensure the liquidity is locked and cannot be removed by the developer. Furthermore, the buyback logic should include checks to prevent buying during extreme price volatility and must handle slippage appropriately to avoid front-running and maximize value for the burn.

For a complete launch, you would deploy this token contract, create a liquidity pool on a DEX, and then lock the LP tokens using a trusted service like Unicrypt or Team Finance. Post-deployment, you must verify and publish the source code on a block explorer like Etherscan or BscScan to establish transparency. The buyback function can be automated using a keeper network like Chainlink Automation or Gelato to trigger purchases when the buyback wallet balance exceeds a set threshold, transforming the mechanism from manual to fully autonomous, sustained by the token's own transaction volume.

MEMECOIN DEVELOPMENT

Key Code Examples and Snippets

Practical code snippets and explanations for implementing a memecoin with automated buyback and burn mechanics. These examples address common developer questions and implementation hurdles.

The core buyback and burn mechanism involves the contract using its own treasury or collected fees to purchase tokens from the open market and then destroying them. Here's a basic Solidity function outline.

solidity
function buybackAndBurn(uint256 amountInWei) external onlyOwner {
    // 1. Define the token and liquidity pool pair addresses
    address tokenAddress = address(this);
    address wethAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IUniswapV2Router02 router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    // 2. Define the path for the swap (ETH -> Token)
    address[] memory path = new address[](2);
    path[0] = wethAddress;
    path[1] = tokenAddress;

    // 3. Execute the swap, sending tokens to this contract
    router.swapExactETHForTokensSupportingFeeOnTransferTokens{
        value: amountInWei
    }(0, path, address(this), block.timestamp);

    // 4. Get the balance of tokens received and burn them
    uint256 tokenBalance = IERC20(tokenAddress).balanceOf(address(this));
    _burn(address(this), tokenBalance);
}

Key Points:

  • Uses swapExactETHForTokensSupportingFeeOnTransferTokens to handle tokens with transfer fees.
  • The onlyOwner modifier restricts execution, but this could be automated via a keeper or based on treasury thresholds.
  • The _burn function must be implemented in your ERC20 contract, typically by sending tokens to the address(0) dead wallet or reducing the total supply.
IMPLEMENTATION STRATEGIES

Fee and Buyback Mechanism Comparison

Comparison of common on-chain mechanisms for generating and executing buyback-and-burn for memecoins.

MechanismLiquidity Pool TaxTransfer TaxExternal Treasury

Primary Fee Source

On-chain DEX trades

All token transfers

Manual treasury funding

Buyback Trigger

Automatic on swap

Automatic on transfer

Manual or scheduled

Typical Fee Rate

3-5%

2-4%

N/A

Gas Cost Impact

High (on every swap)

High (on every transfer)

Low (batched execution)

Transparency

High (visible in LP)

High (visible in contract)

Variable

Complexity

Medium (requires LP router)

Low (simple modifier)

High (multi-sig management)

Slippage Control

Poor (uses market price)

Poor (uses market price)

Good (limit orders possible)

Regulatory Scrutiny

High (deemed security-like)

High (continuous tax)

Lower (discretionary)

security-considerations
MEMECOIN LAUNCH

Security and Risk Considerations

Launching a memecoin with buyback and burn introduces unique smart contract and economic risks. This guide covers critical security areas to audit before deployment.

03

Economic and Game Theory Attacks

The buyback-and-burn mechanic can be exploited if not carefully designed.

  • Pump-and-dump schemes: Large holders can manipulate the price before a scheduled buyback.
  • Buyback timing attacks: Bots can buy tokens seconds before a public buyback executes, then sell immediately after, extracting value from the treasury.
  • Solution: Use randomized or condition-based triggers (e.g., buyback 5% of treasury when volume exceeds $1M in 24h) instead of predictable schedules. Consider bonding curves or Dutch auctions for fairer price discovery.
06

Regulatory and Tax Compliance

Buyback mechanisms can have legal implications often overlooked by developers.

  • Security vs. utility token: Aggressive buyback programs funded by treasury revenue may cause regulators (like the SEC) to classify the token as a security.
  • Tax events for holders: In some jurisdictions, a token burn that increases the value of remaining tokens could be considered a taxable event for holders.
  • Action: Consult with a legal professional specializing in crypto. Structure the buyback as a transparent, community-governed process rather than a guaranteed financial return.
economic-impact-analysis
TOKENOMICS

Launching a Memecoin with Built-in Buyback and Burn

A buyback-and-burn mechanism can create deflationary pressure and align tokenholder incentives. This guide explains how to implement it in a Solidity smart contract.

A buyback-and-burn mechanism uses a portion of a project's revenue or treasury to purchase its own tokens from the open market and permanently remove them from circulation by sending them to a dead address. This creates a deflationary effect, as the total supply decreases while demand may remain constant or increase. For a memecoin, this can signal long-term commitment from developers and provide a fundamental utility beyond speculation. The key is to automate the process in a transparent, trustless manner via the smart contract itself, rather than relying on manual, off-chain actions.

The core logic is typically implemented in the token's transfer function. A common approach is to apply a tax on certain transactions—like sells or transfers—and divert that collected tax to a dedicated contract wallet. This wallet accumulates the native currency (e.g., ETH, BNB) from the taxes. A separate, permissionless function (e.g., triggerBuyback) can then be called by anyone to execute the buyback. This function uses the accumulated funds to purchase tokens from a decentralized exchange (DEX) pair and immediately burns them. Using a DEX router like Uniswap V2's ensures the buyback happens at the market rate.

Here is a simplified Solidity code snippet illustrating the tax collection and a basic buyback trigger using a PancakeSwap/Uniswap V2 router interface:

solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IUniswapV2Router {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
}

contract BuybackToken is ERC20 {
    IUniswapV2Router public immutable router;
    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public buybackTax = 50; // 5%
    address public treasuryWallet;
    
    constructor(address _router) ERC20("Example", "EX") {
        router = IUniswapV2Router(_router);
        treasuryWallet = msg.sender;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal virtual override {
        uint256 taxAmount = (amount * buybackTax) / 1000;
        uint256 netAmount = amount - taxAmount;
        
        if (taxAmount > 0) {
            super._transfer(sender, treasuryWallet, taxAmount); // Tax sent to treasury
        }
        super._transfer(sender, recipient, netAmount);
    }
    
    function triggerBuyback(uint256 amountOutMin) external {
        address[] memory path = new address[](2);
        path[0] = router.WETH(); // Native token (e.g., ETH, BNB)
        path[1] = address(this); // This token
        
        uint256 treasuryBalance = address(treasuryWallet).balance;
        require(treasuryBalance > 0, "No funds for buyback");
        
        (bool success, ) = treasuryWallet.call{value: treasuryBalance}("");
        require(success, "Transfer failed");
        
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: treasuryBalance}(
            amountOutMin,
            path,
            DEAD, // Tokens sent to burn address
            block.timestamp
        );
    }
}

This contract collects a 5% tax on transfers to a treasuryWallet. The triggerBuyback function can be called to use the accumulated ETH/BNB to buy tokens from the DEX pair and burn them.

Critical considerations for a secure and effective implementation include: Choosing the tax type—applying it only to sells or transfers to a DEX can prevent penalizing buyers. Setting the tax rate—typically between 2-10%; too high can deter trading, too low is ineffective. Securing the treasury—the wallet holding the tax proceeds should be a multi-signature or time-locked contract to prevent rug pulls. Defining the trigger—making the buyback function callable by anyone ensures decentralization, but you may want to add conditions like a minimum treasury balance or time intervals between calls to prevent spam and high gas costs.

The economic impact of this mechanism hinges on transparency and sustained volume. The buyback must be verifiable on-chain for holders to trust the deflation. Its effectiveness is directly proportional to trading volume; without consistent transactions, the treasury won't accumulate funds for meaningful burns. Projects often supplement this with other tokenomics like reflection rewards (redistributing taxes to holders) or liquidity provisioning (using part of the tax to add to the DEX pool). The goal is to create a positive feedback loop: utility or community engagement drives volume, volume fuels buybacks, and buybacks support the token price and holder confidence.

Before launch, extensive testing on a testnet is non-negotiable. Use tools like Hardhat or Foundry to simulate high-volume trading and buyback events. An audit from a reputable firm like CertiK or Quantstamp is highly recommended for any contract handling user funds. Ultimately, while a buyback-and-burn adds a compelling economic layer, a memecoin's long-term viability still depends on a strong, organic community and clear, ongoing utility—the mechanism is a tool to support that foundation, not replace it.

TECHNICAL DEEP DIVE

Frequently Asked Questions

Common technical questions and troubleshooting for developers implementing a memecoin with an on-chain buyback and burn mechanism.

The buyback and burn function should be a separate, permissionless contract that interacts with your token. A typical architecture involves:

  1. Buyback Contract: Holds a treasury (ETH or a stablecoin like USDC) and has a function to swap it for your token on a DEX like Uniswap V3.
  2. Automated Trigger: The contract can be triggered by a keeper, a time-based function, or upon reaching a specific treasury threshold.
  3. Burn Execution: After the swap, the contract calls the burn function on your token's ERC-20 contract, sending the purchased tokens to a dead address (e.g., 0x000...dEaD).

Key Code Snippet (Pseudocode):

solidity
function executeBuybackAndBurn(uint256 amountETH) external {
    // 1. Swap ETH for TOKEN via a DEX router
    address[] memory path = new address[](2);
    path[0] = WETH;
    path[1] = address(myToken);
    
    uint256[] memory amounts = IUniswapV2Router(router).swapExactETHForTokens{
        value: amountETH
    }(0, path, address(this), block.timestamp);
    
    uint256 tokensBought = amounts[1];
    
    // 2. Burn the purchased tokens
    IERC20Burnable(address(myToken)).burn(tokensBought);
}

Always ensure the contract has a secure way to fund its treasury, often via a tax mechanism or direct transfers from a multisig wallet.

conclusion-next-steps
IMPLEMENTATION SUMMARY

Conclusion and Next Steps

You have now built a memecoin with an automated buyback and burn mechanism. This final section reviews the key components and suggests paths for further development.

Your deployed contract combines a standard ERC-20 token with a tax-and-redistribute system. The key functions are the _transfer override, which levies a fee on sells, and the swapTokensForETH and distributeETH functions that automate the buyback process. The purchased tokens are sent to the burn address, permanently reducing the supply. This creates a deflationary pressure intended to counteract sell-side volatility. Remember to verify your source code on block explorers like Etherscan and renounce ownership of the tax and router functions after final configuration to ensure decentralization and build trust.

For production deployment, several critical security and operational steps remain. Conduct a professional audit from a firm like CertiK or Hacken to identify vulnerabilities in your tax logic and access controls. Use a multi-signature wallet, such as Safe, for the contract's deployer and treasury wallets to prevent single points of failure. You must also create clear documentation for your community, explaining the exact tax rates, the buyback trigger conditions (e.g., sell volume threshold), and the burn address. Transparency is paramount for a token's longevity.

To evolve your project, consider implementing more advanced mechanisms. A dynamic tax rate that adjusts based on trading volume or time since launch can create interesting economic effects. Integrating with a decentralized oracle like Chainlink could allow for buybacks triggered by external price feeds. You could also allocate a portion of the tax to a community treasury governed by token holders via a DAO structure using Snapshot. Explore cross-chain deployment using LayerZero or Wormhole to access liquidity on networks like Arbitrum or Solana, but be mindful of the increased complexity and audit requirements.

The next phase is community building and liquidity provisioning. After securing initial liquidity on a DEX like Uniswap V2, consider locking the LP tokens for a public duration using a service like Team Finance or Unicrypt. Engage with your community through transparent communication channels and consider building simple utilities, such as NFT integrations or staking pools that reward holders, to transition from a pure memecoin to a project with sustained engagement. Always prioritize security and sustainable tokenomics over short-term hype.

How to Build a Memecoin with Buyback and Burn Mechanism | ChainScore Guides