Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 31230285 | 9 hrs ago | 0 FRAX | |||||
| 31230285 | 9 hrs ago | 0 FRAX | |||||
| 31229957 | 9 hrs ago | 0 FRAX | |||||
| 31229957 | 9 hrs ago | 0 FRAX | |||||
| 31228997 | 9 hrs ago | 0 FRAX | |||||
| 31228997 | 9 hrs ago | 0 FRAX | |||||
| 31220755 | 14 hrs ago | 0 FRAX | |||||
| 31220755 | 14 hrs ago | 0 FRAX | |||||
| 31217954 | 15 hrs ago | 0 FRAX | |||||
| 31217954 | 15 hrs ago | 0 FRAX | |||||
| 31210595 | 20 hrs ago | 0 FRAX | |||||
| 31210595 | 20 hrs ago | 0 FRAX | |||||
| 31208370 | 21 hrs ago | 0 FRAX | |||||
| 31208370 | 21 hrs ago | 0 FRAX | |||||
| 31189663 | 31 hrs ago | 0 FRAX | |||||
| 31189663 | 31 hrs ago | 0 FRAX | |||||
| 31187088 | 33 hrs ago | 0 FRAX | |||||
| 31187088 | 33 hrs ago | 0 FRAX | |||||
| 31185141 | 34 hrs ago | 0 FRAX | |||||
| 31185141 | 34 hrs ago | 0 FRAX | |||||
| 31171173 | 41 hrs ago | 0 FRAX | |||||
| 31171173 | 41 hrs ago | 0 FRAX | |||||
| 31162554 | 46 hrs ago | 0 FRAX | |||||
| 31162554 | 46 hrs ago | 0 FRAX | |||||
| 31146033 | 2 days ago | 0 FRAX |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PullRewardsTransferStrategy
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.10;
import {IPullRewardsTransferStrategy} from "../interfaces/IPullRewardsTransferStrategy.sol";
import {ITransferStrategyBase} from "../interfaces/ITransferStrategyBase.sol";
import {TransferStrategyBase} from "./TransferStrategyBase.sol";
import {GPv2SafeERC20} from "contracts/lending/core/dependencies/gnosis/contracts/GPv2SafeERC20.sol";
import {IERC20} from "contracts/lending/core/dependencies/openzeppelin/contracts/IERC20.sol";
/**
* @title PullRewardsTransferStrategy
* @notice Transfer strategy that pulls ERC20 rewards from an external account to the user address.
* The external account could be a smart contract or EOA that must approve to the PullRewardsTransferStrategy contract address.
* @author Aave
**/
contract PullRewardsTransferStrategy is
TransferStrategyBase,
IPullRewardsTransferStrategy
{
using GPv2SafeERC20 for IERC20;
address internal immutable REWARDS_VAULT;
constructor(
address incentivesController,
address rewardsAdmin,
address rewardsVault
) TransferStrategyBase(incentivesController, rewardsAdmin) {
REWARDS_VAULT = rewardsVault;
}
/// @inheritdoc TransferStrategyBase
function performTransfer(
address to,
address reward,
uint256 amount
)
external
override(TransferStrategyBase, ITransferStrategyBase)
onlyIncentivesController
returns (bool)
{
IERC20(reward).safeTransferFrom(REWARDS_VAULT, to, amount);
return true;
}
/// @inheritdoc IPullRewardsTransferStrategy
function getRewardsVault() external view returns (address) {
return REWARDS_VAULT;
}
}// SPDX-License-Identifier: LGPL-3.0-or-later
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.0;
import {IERC20} from "../../openzeppelin/contracts/IERC20.sol";
/// @title Gnosis Protocol v2 Safe ERC20 Transfer Library
/// @author Gnosis Developers
/// @dev Gas-efficient version of Openzeppelin's SafeERC20 contract.
library GPv2SafeERC20 {
/// @dev Wrapper around a call to the ERC20 function `transfer` that reverts
/// also when the token returns `false`.
function safeTransfer(IERC20 token, address to, uint256 value) internal {
bytes4 selector_ = token.transfer.selector;
// solhint-disable-next-line no-inline-assembly
assembly {
let freeMemoryPointer := mload(0x40)
mstore(freeMemoryPointer, selector_)
mstore(
add(freeMemoryPointer, 4),
and(to, 0xffffffffffffffffffffffffffffffffffffffff)
)
mstore(add(freeMemoryPointer, 36), value)
if iszero(call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)) {
returndatacopy(0, 0, returndatasize())
revert(0, returndatasize())
}
}
require(getLastTransferResult(token), "GPv2: failed transfer");
}
/// @dev Wrapper around a call to the ERC20 function `transferFrom` that
/// reverts also when the token returns `false`.
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
bytes4 selector_ = token.transferFrom.selector;
// solhint-disable-next-line no-inline-assembly
assembly {
let freeMemoryPointer := mload(0x40)
mstore(freeMemoryPointer, selector_)
mstore(
add(freeMemoryPointer, 4),
and(from, 0xffffffffffffffffffffffffffffffffffffffff)
)
mstore(
add(freeMemoryPointer, 36),
and(to, 0xffffffffffffffffffffffffffffffffffffffff)
)
mstore(add(freeMemoryPointer, 68), value)
if iszero(call(gas(), token, 0, freeMemoryPointer, 100, 0, 0)) {
returndatacopy(0, 0, returndatasize())
revert(0, returndatasize())
}
}
require(getLastTransferResult(token), "GPv2: failed transferFrom");
}
/// @dev Verifies that the last return was a successful `transfer*` call.
/// This is done by checking that the return data is either empty, or
/// is a valid ABI encoded boolean.
function getLastTransferResult(
IERC20 token
) private view returns (bool success) {
// NOTE: Inspecting previous return data requires assembly. Note that
// we write the return data to memory 0 in the case where the return
// data size is 32, this is OK since the first 64 bytes of memory are
// reserved by Solidy as a scratch space that can be used within
// assembly blocks.
// <https://docs.soliditylang.org/en/v0.7.6/internals/layout_in_memory.html>
// solhint-disable-next-line no-inline-assembly
assembly {
/// @dev Revert with an ABI encoded Solidity error with a message
/// that fits into 32-bytes.
///
/// An ABI encoded Solidity error has the following memory layout:
///
/// ------------+----------------------------------
/// byte range | value
/// ------------+----------------------------------
/// 0x00..0x04 | selector("Error(string)")
/// 0x04..0x24 | string offset (always 0x20)
/// 0x24..0x44 | string length
/// 0x44..0x64 | string value, padded to 32-bytes
function revertWithMessage(length, message) {
mstore(0x00, "\x08\xc3\x79\xa0")
mstore(0x04, 0x20)
mstore(0x24, length)
mstore(0x44, message)
revert(0x00, 0x64)
}
switch returndatasize()
// Non-standard ERC20 transfer without return.
case 0 {
// NOTE: When the return data size is 0, verify that there
// is code at the address. This is done in order to maintain
// compatibility with Solidity calling conventions.
// <https://docs.soliditylang.org/en/v0.7.6/control-structures.html#external-function-calls>
if iszero(extcodesize(token)) {
revertWithMessage(20, "GPv2: not a contract")
}
success := 1
}
// Standard ERC20 transfer returning boolean success value.
case 32 {
returndatacopy(0, 0, returndatasize())
// NOTE: For ABI encoding v1, any non-zero value is accepted
// as `true` for a boolean. In order to stay compatible with
// OpenZeppelin's `SafeERC20` library which is known to work
// with the existing ERC20 implementation we care about,
// make sure we return success for any non-zero return value
// from the `transfer*` call.
success := iszero(iszero(mload(0)))
}
default {
revertWithMessage(31, "GPv2: malformed transfer result")
}
}
}
}// SPDX-License-Identifier: AGPL-3.0
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(
address owner,
address spender
) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}// SPDX-License-Identifier: AGPL-3.0
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.10;
import {ITransferStrategyBase} from "./ITransferStrategyBase.sol";
/**
* @title IPullRewardsTransferStrategy
* @author Aave
**/
interface IPullRewardsTransferStrategy is ITransferStrategyBase {
/**
* @return Address of the rewards vault
*/
function getRewardsVault() external view returns (address);
}// SPDX-License-Identifier: AGPL-3.0
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.10;
interface ITransferStrategyBase {
event EmergencyWithdrawal(
address indexed caller,
address indexed token,
address indexed to,
uint256 amount
);
/**
* @dev Perform custom transfer logic via delegate call from source contract to a TransferStrategy implementation
* @param to Account to transfer rewards
* @param reward Address of the reward token
* @param amount Amount to transfer to the "to" address parameter
* @return Returns true bool if transfer logic succeeds
*/
function performTransfer(
address to,
address reward,
uint256 amount
) external returns (bool);
/**
* @return Returns the address of the Incentives Controller
*/
function getIncentivesController() external view returns (address);
/**
* @return Returns the address of the Rewards admin
*/
function getRewardsAdmin() external view returns (address);
/**
* @dev Perform an emergency token withdrawal only callable by the Rewards admin
* @param token Address of the token to withdraw funds from this contract
* @param to Address of the recipient of the withdrawal
* @param amount Amount of the withdrawal
*/
function emergencyWithdrawal(
address token,
address to,
uint256 amount
) external;
}// SPDX-License-Identifier: AGPL-3.0
/* ———————————————————————————————————————————————————————————————————————————————— *
* _____ ______ ______ __ __ __ __ ______ __ __ *
* /\ __-. /\__ _\ /\ == \ /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ \_\ \ *
* \ \ \/\ \ \/_/\ \/ \ \ __< \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \____ \ *
* \ \____- \ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ *
* \/____/ \/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ *
* *
* ————————————————————————————————— dtrinity.org ————————————————————————————————— *
* *
* ▲ *
* ▲ ▲ *
* *
* ———————————————————————————————————————————————————————————————————————————————— *
* dTRINITY Protocol: https://github.com/dtrinity *
* ———————————————————————————————————————————————————————————————————————————————— */
pragma solidity ^0.8.10;
import {ITransferStrategyBase} from "../interfaces/ITransferStrategyBase.sol";
import {GPv2SafeERC20} from "contracts/lending/core/dependencies/gnosis/contracts/GPv2SafeERC20.sol";
import {IERC20} from "contracts/lending/core/dependencies/openzeppelin/contracts/IERC20.sol";
/**
* @title TransferStrategyStorage
* @author Aave
**/
abstract contract TransferStrategyBase is ITransferStrategyBase {
using GPv2SafeERC20 for IERC20;
address internal immutable INCENTIVES_CONTROLLER;
address internal immutable REWARDS_ADMIN;
constructor(address incentivesController, address rewardsAdmin) {
INCENTIVES_CONTROLLER = incentivesController;
REWARDS_ADMIN = rewardsAdmin;
}
/**
* @dev Modifier for incentives controller only functions
*/
modifier onlyIncentivesController() {
require(
INCENTIVES_CONTROLLER == msg.sender,
"CALLER_NOT_INCENTIVES_CONTROLLER"
);
_;
}
/**
* @dev Modifier for reward admin only functions
*/
modifier onlyRewardsAdmin() {
require(msg.sender == REWARDS_ADMIN, "ONLY_REWARDS_ADMIN");
_;
}
/// @inheritdoc ITransferStrategyBase
function getIncentivesController()
external
view
override
returns (address)
{
return INCENTIVES_CONTROLLER;
}
/// @inheritdoc ITransferStrategyBase
function getRewardsAdmin() external view override returns (address) {
return REWARDS_ADMIN;
}
/// @inheritdoc ITransferStrategyBase
function performTransfer(
address to,
address reward,
uint256 amount
) external virtual returns (bool);
/// @inheritdoc ITransferStrategyBase
function emergencyWithdrawal(
address token,
address to,
uint256 amount
) external onlyRewardsAdmin {
IERC20(token).safeTransfer(to, amount);
emit EmergencyWithdrawal(msg.sender, token, to, amount);
}
}{
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [],
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"incentivesController","type":"address"},{"internalType":"address","name":"rewardsAdmin","type":"address"},{"internalType":"address","name":"rewardsVault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getIncentivesController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardsAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardsVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"reward","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"performTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60e0346100a757601f61058138819003918201601f19168301916001600160401b038311848410176100ac578084926060946040528339810103126100a757610047816100c2565b906100606040610059602084016100c2565b92016100c2565b9160805260a05260c0526040516104aa90816100d78239608051818181608501526101ee015260a0518181816102360152610363015260c05181818160bc01526103a80152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100a75756fe6080604052600436101561001257600080fd5b6000803560e01c90816316beb9821461006a5750806375d26413146100655780638d8e5da714610060578063c62554431461005b5763e23ddec51461005657600080fd5b610392565b61034d565b61021d565b6101d8565b3461019b576100783661019e565b906001600160a01b0390337f000000000000000000000000000000000000000000000000000000000000000083160361015d578116926323b872dd60e01b608052817f0000000000000000000000000000000000000000000000000000000000000000166084521660a45260c45281806064608082855af115610154576100fe906103d7565b1561010f5760405160018152602090f35b60405162461bcd60e51b815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606490fd5b503d81803e3d90fd5b62461bcd60e51b6080526020608452602060a4527f43414c4c45525f4e4f545f494e43454e54495645535f434f4e54524f4c4c455260c45260646080fd5b80fd5b60609060031901126101d3576001600160a01b039060043582811681036101d3579160243590811681036101d3579060443590565b600080fd5b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d35761022b3661019e565b6001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082163303610313578160449416916040519363a9059cbb60e01b8552169283600482015281602482015260008095819282865af11561030a57610297826103d7565b156102cd5760405190815233907f7dc4ea712e6400e67a5abca1a983e5c420c386c19936dc120cd860b50b8e257990602090a480f35b60405162461bcd60e51b815260206004820152601560248201527423a83b191d103330b4b632b2103a3930b739b332b960591b6044820152606490fd5b833d81803e3d90fd5b60405162461bcd60e51b815260206004820152601260248201527127a7262cafa922aba0a92229afa0a226a4a760711b6044820152606490fd5b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3d90811561043257506020146104255762461bcd60e51b6000526020600452601f6024527f475076323a206d616c666f726d6564207472616e7366657220726573756c740060445260646000fd5b3d6000803e600051151590565b90503b1561043f57600190565b62461bcd60e51b600052602060045260146024527311d41d8c8e881b9bdd08184818dbdb9d1c9858dd60621b60445260646000fdfea2646970667358221220aa912798a4744a074f472eb31bc601ce54e17dc3b27dcad1e52fe7eddeb1620164736f6c634300081800330000000000000000000000000e20d018a1309fed73abdf2187fc452d1db77915000000000000000000000000fc2f89f9982be98a9672cefc3ea6dbbdd88bc8e9000000000000000000000000674679896a8efd4b0bcf59f5503a3d6807172791
Deployed Bytecode
0x6080604052600436101561001257600080fd5b6000803560e01c90816316beb9821461006a5750806375d26413146100655780638d8e5da714610060578063c62554431461005b5763e23ddec51461005657600080fd5b610392565b61034d565b61021d565b6101d8565b3461019b576100783661019e565b906001600160a01b0390337f0000000000000000000000000e20d018a1309fed73abdf2187fc452d1db7791583160361015d578116926323b872dd60e01b608052817f000000000000000000000000674679896a8efd4b0bcf59f5503a3d6807172791166084521660a45260c45281806064608082855af115610154576100fe906103d7565b1561010f5760405160018152602090f35b60405162461bcd60e51b815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606490fd5b503d81803e3d90fd5b62461bcd60e51b6080526020608452602060a4527f43414c4c45525f4e4f545f494e43454e54495645535f434f4e54524f4c4c455260c45260646080fd5b80fd5b60609060031901126101d3576001600160a01b039060043582811681036101d3579160243590811681036101d3579060443590565b600080fd5b346101d35760003660031901126101d3576040517f0000000000000000000000000e20d018a1309fed73abdf2187fc452d1db779156001600160a01b03168152602090f35b346101d35761022b3661019e565b6001600160a01b03907f000000000000000000000000fc2f89f9982be98a9672cefc3ea6dbbdd88bc8e982163303610313578160449416916040519363a9059cbb60e01b8552169283600482015281602482015260008095819282865af11561030a57610297826103d7565b156102cd5760405190815233907f7dc4ea712e6400e67a5abca1a983e5c420c386c19936dc120cd860b50b8e257990602090a480f35b60405162461bcd60e51b815260206004820152601560248201527423a83b191d103330b4b632b2103a3930b739b332b960591b6044820152606490fd5b833d81803e3d90fd5b60405162461bcd60e51b815260206004820152601260248201527127a7262cafa922aba0a92229afa0a226a4a760711b6044820152606490fd5b346101d35760003660031901126101d3576040517f000000000000000000000000fc2f89f9982be98a9672cefc3ea6dbbdd88bc8e96001600160a01b03168152602090f35b346101d35760003660031901126101d3576040517f000000000000000000000000674679896a8efd4b0bcf59f5503a3d68071727916001600160a01b03168152602090f35b3d90811561043257506020146104255762461bcd60e51b6000526020600452601f6024527f475076323a206d616c666f726d6564207472616e7366657220726573756c740060445260646000fd5b3d6000803e600051151590565b90503b1561043f57600190565b62461bcd60e51b600052602060045260146024527311d41d8c8e881b9bdd08184818dbdb9d1c9858dd60621b60445260646000fdfea2646970667358221220aa912798a4744a074f472eb31bc601ce54e17dc3b27dcad1e52fe7eddeb1620164736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000e20d018a1309fed73abdf2187fc452d1db77915000000000000000000000000fc2f89f9982be98a9672cefc3ea6dbbdd88bc8e9000000000000000000000000674679896a8efd4b0bcf59f5503a3d6807172791
-----Decoded View---------------
Arg [0] : incentivesController (address): 0x0E20D018A1309fED73AbdF2187FC452D1DB77915
Arg [1] : rewardsAdmin (address): 0xfC2f89F9982BE98A9672CEFc3Ea6dBBdd88bc8e9
Arg [2] : rewardsVault (address): 0x674679896A8Efd4b0BCF59F5503A3d6807172791
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000e20d018a1309fed73abdf2187fc452d1db77915
Arg [1] : 000000000000000000000000fc2f89f9982be98a9672cefc3ea6dbbdd88bc8e9
Arg [2] : 000000000000000000000000674679896a8efd4b0bcf59f5503a3d6807172791
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.