Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EulerKinkyIRMFactory
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 20000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import {BaseFactory} from "../BaseFactory/BaseFactory.sol";
import {IRMLinearKinky} from "../IRM/IRMLinearKinky.sol";
import {IEulerKinkyIRMFactory} from "./interfaces/IEulerKinkyIRMFactory.sol";
/// @title EulerKinkyIRMFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for Kinky IRMs.
contract EulerKinkyIRMFactory is BaseFactory, IEulerKinkyIRMFactory {
// corresponds to 1000% APY
uint256 internal constant MAX_ALLOWED_INTEREST_RATE = 75986279153383989049;
/// @notice Error thrown when the computed interest rate exceeds the maximum allowed limit.
error IRMFactory_ExcessiveInterestRate();
/// @notice Deploys a new IRMLinearKink.
/// @param baseRate Base interest rate applied when utilization is equal zero
/// @param slope Slope of the function before the kink
/// @param shape Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
/// @param kink Utilization at which the slope of the interest rate function changes. In type(uint32).max scale
/// @param cutoff Interest rate in second percent yield (SPY) at which the interest rate function is capped
/// @return The deployment address.
function deploy(uint256 baseRate, uint256 slope, uint256 shape, uint32 kink, uint256 cutoff)
external
override
returns (address)
{
IRMLinearKinky irm = new IRMLinearKinky(baseRate, slope, shape, kink, cutoff);
// verify if the IRM is functional
irm.computeInterestRateView(address(0), type(uint32).max, 0);
irm.computeInterestRateView(address(0), type(uint32).max - kink, kink);
uint256 maxInterestRate = irm.computeInterestRateView(address(0), 0, type(uint32).max);
if (maxInterestRate > MAX_ALLOWED_INTEREST_RATE) revert IRMFactory_ExcessiveInterestRate();
deploymentInfo[address(irm)] = DeploymentInfo(msg.sender, uint96(block.timestamp));
deployments.push(address(irm));
emit ContractDeployed(address(irm), msg.sender, block.timestamp);
return address(irm);
}
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import {IFactory} from "./interfaces/IFactory.sol";
/// @title BaseFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for deploying various contracts.
abstract contract BaseFactory is IFactory {
/// @notice Contracts deployed by the factory.
mapping(address => DeploymentInfo) internal deploymentInfo;
/// @notice An array of addresses of all the contracts deployed by the factory
address[] public deployments;
/// @inheritdoc IFactory
function getDeploymentInfo(address contractAddress) external view returns (address deployer, uint96 deployedAt) {
DeploymentInfo memory info = deploymentInfo[contractAddress];
return (info.deployer, info.deployedAt);
}
/// @inheritdoc IFactory
function isValidDeployment(address contractAddress) external view returns (bool) {
return deploymentInfo[contractAddress].deployedAt != 0;
}
/// @inheritdoc IFactory
function getDeploymentsListLength() external view returns (uint256) {
return deployments.length;
}
/// @inheritdoc IFactory
function getDeploymentsListSlice(uint256 start, uint256 end) external view returns (address[] memory list) {
if (end == type(uint256).max) end = deployments.length;
if (end < start || end > deployments.length) revert Factory_BadQuery();
list = new address[](end - start);
for (uint256 i; i < end - start; ++i) {
list[i] = deployments[start + i];
}
}
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import {IIRM} from "evk/InterestRateModels/IIRM.sol";
/// @title IRMLinearKinky
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Implementation of an interest rate model, where interest rate grows linearly with utilization, and spikes
/// non-linearly after reaching kink
contract IRMLinearKinky is IIRM {
/// @notice Base interest rate applied when utilization is equal zero
uint256 public immutable baseRate;
/// @notice Slope of the function before the kink
uint256 public immutable slope;
/// @notice Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
uint256 public immutable shape;
/// @notice Utilization at which the slope of the interest rate function changes. In type(uint32).max scale.
uint256 public immutable kink;
/// @notice Interest rate in second percent yield (SPY) at which the interest rate function is capped
uint256 public immutable cutoff;
/// @notice Remaining kink helper constant.
uint256 internal immutable kinkRemaining;
/// @notice Creates a new linear kinky interest rate model
/// @param baseRate_ Base interest rate applied when utilization is equal zero
/// @param slope_ Slope of the function before the kink
/// @param shape_ Shape parameter for the non-linear part of the curve. Typically between 0 and 100
/// @param kink_ Utilization at which the slope of the interest rate function changes. In type(uint32).max scale
/// @param cutoff_ Interest rate in second percent yield (SPY) at which the interest rate function is capped
constructor(uint256 baseRate_, uint256 slope_, uint256 shape_, uint32 kink_, uint256 cutoff_) {
baseRate = baseRate_;
slope = slope_;
shape = shape_;
kink = kink_;
cutoff = cutoff_;
kinkRemaining = type(uint32).max - kink;
}
/// @inheritdoc IIRM
function computeInterestRate(address vault, uint256 cash, uint256 borrows)
external
view
override
returns (uint256)
{
if (msg.sender != vault) revert E_IRMUpdateUnauthorized();
return computeInterestRateInternal(vault, cash, borrows);
}
/// @inheritdoc IIRM
function computeInterestRateView(address vault, uint256 cash, uint256 borrows)
external
view
override
returns (uint256)
{
return computeInterestRateInternal(vault, cash, borrows);
}
function computeInterestRateInternal(address, uint256 cash, uint256 borrows) internal view returns (uint256) {
uint256 totalAssets = cash + borrows;
uint32 utilization = totalAssets == 0
? 0 // empty pool arbitrarily given utilization of 0
: uint32(borrows * type(uint32).max / totalAssets);
uint256 ir = baseRate;
if (utilization <= kink) {
ir += utilization * slope;
} else {
ir += kink * slope;
uint256 utilizationOverKink;
uint256 utilizationRemaining;
unchecked {
utilizationOverKink = utilization - kink;
utilizationRemaining = type(uint32).max - utilization;
}
if (utilizationRemaining == 0) return cutoff;
uint256 slopeUtilizationOverKink = slope * utilizationOverKink;
ir += slopeUtilizationOverKink * kinkRemaining * (1 + shape) / utilizationRemaining
- slopeUtilizationOverKink * shape;
}
return ir > cutoff ? cutoff : ir;
}
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
import {IFactory} from "../../BaseFactory/interfaces/IFactory.sol";
/// @title IEulerKinkyIRMFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for EulerKinkyIRM.
interface IEulerKinkyIRMFactory is IFactory {
/// @notice Deploys a new EulerKinkyIRM.
/// @param baseRate The base rate of the IRM.
/// @param slope Slope of the function before the kink.
/// @param shape Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
/// @param kink Utilization at which the slope of the interest rate function changes. In type(uint32).max scale.
/// @param cutoff Interest rate in second percent yield (SPY) at which the interest rate function is capped
/// @return The deployment address.
function deploy(uint256 baseRate, uint256 slope, uint256 shape, uint32 kink, uint256 cutoff)
external
returns (address);
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
/// @title IFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory interface for deploying contracts.
interface IFactory {
struct DeploymentInfo {
/// @notice The sender of the deployment call.
address deployer;
/// @notice The timestamp when the contract was deployed.
uint96 deployedAt;
}
/// @notice An instance of a contract was deployed.
/// @param deployedContract The deployment address of the contract.
/// @param deployer The sender of the deployment call.
/// @param deployedAt The deployment timestamp of the contract.
event ContractDeployed(address indexed deployedContract, address indexed deployer, uint256 deployedAt);
/// @notice Error thrown when the query is incorrect.
error Factory_BadQuery();
/// @notice Contracts deployed by the factory.
function getDeploymentInfo(address contractAddress) external view returns (address deployer, uint96 deployedAt);
/// @notice Checks if the deployment at the given address is valid.
/// @param contractAddress The address of the contract to check.
/// @return True if the deployment is valid, false otherwise.
function isValidDeployment(address contractAddress) external view returns (bool);
/// @notice Returns the number of contracts deployed by the factory.
/// @return The number of deployed contracts.
function getDeploymentsListLength() external view returns (uint256);
/// @notice Returns a slice of the list of deployments.
/// @param start The starting index of the slice.
/// @param end The ending index of the slice (exclusive).
/// @return list An array of addresses of the deployed contracts in the specified range.
function getDeploymentsListSlice(uint256 start, uint256 end) external view returns (address[] memory list);
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
/// @title IIRM
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Interface of the interest rate model contracts used by EVault
interface IIRM {
error E_IRMUpdateUnauthorized();
/// @notice Perform potentially state mutating computation of the new interest rate
/// @param vault Address of the vault to compute the new interest rate for
/// @param cash Amount of assets held directly by the vault
/// @param borrows Amount of assets lent out to borrowers by the vault
/// @return Then new interest rate in second percent yield (SPY), scaled by 1e27
function computeInterestRate(address vault, uint256 cash, uint256 borrows) external returns (uint256);
/// @notice Perform computation of the new interest rate without mutating state
/// @param vault Address of the vault to compute the new interest rate for
/// @param cash Amount of assets held directly by the vault
/// @param borrows Amount of assets lent out to borrowers by the vault
/// @return Then new interest rate in second percent yield (SPY), scaled by 1e27
function computeInterestRateView(address vault, uint256 cash, uint256 borrows) external view returns (uint256);
}{
"remappings": [
"lib/euler-price-oracle:@openzeppelin/contracts/=lib/euler-price-oracle/lib/openzeppelin-contracts/contracts/",
"lib/euler-earn:@openzeppelin/=lib/euler-earn/lib/openzeppelin-contracts/",
"lib/euler-earn:@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/euler-earn:ethereum-vault-connector/=lib/euler-earn/lib/ethereum-vault-connector/src/",
"lib/layerzero-devtools/packages/oft-evm/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts/contracts/",
"lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/layerzero-devtools/packages/oapp-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@layerzerolabs/oft-evm/=lib/layerzero-devtools/packages/oft-evm/",
"@layerzerolabs/oapp-evm/=lib/layerzero-devtools/packages/oapp-evm/",
"@layerzerolabs/oapp-evm-upgradeable/=lib/layerzero-devtools/packages/oapp-evm-upgradeable/",
"@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/",
"@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/messagelib/",
"@layerzerolabs/lz-evm-oapp-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/oapp/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/fee-flow/src:solmate/=lib/fee-flow/lib/solmate/src/",
"lib/fee-flow/utils:solmate/=lib/fee-flow/lib/solmate/utils/",
"lib/fee-flow/tokens:solmate/=lib/fee-flow/lib/solmate/tokens/",
"lib/euler-swap:solmate/=lib/euler-swap/lib/euler-vault-kit/lib/permit2/lib/solmate/",
"ethereum-vault-connector/=lib/ethereum-vault-connector/src/",
"evc/=lib/ethereum-vault-connector/src/",
"evk/=lib/euler-vault-kit/src/",
"evk-test/=lib/euler-vault-kit/test/",
"euler-price-oracle/=lib/euler-price-oracle/src/",
"euler-price-oracle-test/=lib/euler-price-oracle/test/",
"fee-flow/=lib/fee-flow/src/",
"reward-streams/=lib/reward-streams/src/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"euler-earn/=lib/euler-earn/src/",
"layerzero/oft-evm/=lib/layerzero-devtools/packages/oft-evm/contracts/",
"layerzero/oft-evm-upgradeable/=lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts/",
"solidity-bytes-utils/=lib/solidity-bytes-utils/",
"@ensdomains/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@pendle/core-v2/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
"@pyth/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
"@redstone/evm-connector/=lib/euler-price-oracle/lib/redstone-oracles-monorepo/packages/evm-connector/contracts/",
"@solady/=lib/euler-price-oracle/lib/solady/src/",
"@uniswap/v3-core/=lib/euler-price-oracle/lib/v3-core/",
"@uniswap/v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/",
"@uniswap/v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/",
"ds-test/=lib/ethereum-vault-connector/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"euler-swap/=lib/euler-swap/",
"euler-vault-kit/=lib/euler-vault-kit/",
"forge-gas-snapshot/=lib/euler-vault-kit/lib/permit2/lib/forge-gas-snapshot/src/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"hardhat/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/hardhat/",
"layerzero-devtools/=lib/layerzero-devtools/packages/toolbox-foundry/src/",
"layerzero-v2/=lib/layerzero-v2/",
"openzeppelin/=lib/ethereum-vault-connector/lib/openzeppelin-contracts/contracts/",
"pendle-core-v2-public/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
"permit2/=lib/euler-vault-kit/lib/permit2/",
"pyth-sdk-solidity/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
"redstone-oracles-monorepo/=lib/euler-price-oracle/lib/",
"solady/=lib/euler-price-oracle/lib/solady/src/",
"solmate/=lib/fee-flow/lib/solmate/src/",
"v3-core/=lib/euler-price-oracle/lib/v3-core/contracts/",
"v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/contracts/",
"v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/src/",
"v4-periphery/=lib/euler-swap/lib/v4-periphery/"
],
"optimizer": {
"enabled": true,
"runs": 20000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"Factory_BadQuery","type":"error"},{"inputs":[],"name":"IRMFactory_ExcessiveInterestRate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployedContract","type":"address"},{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":false,"internalType":"uint256","name":"deployedAt","type":"uint256"}],"name":"ContractDeployed","type":"event"},{"inputs":[{"internalType":"uint256","name":"baseRate","type":"uint256"},{"internalType":"uint256","name":"slope","type":"uint256"},{"internalType":"uint256","name":"shape","type":"uint256"},{"internalType":"uint32","name":"kink","type":"uint32"},{"internalType":"uint256","name":"cutoff","type":"uint256"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployments","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"getDeploymentInfo","outputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint96","name":"deployedAt","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeploymentsListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getDeploymentsListSlice","outputs":[{"internalType":"address[]","name":"list","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"isValidDeployment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b506110d28061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636ee0787a1161004d5780636ee0787a1461016e578063df4d6510146101db578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b05780636aebd5831461015d575b5f80fd5b610086610081366004610761565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be366004610778565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b6001546040519081526020016100a7565b6101cb61017c366004610778565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6100866101e93660046107b2565b610243565b6102016101fc3660046107ff565b6105f4565b6040516100a7919061081f565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80868686868660405161025690610754565b9485526020850193909352604084019190915263ffffffff166060830152608082015260a001604051809103905ff080158015610295573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610878565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103628763ffffffff6108bc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015287166044820152606401602060405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104019190610878565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa15801561047e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a29190610878565b905068041e857e4c251f5f398111156104e7576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105e191815260200190565b60405180910390a3509695505050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106235760015491505b82821080610632575060015482115b15610669576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067383836108d9565b67ffffffffffffffff81111561068b5761068b6108f2565b6040519080825280602002602001820160405280156106b4578160200160208202803683370190505b5090505f5b6106c384846108d9565b81101561074d5760016106d6828661091f565b815481106106e6576106e6610932565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061072057610720610932565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106b9565b5092915050565b61073d8061096083390190565b5f60208284031215610771575f80fd5b5035919050565b5f60208284031215610788575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107ab575f80fd5b9392505050565b5f805f805f60a086880312156107c6575f80fd5b853594506020860135935060408601359250606086013563ffffffff811681146107ee575f80fd5b949793965091946080013592915050565b5f8060408385031215610810575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561086c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161083a565b50909695505050505050565b5f60208284031215610888575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff82811682821603908082111561074d5761074d61088f565b818103818111156108ec576108ec61088f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108ec576108ec61088f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610140604052348015610010575f80fd5b5060405161073d38038061073d83398101604081905261002f91610069565b608085905260a084905260c083905263ffffffff80831660e081905261010083905261005a916100ba565b61012052506100df9350505050565b5f805f805f60a0868803121561007d575f80fd5b855194506020860151935060408601519250606086015163ffffffff811681146100a5575f80fd5b80925050608086015190509295509295909350565b818103818111156100d957634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e05161010051610120516105c66101775f395f6103f101525f818160f60152818161033e01528181610446015261047301525f818161015701528181610240015281816102d2015261030401525f818160830152818161039b01526103c601525f818161011d01528181610270015281816102b1015261037001525f818160bc015261021f01526105c65ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c806354b02ba41161005857806354b02ba4146100f157806383caf27514610118578063bca02c131461013f578063fd2da33914610152575f80fd5b80630f7514a21461007e5780631f68f20a146100b75780632e34c872146100de575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a56100ec36600461049e565b610179565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a561014d36600461049e565b61018f565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6101858484846101e6565b90505b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101df576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101858484845b5f806101f28385610515565b90505f8115610219578161020a63ffffffff8661052e565b6102149190610545565b61021b565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff8316116102ac5761029b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff841661052e565b6102a59082610515565b9050610444565b6102f67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061052e565b6103009082610515565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff8084169190910390838103165f819003610369577f000000000000000000000000000000000000000000000000000000000000000095505050505050610188565b5f610394837f000000000000000000000000000000000000000000000000000000000000000061052e565b90506103c07f00000000000000000000000000000000000000000000000000000000000000008261052e565b826103ec7f00000000000000000000000000000000000000000000000000000000000000006001610515565b6104167f00000000000000000000000000000000000000000000000000000000000000008561052e565b610420919061052e565b61042a9190610545565b610434919061057d565b61043e9085610515565b93505050505b7f000000000000000000000000000000000000000000000000000000000000000081116104715780610493565b7f00000000000000000000000000000000000000000000000000000000000000005b979650505050505050565b5f805f606084860312156104b0575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146104d3575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610528576105286104e8565b92915050565b8082028115828204841417610528576105286104e8565b5f82610578577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610528576105286104e856fea264697066735822122028b42e34230fe1b6f6e45c678d26a6e31392bfe8333d7549b6751a9eaa718b3b64736f6c63430008180033a264697066735822122065439157846b5de0e6b4e53e880c0293b4d29c430adac3ffb24c609a543d1d0c64736f6c63430008180033
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636ee0787a1161004d5780636ee0787a1461016e578063df4d6510146101db578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b05780636aebd5831461015d575b5f80fd5b610086610081366004610761565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be366004610778565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b6001546040519081526020016100a7565b6101cb61017c366004610778565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6100866101e93660046107b2565b610243565b6102016101fc3660046107ff565b6105f4565b6040516100a7919061081f565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80868686868660405161025690610754565b9485526020850193909352604084019190915263ffffffff166060830152608082015260a001604051809103905ff080158015610295573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610878565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103628763ffffffff6108bc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015287166044820152606401602060405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104019190610878565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa15801561047e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a29190610878565b905068041e857e4c251f5f398111156104e7576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105e191815260200190565b60405180910390a3509695505050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106235760015491505b82821080610632575060015482115b15610669576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067383836108d9565b67ffffffffffffffff81111561068b5761068b6108f2565b6040519080825280602002602001820160405280156106b4578160200160208202803683370190505b5090505f5b6106c384846108d9565b81101561074d5760016106d6828661091f565b815481106106e6576106e6610932565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061072057610720610932565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106b9565b5092915050565b61073d8061096083390190565b5f60208284031215610771575f80fd5b5035919050565b5f60208284031215610788575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107ab575f80fd5b9392505050565b5f805f805f60a086880312156107c6575f80fd5b853594506020860135935060408601359250606086013563ffffffff811681146107ee575f80fd5b949793965091946080013592915050565b5f8060408385031215610810575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561086c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161083a565b50909695505050505050565b5f60208284031215610888575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff82811682821603908082111561074d5761074d61088f565b818103818111156108ec576108ec61088f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108ec576108ec61088f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610140604052348015610010575f80fd5b5060405161073d38038061073d83398101604081905261002f91610069565b608085905260a084905260c083905263ffffffff80831660e081905261010083905261005a916100ba565b61012052506100df9350505050565b5f805f805f60a0868803121561007d575f80fd5b855194506020860151935060408601519250606086015163ffffffff811681146100a5575f80fd5b80925050608086015190509295509295909350565b818103818111156100d957634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e05161010051610120516105c66101775f395f6103f101525f818160f60152818161033e01528181610446015261047301525f818161015701528181610240015281816102d2015261030401525f818160830152818161039b01526103c601525f818161011d01528181610270015281816102b1015261037001525f818160bc015261021f01526105c65ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c806354b02ba41161005857806354b02ba4146100f157806383caf27514610118578063bca02c131461013f578063fd2da33914610152575f80fd5b80630f7514a21461007e5780631f68f20a146100b75780632e34c872146100de575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a56100ec36600461049e565b610179565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a561014d36600461049e565b61018f565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6101858484846101e6565b90505b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101df576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101858484845b5f806101f28385610515565b90505f8115610219578161020a63ffffffff8661052e565b6102149190610545565b61021b565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff8316116102ac5761029b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff841661052e565b6102a59082610515565b9050610444565b6102f67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061052e565b6103009082610515565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff8084169190910390838103165f819003610369577f000000000000000000000000000000000000000000000000000000000000000095505050505050610188565b5f610394837f000000000000000000000000000000000000000000000000000000000000000061052e565b90506103c07f00000000000000000000000000000000000000000000000000000000000000008261052e565b826103ec7f00000000000000000000000000000000000000000000000000000000000000006001610515565b6104167f00000000000000000000000000000000000000000000000000000000000000008561052e565b610420919061052e565b61042a9190610545565b610434919061057d565b61043e9085610515565b93505050505b7f000000000000000000000000000000000000000000000000000000000000000081116104715780610493565b7f00000000000000000000000000000000000000000000000000000000000000005b979650505050505050565b5f805f606084860312156104b0575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146104d3575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610528576105286104e8565b92915050565b8082028115828204841417610528576105286104e8565b5f82610578577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610528576105286104e856fea264697066735822122028b42e34230fe1b6f6e45c678d26a6e31392bfe8333d7549b6751a9eaa718b3b64736f6c63430008180033a264697066735822122065439157846b5de0e6b4e53e880c0293b4d29c430adac3ffb24c609a543d1d0c64736f6c63430008180033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 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.