Source Code
Overview
FRAX Balance | FXTL Balance
0 FRAX | 0 FXTL
FRAX Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add Fxtl Contrib... | 903419 | 707 days ago | IN | 0 FRAX | 0.00021246 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FxtlPoints
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
No with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// =========================== Fxtl Points ============================
// ====================================================================
import { Owned } from "../vefxs/Owned.sol";
import { IFxtlPointsEvents } from "./IFxtlPointsEvents.sol";
/**
* @title FxtlPoints
* @author Frax Finance
* @notice A simple Fxtl point tracking smart contract.
*/
contract FxtlPoints is Owned, IFxtlPointsEvents {
mapping(address => bool) public isFxtlContributor;
mapping(address => uint256) public fxtlPointsBalances;
/**
* @notice Used to initialize the smart contract.
* @dev The initial owner is set as the deployer of the smart contract.
*/
constructor() Owned(msg.sender) {}
/**
* @notice Retrieves the Fxtl points balances of multiple point owners at the same time.
* @param _pointOwners An array of point owners
* @return An array of Fxtl points balances
*/
function bulkFxtlPointsBalances(address[] memory _pointOwners) external view returns (uint256[] memory) {
uint256[] memory balances = new uint256[](_pointOwners.length);
for (uint256 i; i < _pointOwners.length; ) {
balances[i] = fxtlPointsBalances[_pointOwners[i]];
unchecked {
++i;
}
}
return balances;
}
/**
* @notice Adds a Fxtl contributor.
* @dev Can only be called by the owner.
* @param _contributor The address of the Fxtl contributor to add
*/
function addFxtlContributor(address _contributor) external {
_onlyOwner();
if (isFxtlContributor[_contributor]) revert AlreadyFxtlContributor();
isFxtlContributor[_contributor] = true;
emit FxtlContributorAdded(_contributor);
}
/**
* @notice Removes a Fxtl contributor.
* @dev Can only be called by the owner.
* @param _contributor The address of the Fxtl contributor to remove
*/
function removeFxtlContributor(address _contributor) external {
_onlyOwner();
if (!isFxtlContributor[_contributor]) revert NotFxtlContributor();
isFxtlContributor[_contributor] = false;
emit FxtlContributorRemoved(_contributor);
}
/**
* @notice Adds Fxtl points to a recipient.
* @dev Can only be called by a Fxtl contributor.
* @param _recipient Recipient of the Fxtl points
* @param _amount Amount of Fxtl points to add to the recipient
*/
function addFxtlPoints(address _recipient, uint256 _amount) external {
_onlyFxtlContributor();
fxtlPointsBalances[_recipient] += _amount;
emit FxtlPointsAdded(_recipient, _amount);
}
/**
* @notice Removes Fxtl points from a point owner.
* @dev Can only be called by a Fxtl contributor.
* @dev Can only remove the amount of Fxtl points that the point owner has.
* @param _pointOwner Owner of the Fxtl points being removed
* @param _amount Amount of Fxtl points to remove from the point owner
*/
function removeFxtlPoints(address _pointOwner, uint256 _amount) external {
_onlyFxtlContributor();
if (fxtlPointsBalances[_pointOwner] < _amount) {
revert InsufficientFxtlPoints(fxtlPointsBalances[_pointOwner], _amount);
}
fxtlPointsBalances[_pointOwner] -= _amount;
emit FxtlPointsRemoved(_pointOwner, _amount);
}
/**
* @notice Adds Fxtl points to multiple recipients.
* @dev Can only be called by a Fxtl contributor.
* @dev If the arrays are different lengths, the operation will be reverted.
* @param _recipients An array of recipients of the Fxtl points
* @param _amounts An array of amounts of Fxtl points to add to the recipients
*/
function bulkAddFxtlPoints(address[] memory _recipients, uint256[] memory _amounts) external {
_onlyFxtlContributor();
if (_recipients.length != _amounts.length) revert ArrayLengthMismatch();
for (uint256 i; i < _recipients.length; ) {
fxtlPointsBalances[_recipients[i]] += _amounts[i];
emit FxtlPointsAdded(_recipients[i], _amounts[i]);
unchecked {
++i;
}
}
}
/**
* @notice Removes Fxtl points from multiple point owners.
* @dev Can only be called by a Fxtl contributor.
* @dev If the arrays are different lengths, the operation will be reverted.
* @dev Can only remove the amount of Fxtl points that the point owner has.
* @param _pointOwners An array of owners of the Fxtl points being removed
* @param _amounts An array of amounts of Fxtl points to remove from the point owners
*/
function bulkRemoveFxtlPoints(address[] memory _pointOwners, uint256[] memory _amounts) external {
_onlyFxtlContributor();
if (_pointOwners.length != _amounts.length) revert ArrayLengthMismatch();
for (uint256 i; i < _pointOwners.length; ) {
if (fxtlPointsBalances[_pointOwners[i]] < _amounts[i]) {
revert InsufficientFxtlPoints(fxtlPointsBalances[_pointOwners[i]], _amounts[i]);
}
fxtlPointsBalances[_pointOwners[i]] -= _amounts[i];
emit FxtlPointsRemoved(_pointOwners[i], _amounts[i]);
unchecked {
++i;
}
}
}
/**
* @notice Checks if an address is a Fxtl contributor.
* @dev The operation will be reverted if the caller is not a Fxtlx contributor.
*/
function _onlyFxtlContributor() internal view {
if (!isFxtlContributor[msg.sender]) revert NotFxtlContributor();
}
/// @notice The address is already a Fxtl contributor
error AlreadyFxtlContributor();
/// @notice The array lengths are mismatched
error ArrayLengthMismatch();
/**
* @notice The amount of Fxtl points is insufficient.
* @param available The amount of Fxtl points available
* @param attempted The amount of Fxtl points attempted to be removed
*/
error InsufficientFxtlPoints(uint256 available, uint256 attempted);
/// @notice Only Fxtl contributor is allowed to perform this call
error NotFxtlContributor();
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ===============================Owned================================
// ====================================================================
/// @title Owned
/// @notice The Owned contract has an owner address, and provides basic access control.
contract Owned {
address public owner;
address public nominatedOwner;
constructor(address _owner) {
if (_owner == address(0)) revert OwnerCannotBeZeroAddress();
owner = _owner;
emit OwnerChanged(address(0), _owner);
}
function nominateNewOwner(address _owner) external {
_onlyOwner();
if (_owner == address(0)) revert OwnerCannotBeZeroAddress();
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}
function acceptOwnership() external {
if (msg.sender != nominatedOwner) revert InvalidOwnershipAcceptance();
address oldOwner = owner;
owner = nominatedOwner;
nominatedOwner = address(0);
emit OwnerChanged(oldOwner, owner);
}
function _onlyOwner() internal view {
if (msg.sender != owner) revert OnlyOwner();
}
event OwnerNominated(address indexed nominatedOwner);
event OwnerChanged(address indexed previousOwner, address indexed newOwner);
error InvalidOwnershipAcceptance();
error OwnerCannotBeZeroAddress();
error OnlyOwner();
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ======================== IFxtlPointsEvents =========================
// ====================================================================
/**
* @title IFxtlPointsEvents
* @author Frax Finance
* @notice A collection of events used by the Flox FxtlPoints
*/
contract IFxtlPointsEvents {
/**
* @notice Emitted when a new address is added as a Fxtl Contributor.
* @param contributor The address added as the contributor
*/
event FxtlContributorAdded(address indexed contributor);
/**
* @notice Emitted when an address is removed as a Fxtl Contributor.
* @param contributor The address removed as the contributor
*/
event FxtlContributorRemoved(address indexed contributor);
/**
* @notice Emitted when Fxtl points are added to an address.
* @param recipient The address receiving the Fxtl points
* @param amount The amount of Fxtl points added
*/
event FxtlPointsAdded(address indexed recipient, uint256 amount);
/**
* @notice Emitted when Fxtl points are removed from an address.
* @param pointOwner The address losing the Fxtl points
* @param amount The amount of Fxtl points removed
*/
event FxtlPointsRemoved(address indexed pointOwner, uint256 amount);
}{
"remappings": [
"frax-std/=lib/frax-standard-solidity/src/",
"@eth-optimism/=lib/optimism/packages/",
"@openzeppelin-new/=node_modules/@openzeppelin-new/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@rari-capital/=node_modules/@rari-capital/",
"ds-test/=lib/frax-standard-solidity/lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/frax-standard-solidity/lib/forge-std/src/",
"frax-standard-solidity/=lib/frax-standard-solidity/src/",
"multicall/=lib/optimism/packages/contracts-periphery/lib/multicall/src/",
"optimism/=lib/optimism/",
"solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyFxtlContributor","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"attempted","type":"uint256"}],"name":"InsufficientFxtlPoints","type":"error"},{"inputs":[],"name":"InvalidOwnershipAcceptance","type":"error"},{"inputs":[],"name":"NotFxtlContributor","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"OwnerCannotBeZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FxtlContributorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FxtlContributorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FxtlPointsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pointOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FxtlPointsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nominatedOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contributor","type":"address"}],"name":"addFxtlContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addFxtlPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkAddFxtlPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pointOwners","type":"address[]"}],"name":"bulkFxtlPointsBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pointOwners","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkRemoveFxtlPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fxtlPointsBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFxtlContributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contributor","type":"address"}],"name":"removeFxtlContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pointOwner","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeFxtlPoints","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610078576040517fc81abf6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a35061169e806101236000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636112f9af1161008c5780638da5cb5b116100665780638da5cb5b146101e8578063c171c65514610206578063d58fd49a14610222578063d614c58a1461023e576100cf565b80636112f9af1461017e5780636665e190146101ae57806379ba5097146101de576100cf565b80630f836e07146100d45780631627540c146100f057806325fda3d11461010c5780632bbd3e84146101285780634d0b54d81461014457806353a47bb714610160575b600080fd5b6100ee60048036038101906100e991906110cc565b61026e565b005b61010a6004803603810190610105919061110c565b61031e565b005b61012660048036038101906101219190611355565b610413565b005b610142600480360381019061013d919061110c565b6106ab565b005b61015e60048036038101906101599190611355565b6107d4565b005b61016861093f565b60405161017591906113dc565b60405180910390f35b610198600480360381019061019391906113f7565b610965565b6040516101a591906114fe565b60405180910390f35b6101c860048036038101906101c3919061110c565b610a4f565b6040516101d5919061152f565b60405180910390f35b6101e6610a67565b005b6101f0610c35565b6040516101fd91906113dc565b60405180910390f35b610220600480360381019061021b91906110cc565b610c59565b005b61023c6004803603810190610237919061110c565b610dce565b005b6102586004803603810190610253919061110c565b610ef8565b6040516102659190611565565b60405180910390f35b610276610f18565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102c591906115af565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f0268f4679db7123d479021367abc6a8700ae63b3e9fcb2c97d0462e92027482f82604051610312919061152f565b60405180910390a25050565b610326610f9d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361038c576040517fc81abf6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2260405160405180910390a250565b61041b610f18565b8051825114610456576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156106a65781818151811061047557610474611605565b5b60200260200101516003600085848151811061049457610493611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561058f57600360008483815181106104f4576104f3611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811061054a57610549611605565b5b60200260200101516040517fd81a0a75000000000000000000000000000000000000000000000000000000008152600401610586929190611634565b60405180910390fd5b8181815181106105a2576105a1611605565b5b6020026020010151600360008584815181106105c1576105c0611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610612919061165d565b9250508190555082818151811061062c5761062b611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f13b227187fa31fdbea8b86995ac447e1a9aadd3f2381e562111bfe82e242b3b783838151811061067e5761067d611605565b5b6020026020010151604051610693919061152f565b60405180910390a2806001019050610459565b505050565b6106b3610f9d565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610736576040517f8e6c615c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd12b6212ff135eb13602620025372b793c032c25d91b4626f5122dd6ddd3da7d60405160405180910390a250565b6107dc610f18565b8051825114610817576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561093a5781818151811061083657610835611605565b5b60200260200101516003600085848151811061085557610854611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108a691906115af565b925050819055508281815181106108c0576108bf611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f0268f4679db7123d479021367abc6a8700ae63b3e9fcb2c97d0462e92027482f83838151811061091257610911611605565b5b6020026020010151604051610927919061152f565b60405180910390a280600101905061081a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000825167ffffffffffffffff8111156109845761098361114f565b5b6040519080825280602002602001820160405280156109b25781602001602082028036833780820191505090505b50905060005b8351811015610a4557600360008583815181106109d8576109d7611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610a2e57610a2d611605565b5b6020026020010181815250508060010190506109b8565b5080915050919050565b60036020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aee576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c61610f18565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d2657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816040517fd81a0a75000000000000000000000000000000000000000000000000000000008152600401610d1d929190611634565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d75919061165d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f13b227187fa31fdbea8b86995ac447e1a9aadd3f2381e562111bfe82e242b3b782604051610dc2919061152f565b60405180910390a25050565b610dd6610f9d565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e5a576040517ffb3b211f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fe65fe402339208383f5099232b75931c31cab59b26dc286ec0ab4de32d3dd0fa60405160405180910390a250565b60026020528060005260406000206000915054906101000a900460ff1681565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f9b576040517f8e6c615c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611022576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061106382611038565b9050919050565b61107381611058565b811461107e57600080fd5b50565b6000813590506110908161106a565b92915050565b6000819050919050565b6110a981611096565b81146110b457600080fd5b50565b6000813590506110c6816110a0565b92915050565b600080604083850312156110e3576110e261102e565b5b60006110f185828601611081565b9250506020611102858286016110b7565b9150509250929050565b6000602082840312156111225761112161102e565b5b600061113084828501611081565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6111878261113e565b810181811067ffffffffffffffff821117156111a6576111a561114f565b5b80604052505050565b60006111b9611024565b90506111c5828261117e565b919050565b600067ffffffffffffffff8211156111e5576111e461114f565b5b602082029050602081019050919050565b600080fd5b600061120e611209846111ca565b6111af565b90508083825260208201905060208402830185811115611231576112306111f6565b5b835b8181101561125a57806112468882611081565b845260208401935050602081019050611233565b5050509392505050565b600082601f83011261127957611278611139565b5b81356112898482602086016111fb565b91505092915050565b600067ffffffffffffffff8211156112ad576112ac61114f565b5b602082029050602081019050919050565b60006112d16112cc84611292565b6111af565b905080838252602082019050602084028301858111156112f4576112f36111f6565b5b835b8181101561131d578061130988826110b7565b8452602084019350506020810190506112f6565b5050509392505050565b600082601f83011261133c5761133b611139565b5b813561134c8482602086016112be565b91505092915050565b6000806040838503121561136c5761136b61102e565b5b600083013567ffffffffffffffff81111561138a57611389611033565b5b61139685828601611264565b925050602083013567ffffffffffffffff8111156113b7576113b6611033565b5b6113c385828601611327565b9150509250929050565b6113d681611058565b82525050565b60006020820190506113f160008301846113cd565b92915050565b60006020828403121561140d5761140c61102e565b5b600082013567ffffffffffffffff81111561142b5761142a611033565b5b61143784828501611264565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61147581611096565b82525050565b6000611487838361146c565b60208301905092915050565b6000602082019050919050565b60006114ab82611440565b6114b5818561144b565b93506114c08361145c565b8060005b838110156114f15781516114d8888261147b565b97506114e383611493565b9250506001810190506114c4565b5085935050505092915050565b6000602082019050818103600083015261151881846114a0565b905092915050565b61152981611096565b82525050565b60006020820190506115446000830184611520565b92915050565b60008115159050919050565b61155f8161154a565b82525050565b600060208201905061157a6000830184611556565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115ba82611096565b91506115c583611096565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156115fa576115f9611580565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506116496000830185611520565b6116566020830184611520565b9392505050565b600061166882611096565b915061167383611096565b92508282101561168657611685611580565b5b82820390509291505056fea164736f6c634300080f000a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636112f9af1161008c5780638da5cb5b116100665780638da5cb5b146101e8578063c171c65514610206578063d58fd49a14610222578063d614c58a1461023e576100cf565b80636112f9af1461017e5780636665e190146101ae57806379ba5097146101de576100cf565b80630f836e07146100d45780631627540c146100f057806325fda3d11461010c5780632bbd3e84146101285780634d0b54d81461014457806353a47bb714610160575b600080fd5b6100ee60048036038101906100e991906110cc565b61026e565b005b61010a6004803603810190610105919061110c565b61031e565b005b61012660048036038101906101219190611355565b610413565b005b610142600480360381019061013d919061110c565b6106ab565b005b61015e60048036038101906101599190611355565b6107d4565b005b61016861093f565b60405161017591906113dc565b60405180910390f35b610198600480360381019061019391906113f7565b610965565b6040516101a591906114fe565b60405180910390f35b6101c860048036038101906101c3919061110c565b610a4f565b6040516101d5919061152f565b60405180910390f35b6101e6610a67565b005b6101f0610c35565b6040516101fd91906113dc565b60405180910390f35b610220600480360381019061021b91906110cc565b610c59565b005b61023c6004803603810190610237919061110c565b610dce565b005b6102586004803603810190610253919061110c565b610ef8565b6040516102659190611565565b60405180910390f35b610276610f18565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102c591906115af565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f0268f4679db7123d479021367abc6a8700ae63b3e9fcb2c97d0462e92027482f82604051610312919061152f565b60405180910390a25050565b610326610f9d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361038c576040517fc81abf6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2260405160405180910390a250565b61041b610f18565b8051825114610456576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156106a65781818151811061047557610474611605565b5b60200260200101516003600085848151811061049457610493611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561058f57600360008483815181106104f4576104f3611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811061054a57610549611605565b5b60200260200101516040517fd81a0a75000000000000000000000000000000000000000000000000000000008152600401610586929190611634565b60405180910390fd5b8181815181106105a2576105a1611605565b5b6020026020010151600360008584815181106105c1576105c0611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610612919061165d565b9250508190555082818151811061062c5761062b611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f13b227187fa31fdbea8b86995ac447e1a9aadd3f2381e562111bfe82e242b3b783838151811061067e5761067d611605565b5b6020026020010151604051610693919061152f565b60405180910390a2806001019050610459565b505050565b6106b3610f9d565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610736576040517f8e6c615c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd12b6212ff135eb13602620025372b793c032c25d91b4626f5122dd6ddd3da7d60405160405180910390a250565b6107dc610f18565b8051825114610817576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561093a5781818151811061083657610835611605565b5b60200260200101516003600085848151811061085557610854611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108a691906115af565b925050819055508281815181106108c0576108bf611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f0268f4679db7123d479021367abc6a8700ae63b3e9fcb2c97d0462e92027482f83838151811061091257610911611605565b5b6020026020010151604051610927919061152f565b60405180910390a280600101905061081a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000825167ffffffffffffffff8111156109845761098361114f565b5b6040519080825280602002602001820160405280156109b25781602001602082028036833780820191505090505b50905060005b8351811015610a4557600360008583815181106109d8576109d7611605565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610a2e57610a2d611605565b5b6020026020010181815250508060010190506109b8565b5080915050919050565b60036020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aee576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c61610f18565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d2657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816040517fd81a0a75000000000000000000000000000000000000000000000000000000008152600401610d1d929190611634565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d75919061165d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f13b227187fa31fdbea8b86995ac447e1a9aadd3f2381e562111bfe82e242b3b782604051610dc2919061152f565b60405180910390a25050565b610dd6610f9d565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e5a576040517ffb3b211f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fe65fe402339208383f5099232b75931c31cab59b26dc286ec0ab4de32d3dd0fa60405160405180910390a250565b60026020528060005260406000206000915054906101000a900460ff1681565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f9b576040517f8e6c615c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611022576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061106382611038565b9050919050565b61107381611058565b811461107e57600080fd5b50565b6000813590506110908161106a565b92915050565b6000819050919050565b6110a981611096565b81146110b457600080fd5b50565b6000813590506110c6816110a0565b92915050565b600080604083850312156110e3576110e261102e565b5b60006110f185828601611081565b9250506020611102858286016110b7565b9150509250929050565b6000602082840312156111225761112161102e565b5b600061113084828501611081565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6111878261113e565b810181811067ffffffffffffffff821117156111a6576111a561114f565b5b80604052505050565b60006111b9611024565b90506111c5828261117e565b919050565b600067ffffffffffffffff8211156111e5576111e461114f565b5b602082029050602081019050919050565b600080fd5b600061120e611209846111ca565b6111af565b90508083825260208201905060208402830185811115611231576112306111f6565b5b835b8181101561125a57806112468882611081565b845260208401935050602081019050611233565b5050509392505050565b600082601f83011261127957611278611139565b5b81356112898482602086016111fb565b91505092915050565b600067ffffffffffffffff8211156112ad576112ac61114f565b5b602082029050602081019050919050565b60006112d16112cc84611292565b6111af565b905080838252602082019050602084028301858111156112f4576112f36111f6565b5b835b8181101561131d578061130988826110b7565b8452602084019350506020810190506112f6565b5050509392505050565b600082601f83011261133c5761133b611139565b5b813561134c8482602086016112be565b91505092915050565b6000806040838503121561136c5761136b61102e565b5b600083013567ffffffffffffffff81111561138a57611389611033565b5b61139685828601611264565b925050602083013567ffffffffffffffff8111156113b7576113b6611033565b5b6113c385828601611327565b9150509250929050565b6113d681611058565b82525050565b60006020820190506113f160008301846113cd565b92915050565b60006020828403121561140d5761140c61102e565b5b600082013567ffffffffffffffff81111561142b5761142a611033565b5b61143784828501611264565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61147581611096565b82525050565b6000611487838361146c565b60208301905092915050565b6000602082019050919050565b60006114ab82611440565b6114b5818561144b565b93506114c08361145c565b8060005b838110156114f15781516114d8888261147b565b97506114e383611493565b9250506001810190506114c4565b5085935050505092915050565b6000602082019050818103600083015261151881846114a0565b905092915050565b61152981611096565b82525050565b60006020820190506115446000830184611520565b92915050565b60008115159050919050565b61155f8161154a565b82525050565b600060208201905061157a6000830184611556565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115ba82611096565b91506115c583611096565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156115fa576115f9611580565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506116496000830185611520565b6116566020830184611520565b9392505050565b600061166882611096565b915061167383611096565b92508282101561168657611685611580565b5b82820390509291505056fea164736f6c634300080f000a
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
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.