TheMachineAdapter

Description:

Proxy contract enabling upgradeable smart contract patterns. Delegates calls to an implementation contract.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

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

interface IAaveV3Pool {
    function flashLoan(
        address receiverAddress,
        address[] calldata assets,
        uint256[] calldata amounts,
        uint256[] calldata interestRateModes,
        address onBehalfOf,
        bytes calldata params,
        uint16 referralCode
    ) external;

    function flashLoanSimple(
        address receiverAddress,
        address asset,
        uint256 amount,
        bytes calldata params,
        uint16 referralCode
    ) external;
}

contract TheMachineAdapter {
    address public owner;

    error NotOwner();

    modifier onlyOwner() {
        if (msg.sender != owner) revert NotOwner();
        _;
    }

    constructor() {
        owner = msg.sender;
    }

    // Universal flash loan initiator - uses flashLoanSimple for single asset
    function initiateFlashLoan(
        address pool,
        address token,
        uint256 amount,
        bytes calldata params
    ) external onlyOwner {
        // Use flashLoanSimple for efficiency (single asset, lower gas)
        IAaveV3Pool(pool).flashLoanSimple(
            msg.sender,  // receiver = main contract (in delegatecall context)
            token,
            amount,
            params,
            0  // referralCode
        );
    }

    // Alternative: full flash loan for multi-asset (if needed later)
    function initiateMultiFlashLoan(
        address pool,
        address[] calldata tokens,
        uint256[] calldata amounts,
        bytes calldata params
    ) external onlyOwner {
        uint256[] memory modes = new uint256[](tokens.length);
        // modes = 0 means no debt (must repay in same tx)

        IAaveV3Pool(pool).flashLoan(
            msg.sender,  // receiver
            tokens,
            amounts,
            modes,
            msg.sender,  // onBehalfOf
            params,
            0  // referralCode
        );
    }
}

Tags:
Proxy, Upgradeable|addr:0xac02e603e44d43c5abfcbacab17707733cc32f3c|verified:true|block:23711867|tx:0x666d78f072eebce553a80f8ebb9ce80ede32ed9d93e8ce6068ed461f2205dc02|first_check:1762092839

Submitted on: 2025-11-02 15:14:01

Comments

Log in to comment.

No comments yet.