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
);
}
}
Submitted on: 2025-11-02 15:14:01
Comments
Log in to comment.
No comments yet.