Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Sponsored
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0x60a06040 | 15729132 | 419 days 13 hrs ago | IN | Create: ProposalPayload | 0 ETH | 0.00373638 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ProposalPayload
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.15; import "./external/aave/IAaveIncentivesController.sol"; import {StkAaveRetrieval} from "./StkAaveRetrieval.sol"; /** * @title Proposal Payload to Authorize Balancer Multisig to claim stkAave on behalf of Balancer DAO * @author Llama * @notice This payload sets the StkAaveRetrieval contract as the claimer on behalf of 0xBA12222222228d8Ba445958a75a0704d566BF2C8 * Governance Forum Post: https://governance.aave.com/t/arc-whitelist-balancer-s-liquidity-mining-claim/9724 * Snapshot: https://snapshot.org/#/aave.eth/proposal/0xdaa660ea59f8678748d6f133d7d7ed70b941798aa9a0044a16a1285d09e26bf5 */ contract ProposalPayload { /// @dev this is the address we're claiming on behalf of address public constant BALANCER_DAO = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; /// @dev this is the address of the Aave Incentives Controller, which manages and stores the claimers address public constant INCENTIVE_CONTROLLER = 0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5; StkAaveRetrieval public immutable stkAaveRetrieval; constructor(StkAaveRetrieval _stkAaveRetrieval) { stkAaveRetrieval = _stkAaveRetrieval; } /// @notice The AAVE governance executor calls this function to implement the proposal. function execute() external { IAaveIncentivesController(INCENTIVE_CONTROLLER).setClaimer(BALANCER_DAO, address(stkAaveRetrieval)); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.15; // relevant function from https://etherscan.io/address/0xd9ed413bcf58c266f95fe6ba63b13cf79299ce31#code interface IAaveIncentivesController { /** * @dev Whitelists an address to claim the rewards on behalf of another address * @param user The address of the user * @param claimer The address of the claimer */ function setClaimer(address user, address claimer) external; /** * @dev Returns the whitelisted claimer for a certain address (0x0 if not set) * @param user The address of the user * @return The claimer address */ function getClaimer(address user) external view returns (address); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.15; import "./external/aave/IStaticATokenLM.sol"; import "./external/aave/IAaveIncentivesController.sol"; /** * @title StkAaveRetrieval * @author Llama * @notice This contract is used to claim stkAave rewards on behalf of the Balancer DAO contract * @notice It sends those funds to the Balancer Multisig * @notice Aave proposal to whitelist this contract: * @notice https://governance.aave.com/t/arc-whitelist-balancer-s-liquidity-mining-claim/9724 * @dev The Balancer Multisig should call retrieve() */ contract StkAaveRetrieval { /// @dev this is msg.sender address public constant BALANCER_MULTISIG = 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f; /// @dev this is the address we're claiming on behalf of address public constant BALANCER_DAO = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; /// @dev this is the address of the Aave Incentives Controller, which manages and stores the claimers address public constant INCENTIVES_CONTROLLER = 0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5; /// @dev these are the tokens which have accrued LM rewards address public constant WRAPPED_ADAI = 0x02d60b84491589974263d922D9cC7a3152618Ef6; address public constant WRAPPED_AUSDC = 0xd093fA4Fb80D09bB30817FDcd442d4d02eD3E5de; address public constant WRAPPED_AUSDT = 0xf8Fd466F12e236f4c96F7Cce6c79EAdB819abF58; address[] public WRAPPED_TOKENS = [WRAPPED_ADAI, WRAPPED_AUSDC, WRAPPED_AUSDT]; /** * @dev This is the core function. We check that only the multisig can execute this and that proper whitelisting has been set up. * @notice We call this function to claim the rewards and send them to the multisig */ function retrieve() external { require(msg.sender == BALANCER_MULTISIG, "Only Balancer Multisig"); require( IAaveIncentivesController(INCENTIVES_CONTROLLER).getClaimer(BALANCER_DAO) == address(this), "Contract not set as claimer" ); for (uint256 i = 0; i < WRAPPED_TOKENS.length; i++) { IStaticATokenLM(WRAPPED_TOKENS[i]).claimRewardsOnBehalf(BALANCER_DAO, BALANCER_MULTISIG, true); } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.15; // relevant functions from https://etherscan.io/address/0x1dc16f168b0a2bb3fbda0fe1a1787f8b22c0aed8#code interface IStaticATokenLM { /** * @notice Claim rewards on behalf of a user and send them to a receiver * @dev Only callable by if sender is onBehalfOf or sender is approved claimer * @param onBehalfOf The address to claim on behalf of * @param receiver The address to receive the rewards * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER` */ function claimRewardsOnBehalf( address onBehalfOf, address receiver, bool forceUpdate ) external; /** * @notice The unclaimed rewards for a user in WAD * @param user The address of the user * @return The unclaimed amount of rewards in WAD */ function getUnclaimedRewards(address user) external view returns (uint256); }
{ "remappings": [ "@aave-address-book/=lib/aave-address-book/src/", "@aave-helpers/=lib/aave-helpers/src/", "@forge-std/=lib/forge-std/src/", "@openzeppelin/=lib/openzeppelin-contracts/contracts/", "aave-address-book/=lib/aave-address-book/src/", "aave-helpers/=lib/aave-helpers/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", "solidity-utils/=lib/aave-helpers/lib/solidity-utils/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract StkAaveRetrieval","name":"_stkAaveRetrieval","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BALANCER_DAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCENTIVE_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stkAaveRetrieval","outputs":[{"internalType":"contract StkAaveRetrieval","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161024438038061024483398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516101b3610091600039600081816060015261010501526101b36000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80636146195414610051578063860027a51461005b5780639e463f021461009e578063be0fdfd2146100b9575b600080fd5b6100596100d4565b005b6100827f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b61008273ba12222222228d8ba445958a75a0704d566bf2c881565b61008273d784927ff2f95ba542bfc824c8a8a98f3495f6b581565b60405163f5cf673b60e01b815273ba12222222228d8ba445958a75a0704d566bf2c860048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015273d784927ff2f95ba542bfc824c8a8a98f3495f6b59063f5cf673b90604401600060405180830381600087803b15801561016357600080fd5b505af1158015610177573d6000803e3d6000fd5b5050505056fea2646970667358221220c04388a00744d564efade80fe3f9674405fa70cb502d02adbf719c42f1877bbb64736f6c634300080f00330000000000000000000000000e2d46fe246eb926d939a10efa96fb7d4eb14bb3
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80636146195414610051578063860027a51461005b5780639e463f021461009e578063be0fdfd2146100b9575b600080fd5b6100596100d4565b005b6100827f0000000000000000000000000e2d46fe246eb926d939a10efa96fb7d4eb14bb381565b6040516001600160a01b03909116815260200160405180910390f35b61008273ba12222222228d8ba445958a75a0704d566bf2c881565b61008273d784927ff2f95ba542bfc824c8a8a98f3495f6b581565b60405163f5cf673b60e01b815273ba12222222228d8ba445958a75a0704d566bf2c860048201526001600160a01b037f0000000000000000000000000e2d46fe246eb926d939a10efa96fb7d4eb14bb316602482015273d784927ff2f95ba542bfc824c8a8a98f3495f6b59063f5cf673b90604401600060405180830381600087803b15801561016357600080fd5b505af1158015610177573d6000803e3d6000fd5b5050505056fea2646970667358221220c04388a00744d564efade80fe3f9674405fa70cb502d02adbf719c42f1877bbb64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000e2d46fe246eb926d939a10efa96fb7d4eb14bb3
-----Decoded View---------------
Arg [0] : _stkAaveRetrieval (address): 0x0e2d46fe246eb926d939A10efA96fB7d4EB14bB3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000e2d46fe246eb926d939a10efa96fb7d4eb14bb3
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.