Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FraxlendPairRegistry
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 1000000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: ISC
pragma solidity ^0.8.19;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ====================== FraxlendPairRegistry ========================
// ====================================================================
// Frax Finance: https://github.com/FraxFinance
// Primary Author
// Drake Evans: https://github.com/DrakeEvans
// Reviewers
// Dennis: https://github.com/denett
// Rich Gee: https://github.com/zer0blockchain
// ====================================================================
import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { Ownable2Step } from "@openzeppelin/contracts/access/Ownable2Step.sol";
contract FraxlendPairRegistry is Ownable2Step {
/// @notice addresses of deployers allowed to add to the registry
mapping(address => bool) public deployers;
/// @notice List of the addresses of all deployed Pairs
address[] public deployedPairsArray;
/// @notice name => deployed address
mapping(string => address) public deployedPairsByName;
constructor(address _ownerAddress, address[] memory _initialDeployers) Ownable2Step() {
for (uint256 i = 0; i < _initialDeployers.length; i++) {
deployers[_initialDeployers[i]] = true;
}
_transferOwnership(_ownerAddress);
}
// ============================================================================================
// Functions: View Functions
// ============================================================================================
/// @notice The ```deployedPairsLength``` function returns the length of the deployedPairsArray
/// @return length of array
function deployedPairsLength() external view returns (uint256) {
return deployedPairsArray.length;
}
/// @notice The ```getAllPairAddresses``` function returns an array of all deployed pairs
/// @return _deployedPairsArray The array of pairs deployed
function getAllPairAddresses() external view returns (address[] memory _deployedPairsArray) {
_deployedPairsArray = deployedPairsArray;
}
// ============================================================================================
// Functions: Setters
// ============================================================================================
/// @notice The ```SetDeployer``` event is called when a deployer is added or removed from the whitelist
/// @param deployer The address to be set
/// @param _bool The value to set (allow or disallow)
event SetDeployer(address deployer, bool _bool);
/// @notice The ```setDeployers``` function sets the deployers whitelist
/// @param _deployers The deployers to set
/// @param _bool The boolean to set
function setDeployers(address[] memory _deployers, bool _bool) external onlyOwner {
for (uint256 i = 0; i < _deployers.length; i++) {
deployers[_deployers[i]] = _bool;
emit SetDeployer(_deployers[i], _bool);
}
}
// ============================================================================================
// Functions: External Methods
// ============================================================================================
/// @notice The ```AddPair``` event is emitted when a new pair is added to the registry
/// @param pairAddress The address of the pair
event AddPair(address pairAddress);
/// @notice The ```addPair``` function adds a pair to the registry and ensures a unique name
/// @param _pairAddress The address of the pair
function addPair(address _pairAddress) external {
// Ensure caller is on the whitelist
if (!deployers[msg.sender]) revert AddressIsNotDeployer();
// Add pair to the global list
deployedPairsArray.push(_pairAddress);
// Pull name, ensure uniqueness and add to the name mapping
string memory _name = IERC20Metadata(_pairAddress).name();
if (deployedPairsByName[_name] != address(0)) revert NameMustBeUnique();
deployedPairsByName[_name] = _pairAddress;
emit AddPair(_pairAddress);
}
// ============================================================================================
// Errors
// ============================================================================================
error AddressIsNotDeployer();
error NameMustBeUnique();
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.0;
import "./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() external {
address sender = _msgSender();
require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
_transferOwnership(sender);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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 `from` to `to` 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 from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"remappings": [
"ds-test/=node_modules/ds-test/src/",
"forge-std/=node_modules/forge-std/src/",
"frax-std/=node_modules/frax-standard-solidity/src/",
"script/=script/",
"src/=src/",
"deploy/=deploy/",
"test/=test/",
"@chainlink/=node_modules/@chainlink/",
"@ensdomains/=node_modules/@ensdomains/",
"@eth-optimism/=node_modules/@eth-optimism/",
"@mean-finance/=node_modules/@mean-finance/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@rari-capital/=node_modules/@rari-capital/",
"@uniswap/=node_modules/@uniswap/",
"base64-sol/=node_modules/base64-sol/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"frax-standard-solidity/=node_modules/frax-standard-solidity/",
"hardhat/=node_modules/hardhat/",
"solady/=node_modules/solady/",
"solidity-bytes-utils/=node_modules/solidity-bytes-utils/"
],
"optimizer": {
"enabled": false,
"runs": 1000000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"address[]","name":"_initialDeployers","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AddressIsNotDeployer","type":"error"},{"inputs":[],"name":"NameMustBeUnique","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pairAddress","type":"address"}],"name":"AddPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"deployer","type":"address"},{"indexed":false,"internalType":"bool","name":"_bool","type":"bool"}],"name":"SetDeployer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployedPairsArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"deployedPairsByName","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployedPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deployers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllPairAddresses","outputs":[{"internalType":"address[]","name":"_deployedPairsArray","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_deployers","type":"address[]"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setDeployers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620017d0380380620017d08339818101604052810190620000379190620003fc565b620000576200004b6200010960201b60201c565b6200011160201b60201c565b60005b8151811015620000ef5760016002600084848151811062000080576200007f62000462565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000e690620004ca565b9150506200005a565b5062000101826200011160201b60201c565b505062000517565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000147816200014a60201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200024f8262000222565b9050919050565b620002618162000242565b81146200026d57600080fd5b50565b600081519050620002818162000256565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002d7826200028c565b810181811067ffffffffffffffff82111715620002f957620002f86200029d565b5b80604052505050565b60006200030e6200020e565b90506200031c8282620002cc565b919050565b600067ffffffffffffffff8211156200033f576200033e6200029d565b5b602082029050602081019050919050565b600080fd5b60006200036c620003668462000321565b62000302565b9050808382526020820190506020840283018581111562000392576200039162000350565b5b835b81811015620003bf5780620003aa888262000270565b84526020840193505060208101905062000394565b5050509392505050565b600082601f830112620003e157620003e062000287565b5b8151620003f384826020860162000355565b91505092915050565b6000806040838503121562000416576200041562000218565b5b6000620004268582860162000270565b925050602083015167ffffffffffffffff8111156200044a57620004496200021d565b5b6200045885828601620003c9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000620004d782620004c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200050c576200050b62000491565b5b600182019050919050565b6112a980620005276000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063721819fc11610081578063c2b7bbb61161005b578063c2b7bbb6146101f3578063e30c39781461020f578063f2fde38b1461022d576100d4565b8063721819fc1461019b57806379ba5097146101cb5780638da5cb5b146101d5576100d4565b8063607b6d16116100b2578063607b6d16146101435780636a2385e814610161578063715018a614610191576100d4565b80631e3ad087146100d957806331c315df146100f55780633668310014610125575b600080fd5b6100f360048036038101906100ee9190610c35565b610249565b005b61010f600480360381019061010a9190610cc7565b610339565b60405161011c9190610d03565b60405180910390f35b61012d610378565b60405161013a9190610d2d565b60405180910390f35b61014b610385565b6040516101589190610e06565b60405180910390f35b61017b60048036038101906101769190610e28565b610413565b6040516101889190610e64565b60405180910390f35b610199610433565b005b6101b560048036038101906101b09190610f34565b610447565b6040516101c29190610d03565b60405180910390f35b6101d3610490565b005b6101dd61051d565b6040516101ea9190610d03565b60405180910390f35b61020d60048036038101906102089190610e28565b610546565b005b6102176107e0565b6040516102249190610d03565b60405180910390f35b61024760048036038101906102429190610e28565b61080a565b005b6102516108b7565b60005b825181101561033457816002600085848151811061027557610274610f7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f41ed586a736eb89bf4aa2dda45d4d9ee10968f05b6fcc12eeea28c1da138456c83828151811061030257610301610f7d565b5b602002602001015183604051610319929190610fac565b60405180910390a1808061032c90611004565b915050610254565b505050565b6003818154811061034957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905090565b6060600380548060200260200160405190810160405280929190818152602001828054801561040957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116103bf575b5050505050905090565b60026020528060005260406000206000915054906101000a900460ff1681565b61043b6108b7565b6104456000610935565b565b6004818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061049a610966565b90508073ffffffffffffffffffffffffffffffffffffffff166104bb6107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610508906110cf565b60405180910390fd5b61051a81610935565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105c9576040517feaffaa6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610679573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106a29190611189565b9050600073ffffffffffffffffffffffffffffffffffffffff166004826040516106cc9190611219565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610748576040517fe99b9f6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816004826040516107599190611219565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f84f21453a36d947225b71844083d0755a7939b6c09162d5ced65f7cc0ac9d42c826040516107d49190610d03565b60405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108126108b7565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661087261051d565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6108bf610966565b73ffffffffffffffffffffffffffffffffffffffff166108dd61051d565b73ffffffffffffffffffffffffffffffffffffffff1614610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a9061127c565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556109638161096e565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a9482610a4b565b810181811067ffffffffffffffff82111715610ab357610ab2610a5c565b5b80604052505050565b6000610ac6610a32565b9050610ad28282610a8b565b919050565b600067ffffffffffffffff821115610af257610af1610a5c565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3382610b08565b9050919050565b610b4381610b28565b8114610b4e57600080fd5b50565b600081359050610b6081610b3a565b92915050565b6000610b79610b7484610ad7565b610abc565b90508083825260208201905060208402830185811115610b9c57610b9b610b03565b5b835b81811015610bc55780610bb18882610b51565b845260208401935050602081019050610b9e565b5050509392505050565b600082601f830112610be457610be3610a46565b5b8135610bf4848260208601610b66565b91505092915050565b60008115159050919050565b610c1281610bfd565b8114610c1d57600080fd5b50565b600081359050610c2f81610c09565b92915050565b60008060408385031215610c4c57610c4b610a3c565b5b600083013567ffffffffffffffff811115610c6a57610c69610a41565b5b610c7685828601610bcf565b9250506020610c8785828601610c20565b9150509250929050565b6000819050919050565b610ca481610c91565b8114610caf57600080fd5b50565b600081359050610cc181610c9b565b92915050565b600060208284031215610cdd57610cdc610a3c565b5b6000610ceb84828501610cb2565b91505092915050565b610cfd81610b28565b82525050565b6000602082019050610d186000830184610cf4565b92915050565b610d2781610c91565b82525050565b6000602082019050610d426000830184610d1e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7d81610b28565b82525050565b6000610d8f8383610d74565b60208301905092915050565b6000602082019050919050565b6000610db382610d48565b610dbd8185610d53565b9350610dc883610d64565b8060005b83811015610df9578151610de08882610d83565b9750610deb83610d9b565b925050600181019050610dcc565b5085935050505092915050565b60006020820190508181036000830152610e208184610da8565b905092915050565b600060208284031215610e3e57610e3d610a3c565b5b6000610e4c84828501610b51565b91505092915050565b610e5e81610bfd565b82525050565b6000602082019050610e796000830184610e55565b92915050565b600080fd5b600067ffffffffffffffff821115610e9f57610e9e610a5c565b5b610ea882610a4b565b9050602081019050919050565b82818337600083830152505050565b6000610ed7610ed284610e84565b610abc565b905082815260208101848484011115610ef357610ef2610e7f565b5b610efe848285610eb5565b509392505050565b600082601f830112610f1b57610f1a610a46565b5b8135610f2b848260208601610ec4565b91505092915050565b600060208284031215610f4a57610f49610a3c565b5b600082013567ffffffffffffffff811115610f6857610f67610a41565b5b610f7484828501610f06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082019050610fc16000830185610cf4565b610fce6020830184610e55565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061100f82610c91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104157611040610fd5565b5b600182019050919050565b600082825260208201905092915050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b60006110b960298361104c565b91506110c48261105d565b604082019050919050565b600060208201905081810360008301526110e8816110ac565b9050919050565b60005b8381101561110d5780820151818401526020810190506110f2565b60008484015250505050565b600061112c61112784610e84565b610abc565b90508281526020810184848401111561114857611147610e7f565b5b6111538482856110ef565b509392505050565b600082601f8301126111705761116f610a46565b5b8151611180848260208601611119565b91505092915050565b60006020828403121561119f5761119e610a3c565b5b600082015167ffffffffffffffff8111156111bd576111bc610a41565b5b6111c98482850161115b565b91505092915050565b600081519050919050565b600081905092915050565b60006111f3826111d2565b6111fd81856111dd565b935061120d8185602086016110ef565b80840191505092915050565b600061122582846111e8565b915081905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061126660208361104c565b915061127182611230565b602082019050919050565b6000602082019050818103600083015261129581611259565b905091905056fea164736f6c6343000813000a00000000000000000000000031562ae726afebe25417df01bedc72ef489f45b30000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000031562ae726afebe25417df01bedc72ef489f45b3000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e6000000000000000000000000c188a8f8066e720d892c0cfae9b9865e3425fcde
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063721819fc11610081578063c2b7bbb61161005b578063c2b7bbb6146101f3578063e30c39781461020f578063f2fde38b1461022d576100d4565b8063721819fc1461019b57806379ba5097146101cb5780638da5cb5b146101d5576100d4565b8063607b6d16116100b2578063607b6d16146101435780636a2385e814610161578063715018a614610191576100d4565b80631e3ad087146100d957806331c315df146100f55780633668310014610125575b600080fd5b6100f360048036038101906100ee9190610c35565b610249565b005b61010f600480360381019061010a9190610cc7565b610339565b60405161011c9190610d03565b60405180910390f35b61012d610378565b60405161013a9190610d2d565b60405180910390f35b61014b610385565b6040516101589190610e06565b60405180910390f35b61017b60048036038101906101769190610e28565b610413565b6040516101889190610e64565b60405180910390f35b610199610433565b005b6101b560048036038101906101b09190610f34565b610447565b6040516101c29190610d03565b60405180910390f35b6101d3610490565b005b6101dd61051d565b6040516101ea9190610d03565b60405180910390f35b61020d60048036038101906102089190610e28565b610546565b005b6102176107e0565b6040516102249190610d03565b60405180910390f35b61024760048036038101906102429190610e28565b61080a565b005b6102516108b7565b60005b825181101561033457816002600085848151811061027557610274610f7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f41ed586a736eb89bf4aa2dda45d4d9ee10968f05b6fcc12eeea28c1da138456c83828151811061030257610301610f7d565b5b602002602001015183604051610319929190610fac565b60405180910390a1808061032c90611004565b915050610254565b505050565b6003818154811061034957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905090565b6060600380548060200260200160405190810160405280929190818152602001828054801561040957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116103bf575b5050505050905090565b60026020528060005260406000206000915054906101000a900460ff1681565b61043b6108b7565b6104456000610935565b565b6004818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061049a610966565b90508073ffffffffffffffffffffffffffffffffffffffff166104bb6107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610508906110cf565b60405180910390fd5b61051a81610935565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105c9576040517feaffaa6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610679573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106a29190611189565b9050600073ffffffffffffffffffffffffffffffffffffffff166004826040516106cc9190611219565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610748576040517fe99b9f6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816004826040516107599190611219565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f84f21453a36d947225b71844083d0755a7939b6c09162d5ced65f7cc0ac9d42c826040516107d49190610d03565b60405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108126108b7565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661087261051d565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6108bf610966565b73ffffffffffffffffffffffffffffffffffffffff166108dd61051d565b73ffffffffffffffffffffffffffffffffffffffff1614610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a9061127c565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556109638161096e565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a9482610a4b565b810181811067ffffffffffffffff82111715610ab357610ab2610a5c565b5b80604052505050565b6000610ac6610a32565b9050610ad28282610a8b565b919050565b600067ffffffffffffffff821115610af257610af1610a5c565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3382610b08565b9050919050565b610b4381610b28565b8114610b4e57600080fd5b50565b600081359050610b6081610b3a565b92915050565b6000610b79610b7484610ad7565b610abc565b90508083825260208201905060208402830185811115610b9c57610b9b610b03565b5b835b81811015610bc55780610bb18882610b51565b845260208401935050602081019050610b9e565b5050509392505050565b600082601f830112610be457610be3610a46565b5b8135610bf4848260208601610b66565b91505092915050565b60008115159050919050565b610c1281610bfd565b8114610c1d57600080fd5b50565b600081359050610c2f81610c09565b92915050565b60008060408385031215610c4c57610c4b610a3c565b5b600083013567ffffffffffffffff811115610c6a57610c69610a41565b5b610c7685828601610bcf565b9250506020610c8785828601610c20565b9150509250929050565b6000819050919050565b610ca481610c91565b8114610caf57600080fd5b50565b600081359050610cc181610c9b565b92915050565b600060208284031215610cdd57610cdc610a3c565b5b6000610ceb84828501610cb2565b91505092915050565b610cfd81610b28565b82525050565b6000602082019050610d186000830184610cf4565b92915050565b610d2781610c91565b82525050565b6000602082019050610d426000830184610d1e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7d81610b28565b82525050565b6000610d8f8383610d74565b60208301905092915050565b6000602082019050919050565b6000610db382610d48565b610dbd8185610d53565b9350610dc883610d64565b8060005b83811015610df9578151610de08882610d83565b9750610deb83610d9b565b925050600181019050610dcc565b5085935050505092915050565b60006020820190508181036000830152610e208184610da8565b905092915050565b600060208284031215610e3e57610e3d610a3c565b5b6000610e4c84828501610b51565b91505092915050565b610e5e81610bfd565b82525050565b6000602082019050610e796000830184610e55565b92915050565b600080fd5b600067ffffffffffffffff821115610e9f57610e9e610a5c565b5b610ea882610a4b565b9050602081019050919050565b82818337600083830152505050565b6000610ed7610ed284610e84565b610abc565b905082815260208101848484011115610ef357610ef2610e7f565b5b610efe848285610eb5565b509392505050565b600082601f830112610f1b57610f1a610a46565b5b8135610f2b848260208601610ec4565b91505092915050565b600060208284031215610f4a57610f49610a3c565b5b600082013567ffffffffffffffff811115610f6857610f67610a41565b5b610f7484828501610f06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082019050610fc16000830185610cf4565b610fce6020830184610e55565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061100f82610c91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104157611040610fd5565b5b600182019050919050565b600082825260208201905092915050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b60006110b960298361104c565b91506110c48261105d565b604082019050919050565b600060208201905081810360008301526110e8816110ac565b9050919050565b60005b8381101561110d5780820151818401526020810190506110f2565b60008484015250505050565b600061112c61112784610e84565b610abc565b90508281526020810184848401111561114857611147610e7f565b5b6111538482856110ef565b509392505050565b600082601f8301126111705761116f610a46565b5b8151611180848260208601611119565b91505092915050565b60006020828403121561119f5761119e610a3c565b5b600082015167ffffffffffffffff8111156111bd576111bc610a41565b5b6111c98482850161115b565b91505092915050565b600081519050919050565b600081905092915050565b60006111f3826111d2565b6111fd81856111dd565b935061120d8185602086016110ef565b80840191505092915050565b600061122582846111e8565b915081905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061126660208361104c565b915061127182611230565b602082019050919050565b6000602082019050818103600083015261129581611259565b905091905056fea164736f6c6343000813000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000031562ae726afebe25417df01bedc72ef489f45b30000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000031562ae726afebe25417df01bedc72ef489f45b3000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e6000000000000000000000000c188a8f8066e720d892c0cfae9b9865e3425fcde
-----Decoded View---------------
Arg [0] : _ownerAddress (address): 0x31562ae726AFEBe25417df01bEdC72EF489F45b3
Arg [1] : _initialDeployers (address[]): 0x31562ae726AFEBe25417df01bEdC72EF489F45b3,0xC4EB45d80DC1F079045E75D5d55de8eD1c1090E6,0xc188a8f8066e720D892c0cfAE9B9865e3425fCdE
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000031562ae726afebe25417df01bedc72ef489f45b3
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 00000000000000000000000031562ae726afebe25417df01bedc72ef489f45b3
Arg [4] : 000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e6
Arg [5] : 000000000000000000000000c188a8f8066e720d892c0cfae9b9865e3425fcde
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.